4#if (defined _MSC_VER) && (_MSC_VER < 1600)
5#error "The C-MAVLink implementation requires Visual Studio 2010 or greater"
11#ifdef MAVLINK_USE_CXX_NAMESPACE
17 #define MAVPACKED( __Declaration__ ) __Declaration__ __attribute__((packed))
19 #define MAVPACKED( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop) )
22#ifndef MAVLINK_MAX_PAYLOAD_LEN
24#define MAVLINK_MAX_PAYLOAD_LEN 255
27#define MAVLINK_CORE_HEADER_LEN 9
28#define MAVLINK_CORE_HEADER_MAVLINK1_LEN 5
29#define MAVLINK_NUM_HEADER_BYTES (MAVLINK_CORE_HEADER_LEN + 1)
30#define MAVLINK_NUM_CHECKSUM_BYTES 2
31#define MAVLINK_NUM_NON_PAYLOAD_BYTES (MAVLINK_NUM_HEADER_BYTES + MAVLINK_NUM_CHECKSUM_BYTES)
33#define MAVLINK_SIGNATURE_BLOCK_LEN 13
35#define MAVLINK_MAX_PACKET_LEN (MAVLINK_MAX_PAYLOAD_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES + MAVLINK_SIGNATURE_BLOCK_LEN)
47typedef struct param_union {
51 uint32_t param_uint32;
53 uint16_t param_uint16;
59}) mavlink_param_union_t;
76typedef struct param_union_extended {
80 uint8_t mavlink_type:7;
95}) mavlink_param_union_double_t;
102typedef struct __mavlink_system {
108typedef struct __mavlink_message {
112 uint8_t incompat_flags;
113 uint8_t compat_flags;
118 uint64_t payload64[(MAVLINK_MAX_PAYLOAD_LEN+MAVLINK_NUM_CHECKSUM_BYTES+7)/8];
120 uint8_t signature[MAVLINK_SIGNATURE_BLOCK_LEN];
124 MAVLINK_TYPE_CHAR = 0,
125 MAVLINK_TYPE_UINT8_T = 1,
126 MAVLINK_TYPE_INT8_T = 2,
127 MAVLINK_TYPE_UINT16_T = 3,
128 MAVLINK_TYPE_INT16_T = 4,
129 MAVLINK_TYPE_UINT32_T = 5,
130 MAVLINK_TYPE_INT32_T = 6,
131 MAVLINK_TYPE_UINT64_T = 7,
132 MAVLINK_TYPE_INT64_T = 8,
133 MAVLINK_TYPE_FLOAT = 9,
134 MAVLINK_TYPE_DOUBLE = 10
135} mavlink_message_type_t;
137#define MAVLINK_MAX_FIELDS 64
141 const char *print_format;
142 mavlink_message_type_t type;
143 unsigned int array_length;
144 unsigned int wire_offset;
145 unsigned int structure_offset;
157#define _MAV_PAYLOAD(msg) ((const char *)(&((msg)->payload64[0])))
158#define _MAV_PAYLOAD_NON_CONST(msg) ((char *)(&((msg)->payload64[0])))
161#define mavlink_ck_a(msg) *((msg)->len + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
162#define mavlink_ck_b(msg) *(((msg)->len+(uint16_t)1) + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
176#ifndef MAVLINK_COMM_NUM_BUFFERS
177#if (defined linux) | (defined __linux) | (defined __MACH__) | (defined _WIN32)
178# define MAVLINK_COMM_NUM_BUFFERS 16
180# define MAVLINK_COMM_NUM_BUFFERS 4
185 MAVLINK_PARSE_STATE_UNINIT=0,
186 MAVLINK_PARSE_STATE_IDLE,
187 MAVLINK_PARSE_STATE_GOT_STX,
188 MAVLINK_PARSE_STATE_GOT_LENGTH,
189 MAVLINK_PARSE_STATE_GOT_INCOMPAT_FLAGS,
190 MAVLINK_PARSE_STATE_GOT_COMPAT_FLAGS,
191 MAVLINK_PARSE_STATE_GOT_SEQ,
192 MAVLINK_PARSE_STATE_GOT_SYSID,
193 MAVLINK_PARSE_STATE_GOT_COMPID,
194 MAVLINK_PARSE_STATE_GOT_MSGID1,
195 MAVLINK_PARSE_STATE_GOT_MSGID2,
196 MAVLINK_PARSE_STATE_GOT_MSGID3,
197 MAVLINK_PARSE_STATE_GOT_PAYLOAD,
198 MAVLINK_PARSE_STATE_GOT_CRC1,
199 MAVLINK_PARSE_STATE_GOT_BAD_CRC1,
200 MAVLINK_PARSE_STATE_SIGNATURE_WAIT
201} mavlink_parse_state_t;
204 MAVLINK_FRAMING_INCOMPLETE=0,
205 MAVLINK_FRAMING_OK=1,
206 MAVLINK_FRAMING_BAD_CRC=2,
207 MAVLINK_FRAMING_BAD_SIGNATURE=3
210#define MAVLINK_STATUS_FLAG_IN_MAVLINK1 1
211#define MAVLINK_STATUS_FLAG_OUT_MAVLINK1 2
212#define MAVLINK_STATUS_FLAG_IN_SIGNED 4
213#define MAVLINK_STATUS_FLAG_IN_BADSIG 8
215#define MAVLINK_STX_MAVLINK1 0xFE
236typedef bool (*mavlink_accept_unsigned_t)(
const mavlink_status_t *status, uint32_t msgid);
241#define MAVLINK_SIGNING_FLAG_SIGN_OUTGOING 1
243#define MAVLINK_SIGNING_FLAG_NO_TIMESTAMPS 2
253 uint8_t secret_key[32];
254 mavlink_accept_unsigned_t accept_unsigned_callback;
261#ifndef MAVLINK_MAX_SIGNING_STREAMS
262#define MAVLINK_MAX_SIGNING_STREAMS 16
265 uint16_t num_signing_streams;
270 uint8_t timestamp_bytes[6];
271 } stream[MAVLINK_MAX_SIGNING_STREAMS];
275#define MAVLINK_BIG_ENDIAN 0
276#define MAVLINK_LITTLE_ENDIAN 1
278#define MAV_MSG_ENTRY_FLAG_HAVE_TARGET_SYSTEM 1
279#define MAV_MSG_ENTRY_FLAG_HAVE_TARGET_COMPONENT 2
289 uint8_t target_system_ofs;
290 uint8_t target_component_ofs;
296#define MAVLINK_IFLAG_SIGNED 0x01
297#define MAVLINK_IFLAG_MASK 0x01
299#ifdef MAVLINK_USE_CXX_NAMESPACE
uint8_t sysid
Remote system ID
定义 mavlink_types.h:268
uint8_t compid
Remote component ID
定义 mavlink_types.h:269
uint8_t link_id
ID of the link (MAVLINK_CHANNEL)
定义 mavlink_types.h:267
uint64_t timestamp
Timestamp, in microseconds since UNIX epoch GMT
定义 mavlink_types.h:252
uint8_t flags
MAVLINK_SIGNING_FLAG_*
定义 mavlink_types.h:250
uint8_t link_id
Same as MAVLINK_CHANNEL
定义 mavlink_types.h:251
uint8_t parse_error
Number of parse errors
定义 mavlink_types.h:220
struct __mavlink_signing_streams * signing_streams
global record of stream timestamps
定义 mavlink_types.h:230
uint16_t packet_rx_success_count
Received packets
定义 mavlink_types.h:225
uint8_t buffer_overrun
Number of buffer overruns
定义 mavlink_types.h:219
mavlink_parse_state_t parse_state
Parsing state machine
定义 mavlink_types.h:221
uint8_t flags
MAVLINK_STATUS_FLAG_*
定义 mavlink_types.h:227
uint16_t packet_rx_drop_count
Number of packet drops
定义 mavlink_types.h:226
uint8_t msg_received
Number of received messages
定义 mavlink_types.h:218
uint8_t current_tx_seq
Sequence number of last packet sent
定义 mavlink_types.h:224
uint8_t signature_wait
number of signature bytes left to receive
定义 mavlink_types.h:228
uint8_t packet_idx
Index in current packet
定义 mavlink_types.h:222
uint8_t current_rx_seq
Sequence number of last packet received
定义 mavlink_types.h:223
struct __mavlink_signing * signing
optional signing state
定义 mavlink_types.h:229