Code for autonomous ground vehicle, Data Bus, 3rd place winner in 2012 Sparkfun AVC.
Dependencies: Watchdog mbed Schedule SimpleFilter LSM303DLM PinDetect DebounceIn Servo
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_ */
Generated on Tue Jul 12 2022 14:09:27 by 1.7.2