add gps_rnx_data

This commit is contained in:
Matthew Gong
2017-09-12 15:44:39 +08:00
parent fb5e41011a
commit a207dafa41
6 changed files with 296 additions and 9 deletions
File diff suppressed because one or more lines are too long
+230
View File
@@ -0,0 +1,230 @@
#pragma once
// MESSAGE GPS_RNX_DATA PACKING
#define MAVLINK_MSG_ID_GPS_RNX_DATA 20008
MAVPACKED(
typedef struct __mavlink_gps_rnx_data_t {
uint8_t len; /*< data length*/
uint8_t data[256]; /*< RNX message*/
}) mavlink_gps_rnx_data_t;
#define MAVLINK_MSG_ID_GPS_RNX_DATA_LEN 257
#define MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN 257
#define MAVLINK_MSG_ID_20008_LEN 257
#define MAVLINK_MSG_ID_20008_MIN_LEN 257
#define MAVLINK_MSG_ID_GPS_RNX_DATA_CRC 255
#define MAVLINK_MSG_ID_20008_CRC 255
#define MAVLINK_MSG_GPS_RNX_DATA_FIELD_DATA_LEN 256
#if MAVLINK_COMMAND_24BIT
#define MAVLINK_MESSAGE_INFO_GPS_RNX_DATA { \
20008, \
"GPS_RNX_DATA", \
2, \
{ { "len", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_gps_rnx_data_t, len) }, \
{ "data", NULL, MAVLINK_TYPE_UINT8_T, 256, 1, offsetof(mavlink_gps_rnx_data_t, data) }, \
} \
}
#else
#define MAVLINK_MESSAGE_INFO_GPS_RNX_DATA { \
"GPS_RNX_DATA", \
2, \
{ { "len", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_gps_rnx_data_t, len) }, \
{ "data", NULL, MAVLINK_TYPE_UINT8_T, 256, 1, offsetof(mavlink_gps_rnx_data_t, data) }, \
} \
}
#endif
/**
* @brief Pack a gps_rnx_data message
* @param system_id ID of this system
* @param component_id ID of this component (e.g. 200 for IMU)
* @param msg The MAVLink message to compress the data into
*
* @param len data length
* @param data RNX message
* @return length of the message in bytes (excluding serial stream start sign)
*/
static inline uint16_t mavlink_msg_gps_rnx_data_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
uint8_t len, const uint8_t *data)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
char buf[MAVLINK_MSG_ID_GPS_RNX_DATA_LEN];
_mav_put_uint8_t(buf, 0, len);
_mav_put_uint8_t_array(buf, 1, data, 256);
memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN);
#else
mavlink_gps_rnx_data_t packet;
packet.len = len;
mav_array_memcpy(packet.data, data, sizeof(uint8_t)*256);
memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN);
#endif
msg->msgid = MAVLINK_MSG_ID_GPS_RNX_DATA;
return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_CRC);
}
/**
* @brief Pack a gps_rnx_data message on a channel
* @param system_id ID of this system
* @param component_id ID of this component (e.g. 200 for IMU)
* @param chan The MAVLink channel this message will be sent over
* @param msg The MAVLink message to compress the data into
* @param len data length
* @param data RNX message
* @return length of the message in bytes (excluding serial stream start sign)
*/
static inline uint16_t mavlink_msg_gps_rnx_data_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
mavlink_message_t* msg,
uint8_t len,const uint8_t *data)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
char buf[MAVLINK_MSG_ID_GPS_RNX_DATA_LEN];
_mav_put_uint8_t(buf, 0, len);
_mav_put_uint8_t_array(buf, 1, data, 256);
memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN);
#else
mavlink_gps_rnx_data_t packet;
packet.len = len;
mav_array_memcpy(packet.data, data, sizeof(uint8_t)*256);
memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN);
#endif
msg->msgid = MAVLINK_MSG_ID_GPS_RNX_DATA;
return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_CRC);
}
/**
* @brief Encode a gps_rnx_data struct
*
* @param system_id ID of this system
* @param component_id ID of this component (e.g. 200 for IMU)
* @param msg The MAVLink message to compress the data into
* @param gps_rnx_data C-struct to read the message contents from
*/
static inline uint16_t mavlink_msg_gps_rnx_data_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_gps_rnx_data_t* gps_rnx_data)
{
return mavlink_msg_gps_rnx_data_pack(system_id, component_id, msg, gps_rnx_data->len, gps_rnx_data->data);
}
/**
* @brief Encode a gps_rnx_data struct on a channel
*
* @param system_id ID of this system
* @param component_id ID of this component (e.g. 200 for IMU)
* @param chan The MAVLink channel this message will be sent over
* @param msg The MAVLink message to compress the data into
* @param gps_rnx_data C-struct to read the message contents from
*/
static inline uint16_t mavlink_msg_gps_rnx_data_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_gps_rnx_data_t* gps_rnx_data)
{
return mavlink_msg_gps_rnx_data_pack_chan(system_id, component_id, chan, msg, gps_rnx_data->len, gps_rnx_data->data);
}
/**
* @brief Send a gps_rnx_data message
* @param chan MAVLink channel to send the message
*
* @param len data length
* @param data RNX message
*/
#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
static inline void mavlink_msg_gps_rnx_data_send(mavlink_channel_t chan, uint8_t len, const uint8_t *data)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
char buf[MAVLINK_MSG_ID_GPS_RNX_DATA_LEN];
_mav_put_uint8_t(buf, 0, len);
_mav_put_uint8_t_array(buf, 1, data, 256);
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_RNX_DATA, buf, MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_CRC);
#else
mavlink_gps_rnx_data_t packet;
packet.len = len;
mav_array_memcpy(packet.data, data, sizeof(uint8_t)*256);
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_RNX_DATA, (const char *)&packet, MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_CRC);
#endif
}
/**
* @brief Send a gps_rnx_data message
* @param chan MAVLink channel to send the message
* @param struct The MAVLink struct to serialize
*/
static inline void mavlink_msg_gps_rnx_data_send_struct(mavlink_channel_t chan, const mavlink_gps_rnx_data_t* gps_rnx_data)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
mavlink_msg_gps_rnx_data_send(chan, gps_rnx_data->len, gps_rnx_data->data);
#else
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_RNX_DATA, (const char *)gps_rnx_data, MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_CRC);
#endif
}
#if MAVLINK_MSG_ID_GPS_RNX_DATA_LEN <= MAVLINK_MAX_PAYLOAD_LEN
/*
This varient of _send() can be used to save stack space by re-using
memory from the receive buffer. The caller provides a
mavlink_message_t which is the size of a full mavlink message. This
is usually the receive buffer for the channel, and allows a reply to an
incoming message with minimum stack space usage.
*/
static inline void mavlink_msg_gps_rnx_data_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint8_t len, const uint8_t *data)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
char *buf = (char *)msgbuf;
_mav_put_uint8_t(buf, 0, len);
_mav_put_uint8_t_array(buf, 1, data, 256);
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_RNX_DATA, buf, MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_CRC);
#else
mavlink_gps_rnx_data_t *packet = (mavlink_gps_rnx_data_t *)msgbuf;
packet->len = len;
mav_array_memcpy(packet->data, data, sizeof(uint8_t)*256);
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_RNX_DATA, (const char *)packet, MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN, MAVLINK_MSG_ID_GPS_RNX_DATA_CRC);
#endif
}
#endif
#endif
// MESSAGE GPS_RNX_DATA UNPACKING
/**
* @brief Get field len from gps_rnx_data message
*
* @return data length
*/
static inline uint8_t mavlink_msg_gps_rnx_data_get_len(const mavlink_message_t* msg)
{
return _MAV_RETURN_uint8_t(msg, 0);
}
/**
* @brief Get field data from gps_rnx_data message
*
* @return RNX message
*/
static inline uint16_t mavlink_msg_gps_rnx_data_get_data(const mavlink_message_t* msg, uint8_t *data)
{
return _MAV_RETURN_uint8_t_array(msg, data, 256, 1);
}
/**
* @brief Decode a gps_rnx_data message into a struct
*
* @param msg The message to decode
* @param gps_rnx_data C-struct to decode the message contents into
*/
static inline void mavlink_msg_gps_rnx_data_decode(const mavlink_message_t* msg, mavlink_gps_rnx_data_t* gps_rnx_data)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
gps_rnx_data->len = mavlink_msg_gps_rnx_data_get_len(msg);
mavlink_msg_gps_rnx_data_get_data(msg, gps_rnx_data->data);
#else
uint8_t len = msg->len < MAVLINK_MSG_ID_GPS_RNX_DATA_LEN? msg->len : MAVLINK_MSG_ID_GPS_RNX_DATA_LEN;
memset(gps_rnx_data, 0, MAVLINK_MSG_ID_GPS_RNX_DATA_LEN);
memcpy(gps_rnx_data, _MAV_PAYLOAD(msg), len);
#endif
}
+56
View File
@@ -3399,6 +3399,61 @@ static void mavlink_test_wow_sensor(uint8_t system_id, uint8_t component_id, mav
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
}
static void mavlink_test_gps_rnx_data(uint8_t system_id, uint8_t component_id, mavlink_message_t *last_msg)
{
#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
mavlink_status_t *status = mavlink_get_channel_status(MAVLINK_COMM_0);
if ((status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) && MAVLINK_MSG_ID_GPS_RNX_DATA >= 256) {
return;
}
#endif
mavlink_message_t msg;
uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
uint16_t i;
mavlink_gps_rnx_data_t packet_in = {
5,{ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71 }
};
mavlink_gps_rnx_data_t packet1, packet2;
memset(&packet1, 0, sizeof(packet1));
packet1.len = packet_in.len;
mav_array_memcpy(packet1.data, packet_in.data, sizeof(uint8_t)*256);
#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
// cope with extensions
memset(MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_GPS_RNX_DATA_MIN_LEN);
}
#endif
memset(&packet2, 0, sizeof(packet2));
mavlink_msg_gps_rnx_data_encode(system_id, component_id, &msg, &packet1);
mavlink_msg_gps_rnx_data_decode(&msg, &packet2);
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
memset(&packet2, 0, sizeof(packet2));
mavlink_msg_gps_rnx_data_pack(system_id, component_id, &msg , packet1.len , packet1.data );
mavlink_msg_gps_rnx_data_decode(&msg, &packet2);
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
memset(&packet2, 0, sizeof(packet2));
mavlink_msg_gps_rnx_data_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.len , packet1.data );
mavlink_msg_gps_rnx_data_decode(&msg, &packet2);
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
memset(&packet2, 0, sizeof(packet2));
mavlink_msg_to_send_buffer(buffer, &msg);
for (i=0; i<mavlink_msg_get_send_buffer_length(&msg); i++) {
comm_send_ch(MAVLINK_COMM_0, buffer[i]);
}
mavlink_msg_gps_rnx_data_decode(last_msg, &packet2);
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
memset(&packet2, 0, sizeof(packet2));
mavlink_msg_gps_rnx_data_send(MAVLINK_COMM_1 , packet1.len , packet1.data );
mavlink_msg_gps_rnx_data_decode(last_msg, &packet2);
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
}
static void mavlink_test_ardupilotmega(uint8_t system_id, uint8_t component_id, mavlink_message_t *last_msg)
{
mavlink_test_sensor_offsets(system_id, component_id, last_msg);
@@ -3458,6 +3513,7 @@ static void mavlink_test_ardupilotmega(uint8_t system_id, uint8_t component_id,
mavlink_test_vision_position_delta(system_id, component_id, last_msg);
mavlink_test_atmo_comp_ext(system_id, component_id, last_msg);
mavlink_test_wow_sensor(system_id, component_id, last_msg);
mavlink_test_gps_rnx_data(system_id, component_id, last_msg);
}
#ifdef __cplusplus
+2 -2
View File
@@ -7,8 +7,8 @@
#ifndef MAVLINK_VERSION_H
#define MAVLINK_VERSION_H
#define MAVLINK_BUILD_DATE "Mon Sep 11 2017"
#define MAVLINK_BUILD_DATE "Tue Sep 12 2017"
#define MAVLINK_WIRE_PROTOCOL_VERSION "2.0"
#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 255
#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 257
#endif // MAVLINK_VERSION_H
+2 -2
View File
@@ -7,8 +7,8 @@
#ifndef MAVLINK_VERSION_H
#define MAVLINK_VERSION_H
#define MAVLINK_BUILD_DATE "Mon Sep 11 2017"
#define MAVLINK_BUILD_DATE "Tue Sep 12 2017"
#define MAVLINK_WIRE_PROTOCOL_VERSION "2.0"
#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 255
#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 257
#endif // MAVLINK_VERSION_H
+2 -2
View File
@@ -7,8 +7,8 @@
#ifndef MAVLINK_VERSION_H
#define MAVLINK_VERSION_H
#define MAVLINK_BUILD_DATE "Mon Sep 11 2017"
#define MAVLINK_BUILD_DATE "Tue Sep 12 2017"
#define MAVLINK_WIRE_PROTOCOL_VERSION "2.0"
#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 255
#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 257
#endif // MAVLINK_VERSION_H