add command for ack

This commit is contained in:
Matt
2019-03-10 09:29:13 +08:00
parent a2c2cf99f2
commit 1a885d8625
5 changed files with 56 additions and 29 deletions
+1 -1
View File
@@ -24,7 +24,7 @@ extern "C" {
#endif
#ifndef MAVLINK_MESSAGE_CRCS
#define MAVLINK_MESSAGE_CRCS {{30001, 210, 23, 0, 0, 0}, {30002, 99, 21, 0, 0, 0}, {30003, 13, 25, 0, 0, 0}, {30004, 69, 13, 0, 0, 0}, {30005, 93, 15, 0, 0, 0}, {30006, 91, 11, 0, 0, 0}, {30007, 180, 9, 0, 0, 0}, {30010, 74, 2, 0, 0, 0}, {30011, 168, 1, 0, 0, 0}, {30012, 165, 22, 0, 0, 0}, {30013, 138, 5, 0, 0, 0}, {30021, 197, 16, 3, 8, 9}, {30033, 36, 25, 0, 0, 0}, {30034, 146, 3, 0, 0, 0}, {30051, 85, 4, 0, 0, 0}, {30052, 160, 7, 0, 0, 0}, {30054, 128, 44, 0, 0, 0}}
#define MAVLINK_MESSAGE_CRCS {{30001, 210, 23, 0, 0, 0}, {30002, 99, 21, 0, 0, 0}, {30003, 13, 25, 0, 0, 0}, {30004, 69, 13, 0, 0, 0}, {30005, 93, 15, 0, 0, 0}, {30006, 91, 11, 0, 0, 0}, {30007, 180, 9, 0, 0, 0}, {30010, 74, 2, 0, 0, 0}, {30011, 8, 3, 0, 0, 0}, {30012, 165, 22, 0, 0, 0}, {30013, 138, 5, 0, 0, 0}, {30021, 197, 16, 3, 8, 9}, {30033, 36, 25, 0, 0, 0}, {30034, 146, 3, 0, 0, 0}, {30051, 85, 4, 0, 0, 0}, {30052, 160, 7, 0, 0, 0}, {30054, 128, 44, 0, 0, 0}}
#endif
#include "../protocol.h"
+47 -22
View File
@@ -5,16 +5,17 @@
MAVPACKED(
typedef struct __mavlink_xyk_command_ack_t {
uint16_t command; /*< Command ID (of command to send).*/
uint8_t REQ_status; /*< status */
}) mavlink_xyk_command_ack_t;
#define MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN 1
#define MAVLINK_MSG_ID_XYK_COMMAND_ACK_MIN_LEN 1
#define MAVLINK_MSG_ID_30011_LEN 1
#define MAVLINK_MSG_ID_30011_MIN_LEN 1
#define MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN 3
#define MAVLINK_MSG_ID_XYK_COMMAND_ACK_MIN_LEN 3
#define MAVLINK_MSG_ID_30011_LEN 3
#define MAVLINK_MSG_ID_30011_MIN_LEN 3
#define MAVLINK_MSG_ID_XYK_COMMAND_ACK_CRC 168
#define MAVLINK_MSG_ID_30011_CRC 168
#define MAVLINK_MSG_ID_XYK_COMMAND_ACK_CRC 8
#define MAVLINK_MSG_ID_30011_CRC 8
@@ -22,15 +23,17 @@ typedef struct __mavlink_xyk_command_ack_t {
#define MAVLINK_MESSAGE_INFO_XYK_COMMAND_ACK { \
30011, \
"XYK_COMMAND_ACK", \
1, \
{ { "REQ_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_xyk_command_ack_t, REQ_status) }, \
2, \
{ { "command", NULL, MAVLINK_TYPE_UINT16_T, 0, 0, offsetof(mavlink_xyk_command_ack_t, command) }, \
{ "REQ_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 2, offsetof(mavlink_xyk_command_ack_t, REQ_status) }, \
} \
}
#else
#define MAVLINK_MESSAGE_INFO_XYK_COMMAND_ACK { \
"XYK_COMMAND_ACK", \
1, \
{ { "REQ_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_xyk_command_ack_t, REQ_status) }, \
2, \
{ { "command", NULL, MAVLINK_TYPE_UINT16_T, 0, 0, offsetof(mavlink_xyk_command_ack_t, command) }, \
{ "REQ_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 2, offsetof(mavlink_xyk_command_ack_t, REQ_status) }, \
} \
}
#endif
@@ -41,19 +44,22 @@ typedef struct __mavlink_xyk_command_ack_t {
* @param component_id ID of this component (e.g. 200 for IMU)
* @param msg The MAVLink message to compress the data into
*
* @param command Command ID (of command to send).
* @param REQ_status status
* @return length of the message in bytes (excluding serial stream start sign)
*/
static inline uint16_t mavlink_msg_xyk_command_ack_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
uint8_t REQ_status)
uint16_t command, uint8_t REQ_status)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
char buf[MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN];
_mav_put_uint8_t(buf, 0, REQ_status);
_mav_put_uint16_t(buf, 0, command);
_mav_put_uint8_t(buf, 2, REQ_status);
memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN);
#else
mavlink_xyk_command_ack_t packet;
packet.command = command;
packet.REQ_status = REQ_status;
memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN);
@@ -69,20 +75,23 @@ static inline uint16_t mavlink_msg_xyk_command_ack_pack(uint8_t system_id, uint8
* @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 command Command ID (of command to send).
* @param REQ_status status
* @return length of the message in bytes (excluding serial stream start sign)
*/
static inline uint16_t mavlink_msg_xyk_command_ack_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
mavlink_message_t* msg,
uint8_t REQ_status)
uint16_t command,uint8_t REQ_status)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
char buf[MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN];
_mav_put_uint8_t(buf, 0, REQ_status);
_mav_put_uint16_t(buf, 0, command);
_mav_put_uint8_t(buf, 2, REQ_status);
memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN);
#else
mavlink_xyk_command_ack_t packet;
packet.command = command;
packet.REQ_status = REQ_status;
memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN);
@@ -102,7 +111,7 @@ static inline uint16_t mavlink_msg_xyk_command_ack_pack_chan(uint8_t system_id,
*/
static inline uint16_t mavlink_msg_xyk_command_ack_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_xyk_command_ack_t* xyk_command_ack)
{
return mavlink_msg_xyk_command_ack_pack(system_id, component_id, msg, xyk_command_ack->REQ_status);
return mavlink_msg_xyk_command_ack_pack(system_id, component_id, msg, xyk_command_ack->command, xyk_command_ack->REQ_status);
}
/**
@@ -116,26 +125,29 @@ static inline uint16_t mavlink_msg_xyk_command_ack_encode(uint8_t system_id, uin
*/
static inline uint16_t mavlink_msg_xyk_command_ack_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_xyk_command_ack_t* xyk_command_ack)
{
return mavlink_msg_xyk_command_ack_pack_chan(system_id, component_id, chan, msg, xyk_command_ack->REQ_status);
return mavlink_msg_xyk_command_ack_pack_chan(system_id, component_id, chan, msg, xyk_command_ack->command, xyk_command_ack->REQ_status);
}
/**
* @brief Send a xyk_command_ack message
* @param chan MAVLink channel to send the message
*
* @param command Command ID (of command to send).
* @param REQ_status status
*/
#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
static inline void mavlink_msg_xyk_command_ack_send(mavlink_channel_t chan, uint8_t REQ_status)
static inline void mavlink_msg_xyk_command_ack_send(mavlink_channel_t chan, uint16_t command, uint8_t REQ_status)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
char buf[MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN];
_mav_put_uint8_t(buf, 0, REQ_status);
_mav_put_uint16_t(buf, 0, command);
_mav_put_uint8_t(buf, 2, REQ_status);
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_XYK_COMMAND_ACK, buf, MAVLINK_MSG_ID_XYK_COMMAND_ACK_MIN_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_CRC);
#else
mavlink_xyk_command_ack_t packet;
packet.command = command;
packet.REQ_status = REQ_status;
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_XYK_COMMAND_ACK, (const char *)&packet, MAVLINK_MSG_ID_XYK_COMMAND_ACK_MIN_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_CRC);
@@ -150,7 +162,7 @@ static inline void mavlink_msg_xyk_command_ack_send(mavlink_channel_t chan, uint
static inline void mavlink_msg_xyk_command_ack_send_struct(mavlink_channel_t chan, const mavlink_xyk_command_ack_t* xyk_command_ack)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
mavlink_msg_xyk_command_ack_send(chan, xyk_command_ack->REQ_status);
mavlink_msg_xyk_command_ack_send(chan, xyk_command_ack->command, xyk_command_ack->REQ_status);
#else
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_XYK_COMMAND_ACK, (const char *)xyk_command_ack, MAVLINK_MSG_ID_XYK_COMMAND_ACK_MIN_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_CRC);
#endif
@@ -164,15 +176,17 @@ static inline void mavlink_msg_xyk_command_ack_send_struct(mavlink_channel_t cha
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_xyk_command_ack_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint8_t REQ_status)
static inline void mavlink_msg_xyk_command_ack_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint16_t command, uint8_t REQ_status)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
char *buf = (char *)msgbuf;
_mav_put_uint8_t(buf, 0, REQ_status);
_mav_put_uint16_t(buf, 0, command);
_mav_put_uint8_t(buf, 2, REQ_status);
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_XYK_COMMAND_ACK, buf, MAVLINK_MSG_ID_XYK_COMMAND_ACK_MIN_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_CRC);
#else
mavlink_xyk_command_ack_t *packet = (mavlink_xyk_command_ack_t *)msgbuf;
packet->command = command;
packet->REQ_status = REQ_status;
_mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_XYK_COMMAND_ACK, (const char *)packet, MAVLINK_MSG_ID_XYK_COMMAND_ACK_MIN_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN, MAVLINK_MSG_ID_XYK_COMMAND_ACK_CRC);
@@ -185,6 +199,16 @@ static inline void mavlink_msg_xyk_command_ack_send_buf(mavlink_message_t *msgbu
// MESSAGE XYK_COMMAND_ACK UNPACKING
/**
* @brief Get field command from xyk_command_ack message
*
* @return Command ID (of command to send).
*/
static inline uint16_t mavlink_msg_xyk_command_ack_get_command(const mavlink_message_t* msg)
{
return _MAV_RETURN_uint16_t(msg, 0);
}
/**
* @brief Get field REQ_status from xyk_command_ack message
*
@@ -192,7 +216,7 @@ static inline void mavlink_msg_xyk_command_ack_send_buf(mavlink_message_t *msgbu
*/
static inline uint8_t mavlink_msg_xyk_command_ack_get_REQ_status(const mavlink_message_t* msg)
{
return _MAV_RETURN_uint8_t(msg, 0);
return _MAV_RETURN_uint8_t(msg, 2);
}
/**
@@ -204,6 +228,7 @@ static inline uint8_t mavlink_msg_xyk_command_ack_get_REQ_status(const mavlink_m
static inline void mavlink_msg_xyk_command_ack_decode(const mavlink_message_t* msg, mavlink_xyk_command_ack_t* xyk_command_ack)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
xyk_command_ack->command = mavlink_msg_xyk_command_ack_get_command(msg);
xyk_command_ack->REQ_status = mavlink_msg_xyk_command_ack_get_REQ_status(msg);
#else
uint8_t len = msg->len < MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN? msg->len : MAVLINK_MSG_ID_XYK_COMMAND_ACK_LEN;
+5 -4
View File
@@ -615,10 +615,11 @@ static void mavlink_test_xyk_command_ack(uint8_t system_id, uint8_t component_id
uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
uint16_t i;
mavlink_xyk_command_ack_t packet_in = {
5
17235,139
};
mavlink_xyk_command_ack_t packet1, packet2;
memset(&packet1, 0, sizeof(packet1));
packet1.command = packet_in.command;
packet1.REQ_status = packet_in.REQ_status;
@@ -634,12 +635,12 @@ static void mavlink_test_xyk_command_ack(uint8_t system_id, uint8_t component_id
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
memset(&packet2, 0, sizeof(packet2));
mavlink_msg_xyk_command_ack_pack(system_id, component_id, &msg , packet1.REQ_status );
mavlink_msg_xyk_command_ack_pack(system_id, component_id, &msg , packet1.command , packet1.REQ_status );
mavlink_msg_xyk_command_ack_decode(&msg, &packet2);
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
memset(&packet2, 0, sizeof(packet2));
mavlink_msg_xyk_command_ack_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.REQ_status );
mavlink_msg_xyk_command_ack_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.command , packet1.REQ_status );
mavlink_msg_xyk_command_ack_decode(&msg, &packet2);
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
@@ -652,7 +653,7 @@ static void mavlink_test_xyk_command_ack(uint8_t system_id, uint8_t component_id
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
memset(&packet2, 0, sizeof(packet2));
mavlink_msg_xyk_command_ack_send(MAVLINK_COMM_1 , packet1.REQ_status );
mavlink_msg_xyk_command_ack_send(MAVLINK_COMM_1 , packet1.command , packet1.REQ_status );
mavlink_msg_xyk_command_ack_decode(last_msg, &packet2);
MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
}
File diff suppressed because one or more lines are too long
+1
View File
@@ -591,6 +591,7 @@
</message>
<message name ="XYK_COMMAND_ACK" id="30011">
<description>request for </description>
<field type="uint16_t" name="command" enum="XYK_COMMAND_ID">Command ID (of command to send).</field>
<field type="uint8_t" name="REQ_status">status </field>
</message>
<message name="XYK_COMMAND_LONG" id="30012">