【类 型】:

【原  因】:
【过  程】:
【影  响】:
This commit is contained in:
tk 2024-08-19 14:54:35 +08:00
parent ceba245d46
commit 805b83f143

View File

@ -5,10 +5,10 @@
#ifndef MAVLINK_MAX_PAYLOAD_LEN #ifndef MAVLINK_MAX_PAYLOAD_LEN
// it is possible to override this, but be careful! // it is possible to override this, but be careful!
#define MAVLINK_MAX_PAYLOAD_LEN 100 ///< Maximum payload length 255 #define MAVLINK_MAX_PAYLOAD_LEN 255 ///< Maximum payload length 255
#endif #endif
#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) #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)
#define MAVLINK_NUM_HEADER_BYTES (MAVLINK_CORE_HEADER_LEN + 1) ///< Length of all header bytes, including core and checksum #define MAVLINK_NUM_HEADER_BYTES (MAVLINK_CORE_HEADER_LEN + 1) ///< Length of all header bytes, including core and checksum
#define MAVLINK_NUM_CHECKSUM_BYTES 2 #define MAVLINK_NUM_CHECKSUM_BYTES 2
#define MAVLINK_NUM_NON_PAYLOAD_BYTES (MAVLINK_NUM_HEADER_BYTES + MAVLINK_NUM_CHECKSUM_BYTES) #define MAVLINK_NUM_NON_PAYLOAD_BYTES (MAVLINK_NUM_HEADER_BYTES + MAVLINK_NUM_CHECKSUM_BYTES)
@ -19,85 +19,91 @@
#define MAVLINK_EXTENDED_HEADER_LEN 14 #define MAVLINK_EXTENDED_HEADER_LEN 14
#if (defined _MSC_VER) | ((defined __APPLE__) & (defined __MACH__)) | (defined __linux__) #if (defined _MSC_VER) | ((defined __APPLE__) & (defined __MACH__)) | (defined __linux__)
/* full fledged 32bit++ OS */ /* full fledged 32bit++ OS */
#define MAVLINK_MAX_EXTENDED_PACKET_LEN 65507 #define MAVLINK_MAX_EXTENDED_PACKET_LEN 65507
#else #else
/* small microcontrollers */ /* small microcontrollers */
#define MAVLINK_MAX_EXTENDED_PACKET_LEN 2048 #define MAVLINK_MAX_EXTENDED_PACKET_LEN 2048
#endif #endif
#define MAVLINK_MAX_EXTENDED_PAYLOAD_LEN (MAVLINK_MAX_EXTENDED_PACKET_LEN - MAVLINK_EXTENDED_HEADER_LEN - MAVLINK_NUM_NON_PAYLOAD_BYTES) #define MAVLINK_MAX_EXTENDED_PAYLOAD_LEN (MAVLINK_MAX_EXTENDED_PACKET_LEN - MAVLINK_EXTENDED_HEADER_LEN - MAVLINK_NUM_NON_PAYLOAD_BYTES)
typedef struct param_union { typedef struct param_union
union { {
float param_float; union
int32_t param_int32; {
uint32_t param_uint32; float param_float;
uint8_t param_uint8; int32_t param_int32;
uint8_t bytes[4]; uint32_t param_uint32;
}; uint8_t param_uint8;
uint8_t type; uint8_t bytes[4];
};
uint8_t type;
} mavlink_param_union_t; } mavlink_param_union_t;
typedef struct __mavlink_system { typedef struct __mavlink_system
uint8_t sysid; ///< Used by the MAVLink message_xx_send() convenience function {
uint8_t compid; ///< Used by the MAVLink message_xx_send() convenience function uint8_t sysid; ///< Used by the MAVLink message_xx_send() convenience function
uint8_t type; ///< Unused, can be used by user to store the system's type uint8_t compid; ///< Used by the MAVLink message_xx_send() convenience function
uint8_t state; ///< Unused, can be used by user to store the system's state uint8_t type; ///< Unused, can be used by user to store the system's type
uint8_t mode; ///< Unused, can be used by user to store the system's mode uint8_t state; ///< Unused, can be used by user to store the system's state
uint8_t nav_mode; ///< Unused, can be used by user to store the system's navigation mode uint8_t mode; ///< Unused, can be used by user to store the system's mode
uint8_t nav_mode; ///< Unused, can be used by user to store the system's navigation mode
} mavlink_system_t; } mavlink_system_t;
typedef struct __mavlink_message { typedef struct __mavlink_message
uint16_t checksum; /// sent at end of packet {
uint8_t magic; ///< protocol magic marker uint16_t checksum; /// sent at end of packet
uint8_t len; ///< Length of payload uint8_t magic; ///< protocol magic marker
uint8_t seq; ///< Sequence of packet uint8_t len; ///< Length of payload
uint8_t sysid; ///< ID of message sender system/aircraft uint8_t seq; ///< Sequence of packet
uint8_t compid; ///< ID of the message sender component uint8_t sysid; ///< ID of message sender system/aircraft
uint8_t msgid; ///< ID of message in payload uint8_t compid; ///< ID of the message sender component
uint64_t payload64[(MAVLINK_MAX_PAYLOAD_LEN+MAVLINK_NUM_CHECKSUM_BYTES+7)/8]; uint8_t msgid; ///< ID of message in payload
uint64_t payload64[(MAVLINK_MAX_PAYLOAD_LEN + MAVLINK_NUM_CHECKSUM_BYTES + 7) / 8];
} mavlink_message_t; } mavlink_message_t;
typedef struct __mavlink_extended_message
typedef struct __mavlink_extended_message { {
mavlink_message_t base_msg; mavlink_message_t base_msg;
int32_t extended_payload_len; ///< Length of extended payload if any int32_t extended_payload_len; ///< Length of extended payload if any
uint8_t extended_payload[MAVLINK_MAX_EXTENDED_PAYLOAD_LEN]; uint8_t extended_payload[MAVLINK_MAX_EXTENDED_PAYLOAD_LEN];
} mavlink_extended_message_t; } mavlink_extended_message_t;
typedef enum
typedef enum { {
MAVLINK_TYPE_CHAR = 0, MAVLINK_TYPE_CHAR = 0,
MAVLINK_TYPE_UINT8_T = 1, MAVLINK_TYPE_UINT8_T = 1,
MAVLINK_TYPE_INT8_T = 2, MAVLINK_TYPE_INT8_T = 2,
MAVLINK_TYPE_UINT16_T = 3, MAVLINK_TYPE_UINT16_T = 3,
MAVLINK_TYPE_INT16_T = 4, MAVLINK_TYPE_INT16_T = 4,
MAVLINK_TYPE_UINT32_T = 5, MAVLINK_TYPE_UINT32_T = 5,
MAVLINK_TYPE_INT32_T = 6, MAVLINK_TYPE_INT32_T = 6,
MAVLINK_TYPE_UINT64_T = 7, MAVLINK_TYPE_UINT64_T = 7,
MAVLINK_TYPE_INT64_T = 8, MAVLINK_TYPE_INT64_T = 8,
MAVLINK_TYPE_FLOAT = 9, MAVLINK_TYPE_FLOAT = 9,
MAVLINK_TYPE_DOUBLE = 10 MAVLINK_TYPE_DOUBLE = 10
} mavlink_message_type_t; } mavlink_message_type_t;
#define MAVLINK_MAX_FIELDS 64 #define MAVLINK_MAX_FIELDS 64
typedef struct __mavlink_field_info { typedef struct __mavlink_field_info
const char *name; // name of this field {
const char *print_format; // printing format hint, or NULL const char *name; // name of this field
mavlink_message_type_t type; // type of this field const char *print_format; // printing format hint, or NULL
unsigned int array_length; // if non-zero, field is an array mavlink_message_type_t type; // type of this field
unsigned int wire_offset; // offset of each field in the payload unsigned int array_length; // if non-zero, field is an array
unsigned int structure_offset; // offset in a C structure unsigned int wire_offset; // offset of each field in the payload
unsigned int structure_offset; // offset in a C structure
} mavlink_field_info_t; } mavlink_field_info_t;
// note that in this structure the order of fields is the order // note that in this structure the order of fields is the order
// in the XML file, not necessary the wire order // in the XML file, not necessary the wire order
typedef struct __mavlink_message_info { typedef struct __mavlink_message_info
const char *name; // name of the message {
unsigned num_fields; // how many fields in this message const char *name; // name of the message
mavlink_field_info_t fields[MAVLINK_MAX_FIELDS]; // field information unsigned num_fields; // how many fields in this message
mavlink_field_info_t fields[MAVLINK_MAX_FIELDS]; // field information
} mavlink_message_info_t; } mavlink_message_info_t;
#define _MAV_PAYLOAD(msg) ((const char *)(&((msg)->payload64[0]))) #define _MAV_PAYLOAD(msg) ((const char *)(&((msg)->payload64[0])))
@ -105,13 +111,14 @@ typedef struct __mavlink_message_info {
// checksum is immediately after the payload bytes // checksum is immediately after the payload bytes
#define mavlink_ck_a(msg) *((msg)->len + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg)) #define mavlink_ck_a(msg) *((msg)->len + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
#define mavlink_ck_b(msg) *(((msg)->len+(uint16_t)1) + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg)) #define mavlink_ck_b(msg) *(((msg)->len + (uint16_t)1) + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
typedef enum { typedef enum
MAVLINK_COMM_0, {
MAVLINK_COMM_1, MAVLINK_COMM_0,
MAVLINK_COMM_2, MAVLINK_COMM_1,
MAVLINK_COMM_3 MAVLINK_COMM_2,
MAVLINK_COMM_3
} mavlink_channel_t; } mavlink_channel_t;
/* /*
@ -120,36 +127,38 @@ typedef enum {
* a stack overrun * a stack overrun
*/ */
#ifndef MAVLINK_COMM_NUM_BUFFERS #ifndef MAVLINK_COMM_NUM_BUFFERS
#if (defined linux) | (defined __linux) | (defined __MACH__) | (defined _WIN32) #if (defined linux) | (defined __linux) | (defined __MACH__) | (defined _WIN32)
# define MAVLINK_COMM_NUM_BUFFERS 16 #define MAVLINK_COMM_NUM_BUFFERS 16
#else #else
# define MAVLINK_COMM_NUM_BUFFERS 4 #define MAVLINK_COMM_NUM_BUFFERS 4
#endif #endif
#endif #endif
typedef enum { typedef enum
MAVLINK_PARSE_STATE_UNINIT=0, {
MAVLINK_PARSE_STATE_IDLE, MAVLINK_PARSE_STATE_UNINIT = 0,
MAVLINK_PARSE_STATE_GOT_STX, MAVLINK_PARSE_STATE_IDLE,
MAVLINK_PARSE_STATE_GOT_SEQ, MAVLINK_PARSE_STATE_GOT_STX,
MAVLINK_PARSE_STATE_GOT_LENGTH, MAVLINK_PARSE_STATE_GOT_SEQ,
MAVLINK_PARSE_STATE_GOT_SYSID, MAVLINK_PARSE_STATE_GOT_LENGTH,
MAVLINK_PARSE_STATE_GOT_COMPID, MAVLINK_PARSE_STATE_GOT_SYSID,
MAVLINK_PARSE_STATE_GOT_MSGID, MAVLINK_PARSE_STATE_GOT_COMPID,
MAVLINK_PARSE_STATE_GOT_PAYLOAD, MAVLINK_PARSE_STATE_GOT_MSGID,
MAVLINK_PARSE_STATE_GOT_CRC1 MAVLINK_PARSE_STATE_GOT_PAYLOAD,
MAVLINK_PARSE_STATE_GOT_CRC1
} mavlink_parse_state_t; ///< The state machine for the comm parser } mavlink_parse_state_t; ///< The state machine for the comm parser
typedef struct __mavlink_status { typedef struct __mavlink_status
uint8_t msg_received; ///< Number of received messages {
uint8_t buffer_overrun; ///< Number of buffer overruns uint8_t msg_received; ///< Number of received messages
uint8_t parse_error; ///< Number of parse errors uint8_t buffer_overrun; ///< Number of buffer overruns
mavlink_parse_state_t parse_state; ///< Parsing state machine uint8_t parse_error; ///< Number of parse errors
uint8_t packet_idx; ///< Index in current packet mavlink_parse_state_t parse_state; ///< Parsing state machine
uint8_t current_rx_seq; ///< Sequence number of last packet received uint8_t packet_idx; ///< Index in current packet
uint8_t current_tx_seq; ///< Sequence number of last packet sent uint8_t current_rx_seq; ///< Sequence number of last packet received
uint16_t packet_rx_success_count; ///< Received packets uint8_t current_tx_seq; ///< Sequence number of last packet sent
uint16_t packet_rx_drop_count; ///< Number of packet drops uint16_t packet_rx_success_count; ///< Received packets
uint16_t packet_rx_drop_count; ///< Number of packet drops
} mavlink_status_t; } mavlink_status_t;
#define MAVLINK_BIG_ENDIAN 0 #define MAVLINK_BIG_ENDIAN 0