Code for autonomous ground vehicle, Data Bus, 3rd place winner in 2012 Sparkfun AVC.

Dependencies:   Watchdog mbed Schedule SimpleFilter LSM303DLM PinDetect DebounceIn Servo

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mavlink_types.h Source File

mavlink_types.h

00001 #ifndef MAVLINK_TYPES_H_
00002 #define MAVLINK_TYPES_H_
00003 
00004 #include "inttypes.h"
00005 
00006 enum MAV_CLASS
00007 {
00008     MAV_CLASS_GENERIC = 0,        ///< Generic autopilot, full support for everything
00009     MAV_CLASS_PIXHAWK = 1,        ///< PIXHAWK autopilot, http://pixhawk.ethz.ch
00010     MAV_CLASS_SLUGS = 2,          ///< SLUGS autopilot, http://slugsuav.soe.ucsc.edu
00011     MAV_CLASS_ARDUPILOTMEGA = 3,  ///< ArduPilotMega / ArduCopter, http://diydrones.com
00012     MAV_CLASS_OPENPILOT = 4,      ///< OpenPilot, http://openpilot.org
00013     MAV_CLASS_GENERIC_MISSION_WAYPOINTS_ONLY = 5,  ///< Generic autopilot only supporting simple waypoints
00014     MAV_CLASS_GENERIC_MISSION_NAVIGATION_ONLY = 6, ///< Generic autopilot supporting waypoints and other simple navigation commands
00015     MAV_CLASS_GENERIC_MISSION_FULL = 7,            ///< Generic autopilot supporting the full mission command set
00016     MAV_CLASS_NONE = 8,           ///< No valid autopilot
00017     MAV_CLASS_NB                  ///< Number of autopilot classes
00018 };
00019 
00020 enum MAV_ACTION
00021 {
00022     MAV_ACTION_HOLD = 0,
00023     MAV_ACTION_MOTORS_START = 1,
00024     MAV_ACTION_LAUNCH = 2,
00025     MAV_ACTION_RETURN = 3,
00026     MAV_ACTION_EMCY_LAND = 4,
00027     MAV_ACTION_EMCY_KILL = 5,
00028     MAV_ACTION_CONFIRM_KILL = 6,
00029     MAV_ACTION_CONTINUE = 7,
00030     MAV_ACTION_MOTORS_STOP = 8,
00031     MAV_ACTION_HALT = 9,
00032     MAV_ACTION_SHUTDOWN = 10,
00033     MAV_ACTION_REBOOT = 11,
00034     MAV_ACTION_SET_MANUAL = 12,
00035     MAV_ACTION_SET_AUTO = 13,
00036     MAV_ACTION_STORAGE_READ = 14,
00037     MAV_ACTION_STORAGE_WRITE = 15,
00038     MAV_ACTION_CALIBRATE_RC = 16,
00039     MAV_ACTION_CALIBRATE_GYRO = 17,
00040     MAV_ACTION_CALIBRATE_MAG = 18,
00041     MAV_ACTION_CALIBRATE_ACC = 19,
00042     MAV_ACTION_CALIBRATE_PRESSURE = 20,
00043     MAV_ACTION_REC_START = 21,
00044     MAV_ACTION_REC_PAUSE = 22,
00045     MAV_ACTION_REC_STOP = 23,
00046     MAV_ACTION_TAKEOFF = 24,
00047     MAV_ACTION_NAVIGATE = 25,
00048     MAV_ACTION_LAND = 26,
00049     MAV_ACTION_LOITER = 27,
00050     MAV_ACTION_SET_ORIGIN = 28,
00051     MAV_ACTION_RELAY_ON = 29,
00052     MAV_ACTION_RELAY_OFF = 30,
00053     MAV_ACTION_GET_IMAGE = 31,
00054     MAV_ACTION_VIDEO_START = 32,
00055     MAV_ACTION_VIDEO_STOP = 33,
00056     MAV_ACTION_RESET_MAP = 34,
00057     MAV_ACTION_RESET_PLAN = 35,
00058     MAV_ACTION_DELAY_BEFORE_COMMAND = 36,
00059     MAV_ACTION_ASCEND_AT_RATE = 37,
00060     MAV_ACTION_CHANGE_MODE = 38,
00061     MAV_ACTION_LOITER_MAX_TURNS = 39,
00062     MAV_ACTION_LOITER_MAX_TIME = 40,
00063         MAV_ACTION_START_HILSIM = 41,
00064         MAV_ACTION_STOP_HILSIM = 42,    
00065     MAV_ACTION_NB        ///< Number of MAV actions
00066 };
00067 
00068 enum MAV_MODE
00069 {
00070     MAV_MODE_UNINIT = 0,     ///< System is in undefined state
00071     MAV_MODE_LOCKED = 1,     ///< Motors are blocked, system is safe
00072     MAV_MODE_MANUAL = 2,     ///< System is allowed to be active, under manual (RC) control
00073     MAV_MODE_GUIDED = 3,     ///< System is allowed to be active, under autonomous control, manual setpoint
00074     MAV_MODE_AUTO =   4,     ///< System is allowed to be active, under autonomous control and navigation
00075     MAV_MODE_TEST1 =  5,     ///< Generic test mode, for custom use
00076     MAV_MODE_TEST2 =  6,     ///< Generic test mode, for custom use
00077     MAV_MODE_TEST3 =  7,     ///< Generic test mode, for custom use
00078     MAV_MODE_READY =  8,     ///< System is ready, motors are unblocked, but controllers are inactive
00079     MAV_MODE_RC_TRAINING = 9 ///< System is blocked, only RC valued are read and reported back
00080 };
00081 
00082 enum MAV_STATE
00083 {
00084     MAV_STATE_UNINIT = 0,
00085     MAV_STATE_BOOT,
00086     MAV_STATE_CALIBRATING,
00087     MAV_STATE_STANDBY,
00088     MAV_STATE_ACTIVE,
00089     MAV_STATE_CRITICAL,
00090     MAV_STATE_EMERGENCY,
00091     MAV_STATE_HILSIM,
00092     MAV_STATE_POWEROFF
00093 };
00094 
00095 enum MAV_NAV
00096 {
00097     MAV_NAV_GROUNDED = 0,
00098     MAV_NAV_LIFTOFF,
00099     MAV_NAV_HOLD,
00100     MAV_NAV_WAYPOINT,
00101     MAV_NAV_VECTOR,
00102     MAV_NAV_RETURNING,
00103     MAV_NAV_LANDING,
00104     MAV_NAV_LOST,
00105     MAV_NAV_LOITER,
00106     MAV_NAV_FREE_DRIFT
00107 };
00108 
00109 enum MAV_TYPE
00110 {
00111     MAV_GENERIC = 0,
00112     MAV_FIXED_WING = 1,
00113     MAV_QUADROTOR = 2,
00114     MAV_COAXIAL = 3,
00115     MAV_HELICOPTER = 4,
00116     MAV_GROUND = 5,
00117     OCU = 6,
00118     MAV_AIRSHIP = 7,
00119     MAV_FREE_BALLOON = 8,
00120     MAV_ROCKET = 9,
00121     UGV_GROUND_ROVER = 10,
00122     UGV_SURFACE_SHIP = 11
00123 };
00124 
00125 enum MAV_AUTOPILOT_TYPE
00126 {
00127     MAV_AUTOPILOT_GENERIC = 0,
00128     MAV_AUTOPILOT_PIXHAWK = 1,
00129     MAV_AUTOPILOT_SLUGS = 2,
00130     MAV_AUTOPILOT_ARDUPILOTMEGA = 3,
00131     MAV_AUTOPILOT_NONE = 4
00132 };
00133 
00134 enum MAV_COMPONENT
00135 {
00136     MAV_COMP_ID_GPS,
00137     MAV_COMP_ID_WAYPOINTPLANNER,
00138     MAV_COMP_ID_BLOBTRACKER,
00139     MAV_COMP_ID_PATHPLANNER,
00140     MAV_COMP_ID_AIRSLAM,
00141     MAV_COMP_ID_MAPPER,
00142     MAV_COMP_ID_CAMERA,
00143     MAV_COMP_ID_IMU = 200,
00144     MAV_COMP_ID_IMU_2 = 201,
00145     MAV_COMP_ID_IMU_3 = 202,
00146     MAV_COMP_ID_UDP_BRIDGE = 240,
00147     MAV_COMP_ID_UART_BRIDGE = 241,
00148     MAV_COMP_ID_SYSTEM_CONTROL = 250
00149 };
00150 
00151 enum MAV_FRAME
00152 {
00153     MAV_FRAME_GLOBAL = 0,
00154     MAV_FRAME_LOCAL = 1,
00155     MAV_FRAME_MISSION = 2,
00156     MAV_FRAME_GLOBAL_RELATIVE_ALT = 3,
00157         MAV_FRAME_LOCAL_ENU = 4
00158 };
00159 
00160 enum MAVLINK_DATA_STREAM_TYPE
00161 {
00162     MAVLINK_DATA_STREAM_IMG_JPEG,
00163     MAVLINK_DATA_STREAM_IMG_BMP,
00164     MAVLINK_DATA_STREAM_IMG_RAW8U,
00165     MAVLINK_DATA_STREAM_IMG_RAW32U,
00166     MAVLINK_DATA_STREAM_IMG_PGM,
00167     MAVLINK_DATA_STREAM_IMG_PNG
00168     
00169 };
00170 
00171 #define MAVLINK_STX 0x55 ///< Packet start sign
00172 #define MAVLINK_STX_LEN 1 ///< Length of start sign
00173 #define MAVLINK_MAX_PAYLOAD_LEN 255 ///< Maximum payload length
00174 
00175 #define MAVLINK_CORE_HEADER_LEN 5 ///< Length of core header (of the comm. layer): message length (1 byte) + message sequence (1 byte) + message system id (1 byte) + message component id (1 byte) + message type id (1 byte)
00176 #define MAVLINK_NUM_HEADER_BYTES (MAVLINK_CORE_HEADER_LEN + MAVLINK_STX_LEN) ///< Length of all header bytes, including core and checksum
00177 #define MAVLINK_NUM_CHECKSUM_BYTES 2
00178 #define MAVLINK_NUM_NON_PAYLOAD_BYTES (MAVLINK_NUM_HEADER_BYTES + MAVLINK_NUM_CHECKSUM_BYTES)
00179 #define MAVLINK_NUM_NON_STX_PAYLOAD_BYTES (MAVLINK_NUM_NON_PAYLOAD_BYTES - MAVLINK_STX_LEN)
00180 
00181 #define MAVLINK_MAX_PACKET_LEN (MAVLINK_MAX_PAYLOAD_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES) ///< Maximum packet length
00182 //#define MAVLINK_MAX_DATA_LEN MAVLINK_MAX_PACKET_LEN - MAVLINK_STX_LEN
00183 
00184 typedef struct __mavlink_system {
00185     uint8_t sysid;   ///< Used by the MAVLink message_xx_send() convenience function
00186     uint8_t compid;  ///< Used by the MAVLink message_xx_send() convenience function
00187     uint8_t type;    ///< Unused, can be used by user to store the system's type
00188     uint8_t state;   ///< Unused, can be used by user to store the system's state
00189     uint8_t mode;    ///< Unused, can be used by user to store the system's mode
00190     uint8_t nav_mode;    ///< Unused, can be used by user to store the system's navigation mode
00191 } mavlink_system_t;
00192 
00193 typedef struct __mavlink_message {
00194     uint8_t len;     ///< Length of payload
00195     uint8_t seq;     ///< Sequence of packet
00196     uint8_t sysid;   ///< ID of message sender system/aircraft
00197     uint8_t compid;  ///< ID of the message sender component
00198     uint8_t msgid;   ///< ID of message in payload
00199     uint8_t payload[MAVLINK_MAX_PAYLOAD_LEN]; ///< Payload data, ALIGNMENT IMPORTANT ON MCU
00200     uint8_t ck_a;    ///< Checksum high byte
00201     uint8_t ck_b;    ///< Checksum low byte
00202 } mavlink_message_t;
00203 
00204 typedef enum {
00205     MAVLINK_COMM_0,
00206     MAVLINK_COMM_1,
00207     MAVLINK_COMM_2,
00208     MAVLINK_COMM_3
00209 } mavlink_channel_t;
00210 
00211 /*
00212  * applications can set MAVLINK_COMM_NUM_BUFFERS to the maximum number
00213  * of buffers they will use. If more are used, then the result will be
00214  * a stack overrun
00215  */
00216 #ifndef MAVLINK_COMM_NUM_BUFFERS
00217 #if (defined linux) | (defined __linux) | (defined  __MACH__) | (defined _WIN32)
00218 # define MAVLINK_COMM_NUM_BUFFERS 16
00219 #else
00220 # define MAVLINK_COMM_NUM_BUFFERS 4
00221 #endif
00222 #endif
00223 
00224 typedef enum {
00225     MAVLINK_PARSE_STATE_UNINIT=0,
00226     MAVLINK_PARSE_STATE_IDLE,
00227     MAVLINK_PARSE_STATE_GOT_STX,
00228     MAVLINK_PARSE_STATE_GOT_SEQ,
00229     MAVLINK_PARSE_STATE_GOT_LENGTH,
00230     MAVLINK_PARSE_STATE_GOT_SYSID,
00231     MAVLINK_PARSE_STATE_GOT_COMPID,
00232     MAVLINK_PARSE_STATE_GOT_MSGID,
00233     MAVLINK_PARSE_STATE_GOT_PAYLOAD,
00234     MAVLINK_PARSE_STATE_GOT_CRC1
00235 } mavlink_parse_state_t; ///< The state machine for the comm parser
00236 
00237 typedef struct __mavlink_status {
00238     uint8_t ck_a;                       ///< Checksum byte 1
00239     uint8_t ck_b;                       ///< Checksum byte 2
00240     uint8_t msg_received;               ///< Number of received messages
00241     uint8_t buffer_overrun;             ///< Number of buffer overruns
00242     uint8_t parse_error;                ///< Number of parse errors
00243     mavlink_parse_state_t parse_state;  ///< Parsing state machine
00244     uint8_t packet_idx;                 ///< Index in current packet
00245     uint8_t current_rx_seq;             ///< Sequence number of last packet received
00246     uint8_t current_tx_seq;             ///< Sequence number of last packet sent
00247     uint16_t packet_rx_success_count;   ///< Received packets
00248     uint16_t packet_rx_drop_count;      ///< Number of packet drops
00249 } mavlink_status_t;
00250 
00251 #endif /* MAVLINK_TYPES_H_ */