17 #include <mavros_msgs/Mavlink.h> 18 #include <mavconn/mavlink_dialect.h> 23 using ::mavlink::mavlink_message_t;
44 #pragma GCC diagnostic push 45 #pragma GCC diagnostic ignored "-Waddress-of-packed-member" 57 inline bool convert(
const mavros_msgs::Mavlink &rmsg, mavlink_message_t &mmsg)
59 if (rmsg.payload64.size() >
sizeof(mmsg.payload64) /
sizeof(mmsg.payload64[0])) {
63 if (!rmsg.signature.empty() && rmsg.signature.size() !=
sizeof(mmsg.signature)) {
71 mmsg.magic = rmsg.magic;
73 mmsg.incompat_flags = rmsg.incompat_flags;
74 mmsg.compat_flags = rmsg.compat_flags;
76 mmsg.sysid = rmsg.sysid;
77 mmsg.compid = rmsg.compid;
78 mmsg.msgid = rmsg.msgid;
79 mmsg.checksum = rmsg.checksum;
81 std::copy(rmsg.payload64.begin(), rmsg.payload64.end(), mmsg.payload64);
82 std::copy(rmsg.signature.begin(), rmsg.signature.end(), mmsg.signature);
95 inline bool convert(
const mavlink_message_t &mmsg, mavros_msgs::Mavlink &rmsg, uint8_t framing_status = mavros_msgs::Mavlink::FRAMING_OK)
97 const size_t payload64_len = (mmsg.len + 7) / 8;
99 rmsg.framing_status = framing_status;
105 rmsg.magic = mmsg.magic;
107 rmsg.incompat_flags = mmsg.incompat_flags;
108 rmsg.compat_flags = mmsg.compat_flags;
110 rmsg.sysid = mmsg.sysid;
111 rmsg.compid = mmsg.compid;
112 rmsg.msgid = mmsg.msgid;
113 rmsg.checksum = mmsg.checksum;
115 rmsg.payload64 = mavros_msgs::Mavlink::_payload64_type(mmsg.payload64, mmsg.payload64 + payload64_len);
118 if (mmsg.incompat_flags & MAVLINK_IFLAG_SIGNED)
119 rmsg.signature = mavros_msgs::Mavlink::_signature_type(mmsg.signature, mmsg.signature +
sizeof(mmsg.signature));
121 rmsg.signature.clear();
126 #pragma GCC diagnostic pop bool convert(const mavros_msgs::Mavlink &rmsg, mavlink_message_t &mmsg)
Convert mavros_msgs/Mavlink message to mavlink_message_t.