Subversion Repositories Projects

Rev

Rev 449 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef COPTER_H
#define COPTER_H

/**
 * This file contains informations and configurations from the Mikrokopter
 */


#define MAX_DATA_SIZE 150

// version information for the serial connection
#define VERSION_SERIAL_MAJOR 10
#define VERSION_SERIAL_MINOR 0

// Basis-Adresses for different hardware components
#define ADDRESS_ALL 0
#define ADDRESS_FC 1
#define ADDRESS_NC 2
#define ADDRESS_MK3MAG 3

//maximum amount of motors
#define MAX_MOTORS 12

// settings ID
#define SETTINGS_ID 2

//TODO: use enum?
/*
enum HardwareType {
    Default,
    FlightCtrl,
    NaviCtrl,
    MK3Mag
};
*/

static const char * HardwareType[] = {"Default", "FlightCtrl", "NaviCtrl", "MK3Mag"};

static const int MaxTickerEvents = 5;

static const int MaxAnalog    = 32;
static const int MaxPlot      = 50000;

static const int MaxNaviPos   = 2000;

struct sMotorData
{
    int mixer_gas[MAX_MOTORS];
    int mixer_nick[MAX_MOTORS];
    int mixer_roll[MAX_MOTORS];
    int mixer_yaw[MAX_MOTORS];
    int desired_speed[MAX_MOTORS];
    char * mixer_name;
    int mixer_version;
};

struct sMode
{
    int id;
    int version_major;
    int version_minor;
    int version_patch;
    int version_serial_major;
    int version_serial_minor;
    char * hardware;
    char * version;
};

struct sGPS_Pos
{
    long Longitude;
    long Latitude;
    long Altitude;
};

struct sNaviData
{
    sGPS_Pos Current;
    sGPS_Pos Target;
    sGPS_Pos Home;

    long Longitude;
    long Latitude;
    long Altitude;
};

struct sWayPoint
{
    double Longitude;
    double Latitude;
    double Altitude;
    int Time;
};

/**
 * The KopterData class represents the current state of the MikroKopter.
 * It containes all data that was sent from the Mikrokopter
 */

class KopterData {
    public:
        sMode mode;
        sNaviData navi;
        sMotorData motor;
        int analogData[MaxAnalog];
        // current LCD page
        int lcd_cur;
        //max count of LCD pages
        int lcd_max;
};

#endif