diff --git a/generate.sh b/generate.sh
index 307092bdfd4d4b15a2284056fb0fe181be55c26e..33e092d86ccda7eed5d5cb7149c115032cdc309a 100755
--- a/generate.sh
+++ b/generate.sh
@@ -1,3 +1,3 @@
 cd  mavlink
-python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=1.0 --output=../mavlink_lib ../message_definitions/lyra.xml
-python3 -m pymavlink.tools.mavgen --lang=Python --wire-protocol=1.0 --output=../mavlink_lib ../message_definitions/lyra.xml
\ No newline at end of file
+python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=1.0 --output=../mavlink_lib ../message_definitions/orion.xml
+python3 -m pymavlink.tools.mavgen --lang=Python --wire-protocol=1.0 --output=../mavlink_lib ../message_definitions/orion.xml
\ No newline at end of file
diff --git a/mavlink_lib.py b/mavlink_lib.py
index daf30bfbfae07d5620848b14a1151bc3e0359e15..5e3f16d29d2d84d33a1bf7d282796a8433b3fd0e 100644
--- a/mavlink_lib.py
+++ b/mavlink_lib.py
@@ -1,7 +1,7 @@
 '''
 MAVLink protocol implementation (auto-generated by mavgen.py)
 
-Generated from: lyra.xml
+Generated from: orion.xml
 
 Note: this file has been auto-generated. DO NOT EDIT
 '''
diff --git a/mavlink_lib/orion/mavlink.h b/mavlink_lib/orion/mavlink.h
new file mode 100644
index 0000000000000000000000000000000000000000..7b00063db297c87a2e7f41cc826b798e0c90855d
--- /dev/null
+++ b/mavlink_lib/orion/mavlink.h
@@ -0,0 +1,34 @@
+/** @file
+ *  @brief MAVLink comm protocol built from orion.xml
+ *  @see http://mavlink.org
+ */
+#pragma once
+#ifndef MAVLINK_H
+#define MAVLINK_H
+
+#define MAVLINK_PRIMARY_XML_HASH 5249158651932825104
+
+#ifndef MAVLINK_STX
+#define MAVLINK_STX 254
+#endif
+
+#ifndef MAVLINK_ENDIAN
+#define MAVLINK_ENDIAN MAVLINK_LITTLE_ENDIAN
+#endif
+
+#ifndef MAVLINK_ALIGNED_FIELDS
+#define MAVLINK_ALIGNED_FIELDS 1
+#endif
+
+#ifndef MAVLINK_CRC_EXTRA
+#define MAVLINK_CRC_EXTRA 1
+#endif
+
+#ifndef MAVLINK_COMMAND_24BIT
+#define MAVLINK_COMMAND_24BIT 0
+#endif
+
+#include "version.h"
+#include "orion.h"
+
+#endif // MAVLINK_H
diff --git a/mavlink_lib/orion/mavlink_msg_ack_tm.h b/mavlink_lib/orion/mavlink_msg_ack_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..8abc2a50773e576580ab8179be7c6a2348071c59
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_ack_tm.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE ACK_TM PACKING
+
+#define MAVLINK_MSG_ID_ACK_TM 100
+
+
+typedef struct __mavlink_ack_tm_t {
+ uint8_t recv_msgid; /*<  Message id of the received message*/
+ uint8_t seq_ack; /*<  Sequence number of the received message*/
+} mavlink_ack_tm_t;
+
+#define MAVLINK_MSG_ID_ACK_TM_LEN 2
+#define MAVLINK_MSG_ID_ACK_TM_MIN_LEN 2
+#define MAVLINK_MSG_ID_100_LEN 2
+#define MAVLINK_MSG_ID_100_MIN_LEN 2
+
+#define MAVLINK_MSG_ID_ACK_TM_CRC 50
+#define MAVLINK_MSG_ID_100_CRC 50
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ACK_TM { \
+    100, \
+    "ACK_TM", \
+    2, \
+    {  { "recv_msgid", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_ack_tm_t, recv_msgid) }, \
+         { "seq_ack", NULL, MAVLINK_TYPE_UINT8_T, 0, 1, offsetof(mavlink_ack_tm_t, seq_ack) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ACK_TM { \
+    "ACK_TM", \
+    2, \
+    {  { "recv_msgid", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_ack_tm_t, recv_msgid) }, \
+         { "seq_ack", NULL, MAVLINK_TYPE_UINT8_T, 0, 1, offsetof(mavlink_ack_tm_t, seq_ack) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a ack_tm 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 recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_ack_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t recv_msgid, uint8_t seq_ack)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ACK_TM_LEN];
+    _mav_put_uint8_t(buf, 0, recv_msgid);
+    _mav_put_uint8_t(buf, 1, seq_ack);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ACK_TM_LEN);
+#else
+    mavlink_ack_tm_t packet;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ACK_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ACK_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_ACK_TM_MIN_LEN, MAVLINK_MSG_ID_ACK_TM_LEN, MAVLINK_MSG_ID_ACK_TM_CRC);
+}
+
+/**
+ * @brief Pack a ack_tm 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 recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_ack_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t recv_msgid,uint8_t seq_ack)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ACK_TM_LEN];
+    _mav_put_uint8_t(buf, 0, recv_msgid);
+    _mav_put_uint8_t(buf, 1, seq_ack);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ACK_TM_LEN);
+#else
+    mavlink_ack_tm_t packet;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ACK_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ACK_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_ACK_TM_MIN_LEN, MAVLINK_MSG_ID_ACK_TM_LEN, MAVLINK_MSG_ID_ACK_TM_CRC);
+}
+
+/**
+ * @brief Encode a ack_tm 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 ack_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_ack_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_ack_tm_t* ack_tm)
+{
+    return mavlink_msg_ack_tm_pack(system_id, component_id, msg, ack_tm->recv_msgid, ack_tm->seq_ack);
+}
+
+/**
+ * @brief Encode a ack_tm 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 ack_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_ack_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_ack_tm_t* ack_tm)
+{
+    return mavlink_msg_ack_tm_pack_chan(system_id, component_id, chan, msg, ack_tm->recv_msgid, ack_tm->seq_ack);
+}
+
+/**
+ * @brief Send a ack_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_ack_tm_send(mavlink_channel_t chan, uint8_t recv_msgid, uint8_t seq_ack)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ACK_TM_LEN];
+    _mav_put_uint8_t(buf, 0, recv_msgid);
+    _mav_put_uint8_t(buf, 1, seq_ack);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ACK_TM, buf, MAVLINK_MSG_ID_ACK_TM_MIN_LEN, MAVLINK_MSG_ID_ACK_TM_LEN, MAVLINK_MSG_ID_ACK_TM_CRC);
+#else
+    mavlink_ack_tm_t packet;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ACK_TM, (const char *)&packet, MAVLINK_MSG_ID_ACK_TM_MIN_LEN, MAVLINK_MSG_ID_ACK_TM_LEN, MAVLINK_MSG_ID_ACK_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a ack_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_ack_tm_send_struct(mavlink_channel_t chan, const mavlink_ack_tm_t* ack_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_ack_tm_send(chan, ack_tm->recv_msgid, ack_tm->seq_ack);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ACK_TM, (const char *)ack_tm, MAVLINK_MSG_ID_ACK_TM_MIN_LEN, MAVLINK_MSG_ID_ACK_TM_LEN, MAVLINK_MSG_ID_ACK_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_ACK_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_ack_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t recv_msgid, uint8_t seq_ack)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, recv_msgid);
+    _mav_put_uint8_t(buf, 1, seq_ack);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ACK_TM, buf, MAVLINK_MSG_ID_ACK_TM_MIN_LEN, MAVLINK_MSG_ID_ACK_TM_LEN, MAVLINK_MSG_ID_ACK_TM_CRC);
+#else
+    mavlink_ack_tm_t *packet = (mavlink_ack_tm_t *)msgbuf;
+    packet->recv_msgid = recv_msgid;
+    packet->seq_ack = seq_ack;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ACK_TM, (const char *)packet, MAVLINK_MSG_ID_ACK_TM_MIN_LEN, MAVLINK_MSG_ID_ACK_TM_LEN, MAVLINK_MSG_ID_ACK_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ACK_TM UNPACKING
+
+
+/**
+ * @brief Get field recv_msgid from ack_tm message
+ *
+ * @return  Message id of the received message
+ */
+static inline uint8_t mavlink_msg_ack_tm_get_recv_msgid(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Get field seq_ack from ack_tm message
+ *
+ * @return  Sequence number of the received message
+ */
+static inline uint8_t mavlink_msg_ack_tm_get_seq_ack(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  1);
+}
+
+/**
+ * @brief Decode a ack_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param ack_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_ack_tm_decode(const mavlink_message_t* msg, mavlink_ack_tm_t* ack_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    ack_tm->recv_msgid = mavlink_msg_ack_tm_get_recv_msgid(msg);
+    ack_tm->seq_ack = mavlink_msg_ack_tm_get_seq_ack(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_ACK_TM_LEN? msg->len : MAVLINK_MSG_ID_ACK_TM_LEN;
+        memset(ack_tm, 0, MAVLINK_MSG_ID_ACK_TM_LEN);
+    memcpy(ack_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_ada_tm.h b/mavlink_lib/orion/mavlink_msg_ada_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..f96a75c0db6fcd54bea1d9bb6658860e7e998179
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_ada_tm.h
@@ -0,0 +1,513 @@
+#pragma once
+// MESSAGE ADA_TM PACKING
+
+#define MAVLINK_MSG_ID_ADA_TM 205
+
+
+typedef struct __mavlink_ada_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float kalman_x0; /*<  Kalman state variable 0 (pressure)*/
+ float kalman_x1; /*<  Kalman state variable 1 (pressure velocity)*/
+ float kalman_x2; /*<  Kalman state variable 2 (pressure acceleration)*/
+ float vertical_speed; /*< [m/s] Vertical speed computed by the ADA*/
+ float msl_altitude; /*< [m] Altitude w.r.t. mean sea level*/
+ float ref_pressure; /*< [Pa] Calibration pressure*/
+ float ref_altitude; /*< [m] Calibration altitude*/
+ float ref_temperature; /*< [degC] Calibration temperature*/
+ float msl_pressure; /*< [Pa] Expected pressure at mean sea level*/
+ float msl_temperature; /*< [degC] Expected temperature at mean sea level*/
+ float dpl_altitude; /*< [m] Main parachute deployment altituyde*/
+ uint8_t state; /*<  ADA current state*/
+} mavlink_ada_tm_t;
+
+#define MAVLINK_MSG_ID_ADA_TM_LEN 53
+#define MAVLINK_MSG_ID_ADA_TM_MIN_LEN 53
+#define MAVLINK_MSG_ID_205_LEN 53
+#define MAVLINK_MSG_ID_205_MIN_LEN 53
+
+#define MAVLINK_MSG_ID_ADA_TM_CRC 234
+#define MAVLINK_MSG_ID_205_CRC 234
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ADA_TM { \
+    205, \
+    "ADA_TM", \
+    13, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_ada_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 52, offsetof(mavlink_ada_tm_t, state) }, \
+         { "kalman_x0", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_ada_tm_t, kalman_x0) }, \
+         { "kalman_x1", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_ada_tm_t, kalman_x1) }, \
+         { "kalman_x2", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_ada_tm_t, kalman_x2) }, \
+         { "vertical_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_ada_tm_t, vertical_speed) }, \
+         { "msl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_ada_tm_t, msl_altitude) }, \
+         { "ref_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_ada_tm_t, ref_pressure) }, \
+         { "ref_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_ada_tm_t, ref_altitude) }, \
+         { "ref_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_ada_tm_t, ref_temperature) }, \
+         { "msl_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_ada_tm_t, msl_pressure) }, \
+         { "msl_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_ada_tm_t, msl_temperature) }, \
+         { "dpl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_ada_tm_t, dpl_altitude) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ADA_TM { \
+    "ADA_TM", \
+    13, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_ada_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 52, offsetof(mavlink_ada_tm_t, state) }, \
+         { "kalman_x0", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_ada_tm_t, kalman_x0) }, \
+         { "kalman_x1", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_ada_tm_t, kalman_x1) }, \
+         { "kalman_x2", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_ada_tm_t, kalman_x2) }, \
+         { "vertical_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_ada_tm_t, vertical_speed) }, \
+         { "msl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_ada_tm_t, msl_altitude) }, \
+         { "ref_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_ada_tm_t, ref_pressure) }, \
+         { "ref_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_ada_tm_t, ref_altitude) }, \
+         { "ref_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_ada_tm_t, ref_temperature) }, \
+         { "msl_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_ada_tm_t, msl_pressure) }, \
+         { "msl_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_ada_tm_t, msl_temperature) }, \
+         { "dpl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_ada_tm_t, dpl_altitude) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a ada_tm 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 timestamp [us] When was this logged
+ * @param state  ADA current state
+ * @param kalman_x0  Kalman state variable 0 (pressure)
+ * @param kalman_x1  Kalman state variable 1 (pressure velocity)
+ * @param kalman_x2  Kalman state variable 2 (pressure acceleration)
+ * @param vertical_speed [m/s] Vertical speed computed by the ADA
+ * @param msl_altitude [m] Altitude w.r.t. mean sea level
+ * @param ref_pressure [Pa] Calibration pressure
+ * @param ref_altitude [m] Calibration altitude
+ * @param ref_temperature [degC] Calibration temperature
+ * @param msl_pressure [Pa] Expected pressure at mean sea level
+ * @param msl_temperature [degC] Expected temperature at mean sea level
+ * @param dpl_altitude [m] Main parachute deployment altituyde
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_ada_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint8_t state, float kalman_x0, float kalman_x1, float kalman_x2, float vertical_speed, float msl_altitude, float ref_pressure, float ref_altitude, float ref_temperature, float msl_pressure, float msl_temperature, float dpl_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ADA_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, kalman_x0);
+    _mav_put_float(buf, 12, kalman_x1);
+    _mav_put_float(buf, 16, kalman_x2);
+    _mav_put_float(buf, 20, vertical_speed);
+    _mav_put_float(buf, 24, msl_altitude);
+    _mav_put_float(buf, 28, ref_pressure);
+    _mav_put_float(buf, 32, ref_altitude);
+    _mav_put_float(buf, 36, ref_temperature);
+    _mav_put_float(buf, 40, msl_pressure);
+    _mav_put_float(buf, 44, msl_temperature);
+    _mav_put_float(buf, 48, dpl_altitude);
+    _mav_put_uint8_t(buf, 52, state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ADA_TM_LEN);
+#else
+    mavlink_ada_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.kalman_x0 = kalman_x0;
+    packet.kalman_x1 = kalman_x1;
+    packet.kalman_x2 = kalman_x2;
+    packet.vertical_speed = vertical_speed;
+    packet.msl_altitude = msl_altitude;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_altitude = ref_altitude;
+    packet.ref_temperature = ref_temperature;
+    packet.msl_pressure = msl_pressure;
+    packet.msl_temperature = msl_temperature;
+    packet.dpl_altitude = dpl_altitude;
+    packet.state = state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ADA_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ADA_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_ADA_TM_MIN_LEN, MAVLINK_MSG_ID_ADA_TM_LEN, MAVLINK_MSG_ID_ADA_TM_CRC);
+}
+
+/**
+ * @brief Pack a ada_tm 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 timestamp [us] When was this logged
+ * @param state  ADA current state
+ * @param kalman_x0  Kalman state variable 0 (pressure)
+ * @param kalman_x1  Kalman state variable 1 (pressure velocity)
+ * @param kalman_x2  Kalman state variable 2 (pressure acceleration)
+ * @param vertical_speed [m/s] Vertical speed computed by the ADA
+ * @param msl_altitude [m] Altitude w.r.t. mean sea level
+ * @param ref_pressure [Pa] Calibration pressure
+ * @param ref_altitude [m] Calibration altitude
+ * @param ref_temperature [degC] Calibration temperature
+ * @param msl_pressure [Pa] Expected pressure at mean sea level
+ * @param msl_temperature [degC] Expected temperature at mean sea level
+ * @param dpl_altitude [m] Main parachute deployment altituyde
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_ada_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint8_t state,float kalman_x0,float kalman_x1,float kalman_x2,float vertical_speed,float msl_altitude,float ref_pressure,float ref_altitude,float ref_temperature,float msl_pressure,float msl_temperature,float dpl_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ADA_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, kalman_x0);
+    _mav_put_float(buf, 12, kalman_x1);
+    _mav_put_float(buf, 16, kalman_x2);
+    _mav_put_float(buf, 20, vertical_speed);
+    _mav_put_float(buf, 24, msl_altitude);
+    _mav_put_float(buf, 28, ref_pressure);
+    _mav_put_float(buf, 32, ref_altitude);
+    _mav_put_float(buf, 36, ref_temperature);
+    _mav_put_float(buf, 40, msl_pressure);
+    _mav_put_float(buf, 44, msl_temperature);
+    _mav_put_float(buf, 48, dpl_altitude);
+    _mav_put_uint8_t(buf, 52, state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ADA_TM_LEN);
+#else
+    mavlink_ada_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.kalman_x0 = kalman_x0;
+    packet.kalman_x1 = kalman_x1;
+    packet.kalman_x2 = kalman_x2;
+    packet.vertical_speed = vertical_speed;
+    packet.msl_altitude = msl_altitude;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_altitude = ref_altitude;
+    packet.ref_temperature = ref_temperature;
+    packet.msl_pressure = msl_pressure;
+    packet.msl_temperature = msl_temperature;
+    packet.dpl_altitude = dpl_altitude;
+    packet.state = state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ADA_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ADA_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_ADA_TM_MIN_LEN, MAVLINK_MSG_ID_ADA_TM_LEN, MAVLINK_MSG_ID_ADA_TM_CRC);
+}
+
+/**
+ * @brief Encode a ada_tm 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 ada_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_ada_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_ada_tm_t* ada_tm)
+{
+    return mavlink_msg_ada_tm_pack(system_id, component_id, msg, ada_tm->timestamp, ada_tm->state, ada_tm->kalman_x0, ada_tm->kalman_x1, ada_tm->kalman_x2, ada_tm->vertical_speed, ada_tm->msl_altitude, ada_tm->ref_pressure, ada_tm->ref_altitude, ada_tm->ref_temperature, ada_tm->msl_pressure, ada_tm->msl_temperature, ada_tm->dpl_altitude);
+}
+
+/**
+ * @brief Encode a ada_tm 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 ada_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_ada_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_ada_tm_t* ada_tm)
+{
+    return mavlink_msg_ada_tm_pack_chan(system_id, component_id, chan, msg, ada_tm->timestamp, ada_tm->state, ada_tm->kalman_x0, ada_tm->kalman_x1, ada_tm->kalman_x2, ada_tm->vertical_speed, ada_tm->msl_altitude, ada_tm->ref_pressure, ada_tm->ref_altitude, ada_tm->ref_temperature, ada_tm->msl_pressure, ada_tm->msl_temperature, ada_tm->dpl_altitude);
+}
+
+/**
+ * @brief Send a ada_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param state  ADA current state
+ * @param kalman_x0  Kalman state variable 0 (pressure)
+ * @param kalman_x1  Kalman state variable 1 (pressure velocity)
+ * @param kalman_x2  Kalman state variable 2 (pressure acceleration)
+ * @param vertical_speed [m/s] Vertical speed computed by the ADA
+ * @param msl_altitude [m] Altitude w.r.t. mean sea level
+ * @param ref_pressure [Pa] Calibration pressure
+ * @param ref_altitude [m] Calibration altitude
+ * @param ref_temperature [degC] Calibration temperature
+ * @param msl_pressure [Pa] Expected pressure at mean sea level
+ * @param msl_temperature [degC] Expected temperature at mean sea level
+ * @param dpl_altitude [m] Main parachute deployment altituyde
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_ada_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t state, float kalman_x0, float kalman_x1, float kalman_x2, float vertical_speed, float msl_altitude, float ref_pressure, float ref_altitude, float ref_temperature, float msl_pressure, float msl_temperature, float dpl_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ADA_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, kalman_x0);
+    _mav_put_float(buf, 12, kalman_x1);
+    _mav_put_float(buf, 16, kalman_x2);
+    _mav_put_float(buf, 20, vertical_speed);
+    _mav_put_float(buf, 24, msl_altitude);
+    _mav_put_float(buf, 28, ref_pressure);
+    _mav_put_float(buf, 32, ref_altitude);
+    _mav_put_float(buf, 36, ref_temperature);
+    _mav_put_float(buf, 40, msl_pressure);
+    _mav_put_float(buf, 44, msl_temperature);
+    _mav_put_float(buf, 48, dpl_altitude);
+    _mav_put_uint8_t(buf, 52, state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADA_TM, buf, MAVLINK_MSG_ID_ADA_TM_MIN_LEN, MAVLINK_MSG_ID_ADA_TM_LEN, MAVLINK_MSG_ID_ADA_TM_CRC);
+#else
+    mavlink_ada_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.kalman_x0 = kalman_x0;
+    packet.kalman_x1 = kalman_x1;
+    packet.kalman_x2 = kalman_x2;
+    packet.vertical_speed = vertical_speed;
+    packet.msl_altitude = msl_altitude;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_altitude = ref_altitude;
+    packet.ref_temperature = ref_temperature;
+    packet.msl_pressure = msl_pressure;
+    packet.msl_temperature = msl_temperature;
+    packet.dpl_altitude = dpl_altitude;
+    packet.state = state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADA_TM, (const char *)&packet, MAVLINK_MSG_ID_ADA_TM_MIN_LEN, MAVLINK_MSG_ID_ADA_TM_LEN, MAVLINK_MSG_ID_ADA_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a ada_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_ada_tm_send_struct(mavlink_channel_t chan, const mavlink_ada_tm_t* ada_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_ada_tm_send(chan, ada_tm->timestamp, ada_tm->state, ada_tm->kalman_x0, ada_tm->kalman_x1, ada_tm->kalman_x2, ada_tm->vertical_speed, ada_tm->msl_altitude, ada_tm->ref_pressure, ada_tm->ref_altitude, ada_tm->ref_temperature, ada_tm->msl_pressure, ada_tm->msl_temperature, ada_tm->dpl_altitude);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADA_TM, (const char *)ada_tm, MAVLINK_MSG_ID_ADA_TM_MIN_LEN, MAVLINK_MSG_ID_ADA_TM_LEN, MAVLINK_MSG_ID_ADA_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_ADA_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_ada_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint8_t state, float kalman_x0, float kalman_x1, float kalman_x2, float vertical_speed, float msl_altitude, float ref_pressure, float ref_altitude, float ref_temperature, float msl_pressure, float msl_temperature, float dpl_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, kalman_x0);
+    _mav_put_float(buf, 12, kalman_x1);
+    _mav_put_float(buf, 16, kalman_x2);
+    _mav_put_float(buf, 20, vertical_speed);
+    _mav_put_float(buf, 24, msl_altitude);
+    _mav_put_float(buf, 28, ref_pressure);
+    _mav_put_float(buf, 32, ref_altitude);
+    _mav_put_float(buf, 36, ref_temperature);
+    _mav_put_float(buf, 40, msl_pressure);
+    _mav_put_float(buf, 44, msl_temperature);
+    _mav_put_float(buf, 48, dpl_altitude);
+    _mav_put_uint8_t(buf, 52, state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADA_TM, buf, MAVLINK_MSG_ID_ADA_TM_MIN_LEN, MAVLINK_MSG_ID_ADA_TM_LEN, MAVLINK_MSG_ID_ADA_TM_CRC);
+#else
+    mavlink_ada_tm_t *packet = (mavlink_ada_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->kalman_x0 = kalman_x0;
+    packet->kalman_x1 = kalman_x1;
+    packet->kalman_x2 = kalman_x2;
+    packet->vertical_speed = vertical_speed;
+    packet->msl_altitude = msl_altitude;
+    packet->ref_pressure = ref_pressure;
+    packet->ref_altitude = ref_altitude;
+    packet->ref_temperature = ref_temperature;
+    packet->msl_pressure = msl_pressure;
+    packet->msl_temperature = msl_temperature;
+    packet->dpl_altitude = dpl_altitude;
+    packet->state = state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADA_TM, (const char *)packet, MAVLINK_MSG_ID_ADA_TM_MIN_LEN, MAVLINK_MSG_ID_ADA_TM_LEN, MAVLINK_MSG_ID_ADA_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ADA_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from ada_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_ada_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field state from ada_tm message
+ *
+ * @return  ADA current state
+ */
+static inline uint8_t mavlink_msg_ada_tm_get_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  52);
+}
+
+/**
+ * @brief Get field kalman_x0 from ada_tm message
+ *
+ * @return  Kalman state variable 0 (pressure)
+ */
+static inline float mavlink_msg_ada_tm_get_kalman_x0(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field kalman_x1 from ada_tm message
+ *
+ * @return  Kalman state variable 1 (pressure velocity)
+ */
+static inline float mavlink_msg_ada_tm_get_kalman_x1(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field kalman_x2 from ada_tm message
+ *
+ * @return  Kalman state variable 2 (pressure acceleration)
+ */
+static inline float mavlink_msg_ada_tm_get_kalman_x2(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field vertical_speed from ada_tm message
+ *
+ * @return [m/s] Vertical speed computed by the ADA
+ */
+static inline float mavlink_msg_ada_tm_get_vertical_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field msl_altitude from ada_tm message
+ *
+ * @return [m] Altitude w.r.t. mean sea level
+ */
+static inline float mavlink_msg_ada_tm_get_msl_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field ref_pressure from ada_tm message
+ *
+ * @return [Pa] Calibration pressure
+ */
+static inline float mavlink_msg_ada_tm_get_ref_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field ref_altitude from ada_tm message
+ *
+ * @return [m] Calibration altitude
+ */
+static inline float mavlink_msg_ada_tm_get_ref_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field ref_temperature from ada_tm message
+ *
+ * @return [degC] Calibration temperature
+ */
+static inline float mavlink_msg_ada_tm_get_ref_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field msl_pressure from ada_tm message
+ *
+ * @return [Pa] Expected pressure at mean sea level
+ */
+static inline float mavlink_msg_ada_tm_get_msl_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Get field msl_temperature from ada_tm message
+ *
+ * @return [degC] Expected temperature at mean sea level
+ */
+static inline float mavlink_msg_ada_tm_get_msl_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  44);
+}
+
+/**
+ * @brief Get field dpl_altitude from ada_tm message
+ *
+ * @return [m] Main parachute deployment altituyde
+ */
+static inline float mavlink_msg_ada_tm_get_dpl_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  48);
+}
+
+/**
+ * @brief Decode a ada_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param ada_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_ada_tm_decode(const mavlink_message_t* msg, mavlink_ada_tm_t* ada_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    ada_tm->timestamp = mavlink_msg_ada_tm_get_timestamp(msg);
+    ada_tm->kalman_x0 = mavlink_msg_ada_tm_get_kalman_x0(msg);
+    ada_tm->kalman_x1 = mavlink_msg_ada_tm_get_kalman_x1(msg);
+    ada_tm->kalman_x2 = mavlink_msg_ada_tm_get_kalman_x2(msg);
+    ada_tm->vertical_speed = mavlink_msg_ada_tm_get_vertical_speed(msg);
+    ada_tm->msl_altitude = mavlink_msg_ada_tm_get_msl_altitude(msg);
+    ada_tm->ref_pressure = mavlink_msg_ada_tm_get_ref_pressure(msg);
+    ada_tm->ref_altitude = mavlink_msg_ada_tm_get_ref_altitude(msg);
+    ada_tm->ref_temperature = mavlink_msg_ada_tm_get_ref_temperature(msg);
+    ada_tm->msl_pressure = mavlink_msg_ada_tm_get_msl_pressure(msg);
+    ada_tm->msl_temperature = mavlink_msg_ada_tm_get_msl_temperature(msg);
+    ada_tm->dpl_altitude = mavlink_msg_ada_tm_get_dpl_altitude(msg);
+    ada_tm->state = mavlink_msg_ada_tm_get_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_ADA_TM_LEN? msg->len : MAVLINK_MSG_ID_ADA_TM_LEN;
+        memset(ada_tm, 0, MAVLINK_MSG_ID_ADA_TM_LEN);
+    memcpy(ada_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_adc_tm.h b/mavlink_lib/orion/mavlink_msg_adc_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..ddd0f2ef7947c235fd4f2bc7d7259db63d6ed580
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_adc_tm.h
@@ -0,0 +1,430 @@
+#pragma once
+// MESSAGE ADC_TM PACKING
+
+#define MAVLINK_MSG_ID_ADC_TM 106
+
+
+typedef struct __mavlink_adc_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float channel_0; /*< [V] ADC voltage measured on channel 0*/
+ float channel_1; /*< [V] ADC voltage measured on channel 1*/
+ float channel_2; /*< [V] ADC voltage measured on channel 2*/
+ float channel_3; /*< [V] ADC voltage measured on channel 3*/
+ float channel_4; /*< [V] ADC voltage measured on channel 4*/
+ float channel_5; /*< [V] ADC voltage measured on channel 5*/
+ float channel_6; /*< [V] ADC voltage measured on channel 6*/
+ float channel_7; /*< [V] ADC voltage measured on channel 7*/
+ char sensor_name[20]; /*<  Sensor name*/
+} mavlink_adc_tm_t;
+
+#define MAVLINK_MSG_ID_ADC_TM_LEN 60
+#define MAVLINK_MSG_ID_ADC_TM_MIN_LEN 60
+#define MAVLINK_MSG_ID_106_LEN 60
+#define MAVLINK_MSG_ID_106_MIN_LEN 60
+
+#define MAVLINK_MSG_ID_ADC_TM_CRC 229
+#define MAVLINK_MSG_ID_106_CRC 229
+
+#define MAVLINK_MSG_ADC_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ADC_TM { \
+    106, \
+    "ADC_TM", \
+    10, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_adc_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 40, offsetof(mavlink_adc_tm_t, sensor_name) }, \
+         { "channel_0", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_adc_tm_t, channel_0) }, \
+         { "channel_1", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_adc_tm_t, channel_1) }, \
+         { "channel_2", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_adc_tm_t, channel_2) }, \
+         { "channel_3", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_adc_tm_t, channel_3) }, \
+         { "channel_4", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_adc_tm_t, channel_4) }, \
+         { "channel_5", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_adc_tm_t, channel_5) }, \
+         { "channel_6", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_adc_tm_t, channel_6) }, \
+         { "channel_7", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_adc_tm_t, channel_7) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ADC_TM { \
+    "ADC_TM", \
+    10, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_adc_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 40, offsetof(mavlink_adc_tm_t, sensor_name) }, \
+         { "channel_0", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_adc_tm_t, channel_0) }, \
+         { "channel_1", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_adc_tm_t, channel_1) }, \
+         { "channel_2", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_adc_tm_t, channel_2) }, \
+         { "channel_3", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_adc_tm_t, channel_3) }, \
+         { "channel_4", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_adc_tm_t, channel_4) }, \
+         { "channel_5", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_adc_tm_t, channel_5) }, \
+         { "channel_6", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_adc_tm_t, channel_6) }, \
+         { "channel_7", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_adc_tm_t, channel_7) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a adc_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param channel_0 [V] ADC voltage measured on channel 0
+ * @param channel_1 [V] ADC voltage measured on channel 1
+ * @param channel_2 [V] ADC voltage measured on channel 2
+ * @param channel_3 [V] ADC voltage measured on channel 3
+ * @param channel_4 [V] ADC voltage measured on channel 4
+ * @param channel_5 [V] ADC voltage measured on channel 5
+ * @param channel_6 [V] ADC voltage measured on channel 6
+ * @param channel_7 [V] ADC voltage measured on channel 7
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_adc_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, float channel_0, float channel_1, float channel_2, float channel_3, float channel_4, float channel_5, float channel_6, float channel_7)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ADC_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, channel_0);
+    _mav_put_float(buf, 12, channel_1);
+    _mav_put_float(buf, 16, channel_2);
+    _mav_put_float(buf, 20, channel_3);
+    _mav_put_float(buf, 24, channel_4);
+    _mav_put_float(buf, 28, channel_5);
+    _mav_put_float(buf, 32, channel_6);
+    _mav_put_float(buf, 36, channel_7);
+    _mav_put_char_array(buf, 40, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ADC_TM_LEN);
+#else
+    mavlink_adc_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.channel_0 = channel_0;
+    packet.channel_1 = channel_1;
+    packet.channel_2 = channel_2;
+    packet.channel_3 = channel_3;
+    packet.channel_4 = channel_4;
+    packet.channel_5 = channel_5;
+    packet.channel_6 = channel_6;
+    packet.channel_7 = channel_7;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ADC_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ADC_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_ADC_TM_MIN_LEN, MAVLINK_MSG_ID_ADC_TM_LEN, MAVLINK_MSG_ID_ADC_TM_CRC);
+}
+
+/**
+ * @brief Pack a adc_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param channel_0 [V] ADC voltage measured on channel 0
+ * @param channel_1 [V] ADC voltage measured on channel 1
+ * @param channel_2 [V] ADC voltage measured on channel 2
+ * @param channel_3 [V] ADC voltage measured on channel 3
+ * @param channel_4 [V] ADC voltage measured on channel 4
+ * @param channel_5 [V] ADC voltage measured on channel 5
+ * @param channel_6 [V] ADC voltage measured on channel 6
+ * @param channel_7 [V] ADC voltage measured on channel 7
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_adc_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,float channel_0,float channel_1,float channel_2,float channel_3,float channel_4,float channel_5,float channel_6,float channel_7)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ADC_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, channel_0);
+    _mav_put_float(buf, 12, channel_1);
+    _mav_put_float(buf, 16, channel_2);
+    _mav_put_float(buf, 20, channel_3);
+    _mav_put_float(buf, 24, channel_4);
+    _mav_put_float(buf, 28, channel_5);
+    _mav_put_float(buf, 32, channel_6);
+    _mav_put_float(buf, 36, channel_7);
+    _mav_put_char_array(buf, 40, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ADC_TM_LEN);
+#else
+    mavlink_adc_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.channel_0 = channel_0;
+    packet.channel_1 = channel_1;
+    packet.channel_2 = channel_2;
+    packet.channel_3 = channel_3;
+    packet.channel_4 = channel_4;
+    packet.channel_5 = channel_5;
+    packet.channel_6 = channel_6;
+    packet.channel_7 = channel_7;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ADC_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ADC_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_ADC_TM_MIN_LEN, MAVLINK_MSG_ID_ADC_TM_LEN, MAVLINK_MSG_ID_ADC_TM_CRC);
+}
+
+/**
+ * @brief Encode a adc_tm 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 adc_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_adc_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_adc_tm_t* adc_tm)
+{
+    return mavlink_msg_adc_tm_pack(system_id, component_id, msg, adc_tm->timestamp, adc_tm->sensor_name, adc_tm->channel_0, adc_tm->channel_1, adc_tm->channel_2, adc_tm->channel_3, adc_tm->channel_4, adc_tm->channel_5, adc_tm->channel_6, adc_tm->channel_7);
+}
+
+/**
+ * @brief Encode a adc_tm 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 adc_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_adc_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_adc_tm_t* adc_tm)
+{
+    return mavlink_msg_adc_tm_pack_chan(system_id, component_id, chan, msg, adc_tm->timestamp, adc_tm->sensor_name, adc_tm->channel_0, adc_tm->channel_1, adc_tm->channel_2, adc_tm->channel_3, adc_tm->channel_4, adc_tm->channel_5, adc_tm->channel_6, adc_tm->channel_7);
+}
+
+/**
+ * @brief Send a adc_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param channel_0 [V] ADC voltage measured on channel 0
+ * @param channel_1 [V] ADC voltage measured on channel 1
+ * @param channel_2 [V] ADC voltage measured on channel 2
+ * @param channel_3 [V] ADC voltage measured on channel 3
+ * @param channel_4 [V] ADC voltage measured on channel 4
+ * @param channel_5 [V] ADC voltage measured on channel 5
+ * @param channel_6 [V] ADC voltage measured on channel 6
+ * @param channel_7 [V] ADC voltage measured on channel 7
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_adc_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, float channel_0, float channel_1, float channel_2, float channel_3, float channel_4, float channel_5, float channel_6, float channel_7)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ADC_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, channel_0);
+    _mav_put_float(buf, 12, channel_1);
+    _mav_put_float(buf, 16, channel_2);
+    _mav_put_float(buf, 20, channel_3);
+    _mav_put_float(buf, 24, channel_4);
+    _mav_put_float(buf, 28, channel_5);
+    _mav_put_float(buf, 32, channel_6);
+    _mav_put_float(buf, 36, channel_7);
+    _mav_put_char_array(buf, 40, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADC_TM, buf, MAVLINK_MSG_ID_ADC_TM_MIN_LEN, MAVLINK_MSG_ID_ADC_TM_LEN, MAVLINK_MSG_ID_ADC_TM_CRC);
+#else
+    mavlink_adc_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.channel_0 = channel_0;
+    packet.channel_1 = channel_1;
+    packet.channel_2 = channel_2;
+    packet.channel_3 = channel_3;
+    packet.channel_4 = channel_4;
+    packet.channel_5 = channel_5;
+    packet.channel_6 = channel_6;
+    packet.channel_7 = channel_7;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADC_TM, (const char *)&packet, MAVLINK_MSG_ID_ADC_TM_MIN_LEN, MAVLINK_MSG_ID_ADC_TM_LEN, MAVLINK_MSG_ID_ADC_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a adc_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_adc_tm_send_struct(mavlink_channel_t chan, const mavlink_adc_tm_t* adc_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_adc_tm_send(chan, adc_tm->timestamp, adc_tm->sensor_name, adc_tm->channel_0, adc_tm->channel_1, adc_tm->channel_2, adc_tm->channel_3, adc_tm->channel_4, adc_tm->channel_5, adc_tm->channel_6, adc_tm->channel_7);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADC_TM, (const char *)adc_tm, MAVLINK_MSG_ID_ADC_TM_MIN_LEN, MAVLINK_MSG_ID_ADC_TM_LEN, MAVLINK_MSG_ID_ADC_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_ADC_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_adc_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, float channel_0, float channel_1, float channel_2, float channel_3, float channel_4, float channel_5, float channel_6, float channel_7)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, channel_0);
+    _mav_put_float(buf, 12, channel_1);
+    _mav_put_float(buf, 16, channel_2);
+    _mav_put_float(buf, 20, channel_3);
+    _mav_put_float(buf, 24, channel_4);
+    _mav_put_float(buf, 28, channel_5);
+    _mav_put_float(buf, 32, channel_6);
+    _mav_put_float(buf, 36, channel_7);
+    _mav_put_char_array(buf, 40, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADC_TM, buf, MAVLINK_MSG_ID_ADC_TM_MIN_LEN, MAVLINK_MSG_ID_ADC_TM_LEN, MAVLINK_MSG_ID_ADC_TM_CRC);
+#else
+    mavlink_adc_tm_t *packet = (mavlink_adc_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->channel_0 = channel_0;
+    packet->channel_1 = channel_1;
+    packet->channel_2 = channel_2;
+    packet->channel_3 = channel_3;
+    packet->channel_4 = channel_4;
+    packet->channel_5 = channel_5;
+    packet->channel_6 = channel_6;
+    packet->channel_7 = channel_7;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ADC_TM, (const char *)packet, MAVLINK_MSG_ID_ADC_TM_MIN_LEN, MAVLINK_MSG_ID_ADC_TM_LEN, MAVLINK_MSG_ID_ADC_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ADC_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from adc_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_adc_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from adc_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_adc_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  40);
+}
+
+/**
+ * @brief Get field channel_0 from adc_tm message
+ *
+ * @return [V] ADC voltage measured on channel 0
+ */
+static inline float mavlink_msg_adc_tm_get_channel_0(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field channel_1 from adc_tm message
+ *
+ * @return [V] ADC voltage measured on channel 1
+ */
+static inline float mavlink_msg_adc_tm_get_channel_1(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field channel_2 from adc_tm message
+ *
+ * @return [V] ADC voltage measured on channel 2
+ */
+static inline float mavlink_msg_adc_tm_get_channel_2(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field channel_3 from adc_tm message
+ *
+ * @return [V] ADC voltage measured on channel 3
+ */
+static inline float mavlink_msg_adc_tm_get_channel_3(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field channel_4 from adc_tm message
+ *
+ * @return [V] ADC voltage measured on channel 4
+ */
+static inline float mavlink_msg_adc_tm_get_channel_4(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field channel_5 from adc_tm message
+ *
+ * @return [V] ADC voltage measured on channel 5
+ */
+static inline float mavlink_msg_adc_tm_get_channel_5(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field channel_6 from adc_tm message
+ *
+ * @return [V] ADC voltage measured on channel 6
+ */
+static inline float mavlink_msg_adc_tm_get_channel_6(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field channel_7 from adc_tm message
+ *
+ * @return [V] ADC voltage measured on channel 7
+ */
+static inline float mavlink_msg_adc_tm_get_channel_7(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Decode a adc_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param adc_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_adc_tm_decode(const mavlink_message_t* msg, mavlink_adc_tm_t* adc_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    adc_tm->timestamp = mavlink_msg_adc_tm_get_timestamp(msg);
+    adc_tm->channel_0 = mavlink_msg_adc_tm_get_channel_0(msg);
+    adc_tm->channel_1 = mavlink_msg_adc_tm_get_channel_1(msg);
+    adc_tm->channel_2 = mavlink_msg_adc_tm_get_channel_2(msg);
+    adc_tm->channel_3 = mavlink_msg_adc_tm_get_channel_3(msg);
+    adc_tm->channel_4 = mavlink_msg_adc_tm_get_channel_4(msg);
+    adc_tm->channel_5 = mavlink_msg_adc_tm_get_channel_5(msg);
+    adc_tm->channel_6 = mavlink_msg_adc_tm_get_channel_6(msg);
+    adc_tm->channel_7 = mavlink_msg_adc_tm_get_channel_7(msg);
+    mavlink_msg_adc_tm_get_sensor_name(msg, adc_tm->sensor_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_ADC_TM_LEN? msg->len : MAVLINK_MSG_ID_ADC_TM_LEN;
+        memset(adc_tm, 0, MAVLINK_MSG_ID_ADC_TM_LEN);
+    memcpy(adc_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_arp_command_tc.h b/mavlink_lib/orion/mavlink_msg_arp_command_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..c4b430cde103bc8c8b0d91326f6d9ceb43ea2972
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_arp_command_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE ARP_COMMAND_TC PACKING
+
+#define MAVLINK_MSG_ID_ARP_COMMAND_TC 65
+
+
+typedef struct __mavlink_arp_command_tc_t {
+ uint8_t command_id; /*<  A member of the MavCommandList enum*/
+} mavlink_arp_command_tc_t;
+
+#define MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN 1
+#define MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN 1
+#define MAVLINK_MSG_ID_65_LEN 1
+#define MAVLINK_MSG_ID_65_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_ARP_COMMAND_TC_CRC 181
+#define MAVLINK_MSG_ID_65_CRC 181
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ARP_COMMAND_TC { \
+    65, \
+    "ARP_COMMAND_TC", \
+    1, \
+    {  { "command_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_arp_command_tc_t, command_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ARP_COMMAND_TC { \
+    "ARP_COMMAND_TC", \
+    1, \
+    {  { "command_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_arp_command_tc_t, command_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a arp_command_tc 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 command_id  A member of the MavCommandList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_arp_command_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t command_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN];
+    _mav_put_uint8_t(buf, 0, command_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN);
+#else
+    mavlink_arp_command_tc_t packet;
+    packet.command_id = command_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ARP_COMMAND_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_CRC);
+}
+
+/**
+ * @brief Pack a arp_command_tc 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 command_id  A member of the MavCommandList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_arp_command_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t command_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN];
+    _mav_put_uint8_t(buf, 0, command_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN);
+#else
+    mavlink_arp_command_tc_t packet;
+    packet.command_id = command_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ARP_COMMAND_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_CRC);
+}
+
+/**
+ * @brief Encode a arp_command_tc 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 arp_command_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_arp_command_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_arp_command_tc_t* arp_command_tc)
+{
+    return mavlink_msg_arp_command_tc_pack(system_id, component_id, msg, arp_command_tc->command_id);
+}
+
+/**
+ * @brief Encode a arp_command_tc 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 arp_command_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_arp_command_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_arp_command_tc_t* arp_command_tc)
+{
+    return mavlink_msg_arp_command_tc_pack_chan(system_id, component_id, chan, msg, arp_command_tc->command_id);
+}
+
+/**
+ * @brief Send a arp_command_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param command_id  A member of the MavCommandList enum
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_arp_command_tc_send(mavlink_channel_t chan, uint8_t command_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN];
+    _mav_put_uint8_t(buf, 0, command_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_COMMAND_TC, buf, MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_CRC);
+#else
+    mavlink_arp_command_tc_t packet;
+    packet.command_id = command_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_COMMAND_TC, (const char *)&packet, MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a arp_command_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_arp_command_tc_send_struct(mavlink_channel_t chan, const mavlink_arp_command_tc_t* arp_command_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_arp_command_tc_send(chan, arp_command_tc->command_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_COMMAND_TC, (const char *)arp_command_tc, MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_arp_command_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t command_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, command_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_COMMAND_TC, buf, MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_CRC);
+#else
+    mavlink_arp_command_tc_t *packet = (mavlink_arp_command_tc_t *)msgbuf;
+    packet->command_id = command_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_COMMAND_TC, (const char *)packet, MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN, MAVLINK_MSG_ID_ARP_COMMAND_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ARP_COMMAND_TC UNPACKING
+
+
+/**
+ * @brief Get field command_id from arp_command_tc message
+ *
+ * @return  A member of the MavCommandList enum
+ */
+static inline uint8_t mavlink_msg_arp_command_tc_get_command_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Decode a arp_command_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param arp_command_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_arp_command_tc_decode(const mavlink_message_t* msg, mavlink_arp_command_tc_t* arp_command_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    arp_command_tc->command_id = mavlink_msg_arp_command_tc_get_command_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN? msg->len : MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN;
+        memset(arp_command_tc, 0, MAVLINK_MSG_ID_ARP_COMMAND_TC_LEN);
+    memcpy(arp_command_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_arp_tm.h b/mavlink_lib/orion/mavlink_msg_arp_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..b09667d4fa9046d7ceeba28c518c47ef1d4c7d27
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_arp_tm.h
@@ -0,0 +1,1063 @@
+#pragma once
+// MESSAGE ARP_TM PACKING
+
+#define MAVLINK_MSG_ID_ARP_TM 150
+
+
+typedef struct __mavlink_arp_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp*/
+ float yaw; /*< [deg] Current Yaw*/
+ float pitch; /*< [deg] Current Pitch*/
+ float roll; /*< [deg] Current Roll*/
+ float target_yaw; /*< [deg] Target Yaw*/
+ float target_pitch; /*< [deg] Target Pitch*/
+ float stepperX_pos; /*< [deg] StepperX current position wrt the boot position*/
+ float stepperX_delta; /*< [deg] StepperX last actuated delta angle*/
+ float stepperX_speed; /*< [rps] StepperX current speed*/
+ float stepperY_pos; /*< [deg] StepperY current position wrt the boot position*/
+ float stepperY_delta; /*< [deg] StepperY last actuated delta angle*/
+ float stepperY_speed; /*< [rps] StepperY current Speed*/
+ float gps_latitude; /*< [deg] Latitude*/
+ float gps_longitude; /*< [deg] Longitude*/
+ float gps_height; /*< [m] Altitude*/
+ float main_rx_rssi; /*< [dBm] Receive RSSI*/
+ float payload_rx_rssi; /*< [dBm] Receive RSSI*/
+ float battery_voltage; /*< [V] Battery voltage*/
+ uint16_t main_packet_tx_error_count; /*<  Number of errors during send*/
+ uint16_t main_tx_bitrate; /*< [b/s] Send bitrate*/
+ uint16_t main_packet_rx_success_count; /*<  Number of succesfull received mavlink packets*/
+ uint16_t main_packet_rx_drop_count; /*<  Number of dropped mavlink packets*/
+ uint16_t main_rx_bitrate; /*< [b/s] Receive bitrate*/
+ uint16_t payload_packet_tx_error_count; /*<  Number of errors during send*/
+ uint16_t payload_tx_bitrate; /*< [b/s] Send bitrate*/
+ uint16_t payload_packet_rx_success_count; /*<  Number of succesfull received mavlink packets*/
+ uint16_t payload_packet_rx_drop_count; /*<  Number of dropped mavlink packets*/
+ uint16_t payload_rx_bitrate; /*< [b/s] Receive bitrate*/
+ int16_t log_number; /*<  Currently active log file, -1 if the logger is inactive*/
+ uint8_t state; /*<  State Machine Controller State*/
+ uint8_t gps_fix; /*<  Wether the GPS has a FIX*/
+ uint8_t main_radio_present; /*<  Boolean indicating the presence of the main radio*/
+ uint8_t payload_radio_present; /*<  Boolean indicating the presence of the payload radio*/
+ uint8_t ethernet_present; /*<  Boolean indicating the presence of the ethernet module*/
+ uint8_t ethernet_status; /*<  Status flag indicating the status of the ethernet PHY*/
+} mavlink_arp_tm_t;
+
+#define MAVLINK_MSG_ID_ARP_TM_LEN 104
+#define MAVLINK_MSG_ID_ARP_TM_MIN_LEN 104
+#define MAVLINK_MSG_ID_150_LEN 104
+#define MAVLINK_MSG_ID_150_MIN_LEN 104
+
+#define MAVLINK_MSG_ID_ARP_TM_CRC 239
+#define MAVLINK_MSG_ID_150_CRC 239
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ARP_TM { \
+    150, \
+    "ARP_TM", \
+    35, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_arp_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 98, offsetof(mavlink_arp_tm_t, state) }, \
+         { "yaw", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_arp_tm_t, yaw) }, \
+         { "pitch", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_arp_tm_t, pitch) }, \
+         { "roll", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_arp_tm_t, roll) }, \
+         { "target_yaw", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_arp_tm_t, target_yaw) }, \
+         { "target_pitch", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_arp_tm_t, target_pitch) }, \
+         { "stepperX_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_arp_tm_t, stepperX_pos) }, \
+         { "stepperX_delta", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_arp_tm_t, stepperX_delta) }, \
+         { "stepperX_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_arp_tm_t, stepperX_speed) }, \
+         { "stepperY_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_arp_tm_t, stepperY_pos) }, \
+         { "stepperY_delta", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_arp_tm_t, stepperY_delta) }, \
+         { "stepperY_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_arp_tm_t, stepperY_speed) }, \
+         { "gps_latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_arp_tm_t, gps_latitude) }, \
+         { "gps_longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_arp_tm_t, gps_longitude) }, \
+         { "gps_height", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_arp_tm_t, gps_height) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 99, offsetof(mavlink_arp_tm_t, gps_fix) }, \
+         { "main_radio_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 100, offsetof(mavlink_arp_tm_t, main_radio_present) }, \
+         { "main_packet_tx_error_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 76, offsetof(mavlink_arp_tm_t, main_packet_tx_error_count) }, \
+         { "main_tx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 78, offsetof(mavlink_arp_tm_t, main_tx_bitrate) }, \
+         { "main_packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 80, offsetof(mavlink_arp_tm_t, main_packet_rx_success_count) }, \
+         { "main_packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 82, offsetof(mavlink_arp_tm_t, main_packet_rx_drop_count) }, \
+         { "main_rx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 84, offsetof(mavlink_arp_tm_t, main_rx_bitrate) }, \
+         { "main_rx_rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_arp_tm_t, main_rx_rssi) }, \
+         { "payload_radio_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 101, offsetof(mavlink_arp_tm_t, payload_radio_present) }, \
+         { "payload_packet_tx_error_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 86, offsetof(mavlink_arp_tm_t, payload_packet_tx_error_count) }, \
+         { "payload_tx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 88, offsetof(mavlink_arp_tm_t, payload_tx_bitrate) }, \
+         { "payload_packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 90, offsetof(mavlink_arp_tm_t, payload_packet_rx_success_count) }, \
+         { "payload_packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 92, offsetof(mavlink_arp_tm_t, payload_packet_rx_drop_count) }, \
+         { "payload_rx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 94, offsetof(mavlink_arp_tm_t, payload_rx_bitrate) }, \
+         { "payload_rx_rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_arp_tm_t, payload_rx_rssi) }, \
+         { "ethernet_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 102, offsetof(mavlink_arp_tm_t, ethernet_present) }, \
+         { "ethernet_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 103, offsetof(mavlink_arp_tm_t, ethernet_status) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_arp_tm_t, battery_voltage) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 96, offsetof(mavlink_arp_tm_t, log_number) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ARP_TM { \
+    "ARP_TM", \
+    35, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_arp_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 98, offsetof(mavlink_arp_tm_t, state) }, \
+         { "yaw", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_arp_tm_t, yaw) }, \
+         { "pitch", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_arp_tm_t, pitch) }, \
+         { "roll", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_arp_tm_t, roll) }, \
+         { "target_yaw", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_arp_tm_t, target_yaw) }, \
+         { "target_pitch", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_arp_tm_t, target_pitch) }, \
+         { "stepperX_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_arp_tm_t, stepperX_pos) }, \
+         { "stepperX_delta", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_arp_tm_t, stepperX_delta) }, \
+         { "stepperX_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_arp_tm_t, stepperX_speed) }, \
+         { "stepperY_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_arp_tm_t, stepperY_pos) }, \
+         { "stepperY_delta", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_arp_tm_t, stepperY_delta) }, \
+         { "stepperY_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_arp_tm_t, stepperY_speed) }, \
+         { "gps_latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_arp_tm_t, gps_latitude) }, \
+         { "gps_longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_arp_tm_t, gps_longitude) }, \
+         { "gps_height", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_arp_tm_t, gps_height) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 99, offsetof(mavlink_arp_tm_t, gps_fix) }, \
+         { "main_radio_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 100, offsetof(mavlink_arp_tm_t, main_radio_present) }, \
+         { "main_packet_tx_error_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 76, offsetof(mavlink_arp_tm_t, main_packet_tx_error_count) }, \
+         { "main_tx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 78, offsetof(mavlink_arp_tm_t, main_tx_bitrate) }, \
+         { "main_packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 80, offsetof(mavlink_arp_tm_t, main_packet_rx_success_count) }, \
+         { "main_packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 82, offsetof(mavlink_arp_tm_t, main_packet_rx_drop_count) }, \
+         { "main_rx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 84, offsetof(mavlink_arp_tm_t, main_rx_bitrate) }, \
+         { "main_rx_rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_arp_tm_t, main_rx_rssi) }, \
+         { "payload_radio_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 101, offsetof(mavlink_arp_tm_t, payload_radio_present) }, \
+         { "payload_packet_tx_error_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 86, offsetof(mavlink_arp_tm_t, payload_packet_tx_error_count) }, \
+         { "payload_tx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 88, offsetof(mavlink_arp_tm_t, payload_tx_bitrate) }, \
+         { "payload_packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 90, offsetof(mavlink_arp_tm_t, payload_packet_rx_success_count) }, \
+         { "payload_packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 92, offsetof(mavlink_arp_tm_t, payload_packet_rx_drop_count) }, \
+         { "payload_rx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 94, offsetof(mavlink_arp_tm_t, payload_rx_bitrate) }, \
+         { "payload_rx_rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_arp_tm_t, payload_rx_rssi) }, \
+         { "ethernet_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 102, offsetof(mavlink_arp_tm_t, ethernet_present) }, \
+         { "ethernet_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 103, offsetof(mavlink_arp_tm_t, ethernet_status) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_arp_tm_t, battery_voltage) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 96, offsetof(mavlink_arp_tm_t, log_number) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a arp_tm 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 timestamp [us] Timestamp
+ * @param state  State Machine Controller State
+ * @param yaw [deg] Current Yaw
+ * @param pitch [deg] Current Pitch
+ * @param roll [deg] Current Roll
+ * @param target_yaw [deg] Target Yaw
+ * @param target_pitch [deg] Target Pitch
+ * @param stepperX_pos [deg] StepperX current position wrt the boot position
+ * @param stepperX_delta [deg] StepperX last actuated delta angle
+ * @param stepperX_speed [rps] StepperX current speed
+ * @param stepperY_pos [deg] StepperY current position wrt the boot position
+ * @param stepperY_delta [deg] StepperY last actuated delta angle
+ * @param stepperY_speed [rps] StepperY current Speed
+ * @param gps_latitude [deg] Latitude
+ * @param gps_longitude [deg] Longitude
+ * @param gps_height [m] Altitude
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param main_radio_present  Boolean indicating the presence of the main radio
+ * @param main_packet_tx_error_count  Number of errors during send
+ * @param main_tx_bitrate [b/s] Send bitrate
+ * @param main_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param main_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param main_rx_bitrate [b/s] Receive bitrate
+ * @param main_rx_rssi [dBm] Receive RSSI
+ * @param payload_radio_present  Boolean indicating the presence of the payload radio
+ * @param payload_packet_tx_error_count  Number of errors during send
+ * @param payload_tx_bitrate [b/s] Send bitrate
+ * @param payload_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param payload_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param payload_rx_bitrate [b/s] Receive bitrate
+ * @param payload_rx_rssi [dBm] Receive RSSI
+ * @param ethernet_present  Boolean indicating the presence of the ethernet module
+ * @param ethernet_status  Status flag indicating the status of the ethernet PHY
+ * @param battery_voltage [V] Battery voltage
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_arp_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint8_t state, float yaw, float pitch, float roll, float target_yaw, float target_pitch, float stepperX_pos, float stepperX_delta, float stepperX_speed, float stepperY_pos, float stepperY_delta, float stepperY_speed, float gps_latitude, float gps_longitude, float gps_height, uint8_t gps_fix, uint8_t main_radio_present, uint16_t main_packet_tx_error_count, uint16_t main_tx_bitrate, uint16_t main_packet_rx_success_count, uint16_t main_packet_rx_drop_count, uint16_t main_rx_bitrate, float main_rx_rssi, uint8_t payload_radio_present, uint16_t payload_packet_tx_error_count, uint16_t payload_tx_bitrate, uint16_t payload_packet_rx_success_count, uint16_t payload_packet_rx_drop_count, uint16_t payload_rx_bitrate, float payload_rx_rssi, uint8_t ethernet_present, uint8_t ethernet_status, float battery_voltage, int16_t log_number)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ARP_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, yaw);
+    _mav_put_float(buf, 12, pitch);
+    _mav_put_float(buf, 16, roll);
+    _mav_put_float(buf, 20, target_yaw);
+    _mav_put_float(buf, 24, target_pitch);
+    _mav_put_float(buf, 28, stepperX_pos);
+    _mav_put_float(buf, 32, stepperX_delta);
+    _mav_put_float(buf, 36, stepperX_speed);
+    _mav_put_float(buf, 40, stepperY_pos);
+    _mav_put_float(buf, 44, stepperY_delta);
+    _mav_put_float(buf, 48, stepperY_speed);
+    _mav_put_float(buf, 52, gps_latitude);
+    _mav_put_float(buf, 56, gps_longitude);
+    _mav_put_float(buf, 60, gps_height);
+    _mav_put_float(buf, 64, main_rx_rssi);
+    _mav_put_float(buf, 68, payload_rx_rssi);
+    _mav_put_float(buf, 72, battery_voltage);
+    _mav_put_uint16_t(buf, 76, main_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 78, main_tx_bitrate);
+    _mav_put_uint16_t(buf, 80, main_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 82, main_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 84, main_rx_bitrate);
+    _mav_put_uint16_t(buf, 86, payload_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 88, payload_tx_bitrate);
+    _mav_put_uint16_t(buf, 90, payload_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 92, payload_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 94, payload_rx_bitrate);
+    _mav_put_int16_t(buf, 96, log_number);
+    _mav_put_uint8_t(buf, 98, state);
+    _mav_put_uint8_t(buf, 99, gps_fix);
+    _mav_put_uint8_t(buf, 100, main_radio_present);
+    _mav_put_uint8_t(buf, 101, payload_radio_present);
+    _mav_put_uint8_t(buf, 102, ethernet_present);
+    _mav_put_uint8_t(buf, 103, ethernet_status);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ARP_TM_LEN);
+#else
+    mavlink_arp_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.yaw = yaw;
+    packet.pitch = pitch;
+    packet.roll = roll;
+    packet.target_yaw = target_yaw;
+    packet.target_pitch = target_pitch;
+    packet.stepperX_pos = stepperX_pos;
+    packet.stepperX_delta = stepperX_delta;
+    packet.stepperX_speed = stepperX_speed;
+    packet.stepperY_pos = stepperY_pos;
+    packet.stepperY_delta = stepperY_delta;
+    packet.stepperY_speed = stepperY_speed;
+    packet.gps_latitude = gps_latitude;
+    packet.gps_longitude = gps_longitude;
+    packet.gps_height = gps_height;
+    packet.main_rx_rssi = main_rx_rssi;
+    packet.payload_rx_rssi = payload_rx_rssi;
+    packet.battery_voltage = battery_voltage;
+    packet.main_packet_tx_error_count = main_packet_tx_error_count;
+    packet.main_tx_bitrate = main_tx_bitrate;
+    packet.main_packet_rx_success_count = main_packet_rx_success_count;
+    packet.main_packet_rx_drop_count = main_packet_rx_drop_count;
+    packet.main_rx_bitrate = main_rx_bitrate;
+    packet.payload_packet_tx_error_count = payload_packet_tx_error_count;
+    packet.payload_tx_bitrate = payload_tx_bitrate;
+    packet.payload_packet_rx_success_count = payload_packet_rx_success_count;
+    packet.payload_packet_rx_drop_count = payload_packet_rx_drop_count;
+    packet.payload_rx_bitrate = payload_rx_bitrate;
+    packet.log_number = log_number;
+    packet.state = state;
+    packet.gps_fix = gps_fix;
+    packet.main_radio_present = main_radio_present;
+    packet.payload_radio_present = payload_radio_present;
+    packet.ethernet_present = ethernet_present;
+    packet.ethernet_status = ethernet_status;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ARP_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ARP_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_ARP_TM_MIN_LEN, MAVLINK_MSG_ID_ARP_TM_LEN, MAVLINK_MSG_ID_ARP_TM_CRC);
+}
+
+/**
+ * @brief Pack a arp_tm 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 timestamp [us] Timestamp
+ * @param state  State Machine Controller State
+ * @param yaw [deg] Current Yaw
+ * @param pitch [deg] Current Pitch
+ * @param roll [deg] Current Roll
+ * @param target_yaw [deg] Target Yaw
+ * @param target_pitch [deg] Target Pitch
+ * @param stepperX_pos [deg] StepperX current position wrt the boot position
+ * @param stepperX_delta [deg] StepperX last actuated delta angle
+ * @param stepperX_speed [rps] StepperX current speed
+ * @param stepperY_pos [deg] StepperY current position wrt the boot position
+ * @param stepperY_delta [deg] StepperY last actuated delta angle
+ * @param stepperY_speed [rps] StepperY current Speed
+ * @param gps_latitude [deg] Latitude
+ * @param gps_longitude [deg] Longitude
+ * @param gps_height [m] Altitude
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param main_radio_present  Boolean indicating the presence of the main radio
+ * @param main_packet_tx_error_count  Number of errors during send
+ * @param main_tx_bitrate [b/s] Send bitrate
+ * @param main_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param main_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param main_rx_bitrate [b/s] Receive bitrate
+ * @param main_rx_rssi [dBm] Receive RSSI
+ * @param payload_radio_present  Boolean indicating the presence of the payload radio
+ * @param payload_packet_tx_error_count  Number of errors during send
+ * @param payload_tx_bitrate [b/s] Send bitrate
+ * @param payload_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param payload_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param payload_rx_bitrate [b/s] Receive bitrate
+ * @param payload_rx_rssi [dBm] Receive RSSI
+ * @param ethernet_present  Boolean indicating the presence of the ethernet module
+ * @param ethernet_status  Status flag indicating the status of the ethernet PHY
+ * @param battery_voltage [V] Battery voltage
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_arp_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint8_t state,float yaw,float pitch,float roll,float target_yaw,float target_pitch,float stepperX_pos,float stepperX_delta,float stepperX_speed,float stepperY_pos,float stepperY_delta,float stepperY_speed,float gps_latitude,float gps_longitude,float gps_height,uint8_t gps_fix,uint8_t main_radio_present,uint16_t main_packet_tx_error_count,uint16_t main_tx_bitrate,uint16_t main_packet_rx_success_count,uint16_t main_packet_rx_drop_count,uint16_t main_rx_bitrate,float main_rx_rssi,uint8_t payload_radio_present,uint16_t payload_packet_tx_error_count,uint16_t payload_tx_bitrate,uint16_t payload_packet_rx_success_count,uint16_t payload_packet_rx_drop_count,uint16_t payload_rx_bitrate,float payload_rx_rssi,uint8_t ethernet_present,uint8_t ethernet_status,float battery_voltage,int16_t log_number)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ARP_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, yaw);
+    _mav_put_float(buf, 12, pitch);
+    _mav_put_float(buf, 16, roll);
+    _mav_put_float(buf, 20, target_yaw);
+    _mav_put_float(buf, 24, target_pitch);
+    _mav_put_float(buf, 28, stepperX_pos);
+    _mav_put_float(buf, 32, stepperX_delta);
+    _mav_put_float(buf, 36, stepperX_speed);
+    _mav_put_float(buf, 40, stepperY_pos);
+    _mav_put_float(buf, 44, stepperY_delta);
+    _mav_put_float(buf, 48, stepperY_speed);
+    _mav_put_float(buf, 52, gps_latitude);
+    _mav_put_float(buf, 56, gps_longitude);
+    _mav_put_float(buf, 60, gps_height);
+    _mav_put_float(buf, 64, main_rx_rssi);
+    _mav_put_float(buf, 68, payload_rx_rssi);
+    _mav_put_float(buf, 72, battery_voltage);
+    _mav_put_uint16_t(buf, 76, main_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 78, main_tx_bitrate);
+    _mav_put_uint16_t(buf, 80, main_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 82, main_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 84, main_rx_bitrate);
+    _mav_put_uint16_t(buf, 86, payload_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 88, payload_tx_bitrate);
+    _mav_put_uint16_t(buf, 90, payload_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 92, payload_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 94, payload_rx_bitrate);
+    _mav_put_int16_t(buf, 96, log_number);
+    _mav_put_uint8_t(buf, 98, state);
+    _mav_put_uint8_t(buf, 99, gps_fix);
+    _mav_put_uint8_t(buf, 100, main_radio_present);
+    _mav_put_uint8_t(buf, 101, payload_radio_present);
+    _mav_put_uint8_t(buf, 102, ethernet_present);
+    _mav_put_uint8_t(buf, 103, ethernet_status);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ARP_TM_LEN);
+#else
+    mavlink_arp_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.yaw = yaw;
+    packet.pitch = pitch;
+    packet.roll = roll;
+    packet.target_yaw = target_yaw;
+    packet.target_pitch = target_pitch;
+    packet.stepperX_pos = stepperX_pos;
+    packet.stepperX_delta = stepperX_delta;
+    packet.stepperX_speed = stepperX_speed;
+    packet.stepperY_pos = stepperY_pos;
+    packet.stepperY_delta = stepperY_delta;
+    packet.stepperY_speed = stepperY_speed;
+    packet.gps_latitude = gps_latitude;
+    packet.gps_longitude = gps_longitude;
+    packet.gps_height = gps_height;
+    packet.main_rx_rssi = main_rx_rssi;
+    packet.payload_rx_rssi = payload_rx_rssi;
+    packet.battery_voltage = battery_voltage;
+    packet.main_packet_tx_error_count = main_packet_tx_error_count;
+    packet.main_tx_bitrate = main_tx_bitrate;
+    packet.main_packet_rx_success_count = main_packet_rx_success_count;
+    packet.main_packet_rx_drop_count = main_packet_rx_drop_count;
+    packet.main_rx_bitrate = main_rx_bitrate;
+    packet.payload_packet_tx_error_count = payload_packet_tx_error_count;
+    packet.payload_tx_bitrate = payload_tx_bitrate;
+    packet.payload_packet_rx_success_count = payload_packet_rx_success_count;
+    packet.payload_packet_rx_drop_count = payload_packet_rx_drop_count;
+    packet.payload_rx_bitrate = payload_rx_bitrate;
+    packet.log_number = log_number;
+    packet.state = state;
+    packet.gps_fix = gps_fix;
+    packet.main_radio_present = main_radio_present;
+    packet.payload_radio_present = payload_radio_present;
+    packet.ethernet_present = ethernet_present;
+    packet.ethernet_status = ethernet_status;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ARP_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ARP_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_ARP_TM_MIN_LEN, MAVLINK_MSG_ID_ARP_TM_LEN, MAVLINK_MSG_ID_ARP_TM_CRC);
+}
+
+/**
+ * @brief Encode a arp_tm 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 arp_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_arp_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_arp_tm_t* arp_tm)
+{
+    return mavlink_msg_arp_tm_pack(system_id, component_id, msg, arp_tm->timestamp, arp_tm->state, arp_tm->yaw, arp_tm->pitch, arp_tm->roll, arp_tm->target_yaw, arp_tm->target_pitch, arp_tm->stepperX_pos, arp_tm->stepperX_delta, arp_tm->stepperX_speed, arp_tm->stepperY_pos, arp_tm->stepperY_delta, arp_tm->stepperY_speed, arp_tm->gps_latitude, arp_tm->gps_longitude, arp_tm->gps_height, arp_tm->gps_fix, arp_tm->main_radio_present, arp_tm->main_packet_tx_error_count, arp_tm->main_tx_bitrate, arp_tm->main_packet_rx_success_count, arp_tm->main_packet_rx_drop_count, arp_tm->main_rx_bitrate, arp_tm->main_rx_rssi, arp_tm->payload_radio_present, arp_tm->payload_packet_tx_error_count, arp_tm->payload_tx_bitrate, arp_tm->payload_packet_rx_success_count, arp_tm->payload_packet_rx_drop_count, arp_tm->payload_rx_bitrate, arp_tm->payload_rx_rssi, arp_tm->ethernet_present, arp_tm->ethernet_status, arp_tm->battery_voltage, arp_tm->log_number);
+}
+
+/**
+ * @brief Encode a arp_tm 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 arp_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_arp_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_arp_tm_t* arp_tm)
+{
+    return mavlink_msg_arp_tm_pack_chan(system_id, component_id, chan, msg, arp_tm->timestamp, arp_tm->state, arp_tm->yaw, arp_tm->pitch, arp_tm->roll, arp_tm->target_yaw, arp_tm->target_pitch, arp_tm->stepperX_pos, arp_tm->stepperX_delta, arp_tm->stepperX_speed, arp_tm->stepperY_pos, arp_tm->stepperY_delta, arp_tm->stepperY_speed, arp_tm->gps_latitude, arp_tm->gps_longitude, arp_tm->gps_height, arp_tm->gps_fix, arp_tm->main_radio_present, arp_tm->main_packet_tx_error_count, arp_tm->main_tx_bitrate, arp_tm->main_packet_rx_success_count, arp_tm->main_packet_rx_drop_count, arp_tm->main_rx_bitrate, arp_tm->main_rx_rssi, arp_tm->payload_radio_present, arp_tm->payload_packet_tx_error_count, arp_tm->payload_tx_bitrate, arp_tm->payload_packet_rx_success_count, arp_tm->payload_packet_rx_drop_count, arp_tm->payload_rx_bitrate, arp_tm->payload_rx_rssi, arp_tm->ethernet_present, arp_tm->ethernet_status, arp_tm->battery_voltage, arp_tm->log_number);
+}
+
+/**
+ * @brief Send a arp_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp
+ * @param state  State Machine Controller State
+ * @param yaw [deg] Current Yaw
+ * @param pitch [deg] Current Pitch
+ * @param roll [deg] Current Roll
+ * @param target_yaw [deg] Target Yaw
+ * @param target_pitch [deg] Target Pitch
+ * @param stepperX_pos [deg] StepperX current position wrt the boot position
+ * @param stepperX_delta [deg] StepperX last actuated delta angle
+ * @param stepperX_speed [rps] StepperX current speed
+ * @param stepperY_pos [deg] StepperY current position wrt the boot position
+ * @param stepperY_delta [deg] StepperY last actuated delta angle
+ * @param stepperY_speed [rps] StepperY current Speed
+ * @param gps_latitude [deg] Latitude
+ * @param gps_longitude [deg] Longitude
+ * @param gps_height [m] Altitude
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param main_radio_present  Boolean indicating the presence of the main radio
+ * @param main_packet_tx_error_count  Number of errors during send
+ * @param main_tx_bitrate [b/s] Send bitrate
+ * @param main_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param main_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param main_rx_bitrate [b/s] Receive bitrate
+ * @param main_rx_rssi [dBm] Receive RSSI
+ * @param payload_radio_present  Boolean indicating the presence of the payload radio
+ * @param payload_packet_tx_error_count  Number of errors during send
+ * @param payload_tx_bitrate [b/s] Send bitrate
+ * @param payload_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param payload_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param payload_rx_bitrate [b/s] Receive bitrate
+ * @param payload_rx_rssi [dBm] Receive RSSI
+ * @param ethernet_present  Boolean indicating the presence of the ethernet module
+ * @param ethernet_status  Status flag indicating the status of the ethernet PHY
+ * @param battery_voltage [V] Battery voltage
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_arp_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t state, float yaw, float pitch, float roll, float target_yaw, float target_pitch, float stepperX_pos, float stepperX_delta, float stepperX_speed, float stepperY_pos, float stepperY_delta, float stepperY_speed, float gps_latitude, float gps_longitude, float gps_height, uint8_t gps_fix, uint8_t main_radio_present, uint16_t main_packet_tx_error_count, uint16_t main_tx_bitrate, uint16_t main_packet_rx_success_count, uint16_t main_packet_rx_drop_count, uint16_t main_rx_bitrate, float main_rx_rssi, uint8_t payload_radio_present, uint16_t payload_packet_tx_error_count, uint16_t payload_tx_bitrate, uint16_t payload_packet_rx_success_count, uint16_t payload_packet_rx_drop_count, uint16_t payload_rx_bitrate, float payload_rx_rssi, uint8_t ethernet_present, uint8_t ethernet_status, float battery_voltage, int16_t log_number)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ARP_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, yaw);
+    _mav_put_float(buf, 12, pitch);
+    _mav_put_float(buf, 16, roll);
+    _mav_put_float(buf, 20, target_yaw);
+    _mav_put_float(buf, 24, target_pitch);
+    _mav_put_float(buf, 28, stepperX_pos);
+    _mav_put_float(buf, 32, stepperX_delta);
+    _mav_put_float(buf, 36, stepperX_speed);
+    _mav_put_float(buf, 40, stepperY_pos);
+    _mav_put_float(buf, 44, stepperY_delta);
+    _mav_put_float(buf, 48, stepperY_speed);
+    _mav_put_float(buf, 52, gps_latitude);
+    _mav_put_float(buf, 56, gps_longitude);
+    _mav_put_float(buf, 60, gps_height);
+    _mav_put_float(buf, 64, main_rx_rssi);
+    _mav_put_float(buf, 68, payload_rx_rssi);
+    _mav_put_float(buf, 72, battery_voltage);
+    _mav_put_uint16_t(buf, 76, main_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 78, main_tx_bitrate);
+    _mav_put_uint16_t(buf, 80, main_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 82, main_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 84, main_rx_bitrate);
+    _mav_put_uint16_t(buf, 86, payload_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 88, payload_tx_bitrate);
+    _mav_put_uint16_t(buf, 90, payload_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 92, payload_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 94, payload_rx_bitrate);
+    _mav_put_int16_t(buf, 96, log_number);
+    _mav_put_uint8_t(buf, 98, state);
+    _mav_put_uint8_t(buf, 99, gps_fix);
+    _mav_put_uint8_t(buf, 100, main_radio_present);
+    _mav_put_uint8_t(buf, 101, payload_radio_present);
+    _mav_put_uint8_t(buf, 102, ethernet_present);
+    _mav_put_uint8_t(buf, 103, ethernet_status);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_TM, buf, MAVLINK_MSG_ID_ARP_TM_MIN_LEN, MAVLINK_MSG_ID_ARP_TM_LEN, MAVLINK_MSG_ID_ARP_TM_CRC);
+#else
+    mavlink_arp_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.yaw = yaw;
+    packet.pitch = pitch;
+    packet.roll = roll;
+    packet.target_yaw = target_yaw;
+    packet.target_pitch = target_pitch;
+    packet.stepperX_pos = stepperX_pos;
+    packet.stepperX_delta = stepperX_delta;
+    packet.stepperX_speed = stepperX_speed;
+    packet.stepperY_pos = stepperY_pos;
+    packet.stepperY_delta = stepperY_delta;
+    packet.stepperY_speed = stepperY_speed;
+    packet.gps_latitude = gps_latitude;
+    packet.gps_longitude = gps_longitude;
+    packet.gps_height = gps_height;
+    packet.main_rx_rssi = main_rx_rssi;
+    packet.payload_rx_rssi = payload_rx_rssi;
+    packet.battery_voltage = battery_voltage;
+    packet.main_packet_tx_error_count = main_packet_tx_error_count;
+    packet.main_tx_bitrate = main_tx_bitrate;
+    packet.main_packet_rx_success_count = main_packet_rx_success_count;
+    packet.main_packet_rx_drop_count = main_packet_rx_drop_count;
+    packet.main_rx_bitrate = main_rx_bitrate;
+    packet.payload_packet_tx_error_count = payload_packet_tx_error_count;
+    packet.payload_tx_bitrate = payload_tx_bitrate;
+    packet.payload_packet_rx_success_count = payload_packet_rx_success_count;
+    packet.payload_packet_rx_drop_count = payload_packet_rx_drop_count;
+    packet.payload_rx_bitrate = payload_rx_bitrate;
+    packet.log_number = log_number;
+    packet.state = state;
+    packet.gps_fix = gps_fix;
+    packet.main_radio_present = main_radio_present;
+    packet.payload_radio_present = payload_radio_present;
+    packet.ethernet_present = ethernet_present;
+    packet.ethernet_status = ethernet_status;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_TM, (const char *)&packet, MAVLINK_MSG_ID_ARP_TM_MIN_LEN, MAVLINK_MSG_ID_ARP_TM_LEN, MAVLINK_MSG_ID_ARP_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a arp_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_arp_tm_send_struct(mavlink_channel_t chan, const mavlink_arp_tm_t* arp_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_arp_tm_send(chan, arp_tm->timestamp, arp_tm->state, arp_tm->yaw, arp_tm->pitch, arp_tm->roll, arp_tm->target_yaw, arp_tm->target_pitch, arp_tm->stepperX_pos, arp_tm->stepperX_delta, arp_tm->stepperX_speed, arp_tm->stepperY_pos, arp_tm->stepperY_delta, arp_tm->stepperY_speed, arp_tm->gps_latitude, arp_tm->gps_longitude, arp_tm->gps_height, arp_tm->gps_fix, arp_tm->main_radio_present, arp_tm->main_packet_tx_error_count, arp_tm->main_tx_bitrate, arp_tm->main_packet_rx_success_count, arp_tm->main_packet_rx_drop_count, arp_tm->main_rx_bitrate, arp_tm->main_rx_rssi, arp_tm->payload_radio_present, arp_tm->payload_packet_tx_error_count, arp_tm->payload_tx_bitrate, arp_tm->payload_packet_rx_success_count, arp_tm->payload_packet_rx_drop_count, arp_tm->payload_rx_bitrate, arp_tm->payload_rx_rssi, arp_tm->ethernet_present, arp_tm->ethernet_status, arp_tm->battery_voltage, arp_tm->log_number);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_TM, (const char *)arp_tm, MAVLINK_MSG_ID_ARP_TM_MIN_LEN, MAVLINK_MSG_ID_ARP_TM_LEN, MAVLINK_MSG_ID_ARP_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_ARP_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_arp_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint8_t state, float yaw, float pitch, float roll, float target_yaw, float target_pitch, float stepperX_pos, float stepperX_delta, float stepperX_speed, float stepperY_pos, float stepperY_delta, float stepperY_speed, float gps_latitude, float gps_longitude, float gps_height, uint8_t gps_fix, uint8_t main_radio_present, uint16_t main_packet_tx_error_count, uint16_t main_tx_bitrate, uint16_t main_packet_rx_success_count, uint16_t main_packet_rx_drop_count, uint16_t main_rx_bitrate, float main_rx_rssi, uint8_t payload_radio_present, uint16_t payload_packet_tx_error_count, uint16_t payload_tx_bitrate, uint16_t payload_packet_rx_success_count, uint16_t payload_packet_rx_drop_count, uint16_t payload_rx_bitrate, float payload_rx_rssi, uint8_t ethernet_present, uint8_t ethernet_status, float battery_voltage, int16_t log_number)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, yaw);
+    _mav_put_float(buf, 12, pitch);
+    _mav_put_float(buf, 16, roll);
+    _mav_put_float(buf, 20, target_yaw);
+    _mav_put_float(buf, 24, target_pitch);
+    _mav_put_float(buf, 28, stepperX_pos);
+    _mav_put_float(buf, 32, stepperX_delta);
+    _mav_put_float(buf, 36, stepperX_speed);
+    _mav_put_float(buf, 40, stepperY_pos);
+    _mav_put_float(buf, 44, stepperY_delta);
+    _mav_put_float(buf, 48, stepperY_speed);
+    _mav_put_float(buf, 52, gps_latitude);
+    _mav_put_float(buf, 56, gps_longitude);
+    _mav_put_float(buf, 60, gps_height);
+    _mav_put_float(buf, 64, main_rx_rssi);
+    _mav_put_float(buf, 68, payload_rx_rssi);
+    _mav_put_float(buf, 72, battery_voltage);
+    _mav_put_uint16_t(buf, 76, main_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 78, main_tx_bitrate);
+    _mav_put_uint16_t(buf, 80, main_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 82, main_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 84, main_rx_bitrate);
+    _mav_put_uint16_t(buf, 86, payload_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 88, payload_tx_bitrate);
+    _mav_put_uint16_t(buf, 90, payload_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 92, payload_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 94, payload_rx_bitrate);
+    _mav_put_int16_t(buf, 96, log_number);
+    _mav_put_uint8_t(buf, 98, state);
+    _mav_put_uint8_t(buf, 99, gps_fix);
+    _mav_put_uint8_t(buf, 100, main_radio_present);
+    _mav_put_uint8_t(buf, 101, payload_radio_present);
+    _mav_put_uint8_t(buf, 102, ethernet_present);
+    _mav_put_uint8_t(buf, 103, ethernet_status);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_TM, buf, MAVLINK_MSG_ID_ARP_TM_MIN_LEN, MAVLINK_MSG_ID_ARP_TM_LEN, MAVLINK_MSG_ID_ARP_TM_CRC);
+#else
+    mavlink_arp_tm_t *packet = (mavlink_arp_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->yaw = yaw;
+    packet->pitch = pitch;
+    packet->roll = roll;
+    packet->target_yaw = target_yaw;
+    packet->target_pitch = target_pitch;
+    packet->stepperX_pos = stepperX_pos;
+    packet->stepperX_delta = stepperX_delta;
+    packet->stepperX_speed = stepperX_speed;
+    packet->stepperY_pos = stepperY_pos;
+    packet->stepperY_delta = stepperY_delta;
+    packet->stepperY_speed = stepperY_speed;
+    packet->gps_latitude = gps_latitude;
+    packet->gps_longitude = gps_longitude;
+    packet->gps_height = gps_height;
+    packet->main_rx_rssi = main_rx_rssi;
+    packet->payload_rx_rssi = payload_rx_rssi;
+    packet->battery_voltage = battery_voltage;
+    packet->main_packet_tx_error_count = main_packet_tx_error_count;
+    packet->main_tx_bitrate = main_tx_bitrate;
+    packet->main_packet_rx_success_count = main_packet_rx_success_count;
+    packet->main_packet_rx_drop_count = main_packet_rx_drop_count;
+    packet->main_rx_bitrate = main_rx_bitrate;
+    packet->payload_packet_tx_error_count = payload_packet_tx_error_count;
+    packet->payload_tx_bitrate = payload_tx_bitrate;
+    packet->payload_packet_rx_success_count = payload_packet_rx_success_count;
+    packet->payload_packet_rx_drop_count = payload_packet_rx_drop_count;
+    packet->payload_rx_bitrate = payload_rx_bitrate;
+    packet->log_number = log_number;
+    packet->state = state;
+    packet->gps_fix = gps_fix;
+    packet->main_radio_present = main_radio_present;
+    packet->payload_radio_present = payload_radio_present;
+    packet->ethernet_present = ethernet_present;
+    packet->ethernet_status = ethernet_status;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ARP_TM, (const char *)packet, MAVLINK_MSG_ID_ARP_TM_MIN_LEN, MAVLINK_MSG_ID_ARP_TM_LEN, MAVLINK_MSG_ID_ARP_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ARP_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from arp_tm message
+ *
+ * @return [us] Timestamp
+ */
+static inline uint64_t mavlink_msg_arp_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field state from arp_tm message
+ *
+ * @return  State Machine Controller State
+ */
+static inline uint8_t mavlink_msg_arp_tm_get_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  98);
+}
+
+/**
+ * @brief Get field yaw from arp_tm message
+ *
+ * @return [deg] Current Yaw
+ */
+static inline float mavlink_msg_arp_tm_get_yaw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field pitch from arp_tm message
+ *
+ * @return [deg] Current Pitch
+ */
+static inline float mavlink_msg_arp_tm_get_pitch(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field roll from arp_tm message
+ *
+ * @return [deg] Current Roll
+ */
+static inline float mavlink_msg_arp_tm_get_roll(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field target_yaw from arp_tm message
+ *
+ * @return [deg] Target Yaw
+ */
+static inline float mavlink_msg_arp_tm_get_target_yaw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field target_pitch from arp_tm message
+ *
+ * @return [deg] Target Pitch
+ */
+static inline float mavlink_msg_arp_tm_get_target_pitch(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field stepperX_pos from arp_tm message
+ *
+ * @return [deg] StepperX current position wrt the boot position
+ */
+static inline float mavlink_msg_arp_tm_get_stepperX_pos(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field stepperX_delta from arp_tm message
+ *
+ * @return [deg] StepperX last actuated delta angle
+ */
+static inline float mavlink_msg_arp_tm_get_stepperX_delta(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field stepperX_speed from arp_tm message
+ *
+ * @return [rps] StepperX current speed
+ */
+static inline float mavlink_msg_arp_tm_get_stepperX_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field stepperY_pos from arp_tm message
+ *
+ * @return [deg] StepperY current position wrt the boot position
+ */
+static inline float mavlink_msg_arp_tm_get_stepperY_pos(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Get field stepperY_delta from arp_tm message
+ *
+ * @return [deg] StepperY last actuated delta angle
+ */
+static inline float mavlink_msg_arp_tm_get_stepperY_delta(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  44);
+}
+
+/**
+ * @brief Get field stepperY_speed from arp_tm message
+ *
+ * @return [rps] StepperY current Speed
+ */
+static inline float mavlink_msg_arp_tm_get_stepperY_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  48);
+}
+
+/**
+ * @brief Get field gps_latitude from arp_tm message
+ *
+ * @return [deg] Latitude
+ */
+static inline float mavlink_msg_arp_tm_get_gps_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  52);
+}
+
+/**
+ * @brief Get field gps_longitude from arp_tm message
+ *
+ * @return [deg] Longitude
+ */
+static inline float mavlink_msg_arp_tm_get_gps_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  56);
+}
+
+/**
+ * @brief Get field gps_height from arp_tm message
+ *
+ * @return [m] Altitude
+ */
+static inline float mavlink_msg_arp_tm_get_gps_height(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  60);
+}
+
+/**
+ * @brief Get field gps_fix from arp_tm message
+ *
+ * @return  Wether the GPS has a FIX
+ */
+static inline uint8_t mavlink_msg_arp_tm_get_gps_fix(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  99);
+}
+
+/**
+ * @brief Get field main_radio_present from arp_tm message
+ *
+ * @return  Boolean indicating the presence of the main radio
+ */
+static inline uint8_t mavlink_msg_arp_tm_get_main_radio_present(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  100);
+}
+
+/**
+ * @brief Get field main_packet_tx_error_count from arp_tm message
+ *
+ * @return  Number of errors during send
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_main_packet_tx_error_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  76);
+}
+
+/**
+ * @brief Get field main_tx_bitrate from arp_tm message
+ *
+ * @return [b/s] Send bitrate
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_main_tx_bitrate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  78);
+}
+
+/**
+ * @brief Get field main_packet_rx_success_count from arp_tm message
+ *
+ * @return  Number of succesfull received mavlink packets
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_main_packet_rx_success_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  80);
+}
+
+/**
+ * @brief Get field main_packet_rx_drop_count from arp_tm message
+ *
+ * @return  Number of dropped mavlink packets
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_main_packet_rx_drop_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  82);
+}
+
+/**
+ * @brief Get field main_rx_bitrate from arp_tm message
+ *
+ * @return [b/s] Receive bitrate
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_main_rx_bitrate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  84);
+}
+
+/**
+ * @brief Get field main_rx_rssi from arp_tm message
+ *
+ * @return [dBm] Receive RSSI
+ */
+static inline float mavlink_msg_arp_tm_get_main_rx_rssi(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  64);
+}
+
+/**
+ * @brief Get field payload_radio_present from arp_tm message
+ *
+ * @return  Boolean indicating the presence of the payload radio
+ */
+static inline uint8_t mavlink_msg_arp_tm_get_payload_radio_present(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  101);
+}
+
+/**
+ * @brief Get field payload_packet_tx_error_count from arp_tm message
+ *
+ * @return  Number of errors during send
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_payload_packet_tx_error_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  86);
+}
+
+/**
+ * @brief Get field payload_tx_bitrate from arp_tm message
+ *
+ * @return [b/s] Send bitrate
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_payload_tx_bitrate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  88);
+}
+
+/**
+ * @brief Get field payload_packet_rx_success_count from arp_tm message
+ *
+ * @return  Number of succesfull received mavlink packets
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_payload_packet_rx_success_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  90);
+}
+
+/**
+ * @brief Get field payload_packet_rx_drop_count from arp_tm message
+ *
+ * @return  Number of dropped mavlink packets
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_payload_packet_rx_drop_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  92);
+}
+
+/**
+ * @brief Get field payload_rx_bitrate from arp_tm message
+ *
+ * @return [b/s] Receive bitrate
+ */
+static inline uint16_t mavlink_msg_arp_tm_get_payload_rx_bitrate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  94);
+}
+
+/**
+ * @brief Get field payload_rx_rssi from arp_tm message
+ *
+ * @return [dBm] Receive RSSI
+ */
+static inline float mavlink_msg_arp_tm_get_payload_rx_rssi(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  68);
+}
+
+/**
+ * @brief Get field ethernet_present from arp_tm message
+ *
+ * @return  Boolean indicating the presence of the ethernet module
+ */
+static inline uint8_t mavlink_msg_arp_tm_get_ethernet_present(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  102);
+}
+
+/**
+ * @brief Get field ethernet_status from arp_tm message
+ *
+ * @return  Status flag indicating the status of the ethernet PHY
+ */
+static inline uint8_t mavlink_msg_arp_tm_get_ethernet_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  103);
+}
+
+/**
+ * @brief Get field battery_voltage from arp_tm message
+ *
+ * @return [V] Battery voltage
+ */
+static inline float mavlink_msg_arp_tm_get_battery_voltage(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  72);
+}
+
+/**
+ * @brief Get field log_number from arp_tm message
+ *
+ * @return  Currently active log file, -1 if the logger is inactive
+ */
+static inline int16_t mavlink_msg_arp_tm_get_log_number(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int16_t(msg,  96);
+}
+
+/**
+ * @brief Decode a arp_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param arp_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_arp_tm_decode(const mavlink_message_t* msg, mavlink_arp_tm_t* arp_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    arp_tm->timestamp = mavlink_msg_arp_tm_get_timestamp(msg);
+    arp_tm->yaw = mavlink_msg_arp_tm_get_yaw(msg);
+    arp_tm->pitch = mavlink_msg_arp_tm_get_pitch(msg);
+    arp_tm->roll = mavlink_msg_arp_tm_get_roll(msg);
+    arp_tm->target_yaw = mavlink_msg_arp_tm_get_target_yaw(msg);
+    arp_tm->target_pitch = mavlink_msg_arp_tm_get_target_pitch(msg);
+    arp_tm->stepperX_pos = mavlink_msg_arp_tm_get_stepperX_pos(msg);
+    arp_tm->stepperX_delta = mavlink_msg_arp_tm_get_stepperX_delta(msg);
+    arp_tm->stepperX_speed = mavlink_msg_arp_tm_get_stepperX_speed(msg);
+    arp_tm->stepperY_pos = mavlink_msg_arp_tm_get_stepperY_pos(msg);
+    arp_tm->stepperY_delta = mavlink_msg_arp_tm_get_stepperY_delta(msg);
+    arp_tm->stepperY_speed = mavlink_msg_arp_tm_get_stepperY_speed(msg);
+    arp_tm->gps_latitude = mavlink_msg_arp_tm_get_gps_latitude(msg);
+    arp_tm->gps_longitude = mavlink_msg_arp_tm_get_gps_longitude(msg);
+    arp_tm->gps_height = mavlink_msg_arp_tm_get_gps_height(msg);
+    arp_tm->main_rx_rssi = mavlink_msg_arp_tm_get_main_rx_rssi(msg);
+    arp_tm->payload_rx_rssi = mavlink_msg_arp_tm_get_payload_rx_rssi(msg);
+    arp_tm->battery_voltage = mavlink_msg_arp_tm_get_battery_voltage(msg);
+    arp_tm->main_packet_tx_error_count = mavlink_msg_arp_tm_get_main_packet_tx_error_count(msg);
+    arp_tm->main_tx_bitrate = mavlink_msg_arp_tm_get_main_tx_bitrate(msg);
+    arp_tm->main_packet_rx_success_count = mavlink_msg_arp_tm_get_main_packet_rx_success_count(msg);
+    arp_tm->main_packet_rx_drop_count = mavlink_msg_arp_tm_get_main_packet_rx_drop_count(msg);
+    arp_tm->main_rx_bitrate = mavlink_msg_arp_tm_get_main_rx_bitrate(msg);
+    arp_tm->payload_packet_tx_error_count = mavlink_msg_arp_tm_get_payload_packet_tx_error_count(msg);
+    arp_tm->payload_tx_bitrate = mavlink_msg_arp_tm_get_payload_tx_bitrate(msg);
+    arp_tm->payload_packet_rx_success_count = mavlink_msg_arp_tm_get_payload_packet_rx_success_count(msg);
+    arp_tm->payload_packet_rx_drop_count = mavlink_msg_arp_tm_get_payload_packet_rx_drop_count(msg);
+    arp_tm->payload_rx_bitrate = mavlink_msg_arp_tm_get_payload_rx_bitrate(msg);
+    arp_tm->log_number = mavlink_msg_arp_tm_get_log_number(msg);
+    arp_tm->state = mavlink_msg_arp_tm_get_state(msg);
+    arp_tm->gps_fix = mavlink_msg_arp_tm_get_gps_fix(msg);
+    arp_tm->main_radio_present = mavlink_msg_arp_tm_get_main_radio_present(msg);
+    arp_tm->payload_radio_present = mavlink_msg_arp_tm_get_payload_radio_present(msg);
+    arp_tm->ethernet_present = mavlink_msg_arp_tm_get_ethernet_present(msg);
+    arp_tm->ethernet_status = mavlink_msg_arp_tm_get_ethernet_status(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_ARP_TM_LEN? msg->len : MAVLINK_MSG_ID_ARP_TM_LEN;
+        memset(arp_tm, 0, MAVLINK_MSG_ID_ARP_TM_LEN);
+    memcpy(arp_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_attitude_tm.h b/mavlink_lib/orion/mavlink_msg_attitude_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..0a681388622819c22db57c0aa6e4fa55f9dc5d84
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_attitude_tm.h
@@ -0,0 +1,405 @@
+#pragma once
+// MESSAGE ATTITUDE_TM PACKING
+
+#define MAVLINK_MSG_ID_ATTITUDE_TM 111
+
+
+typedef struct __mavlink_attitude_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float roll; /*< [deg] Roll angle*/
+ float pitch; /*< [deg] Pitch angle*/
+ float yaw; /*< [deg] Yaw angle*/
+ float quat_x; /*<  Quaternion x component*/
+ float quat_y; /*<  Quaternion y component*/
+ float quat_z; /*<  Quaternion z component*/
+ float quat_w; /*<  Quaternion w component*/
+ char sensor_name[20]; /*<  Sensor name*/
+} mavlink_attitude_tm_t;
+
+#define MAVLINK_MSG_ID_ATTITUDE_TM_LEN 56
+#define MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN 56
+#define MAVLINK_MSG_ID_111_LEN 56
+#define MAVLINK_MSG_ID_111_MIN_LEN 56
+
+#define MAVLINK_MSG_ID_ATTITUDE_TM_CRC 6
+#define MAVLINK_MSG_ID_111_CRC 6
+
+#define MAVLINK_MSG_ATTITUDE_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ATTITUDE_TM { \
+    111, \
+    "ATTITUDE_TM", \
+    9, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_attitude_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 36, offsetof(mavlink_attitude_tm_t, sensor_name) }, \
+         { "roll", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_attitude_tm_t, roll) }, \
+         { "pitch", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_attitude_tm_t, pitch) }, \
+         { "yaw", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_attitude_tm_t, yaw) }, \
+         { "quat_x", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_attitude_tm_t, quat_x) }, \
+         { "quat_y", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_attitude_tm_t, quat_y) }, \
+         { "quat_z", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_attitude_tm_t, quat_z) }, \
+         { "quat_w", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_attitude_tm_t, quat_w) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ATTITUDE_TM { \
+    "ATTITUDE_TM", \
+    9, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_attitude_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 36, offsetof(mavlink_attitude_tm_t, sensor_name) }, \
+         { "roll", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_attitude_tm_t, roll) }, \
+         { "pitch", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_attitude_tm_t, pitch) }, \
+         { "yaw", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_attitude_tm_t, yaw) }, \
+         { "quat_x", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_attitude_tm_t, quat_x) }, \
+         { "quat_y", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_attitude_tm_t, quat_y) }, \
+         { "quat_z", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_attitude_tm_t, quat_z) }, \
+         { "quat_w", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_attitude_tm_t, quat_w) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a attitude_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param roll [deg] Roll angle
+ * @param pitch [deg] Pitch angle
+ * @param yaw [deg] Yaw angle
+ * @param quat_x  Quaternion x component
+ * @param quat_y  Quaternion y component
+ * @param quat_z  Quaternion z component
+ * @param quat_w  Quaternion w component
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_attitude_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, float roll, float pitch, float yaw, float quat_x, float quat_y, float quat_z, float quat_w)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ATTITUDE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, roll);
+    _mav_put_float(buf, 12, pitch);
+    _mav_put_float(buf, 16, yaw);
+    _mav_put_float(buf, 20, quat_x);
+    _mav_put_float(buf, 24, quat_y);
+    _mav_put_float(buf, 28, quat_z);
+    _mav_put_float(buf, 32, quat_w);
+    _mav_put_char_array(buf, 36, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ATTITUDE_TM_LEN);
+#else
+    mavlink_attitude_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.roll = roll;
+    packet.pitch = pitch;
+    packet.yaw = yaw;
+    packet.quat_x = quat_x;
+    packet.quat_y = quat_y;
+    packet.quat_z = quat_z;
+    packet.quat_w = quat_w;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ATTITUDE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ATTITUDE_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_CRC);
+}
+
+/**
+ * @brief Pack a attitude_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param roll [deg] Roll angle
+ * @param pitch [deg] Pitch angle
+ * @param yaw [deg] Yaw angle
+ * @param quat_x  Quaternion x component
+ * @param quat_y  Quaternion y component
+ * @param quat_z  Quaternion z component
+ * @param quat_w  Quaternion w component
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_attitude_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,float roll,float pitch,float yaw,float quat_x,float quat_y,float quat_z,float quat_w)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ATTITUDE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, roll);
+    _mav_put_float(buf, 12, pitch);
+    _mav_put_float(buf, 16, yaw);
+    _mav_put_float(buf, 20, quat_x);
+    _mav_put_float(buf, 24, quat_y);
+    _mav_put_float(buf, 28, quat_z);
+    _mav_put_float(buf, 32, quat_w);
+    _mav_put_char_array(buf, 36, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ATTITUDE_TM_LEN);
+#else
+    mavlink_attitude_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.roll = roll;
+    packet.pitch = pitch;
+    packet.yaw = yaw;
+    packet.quat_x = quat_x;
+    packet.quat_y = quat_y;
+    packet.quat_z = quat_z;
+    packet.quat_w = quat_w;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ATTITUDE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ATTITUDE_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_CRC);
+}
+
+/**
+ * @brief Encode a attitude_tm 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 attitude_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_attitude_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_attitude_tm_t* attitude_tm)
+{
+    return mavlink_msg_attitude_tm_pack(system_id, component_id, msg, attitude_tm->timestamp, attitude_tm->sensor_name, attitude_tm->roll, attitude_tm->pitch, attitude_tm->yaw, attitude_tm->quat_x, attitude_tm->quat_y, attitude_tm->quat_z, attitude_tm->quat_w);
+}
+
+/**
+ * @brief Encode a attitude_tm 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 attitude_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_attitude_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_attitude_tm_t* attitude_tm)
+{
+    return mavlink_msg_attitude_tm_pack_chan(system_id, component_id, chan, msg, attitude_tm->timestamp, attitude_tm->sensor_name, attitude_tm->roll, attitude_tm->pitch, attitude_tm->yaw, attitude_tm->quat_x, attitude_tm->quat_y, attitude_tm->quat_z, attitude_tm->quat_w);
+}
+
+/**
+ * @brief Send a attitude_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param roll [deg] Roll angle
+ * @param pitch [deg] Pitch angle
+ * @param yaw [deg] Yaw angle
+ * @param quat_x  Quaternion x component
+ * @param quat_y  Quaternion y component
+ * @param quat_z  Quaternion z component
+ * @param quat_w  Quaternion w component
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_attitude_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, float roll, float pitch, float yaw, float quat_x, float quat_y, float quat_z, float quat_w)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ATTITUDE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, roll);
+    _mav_put_float(buf, 12, pitch);
+    _mav_put_float(buf, 16, yaw);
+    _mav_put_float(buf, 20, quat_x);
+    _mav_put_float(buf, 24, quat_y);
+    _mav_put_float(buf, 28, quat_z);
+    _mav_put_float(buf, 32, quat_w);
+    _mav_put_char_array(buf, 36, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ATTITUDE_TM, buf, MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_CRC);
+#else
+    mavlink_attitude_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.roll = roll;
+    packet.pitch = pitch;
+    packet.yaw = yaw;
+    packet.quat_x = quat_x;
+    packet.quat_y = quat_y;
+    packet.quat_z = quat_z;
+    packet.quat_w = quat_w;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ATTITUDE_TM, (const char *)&packet, MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a attitude_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_attitude_tm_send_struct(mavlink_channel_t chan, const mavlink_attitude_tm_t* attitude_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_attitude_tm_send(chan, attitude_tm->timestamp, attitude_tm->sensor_name, attitude_tm->roll, attitude_tm->pitch, attitude_tm->yaw, attitude_tm->quat_x, attitude_tm->quat_y, attitude_tm->quat_z, attitude_tm->quat_w);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ATTITUDE_TM, (const char *)attitude_tm, MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_ATTITUDE_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_attitude_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, float roll, float pitch, float yaw, float quat_x, float quat_y, float quat_z, float quat_w)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, roll);
+    _mav_put_float(buf, 12, pitch);
+    _mav_put_float(buf, 16, yaw);
+    _mav_put_float(buf, 20, quat_x);
+    _mav_put_float(buf, 24, quat_y);
+    _mav_put_float(buf, 28, quat_z);
+    _mav_put_float(buf, 32, quat_w);
+    _mav_put_char_array(buf, 36, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ATTITUDE_TM, buf, MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_CRC);
+#else
+    mavlink_attitude_tm_t *packet = (mavlink_attitude_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->roll = roll;
+    packet->pitch = pitch;
+    packet->yaw = yaw;
+    packet->quat_x = quat_x;
+    packet->quat_y = quat_y;
+    packet->quat_z = quat_z;
+    packet->quat_w = quat_w;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ATTITUDE_TM, (const char *)packet, MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_LEN, MAVLINK_MSG_ID_ATTITUDE_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ATTITUDE_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from attitude_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_attitude_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from attitude_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_attitude_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  36);
+}
+
+/**
+ * @brief Get field roll from attitude_tm message
+ *
+ * @return [deg] Roll angle
+ */
+static inline float mavlink_msg_attitude_tm_get_roll(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field pitch from attitude_tm message
+ *
+ * @return [deg] Pitch angle
+ */
+static inline float mavlink_msg_attitude_tm_get_pitch(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field yaw from attitude_tm message
+ *
+ * @return [deg] Yaw angle
+ */
+static inline float mavlink_msg_attitude_tm_get_yaw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field quat_x from attitude_tm message
+ *
+ * @return  Quaternion x component
+ */
+static inline float mavlink_msg_attitude_tm_get_quat_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field quat_y from attitude_tm message
+ *
+ * @return  Quaternion y component
+ */
+static inline float mavlink_msg_attitude_tm_get_quat_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field quat_z from attitude_tm message
+ *
+ * @return  Quaternion z component
+ */
+static inline float mavlink_msg_attitude_tm_get_quat_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field quat_w from attitude_tm message
+ *
+ * @return  Quaternion w component
+ */
+static inline float mavlink_msg_attitude_tm_get_quat_w(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Decode a attitude_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param attitude_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_attitude_tm_decode(const mavlink_message_t* msg, mavlink_attitude_tm_t* attitude_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    attitude_tm->timestamp = mavlink_msg_attitude_tm_get_timestamp(msg);
+    attitude_tm->roll = mavlink_msg_attitude_tm_get_roll(msg);
+    attitude_tm->pitch = mavlink_msg_attitude_tm_get_pitch(msg);
+    attitude_tm->yaw = mavlink_msg_attitude_tm_get_yaw(msg);
+    attitude_tm->quat_x = mavlink_msg_attitude_tm_get_quat_x(msg);
+    attitude_tm->quat_y = mavlink_msg_attitude_tm_get_quat_y(msg);
+    attitude_tm->quat_z = mavlink_msg_attitude_tm_get_quat_z(msg);
+    attitude_tm->quat_w = mavlink_msg_attitude_tm_get_quat_w(msg);
+    mavlink_msg_attitude_tm_get_sensor_name(msg, attitude_tm->sensor_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_ATTITUDE_TM_LEN? msg->len : MAVLINK_MSG_ID_ATTITUDE_TM_LEN;
+        memset(attitude_tm, 0, MAVLINK_MSG_ID_ATTITUDE_TM_LEN);
+    memcpy(attitude_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_calibration_tm.h b/mavlink_lib/orion/mavlink_msg_calibration_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..b78cfdfde98ece3713e14ff0c5a9566f6b7d43a9
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_calibration_tm.h
@@ -0,0 +1,638 @@
+#pragma once
+// MESSAGE CALIBRATION_TM PACKING
+
+#define MAVLINK_MSG_ID_CALIBRATION_TM 214
+
+
+typedef struct __mavlink_calibration_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp in microseconds*/
+ float gyro_bias_x; /*< [deg/s] Gyroscope X bias*/
+ float gyro_bias_y; /*< [deg/s] Gyroscope Y bias*/
+ float gyro_bias_z; /*< [deg/s] Gyroscope Z bias*/
+ float mag_bias_x; /*< [uT] Magnetometer X bias*/
+ float mag_bias_y; /*< [uT] Magnetometer Y bias*/
+ float mag_bias_z; /*< [uT] Magnetometer Z bias*/
+ float mag_scale_x; /*<  Magnetometer X scale*/
+ float mag_scale_y; /*<  Magnetometer Y scale*/
+ float mag_scale_z; /*<  Magnetometer Z scale*/
+ float static_press_1_bias; /*< [Pa] Static pressure 1 bias*/
+ float static_press_1_scale; /*<  Static pressure 1 scale*/
+ float static_press_2_bias; /*< [Pa] Static pressure 2 bias*/
+ float static_press_2_scale; /*<  Static pressure 2 scale*/
+ float dpl_bay_press_bias; /*< [Pa] Deployment bay pressure bias*/
+ float dpl_bay_press_scale; /*<  Deployment bay pressure scale*/
+ float dynamic_press_bias; /*< [Pa] Dynamic pressure bias*/
+ float dynamic_press_scale; /*<  Dynamic pressure scale*/
+} mavlink_calibration_tm_t;
+
+#define MAVLINK_MSG_ID_CALIBRATION_TM_LEN 76
+#define MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN 76
+#define MAVLINK_MSG_ID_214_LEN 76
+#define MAVLINK_MSG_ID_214_MIN_LEN 76
+
+#define MAVLINK_MSG_ID_CALIBRATION_TM_CRC 210
+#define MAVLINK_MSG_ID_214_CRC 210
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_CALIBRATION_TM { \
+    214, \
+    "CALIBRATION_TM", \
+    18, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_calibration_tm_t, timestamp) }, \
+         { "gyro_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_calibration_tm_t, gyro_bias_x) }, \
+         { "gyro_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_calibration_tm_t, gyro_bias_y) }, \
+         { "gyro_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_calibration_tm_t, gyro_bias_z) }, \
+         { "mag_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_calibration_tm_t, mag_bias_x) }, \
+         { "mag_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_calibration_tm_t, mag_bias_y) }, \
+         { "mag_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_calibration_tm_t, mag_bias_z) }, \
+         { "mag_scale_x", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_calibration_tm_t, mag_scale_x) }, \
+         { "mag_scale_y", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_calibration_tm_t, mag_scale_y) }, \
+         { "mag_scale_z", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_calibration_tm_t, mag_scale_z) }, \
+         { "static_press_1_bias", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_calibration_tm_t, static_press_1_bias) }, \
+         { "static_press_1_scale", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_calibration_tm_t, static_press_1_scale) }, \
+         { "static_press_2_bias", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_calibration_tm_t, static_press_2_bias) }, \
+         { "static_press_2_scale", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_calibration_tm_t, static_press_2_scale) }, \
+         { "dpl_bay_press_bias", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_calibration_tm_t, dpl_bay_press_bias) }, \
+         { "dpl_bay_press_scale", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_calibration_tm_t, dpl_bay_press_scale) }, \
+         { "dynamic_press_bias", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_calibration_tm_t, dynamic_press_bias) }, \
+         { "dynamic_press_scale", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_calibration_tm_t, dynamic_press_scale) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_CALIBRATION_TM { \
+    "CALIBRATION_TM", \
+    18, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_calibration_tm_t, timestamp) }, \
+         { "gyro_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_calibration_tm_t, gyro_bias_x) }, \
+         { "gyro_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_calibration_tm_t, gyro_bias_y) }, \
+         { "gyro_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_calibration_tm_t, gyro_bias_z) }, \
+         { "mag_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_calibration_tm_t, mag_bias_x) }, \
+         { "mag_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_calibration_tm_t, mag_bias_y) }, \
+         { "mag_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_calibration_tm_t, mag_bias_z) }, \
+         { "mag_scale_x", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_calibration_tm_t, mag_scale_x) }, \
+         { "mag_scale_y", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_calibration_tm_t, mag_scale_y) }, \
+         { "mag_scale_z", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_calibration_tm_t, mag_scale_z) }, \
+         { "static_press_1_bias", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_calibration_tm_t, static_press_1_bias) }, \
+         { "static_press_1_scale", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_calibration_tm_t, static_press_1_scale) }, \
+         { "static_press_2_bias", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_calibration_tm_t, static_press_2_bias) }, \
+         { "static_press_2_scale", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_calibration_tm_t, static_press_2_scale) }, \
+         { "dpl_bay_press_bias", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_calibration_tm_t, dpl_bay_press_bias) }, \
+         { "dpl_bay_press_scale", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_calibration_tm_t, dpl_bay_press_scale) }, \
+         { "dynamic_press_bias", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_calibration_tm_t, dynamic_press_bias) }, \
+         { "dynamic_press_scale", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_calibration_tm_t, dynamic_press_scale) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a calibration_tm 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 timestamp [us] Timestamp in microseconds
+ * @param gyro_bias_x [deg/s] Gyroscope X bias
+ * @param gyro_bias_y [deg/s] Gyroscope Y bias
+ * @param gyro_bias_z [deg/s] Gyroscope Z bias
+ * @param mag_bias_x [uT] Magnetometer X bias
+ * @param mag_bias_y [uT] Magnetometer Y bias
+ * @param mag_bias_z [uT] Magnetometer Z bias
+ * @param mag_scale_x  Magnetometer X scale
+ * @param mag_scale_y  Magnetometer Y scale
+ * @param mag_scale_z  Magnetometer Z scale
+ * @param static_press_1_bias [Pa] Static pressure 1 bias
+ * @param static_press_1_scale  Static pressure 1 scale
+ * @param static_press_2_bias [Pa] Static pressure 2 bias
+ * @param static_press_2_scale  Static pressure 2 scale
+ * @param dpl_bay_press_bias [Pa] Deployment bay pressure bias
+ * @param dpl_bay_press_scale  Deployment bay pressure scale
+ * @param dynamic_press_bias [Pa] Dynamic pressure bias
+ * @param dynamic_press_scale  Dynamic pressure scale
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_calibration_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, float gyro_bias_x, float gyro_bias_y, float gyro_bias_z, float mag_bias_x, float mag_bias_y, float mag_bias_z, float mag_scale_x, float mag_scale_y, float mag_scale_z, float static_press_1_bias, float static_press_1_scale, float static_press_2_bias, float static_press_2_scale, float dpl_bay_press_bias, float dpl_bay_press_scale, float dynamic_press_bias, float dynamic_press_scale)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CALIBRATION_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, gyro_bias_x);
+    _mav_put_float(buf, 12, gyro_bias_y);
+    _mav_put_float(buf, 16, gyro_bias_z);
+    _mav_put_float(buf, 20, mag_bias_x);
+    _mav_put_float(buf, 24, mag_bias_y);
+    _mav_put_float(buf, 28, mag_bias_z);
+    _mav_put_float(buf, 32, mag_scale_x);
+    _mav_put_float(buf, 36, mag_scale_y);
+    _mav_put_float(buf, 40, mag_scale_z);
+    _mav_put_float(buf, 44, static_press_1_bias);
+    _mav_put_float(buf, 48, static_press_1_scale);
+    _mav_put_float(buf, 52, static_press_2_bias);
+    _mav_put_float(buf, 56, static_press_2_scale);
+    _mav_put_float(buf, 60, dpl_bay_press_bias);
+    _mav_put_float(buf, 64, dpl_bay_press_scale);
+    _mav_put_float(buf, 68, dynamic_press_bias);
+    _mav_put_float(buf, 72, dynamic_press_scale);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CALIBRATION_TM_LEN);
+#else
+    mavlink_calibration_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.gyro_bias_x = gyro_bias_x;
+    packet.gyro_bias_y = gyro_bias_y;
+    packet.gyro_bias_z = gyro_bias_z;
+    packet.mag_bias_x = mag_bias_x;
+    packet.mag_bias_y = mag_bias_y;
+    packet.mag_bias_z = mag_bias_z;
+    packet.mag_scale_x = mag_scale_x;
+    packet.mag_scale_y = mag_scale_y;
+    packet.mag_scale_z = mag_scale_z;
+    packet.static_press_1_bias = static_press_1_bias;
+    packet.static_press_1_scale = static_press_1_scale;
+    packet.static_press_2_bias = static_press_2_bias;
+    packet.static_press_2_scale = static_press_2_scale;
+    packet.dpl_bay_press_bias = dpl_bay_press_bias;
+    packet.dpl_bay_press_scale = dpl_bay_press_scale;
+    packet.dynamic_press_bias = dynamic_press_bias;
+    packet.dynamic_press_scale = dynamic_press_scale;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CALIBRATION_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CALIBRATION_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_CRC);
+}
+
+/**
+ * @brief Pack a calibration_tm 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 timestamp [us] Timestamp in microseconds
+ * @param gyro_bias_x [deg/s] Gyroscope X bias
+ * @param gyro_bias_y [deg/s] Gyroscope Y bias
+ * @param gyro_bias_z [deg/s] Gyroscope Z bias
+ * @param mag_bias_x [uT] Magnetometer X bias
+ * @param mag_bias_y [uT] Magnetometer Y bias
+ * @param mag_bias_z [uT] Magnetometer Z bias
+ * @param mag_scale_x  Magnetometer X scale
+ * @param mag_scale_y  Magnetometer Y scale
+ * @param mag_scale_z  Magnetometer Z scale
+ * @param static_press_1_bias [Pa] Static pressure 1 bias
+ * @param static_press_1_scale  Static pressure 1 scale
+ * @param static_press_2_bias [Pa] Static pressure 2 bias
+ * @param static_press_2_scale  Static pressure 2 scale
+ * @param dpl_bay_press_bias [Pa] Deployment bay pressure bias
+ * @param dpl_bay_press_scale  Deployment bay pressure scale
+ * @param dynamic_press_bias [Pa] Dynamic pressure bias
+ * @param dynamic_press_scale  Dynamic pressure scale
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_calibration_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,float gyro_bias_x,float gyro_bias_y,float gyro_bias_z,float mag_bias_x,float mag_bias_y,float mag_bias_z,float mag_scale_x,float mag_scale_y,float mag_scale_z,float static_press_1_bias,float static_press_1_scale,float static_press_2_bias,float static_press_2_scale,float dpl_bay_press_bias,float dpl_bay_press_scale,float dynamic_press_bias,float dynamic_press_scale)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CALIBRATION_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, gyro_bias_x);
+    _mav_put_float(buf, 12, gyro_bias_y);
+    _mav_put_float(buf, 16, gyro_bias_z);
+    _mav_put_float(buf, 20, mag_bias_x);
+    _mav_put_float(buf, 24, mag_bias_y);
+    _mav_put_float(buf, 28, mag_bias_z);
+    _mav_put_float(buf, 32, mag_scale_x);
+    _mav_put_float(buf, 36, mag_scale_y);
+    _mav_put_float(buf, 40, mag_scale_z);
+    _mav_put_float(buf, 44, static_press_1_bias);
+    _mav_put_float(buf, 48, static_press_1_scale);
+    _mav_put_float(buf, 52, static_press_2_bias);
+    _mav_put_float(buf, 56, static_press_2_scale);
+    _mav_put_float(buf, 60, dpl_bay_press_bias);
+    _mav_put_float(buf, 64, dpl_bay_press_scale);
+    _mav_put_float(buf, 68, dynamic_press_bias);
+    _mav_put_float(buf, 72, dynamic_press_scale);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CALIBRATION_TM_LEN);
+#else
+    mavlink_calibration_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.gyro_bias_x = gyro_bias_x;
+    packet.gyro_bias_y = gyro_bias_y;
+    packet.gyro_bias_z = gyro_bias_z;
+    packet.mag_bias_x = mag_bias_x;
+    packet.mag_bias_y = mag_bias_y;
+    packet.mag_bias_z = mag_bias_z;
+    packet.mag_scale_x = mag_scale_x;
+    packet.mag_scale_y = mag_scale_y;
+    packet.mag_scale_z = mag_scale_z;
+    packet.static_press_1_bias = static_press_1_bias;
+    packet.static_press_1_scale = static_press_1_scale;
+    packet.static_press_2_bias = static_press_2_bias;
+    packet.static_press_2_scale = static_press_2_scale;
+    packet.dpl_bay_press_bias = dpl_bay_press_bias;
+    packet.dpl_bay_press_scale = dpl_bay_press_scale;
+    packet.dynamic_press_bias = dynamic_press_bias;
+    packet.dynamic_press_scale = dynamic_press_scale;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CALIBRATION_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CALIBRATION_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_CRC);
+}
+
+/**
+ * @brief Encode a calibration_tm 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 calibration_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_calibration_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_calibration_tm_t* calibration_tm)
+{
+    return mavlink_msg_calibration_tm_pack(system_id, component_id, msg, calibration_tm->timestamp, calibration_tm->gyro_bias_x, calibration_tm->gyro_bias_y, calibration_tm->gyro_bias_z, calibration_tm->mag_bias_x, calibration_tm->mag_bias_y, calibration_tm->mag_bias_z, calibration_tm->mag_scale_x, calibration_tm->mag_scale_y, calibration_tm->mag_scale_z, calibration_tm->static_press_1_bias, calibration_tm->static_press_1_scale, calibration_tm->static_press_2_bias, calibration_tm->static_press_2_scale, calibration_tm->dpl_bay_press_bias, calibration_tm->dpl_bay_press_scale, calibration_tm->dynamic_press_bias, calibration_tm->dynamic_press_scale);
+}
+
+/**
+ * @brief Encode a calibration_tm 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 calibration_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_calibration_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_calibration_tm_t* calibration_tm)
+{
+    return mavlink_msg_calibration_tm_pack_chan(system_id, component_id, chan, msg, calibration_tm->timestamp, calibration_tm->gyro_bias_x, calibration_tm->gyro_bias_y, calibration_tm->gyro_bias_z, calibration_tm->mag_bias_x, calibration_tm->mag_bias_y, calibration_tm->mag_bias_z, calibration_tm->mag_scale_x, calibration_tm->mag_scale_y, calibration_tm->mag_scale_z, calibration_tm->static_press_1_bias, calibration_tm->static_press_1_scale, calibration_tm->static_press_2_bias, calibration_tm->static_press_2_scale, calibration_tm->dpl_bay_press_bias, calibration_tm->dpl_bay_press_scale, calibration_tm->dynamic_press_bias, calibration_tm->dynamic_press_scale);
+}
+
+/**
+ * @brief Send a calibration_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp in microseconds
+ * @param gyro_bias_x [deg/s] Gyroscope X bias
+ * @param gyro_bias_y [deg/s] Gyroscope Y bias
+ * @param gyro_bias_z [deg/s] Gyroscope Z bias
+ * @param mag_bias_x [uT] Magnetometer X bias
+ * @param mag_bias_y [uT] Magnetometer Y bias
+ * @param mag_bias_z [uT] Magnetometer Z bias
+ * @param mag_scale_x  Magnetometer X scale
+ * @param mag_scale_y  Magnetometer Y scale
+ * @param mag_scale_z  Magnetometer Z scale
+ * @param static_press_1_bias [Pa] Static pressure 1 bias
+ * @param static_press_1_scale  Static pressure 1 scale
+ * @param static_press_2_bias [Pa] Static pressure 2 bias
+ * @param static_press_2_scale  Static pressure 2 scale
+ * @param dpl_bay_press_bias [Pa] Deployment bay pressure bias
+ * @param dpl_bay_press_scale  Deployment bay pressure scale
+ * @param dynamic_press_bias [Pa] Dynamic pressure bias
+ * @param dynamic_press_scale  Dynamic pressure scale
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_calibration_tm_send(mavlink_channel_t chan, uint64_t timestamp, float gyro_bias_x, float gyro_bias_y, float gyro_bias_z, float mag_bias_x, float mag_bias_y, float mag_bias_z, float mag_scale_x, float mag_scale_y, float mag_scale_z, float static_press_1_bias, float static_press_1_scale, float static_press_2_bias, float static_press_2_scale, float dpl_bay_press_bias, float dpl_bay_press_scale, float dynamic_press_bias, float dynamic_press_scale)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CALIBRATION_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, gyro_bias_x);
+    _mav_put_float(buf, 12, gyro_bias_y);
+    _mav_put_float(buf, 16, gyro_bias_z);
+    _mav_put_float(buf, 20, mag_bias_x);
+    _mav_put_float(buf, 24, mag_bias_y);
+    _mav_put_float(buf, 28, mag_bias_z);
+    _mav_put_float(buf, 32, mag_scale_x);
+    _mav_put_float(buf, 36, mag_scale_y);
+    _mav_put_float(buf, 40, mag_scale_z);
+    _mav_put_float(buf, 44, static_press_1_bias);
+    _mav_put_float(buf, 48, static_press_1_scale);
+    _mav_put_float(buf, 52, static_press_2_bias);
+    _mav_put_float(buf, 56, static_press_2_scale);
+    _mav_put_float(buf, 60, dpl_bay_press_bias);
+    _mav_put_float(buf, 64, dpl_bay_press_scale);
+    _mav_put_float(buf, 68, dynamic_press_bias);
+    _mav_put_float(buf, 72, dynamic_press_scale);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CALIBRATION_TM, buf, MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_CRC);
+#else
+    mavlink_calibration_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.gyro_bias_x = gyro_bias_x;
+    packet.gyro_bias_y = gyro_bias_y;
+    packet.gyro_bias_z = gyro_bias_z;
+    packet.mag_bias_x = mag_bias_x;
+    packet.mag_bias_y = mag_bias_y;
+    packet.mag_bias_z = mag_bias_z;
+    packet.mag_scale_x = mag_scale_x;
+    packet.mag_scale_y = mag_scale_y;
+    packet.mag_scale_z = mag_scale_z;
+    packet.static_press_1_bias = static_press_1_bias;
+    packet.static_press_1_scale = static_press_1_scale;
+    packet.static_press_2_bias = static_press_2_bias;
+    packet.static_press_2_scale = static_press_2_scale;
+    packet.dpl_bay_press_bias = dpl_bay_press_bias;
+    packet.dpl_bay_press_scale = dpl_bay_press_scale;
+    packet.dynamic_press_bias = dynamic_press_bias;
+    packet.dynamic_press_scale = dynamic_press_scale;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CALIBRATION_TM, (const char *)&packet, MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a calibration_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_calibration_tm_send_struct(mavlink_channel_t chan, const mavlink_calibration_tm_t* calibration_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_calibration_tm_send(chan, calibration_tm->timestamp, calibration_tm->gyro_bias_x, calibration_tm->gyro_bias_y, calibration_tm->gyro_bias_z, calibration_tm->mag_bias_x, calibration_tm->mag_bias_y, calibration_tm->mag_bias_z, calibration_tm->mag_scale_x, calibration_tm->mag_scale_y, calibration_tm->mag_scale_z, calibration_tm->static_press_1_bias, calibration_tm->static_press_1_scale, calibration_tm->static_press_2_bias, calibration_tm->static_press_2_scale, calibration_tm->dpl_bay_press_bias, calibration_tm->dpl_bay_press_scale, calibration_tm->dynamic_press_bias, calibration_tm->dynamic_press_scale);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CALIBRATION_TM, (const char *)calibration_tm, MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_CALIBRATION_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_calibration_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, float gyro_bias_x, float gyro_bias_y, float gyro_bias_z, float mag_bias_x, float mag_bias_y, float mag_bias_z, float mag_scale_x, float mag_scale_y, float mag_scale_z, float static_press_1_bias, float static_press_1_scale, float static_press_2_bias, float static_press_2_scale, float dpl_bay_press_bias, float dpl_bay_press_scale, float dynamic_press_bias, float dynamic_press_scale)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, gyro_bias_x);
+    _mav_put_float(buf, 12, gyro_bias_y);
+    _mav_put_float(buf, 16, gyro_bias_z);
+    _mav_put_float(buf, 20, mag_bias_x);
+    _mav_put_float(buf, 24, mag_bias_y);
+    _mav_put_float(buf, 28, mag_bias_z);
+    _mav_put_float(buf, 32, mag_scale_x);
+    _mav_put_float(buf, 36, mag_scale_y);
+    _mav_put_float(buf, 40, mag_scale_z);
+    _mav_put_float(buf, 44, static_press_1_bias);
+    _mav_put_float(buf, 48, static_press_1_scale);
+    _mav_put_float(buf, 52, static_press_2_bias);
+    _mav_put_float(buf, 56, static_press_2_scale);
+    _mav_put_float(buf, 60, dpl_bay_press_bias);
+    _mav_put_float(buf, 64, dpl_bay_press_scale);
+    _mav_put_float(buf, 68, dynamic_press_bias);
+    _mav_put_float(buf, 72, dynamic_press_scale);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CALIBRATION_TM, buf, MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_CRC);
+#else
+    mavlink_calibration_tm_t *packet = (mavlink_calibration_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->gyro_bias_x = gyro_bias_x;
+    packet->gyro_bias_y = gyro_bias_y;
+    packet->gyro_bias_z = gyro_bias_z;
+    packet->mag_bias_x = mag_bias_x;
+    packet->mag_bias_y = mag_bias_y;
+    packet->mag_bias_z = mag_bias_z;
+    packet->mag_scale_x = mag_scale_x;
+    packet->mag_scale_y = mag_scale_y;
+    packet->mag_scale_z = mag_scale_z;
+    packet->static_press_1_bias = static_press_1_bias;
+    packet->static_press_1_scale = static_press_1_scale;
+    packet->static_press_2_bias = static_press_2_bias;
+    packet->static_press_2_scale = static_press_2_scale;
+    packet->dpl_bay_press_bias = dpl_bay_press_bias;
+    packet->dpl_bay_press_scale = dpl_bay_press_scale;
+    packet->dynamic_press_bias = dynamic_press_bias;
+    packet->dynamic_press_scale = dynamic_press_scale;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CALIBRATION_TM, (const char *)packet, MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_LEN, MAVLINK_MSG_ID_CALIBRATION_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE CALIBRATION_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from calibration_tm message
+ *
+ * @return [us] Timestamp in microseconds
+ */
+static inline uint64_t mavlink_msg_calibration_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field gyro_bias_x from calibration_tm message
+ *
+ * @return [deg/s] Gyroscope X bias
+ */
+static inline float mavlink_msg_calibration_tm_get_gyro_bias_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field gyro_bias_y from calibration_tm message
+ *
+ * @return [deg/s] Gyroscope Y bias
+ */
+static inline float mavlink_msg_calibration_tm_get_gyro_bias_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field gyro_bias_z from calibration_tm message
+ *
+ * @return [deg/s] Gyroscope Z bias
+ */
+static inline float mavlink_msg_calibration_tm_get_gyro_bias_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field mag_bias_x from calibration_tm message
+ *
+ * @return [uT] Magnetometer X bias
+ */
+static inline float mavlink_msg_calibration_tm_get_mag_bias_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field mag_bias_y from calibration_tm message
+ *
+ * @return [uT] Magnetometer Y bias
+ */
+static inline float mavlink_msg_calibration_tm_get_mag_bias_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field mag_bias_z from calibration_tm message
+ *
+ * @return [uT] Magnetometer Z bias
+ */
+static inline float mavlink_msg_calibration_tm_get_mag_bias_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field mag_scale_x from calibration_tm message
+ *
+ * @return  Magnetometer X scale
+ */
+static inline float mavlink_msg_calibration_tm_get_mag_scale_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field mag_scale_y from calibration_tm message
+ *
+ * @return  Magnetometer Y scale
+ */
+static inline float mavlink_msg_calibration_tm_get_mag_scale_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field mag_scale_z from calibration_tm message
+ *
+ * @return  Magnetometer Z scale
+ */
+static inline float mavlink_msg_calibration_tm_get_mag_scale_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Get field static_press_1_bias from calibration_tm message
+ *
+ * @return [Pa] Static pressure 1 bias
+ */
+static inline float mavlink_msg_calibration_tm_get_static_press_1_bias(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  44);
+}
+
+/**
+ * @brief Get field static_press_1_scale from calibration_tm message
+ *
+ * @return  Static pressure 1 scale
+ */
+static inline float mavlink_msg_calibration_tm_get_static_press_1_scale(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  48);
+}
+
+/**
+ * @brief Get field static_press_2_bias from calibration_tm message
+ *
+ * @return [Pa] Static pressure 2 bias
+ */
+static inline float mavlink_msg_calibration_tm_get_static_press_2_bias(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  52);
+}
+
+/**
+ * @brief Get field static_press_2_scale from calibration_tm message
+ *
+ * @return  Static pressure 2 scale
+ */
+static inline float mavlink_msg_calibration_tm_get_static_press_2_scale(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  56);
+}
+
+/**
+ * @brief Get field dpl_bay_press_bias from calibration_tm message
+ *
+ * @return [Pa] Deployment bay pressure bias
+ */
+static inline float mavlink_msg_calibration_tm_get_dpl_bay_press_bias(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  60);
+}
+
+/**
+ * @brief Get field dpl_bay_press_scale from calibration_tm message
+ *
+ * @return  Deployment bay pressure scale
+ */
+static inline float mavlink_msg_calibration_tm_get_dpl_bay_press_scale(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  64);
+}
+
+/**
+ * @brief Get field dynamic_press_bias from calibration_tm message
+ *
+ * @return [Pa] Dynamic pressure bias
+ */
+static inline float mavlink_msg_calibration_tm_get_dynamic_press_bias(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  68);
+}
+
+/**
+ * @brief Get field dynamic_press_scale from calibration_tm message
+ *
+ * @return  Dynamic pressure scale
+ */
+static inline float mavlink_msg_calibration_tm_get_dynamic_press_scale(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  72);
+}
+
+/**
+ * @brief Decode a calibration_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param calibration_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_calibration_tm_decode(const mavlink_message_t* msg, mavlink_calibration_tm_t* calibration_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    calibration_tm->timestamp = mavlink_msg_calibration_tm_get_timestamp(msg);
+    calibration_tm->gyro_bias_x = mavlink_msg_calibration_tm_get_gyro_bias_x(msg);
+    calibration_tm->gyro_bias_y = mavlink_msg_calibration_tm_get_gyro_bias_y(msg);
+    calibration_tm->gyro_bias_z = mavlink_msg_calibration_tm_get_gyro_bias_z(msg);
+    calibration_tm->mag_bias_x = mavlink_msg_calibration_tm_get_mag_bias_x(msg);
+    calibration_tm->mag_bias_y = mavlink_msg_calibration_tm_get_mag_bias_y(msg);
+    calibration_tm->mag_bias_z = mavlink_msg_calibration_tm_get_mag_bias_z(msg);
+    calibration_tm->mag_scale_x = mavlink_msg_calibration_tm_get_mag_scale_x(msg);
+    calibration_tm->mag_scale_y = mavlink_msg_calibration_tm_get_mag_scale_y(msg);
+    calibration_tm->mag_scale_z = mavlink_msg_calibration_tm_get_mag_scale_z(msg);
+    calibration_tm->static_press_1_bias = mavlink_msg_calibration_tm_get_static_press_1_bias(msg);
+    calibration_tm->static_press_1_scale = mavlink_msg_calibration_tm_get_static_press_1_scale(msg);
+    calibration_tm->static_press_2_bias = mavlink_msg_calibration_tm_get_static_press_2_bias(msg);
+    calibration_tm->static_press_2_scale = mavlink_msg_calibration_tm_get_static_press_2_scale(msg);
+    calibration_tm->dpl_bay_press_bias = mavlink_msg_calibration_tm_get_dpl_bay_press_bias(msg);
+    calibration_tm->dpl_bay_press_scale = mavlink_msg_calibration_tm_get_dpl_bay_press_scale(msg);
+    calibration_tm->dynamic_press_bias = mavlink_msg_calibration_tm_get_dynamic_press_bias(msg);
+    calibration_tm->dynamic_press_scale = mavlink_msg_calibration_tm_get_dynamic_press_scale(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_CALIBRATION_TM_LEN? msg->len : MAVLINK_MSG_ID_CALIBRATION_TM_LEN;
+        memset(calibration_tm, 0, MAVLINK_MSG_ID_CALIBRATION_TM_LEN);
+    memcpy(calibration_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_can_stats_tm.h b/mavlink_lib/orion/mavlink_msg_can_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..4bc1ec272ef1ed3729b762021d2ccbacbc2c1681
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_can_stats_tm.h
@@ -0,0 +1,288 @@
+#pragma once
+// MESSAGE CAN_STATS_TM PACKING
+
+#define MAVLINK_MSG_ID_CAN_STATS_TM 203
+
+
+typedef struct __mavlink_can_stats_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float payload_bit_rate; /*<  Payload only bitrate*/
+ float total_bit_rate; /*<  Total bitrate*/
+ float load_percent; /*<  Load percent of the BUS*/
+} mavlink_can_stats_tm_t;
+
+#define MAVLINK_MSG_ID_CAN_STATS_TM_LEN 20
+#define MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN 20
+#define MAVLINK_MSG_ID_203_LEN 20
+#define MAVLINK_MSG_ID_203_MIN_LEN 20
+
+#define MAVLINK_MSG_ID_CAN_STATS_TM_CRC 39
+#define MAVLINK_MSG_ID_203_CRC 39
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_CAN_STATS_TM { \
+    203, \
+    "CAN_STATS_TM", \
+    4, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_can_stats_tm_t, timestamp) }, \
+         { "payload_bit_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_can_stats_tm_t, payload_bit_rate) }, \
+         { "total_bit_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_can_stats_tm_t, total_bit_rate) }, \
+         { "load_percent", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_can_stats_tm_t, load_percent) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_CAN_STATS_TM { \
+    "CAN_STATS_TM", \
+    4, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_can_stats_tm_t, timestamp) }, \
+         { "payload_bit_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_can_stats_tm_t, payload_bit_rate) }, \
+         { "total_bit_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_can_stats_tm_t, total_bit_rate) }, \
+         { "load_percent", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_can_stats_tm_t, load_percent) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a can_stats_tm 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 timestamp [us] When was this logged
+ * @param payload_bit_rate  Payload only bitrate
+ * @param total_bit_rate  Total bitrate
+ * @param load_percent  Load percent of the BUS
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_can_stats_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, float payload_bit_rate, float total_bit_rate, float load_percent)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CAN_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, payload_bit_rate);
+    _mav_put_float(buf, 12, total_bit_rate);
+    _mav_put_float(buf, 16, load_percent);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CAN_STATS_TM_LEN);
+#else
+    mavlink_can_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.payload_bit_rate = payload_bit_rate;
+    packet.total_bit_rate = total_bit_rate;
+    packet.load_percent = load_percent;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CAN_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CAN_STATS_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_CRC);
+}
+
+/**
+ * @brief Pack a can_stats_tm 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 timestamp [us] When was this logged
+ * @param payload_bit_rate  Payload only bitrate
+ * @param total_bit_rate  Total bitrate
+ * @param load_percent  Load percent of the BUS
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_can_stats_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,float payload_bit_rate,float total_bit_rate,float load_percent)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CAN_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, payload_bit_rate);
+    _mav_put_float(buf, 12, total_bit_rate);
+    _mav_put_float(buf, 16, load_percent);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CAN_STATS_TM_LEN);
+#else
+    mavlink_can_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.payload_bit_rate = payload_bit_rate;
+    packet.total_bit_rate = total_bit_rate;
+    packet.load_percent = load_percent;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CAN_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CAN_STATS_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_CRC);
+}
+
+/**
+ * @brief Encode a can_stats_tm 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 can_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_can_stats_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_can_stats_tm_t* can_stats_tm)
+{
+    return mavlink_msg_can_stats_tm_pack(system_id, component_id, msg, can_stats_tm->timestamp, can_stats_tm->payload_bit_rate, can_stats_tm->total_bit_rate, can_stats_tm->load_percent);
+}
+
+/**
+ * @brief Encode a can_stats_tm 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 can_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_can_stats_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_can_stats_tm_t* can_stats_tm)
+{
+    return mavlink_msg_can_stats_tm_pack_chan(system_id, component_id, chan, msg, can_stats_tm->timestamp, can_stats_tm->payload_bit_rate, can_stats_tm->total_bit_rate, can_stats_tm->load_percent);
+}
+
+/**
+ * @brief Send a can_stats_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param payload_bit_rate  Payload only bitrate
+ * @param total_bit_rate  Total bitrate
+ * @param load_percent  Load percent of the BUS
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_can_stats_tm_send(mavlink_channel_t chan, uint64_t timestamp, float payload_bit_rate, float total_bit_rate, float load_percent)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CAN_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, payload_bit_rate);
+    _mav_put_float(buf, 12, total_bit_rate);
+    _mav_put_float(buf, 16, load_percent);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_STATS_TM, buf, MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_CRC);
+#else
+    mavlink_can_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.payload_bit_rate = payload_bit_rate;
+    packet.total_bit_rate = total_bit_rate;
+    packet.load_percent = load_percent;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_STATS_TM, (const char *)&packet, MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a can_stats_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_can_stats_tm_send_struct(mavlink_channel_t chan, const mavlink_can_stats_tm_t* can_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_can_stats_tm_send(chan, can_stats_tm->timestamp, can_stats_tm->payload_bit_rate, can_stats_tm->total_bit_rate, can_stats_tm->load_percent);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_STATS_TM, (const char *)can_stats_tm, MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_CAN_STATS_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_can_stats_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, float payload_bit_rate, float total_bit_rate, float load_percent)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, payload_bit_rate);
+    _mav_put_float(buf, 12, total_bit_rate);
+    _mav_put_float(buf, 16, load_percent);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_STATS_TM, buf, MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_CRC);
+#else
+    mavlink_can_stats_tm_t *packet = (mavlink_can_stats_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->payload_bit_rate = payload_bit_rate;
+    packet->total_bit_rate = total_bit_rate;
+    packet->load_percent = load_percent;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_STATS_TM, (const char *)packet, MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_LEN, MAVLINK_MSG_ID_CAN_STATS_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE CAN_STATS_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from can_stats_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_can_stats_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field payload_bit_rate from can_stats_tm message
+ *
+ * @return  Payload only bitrate
+ */
+static inline float mavlink_msg_can_stats_tm_get_payload_bit_rate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field total_bit_rate from can_stats_tm message
+ *
+ * @return  Total bitrate
+ */
+static inline float mavlink_msg_can_stats_tm_get_total_bit_rate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field load_percent from can_stats_tm message
+ *
+ * @return  Load percent of the BUS
+ */
+static inline float mavlink_msg_can_stats_tm_get_load_percent(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Decode a can_stats_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param can_stats_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_can_stats_tm_decode(const mavlink_message_t* msg, mavlink_can_stats_tm_t* can_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    can_stats_tm->timestamp = mavlink_msg_can_stats_tm_get_timestamp(msg);
+    can_stats_tm->payload_bit_rate = mavlink_msg_can_stats_tm_get_payload_bit_rate(msg);
+    can_stats_tm->total_bit_rate = mavlink_msg_can_stats_tm_get_total_bit_rate(msg);
+    can_stats_tm->load_percent = mavlink_msg_can_stats_tm_get_load_percent(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_CAN_STATS_TM_LEN? msg->len : MAVLINK_MSG_ID_CAN_STATS_TM_LEN;
+        memset(can_stats_tm, 0, MAVLINK_MSG_ID_CAN_STATS_TM_LEN);
+    memcpy(can_stats_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_command_tc.h b/mavlink_lib/orion/mavlink_msg_command_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..a4d0886b3f67df648cfd4ed0b8debc059ecfa272
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_command_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE COMMAND_TC PACKING
+
+#define MAVLINK_MSG_ID_COMMAND_TC 2
+
+
+typedef struct __mavlink_command_tc_t {
+ uint8_t command_id; /*<  A member of the MavCommandList enum*/
+} mavlink_command_tc_t;
+
+#define MAVLINK_MSG_ID_COMMAND_TC_LEN 1
+#define MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN 1
+#define MAVLINK_MSG_ID_2_LEN 1
+#define MAVLINK_MSG_ID_2_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_COMMAND_TC_CRC 198
+#define MAVLINK_MSG_ID_2_CRC 198
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_COMMAND_TC { \
+    2, \
+    "COMMAND_TC", \
+    1, \
+    {  { "command_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_command_tc_t, command_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_COMMAND_TC { \
+    "COMMAND_TC", \
+    1, \
+    {  { "command_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_command_tc_t, command_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a command_tc 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 command_id  A member of the MavCommandList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_command_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t command_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_COMMAND_TC_LEN];
+    _mav_put_uint8_t(buf, 0, command_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_COMMAND_TC_LEN);
+#else
+    mavlink_command_tc_t packet;
+    packet.command_id = command_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_COMMAND_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_COMMAND_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_COMMAND_TC_LEN, MAVLINK_MSG_ID_COMMAND_TC_CRC);
+}
+
+/**
+ * @brief Pack a command_tc 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 command_id  A member of the MavCommandList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_command_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t command_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_COMMAND_TC_LEN];
+    _mav_put_uint8_t(buf, 0, command_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_COMMAND_TC_LEN);
+#else
+    mavlink_command_tc_t packet;
+    packet.command_id = command_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_COMMAND_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_COMMAND_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_COMMAND_TC_LEN, MAVLINK_MSG_ID_COMMAND_TC_CRC);
+}
+
+/**
+ * @brief Encode a command_tc 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 command_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_command_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_command_tc_t* command_tc)
+{
+    return mavlink_msg_command_tc_pack(system_id, component_id, msg, command_tc->command_id);
+}
+
+/**
+ * @brief Encode a command_tc 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 command_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_command_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_command_tc_t* command_tc)
+{
+    return mavlink_msg_command_tc_pack_chan(system_id, component_id, chan, msg, command_tc->command_id);
+}
+
+/**
+ * @brief Send a command_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param command_id  A member of the MavCommandList enum
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_command_tc_send(mavlink_channel_t chan, uint8_t command_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_COMMAND_TC_LEN];
+    _mav_put_uint8_t(buf, 0, command_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_COMMAND_TC, buf, MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_COMMAND_TC_LEN, MAVLINK_MSG_ID_COMMAND_TC_CRC);
+#else
+    mavlink_command_tc_t packet;
+    packet.command_id = command_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_COMMAND_TC, (const char *)&packet, MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_COMMAND_TC_LEN, MAVLINK_MSG_ID_COMMAND_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a command_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_command_tc_send_struct(mavlink_channel_t chan, const mavlink_command_tc_t* command_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_command_tc_send(chan, command_tc->command_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_COMMAND_TC, (const char *)command_tc, MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_COMMAND_TC_LEN, MAVLINK_MSG_ID_COMMAND_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_COMMAND_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_command_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t command_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, command_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_COMMAND_TC, buf, MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_COMMAND_TC_LEN, MAVLINK_MSG_ID_COMMAND_TC_CRC);
+#else
+    mavlink_command_tc_t *packet = (mavlink_command_tc_t *)msgbuf;
+    packet->command_id = command_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_COMMAND_TC, (const char *)packet, MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN, MAVLINK_MSG_ID_COMMAND_TC_LEN, MAVLINK_MSG_ID_COMMAND_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE COMMAND_TC UNPACKING
+
+
+/**
+ * @brief Get field command_id from command_tc message
+ *
+ * @return  A member of the MavCommandList enum
+ */
+static inline uint8_t mavlink_msg_command_tc_get_command_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Decode a command_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param command_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_command_tc_decode(const mavlink_message_t* msg, mavlink_command_tc_t* command_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    command_tc->command_id = mavlink_msg_command_tc_get_command_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_COMMAND_TC_LEN? msg->len : MAVLINK_MSG_ID_COMMAND_TC_LEN;
+        memset(command_tc, 0, MAVLINK_MSG_ID_COMMAND_TC_LEN);
+    memcpy(command_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_conrig_state_tc.h b/mavlink_lib/orion/mavlink_msg_conrig_state_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..c3da8f3c2bca3b8ea850a40a3307f1f50db67626
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_conrig_state_tc.h
@@ -0,0 +1,363 @@
+#pragma once
+// MESSAGE CONRIG_STATE_TC PACKING
+
+#define MAVLINK_MSG_ID_CONRIG_STATE_TC 32
+
+
+typedef struct __mavlink_conrig_state_tc_t {
+ uint8_t ignition_btn; /*<  Ignition button pressed*/
+ uint8_t filling_valve_btn; /*<  Open filling valve pressed*/
+ uint8_t venting_valve_btn; /*<  Open venting valve pressed*/
+ uint8_t release_pressure_btn; /*<  Release filling line pressure pressed*/
+ uint8_t quick_connector_btn; /*<  Detach quick connector pressed*/
+ uint8_t start_tars_btn; /*<  Startup TARS pressed*/
+ uint8_t arm_switch; /*<  Arming switch state*/
+} mavlink_conrig_state_tc_t;
+
+#define MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN 7
+#define MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN 7
+#define MAVLINK_MSG_ID_32_LEN 7
+#define MAVLINK_MSG_ID_32_MIN_LEN 7
+
+#define MAVLINK_MSG_ID_CONRIG_STATE_TC_CRC 65
+#define MAVLINK_MSG_ID_32_CRC 65
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_CONRIG_STATE_TC { \
+    32, \
+    "CONRIG_STATE_TC", \
+    7, \
+    {  { "ignition_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_conrig_state_tc_t, ignition_btn) }, \
+         { "filling_valve_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 1, offsetof(mavlink_conrig_state_tc_t, filling_valve_btn) }, \
+         { "venting_valve_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 2, offsetof(mavlink_conrig_state_tc_t, venting_valve_btn) }, \
+         { "release_pressure_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 3, offsetof(mavlink_conrig_state_tc_t, release_pressure_btn) }, \
+         { "quick_connector_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_conrig_state_tc_t, quick_connector_btn) }, \
+         { "start_tars_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 5, offsetof(mavlink_conrig_state_tc_t, start_tars_btn) }, \
+         { "arm_switch", NULL, MAVLINK_TYPE_UINT8_T, 0, 6, offsetof(mavlink_conrig_state_tc_t, arm_switch) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_CONRIG_STATE_TC { \
+    "CONRIG_STATE_TC", \
+    7, \
+    {  { "ignition_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_conrig_state_tc_t, ignition_btn) }, \
+         { "filling_valve_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 1, offsetof(mavlink_conrig_state_tc_t, filling_valve_btn) }, \
+         { "venting_valve_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 2, offsetof(mavlink_conrig_state_tc_t, venting_valve_btn) }, \
+         { "release_pressure_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 3, offsetof(mavlink_conrig_state_tc_t, release_pressure_btn) }, \
+         { "quick_connector_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_conrig_state_tc_t, quick_connector_btn) }, \
+         { "start_tars_btn", NULL, MAVLINK_TYPE_UINT8_T, 0, 5, offsetof(mavlink_conrig_state_tc_t, start_tars_btn) }, \
+         { "arm_switch", NULL, MAVLINK_TYPE_UINT8_T, 0, 6, offsetof(mavlink_conrig_state_tc_t, arm_switch) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a conrig_state_tc 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 ignition_btn  Ignition button pressed
+ * @param filling_valve_btn  Open filling valve pressed
+ * @param venting_valve_btn  Open venting valve pressed
+ * @param release_pressure_btn  Release filling line pressure pressed
+ * @param quick_connector_btn  Detach quick connector pressed
+ * @param start_tars_btn  Startup TARS pressed
+ * @param arm_switch  Arming switch state
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_conrig_state_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t ignition_btn, uint8_t filling_valve_btn, uint8_t venting_valve_btn, uint8_t release_pressure_btn, uint8_t quick_connector_btn, uint8_t start_tars_btn, uint8_t arm_switch)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN];
+    _mav_put_uint8_t(buf, 0, ignition_btn);
+    _mav_put_uint8_t(buf, 1, filling_valve_btn);
+    _mav_put_uint8_t(buf, 2, venting_valve_btn);
+    _mav_put_uint8_t(buf, 3, release_pressure_btn);
+    _mav_put_uint8_t(buf, 4, quick_connector_btn);
+    _mav_put_uint8_t(buf, 5, start_tars_btn);
+    _mav_put_uint8_t(buf, 6, arm_switch);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN);
+#else
+    mavlink_conrig_state_tc_t packet;
+    packet.ignition_btn = ignition_btn;
+    packet.filling_valve_btn = filling_valve_btn;
+    packet.venting_valve_btn = venting_valve_btn;
+    packet.release_pressure_btn = release_pressure_btn;
+    packet.quick_connector_btn = quick_connector_btn;
+    packet.start_tars_btn = start_tars_btn;
+    packet.arm_switch = arm_switch;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CONRIG_STATE_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_CRC);
+}
+
+/**
+ * @brief Pack a conrig_state_tc 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 ignition_btn  Ignition button pressed
+ * @param filling_valve_btn  Open filling valve pressed
+ * @param venting_valve_btn  Open venting valve pressed
+ * @param release_pressure_btn  Release filling line pressure pressed
+ * @param quick_connector_btn  Detach quick connector pressed
+ * @param start_tars_btn  Startup TARS pressed
+ * @param arm_switch  Arming switch state
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_conrig_state_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t ignition_btn,uint8_t filling_valve_btn,uint8_t venting_valve_btn,uint8_t release_pressure_btn,uint8_t quick_connector_btn,uint8_t start_tars_btn,uint8_t arm_switch)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN];
+    _mav_put_uint8_t(buf, 0, ignition_btn);
+    _mav_put_uint8_t(buf, 1, filling_valve_btn);
+    _mav_put_uint8_t(buf, 2, venting_valve_btn);
+    _mav_put_uint8_t(buf, 3, release_pressure_btn);
+    _mav_put_uint8_t(buf, 4, quick_connector_btn);
+    _mav_put_uint8_t(buf, 5, start_tars_btn);
+    _mav_put_uint8_t(buf, 6, arm_switch);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN);
+#else
+    mavlink_conrig_state_tc_t packet;
+    packet.ignition_btn = ignition_btn;
+    packet.filling_valve_btn = filling_valve_btn;
+    packet.venting_valve_btn = venting_valve_btn;
+    packet.release_pressure_btn = release_pressure_btn;
+    packet.quick_connector_btn = quick_connector_btn;
+    packet.start_tars_btn = start_tars_btn;
+    packet.arm_switch = arm_switch;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CONRIG_STATE_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_CRC);
+}
+
+/**
+ * @brief Encode a conrig_state_tc 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 conrig_state_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_conrig_state_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_conrig_state_tc_t* conrig_state_tc)
+{
+    return mavlink_msg_conrig_state_tc_pack(system_id, component_id, msg, conrig_state_tc->ignition_btn, conrig_state_tc->filling_valve_btn, conrig_state_tc->venting_valve_btn, conrig_state_tc->release_pressure_btn, conrig_state_tc->quick_connector_btn, conrig_state_tc->start_tars_btn, conrig_state_tc->arm_switch);
+}
+
+/**
+ * @brief Encode a conrig_state_tc 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 conrig_state_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_conrig_state_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_conrig_state_tc_t* conrig_state_tc)
+{
+    return mavlink_msg_conrig_state_tc_pack_chan(system_id, component_id, chan, msg, conrig_state_tc->ignition_btn, conrig_state_tc->filling_valve_btn, conrig_state_tc->venting_valve_btn, conrig_state_tc->release_pressure_btn, conrig_state_tc->quick_connector_btn, conrig_state_tc->start_tars_btn, conrig_state_tc->arm_switch);
+}
+
+/**
+ * @brief Send a conrig_state_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param ignition_btn  Ignition button pressed
+ * @param filling_valve_btn  Open filling valve pressed
+ * @param venting_valve_btn  Open venting valve pressed
+ * @param release_pressure_btn  Release filling line pressure pressed
+ * @param quick_connector_btn  Detach quick connector pressed
+ * @param start_tars_btn  Startup TARS pressed
+ * @param arm_switch  Arming switch state
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_conrig_state_tc_send(mavlink_channel_t chan, uint8_t ignition_btn, uint8_t filling_valve_btn, uint8_t venting_valve_btn, uint8_t release_pressure_btn, uint8_t quick_connector_btn, uint8_t start_tars_btn, uint8_t arm_switch)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN];
+    _mav_put_uint8_t(buf, 0, ignition_btn);
+    _mav_put_uint8_t(buf, 1, filling_valve_btn);
+    _mav_put_uint8_t(buf, 2, venting_valve_btn);
+    _mav_put_uint8_t(buf, 3, release_pressure_btn);
+    _mav_put_uint8_t(buf, 4, quick_connector_btn);
+    _mav_put_uint8_t(buf, 5, start_tars_btn);
+    _mav_put_uint8_t(buf, 6, arm_switch);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONRIG_STATE_TC, buf, MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_CRC);
+#else
+    mavlink_conrig_state_tc_t packet;
+    packet.ignition_btn = ignition_btn;
+    packet.filling_valve_btn = filling_valve_btn;
+    packet.venting_valve_btn = venting_valve_btn;
+    packet.release_pressure_btn = release_pressure_btn;
+    packet.quick_connector_btn = quick_connector_btn;
+    packet.start_tars_btn = start_tars_btn;
+    packet.arm_switch = arm_switch;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONRIG_STATE_TC, (const char *)&packet, MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a conrig_state_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_conrig_state_tc_send_struct(mavlink_channel_t chan, const mavlink_conrig_state_tc_t* conrig_state_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_conrig_state_tc_send(chan, conrig_state_tc->ignition_btn, conrig_state_tc->filling_valve_btn, conrig_state_tc->venting_valve_btn, conrig_state_tc->release_pressure_btn, conrig_state_tc->quick_connector_btn, conrig_state_tc->start_tars_btn, conrig_state_tc->arm_switch);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONRIG_STATE_TC, (const char *)conrig_state_tc, MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_conrig_state_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t ignition_btn, uint8_t filling_valve_btn, uint8_t venting_valve_btn, uint8_t release_pressure_btn, uint8_t quick_connector_btn, uint8_t start_tars_btn, uint8_t arm_switch)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, ignition_btn);
+    _mav_put_uint8_t(buf, 1, filling_valve_btn);
+    _mav_put_uint8_t(buf, 2, venting_valve_btn);
+    _mav_put_uint8_t(buf, 3, release_pressure_btn);
+    _mav_put_uint8_t(buf, 4, quick_connector_btn);
+    _mav_put_uint8_t(buf, 5, start_tars_btn);
+    _mav_put_uint8_t(buf, 6, arm_switch);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONRIG_STATE_TC, buf, MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_CRC);
+#else
+    mavlink_conrig_state_tc_t *packet = (mavlink_conrig_state_tc_t *)msgbuf;
+    packet->ignition_btn = ignition_btn;
+    packet->filling_valve_btn = filling_valve_btn;
+    packet->venting_valve_btn = venting_valve_btn;
+    packet->release_pressure_btn = release_pressure_btn;
+    packet->quick_connector_btn = quick_connector_btn;
+    packet->start_tars_btn = start_tars_btn;
+    packet->arm_switch = arm_switch;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONRIG_STATE_TC, (const char *)packet, MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN, MAVLINK_MSG_ID_CONRIG_STATE_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE CONRIG_STATE_TC UNPACKING
+
+
+/**
+ * @brief Get field ignition_btn from conrig_state_tc message
+ *
+ * @return  Ignition button pressed
+ */
+static inline uint8_t mavlink_msg_conrig_state_tc_get_ignition_btn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Get field filling_valve_btn from conrig_state_tc message
+ *
+ * @return  Open filling valve pressed
+ */
+static inline uint8_t mavlink_msg_conrig_state_tc_get_filling_valve_btn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  1);
+}
+
+/**
+ * @brief Get field venting_valve_btn from conrig_state_tc message
+ *
+ * @return  Open venting valve pressed
+ */
+static inline uint8_t mavlink_msg_conrig_state_tc_get_venting_valve_btn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  2);
+}
+
+/**
+ * @brief Get field release_pressure_btn from conrig_state_tc message
+ *
+ * @return  Release filling line pressure pressed
+ */
+static inline uint8_t mavlink_msg_conrig_state_tc_get_release_pressure_btn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  3);
+}
+
+/**
+ * @brief Get field quick_connector_btn from conrig_state_tc message
+ *
+ * @return  Detach quick connector pressed
+ */
+static inline uint8_t mavlink_msg_conrig_state_tc_get_quick_connector_btn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  4);
+}
+
+/**
+ * @brief Get field start_tars_btn from conrig_state_tc message
+ *
+ * @return  Startup TARS pressed
+ */
+static inline uint8_t mavlink_msg_conrig_state_tc_get_start_tars_btn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  5);
+}
+
+/**
+ * @brief Get field arm_switch from conrig_state_tc message
+ *
+ * @return  Arming switch state
+ */
+static inline uint8_t mavlink_msg_conrig_state_tc_get_arm_switch(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  6);
+}
+
+/**
+ * @brief Decode a conrig_state_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param conrig_state_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_conrig_state_tc_decode(const mavlink_message_t* msg, mavlink_conrig_state_tc_t* conrig_state_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    conrig_state_tc->ignition_btn = mavlink_msg_conrig_state_tc_get_ignition_btn(msg);
+    conrig_state_tc->filling_valve_btn = mavlink_msg_conrig_state_tc_get_filling_valve_btn(msg);
+    conrig_state_tc->venting_valve_btn = mavlink_msg_conrig_state_tc_get_venting_valve_btn(msg);
+    conrig_state_tc->release_pressure_btn = mavlink_msg_conrig_state_tc_get_release_pressure_btn(msg);
+    conrig_state_tc->quick_connector_btn = mavlink_msg_conrig_state_tc_get_quick_connector_btn(msg);
+    conrig_state_tc->start_tars_btn = mavlink_msg_conrig_state_tc_get_start_tars_btn(msg);
+    conrig_state_tc->arm_switch = mavlink_msg_conrig_state_tc_get_arm_switch(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN? msg->len : MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN;
+        memset(conrig_state_tc, 0, MAVLINK_MSG_ID_CONRIG_STATE_TC_LEN);
+    memcpy(conrig_state_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_current_tm.h b/mavlink_lib/orion/mavlink_msg_current_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..47206857c5d71f9e52ac94532df8bb6660f40792
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_current_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE CURRENT_TM PACKING
+
+#define MAVLINK_MSG_ID_CURRENT_TM 108
+
+
+typedef struct __mavlink_current_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float current; /*< [A] Current*/
+ char sensor_name[20]; /*<  Sensor name*/
+} mavlink_current_tm_t;
+
+#define MAVLINK_MSG_ID_CURRENT_TM_LEN 32
+#define MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN 32
+#define MAVLINK_MSG_ID_108_LEN 32
+#define MAVLINK_MSG_ID_108_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_CURRENT_TM_CRC 212
+#define MAVLINK_MSG_ID_108_CRC 212
+
+#define MAVLINK_MSG_CURRENT_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_CURRENT_TM { \
+    108, \
+    "CURRENT_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_current_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_current_tm_t, sensor_name) }, \
+         { "current", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_current_tm_t, current) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_CURRENT_TM { \
+    "CURRENT_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_current_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_current_tm_t, sensor_name) }, \
+         { "current", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_current_tm_t, current) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a current_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param current [A] Current
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_current_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, float current)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CURRENT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, current);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CURRENT_TM_LEN);
+#else
+    mavlink_current_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.current = current;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CURRENT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CURRENT_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN, MAVLINK_MSG_ID_CURRENT_TM_LEN, MAVLINK_MSG_ID_CURRENT_TM_CRC);
+}
+
+/**
+ * @brief Pack a current_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param current [A] Current
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_current_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,float current)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CURRENT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, current);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CURRENT_TM_LEN);
+#else
+    mavlink_current_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.current = current;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CURRENT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CURRENT_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN, MAVLINK_MSG_ID_CURRENT_TM_LEN, MAVLINK_MSG_ID_CURRENT_TM_CRC);
+}
+
+/**
+ * @brief Encode a current_tm 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 current_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_current_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_current_tm_t* current_tm)
+{
+    return mavlink_msg_current_tm_pack(system_id, component_id, msg, current_tm->timestamp, current_tm->sensor_name, current_tm->current);
+}
+
+/**
+ * @brief Encode a current_tm 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 current_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_current_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_current_tm_t* current_tm)
+{
+    return mavlink_msg_current_tm_pack_chan(system_id, component_id, chan, msg, current_tm->timestamp, current_tm->sensor_name, current_tm->current);
+}
+
+/**
+ * @brief Send a current_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param current [A] Current
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_current_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, float current)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CURRENT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, current);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CURRENT_TM, buf, MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN, MAVLINK_MSG_ID_CURRENT_TM_LEN, MAVLINK_MSG_ID_CURRENT_TM_CRC);
+#else
+    mavlink_current_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.current = current;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CURRENT_TM, (const char *)&packet, MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN, MAVLINK_MSG_ID_CURRENT_TM_LEN, MAVLINK_MSG_ID_CURRENT_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a current_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_current_tm_send_struct(mavlink_channel_t chan, const mavlink_current_tm_t* current_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_current_tm_send(chan, current_tm->timestamp, current_tm->sensor_name, current_tm->current);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CURRENT_TM, (const char *)current_tm, MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN, MAVLINK_MSG_ID_CURRENT_TM_LEN, MAVLINK_MSG_ID_CURRENT_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_CURRENT_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_current_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, float current)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, current);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CURRENT_TM, buf, MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN, MAVLINK_MSG_ID_CURRENT_TM_LEN, MAVLINK_MSG_ID_CURRENT_TM_CRC);
+#else
+    mavlink_current_tm_t *packet = (mavlink_current_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->current = current;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CURRENT_TM, (const char *)packet, MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN, MAVLINK_MSG_ID_CURRENT_TM_LEN, MAVLINK_MSG_ID_CURRENT_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE CURRENT_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from current_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_current_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from current_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_current_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  12);
+}
+
+/**
+ * @brief Get field current from current_tm message
+ *
+ * @return [A] Current
+ */
+static inline float mavlink_msg_current_tm_get_current(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Decode a current_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param current_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_current_tm_decode(const mavlink_message_t* msg, mavlink_current_tm_t* current_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    current_tm->timestamp = mavlink_msg_current_tm_get_timestamp(msg);
+    current_tm->current = mavlink_msg_current_tm_get_current(msg);
+    mavlink_msg_current_tm_get_sensor_name(msg, current_tm->sensor_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_CURRENT_TM_LEN? msg->len : MAVLINK_MSG_ID_CURRENT_TM_LEN;
+        memset(current_tm, 0, MAVLINK_MSG_ID_CURRENT_TM_LEN);
+    memcpy(current_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_gps_tm.h b/mavlink_lib/orion/mavlink_msg_gps_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..d2fd3a488c044808074b29d10d0fb95f0fc92118
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_gps_tm.h
@@ -0,0 +1,480 @@
+#pragma once
+// MESSAGE GPS_TM PACKING
+
+#define MAVLINK_MSG_ID_GPS_TM 103
+
+
+typedef struct __mavlink_gps_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ double latitude; /*< [deg] Latitude*/
+ double longitude; /*< [deg] Longitude*/
+ double height; /*< [m] Altitude*/
+ float vel_north; /*< [m/s] Velocity in NED frame (north)*/
+ float vel_east; /*< [m/s] Velocity in NED frame (east)*/
+ float vel_down; /*< [m/s] Velocity in NED frame (down)*/
+ float speed; /*< [m/s] Speed*/
+ float track; /*< [deg] Track*/
+ char sensor_name[20]; /*<  Sensor name*/
+ uint8_t fix; /*<  Wether the GPS has a FIX*/
+ uint8_t n_satellites; /*<  Number of connected satellites*/
+} mavlink_gps_tm_t;
+
+#define MAVLINK_MSG_ID_GPS_TM_LEN 74
+#define MAVLINK_MSG_ID_GPS_TM_MIN_LEN 74
+#define MAVLINK_MSG_ID_103_LEN 74
+#define MAVLINK_MSG_ID_103_MIN_LEN 74
+
+#define MAVLINK_MSG_ID_GPS_TM_CRC 57
+#define MAVLINK_MSG_ID_103_CRC 57
+
+#define MAVLINK_MSG_GPS_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_GPS_TM { \
+    103, \
+    "GPS_TM", \
+    12, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_gps_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 52, offsetof(mavlink_gps_tm_t, sensor_name) }, \
+         { "fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 72, offsetof(mavlink_gps_tm_t, fix) }, \
+         { "latitude", NULL, MAVLINK_TYPE_DOUBLE, 0, 8, offsetof(mavlink_gps_tm_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_DOUBLE, 0, 16, offsetof(mavlink_gps_tm_t, longitude) }, \
+         { "height", NULL, MAVLINK_TYPE_DOUBLE, 0, 24, offsetof(mavlink_gps_tm_t, height) }, \
+         { "vel_north", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_gps_tm_t, vel_north) }, \
+         { "vel_east", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_gps_tm_t, vel_east) }, \
+         { "vel_down", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_gps_tm_t, vel_down) }, \
+         { "speed", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_gps_tm_t, speed) }, \
+         { "track", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_gps_tm_t, track) }, \
+         { "n_satellites", NULL, MAVLINK_TYPE_UINT8_T, 0, 73, offsetof(mavlink_gps_tm_t, n_satellites) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_GPS_TM { \
+    "GPS_TM", \
+    12, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_gps_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 52, offsetof(mavlink_gps_tm_t, sensor_name) }, \
+         { "fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 72, offsetof(mavlink_gps_tm_t, fix) }, \
+         { "latitude", NULL, MAVLINK_TYPE_DOUBLE, 0, 8, offsetof(mavlink_gps_tm_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_DOUBLE, 0, 16, offsetof(mavlink_gps_tm_t, longitude) }, \
+         { "height", NULL, MAVLINK_TYPE_DOUBLE, 0, 24, offsetof(mavlink_gps_tm_t, height) }, \
+         { "vel_north", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_gps_tm_t, vel_north) }, \
+         { "vel_east", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_gps_tm_t, vel_east) }, \
+         { "vel_down", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_gps_tm_t, vel_down) }, \
+         { "speed", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_gps_tm_t, speed) }, \
+         { "track", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_gps_tm_t, track) }, \
+         { "n_satellites", NULL, MAVLINK_TYPE_UINT8_T, 0, 73, offsetof(mavlink_gps_tm_t, n_satellites) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a gps_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param fix  Wether the GPS has a FIX
+ * @param latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Altitude
+ * @param vel_north [m/s] Velocity in NED frame (north)
+ * @param vel_east [m/s] Velocity in NED frame (east)
+ * @param vel_down [m/s] Velocity in NED frame (down)
+ * @param speed [m/s] Speed
+ * @param track [deg] Track
+ * @param n_satellites  Number of connected satellites
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_gps_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, uint8_t fix, double latitude, double longitude, double height, float vel_north, float vel_east, float vel_down, float speed, float track, uint8_t n_satellites)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_GPS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_double(buf, 8, latitude);
+    _mav_put_double(buf, 16, longitude);
+    _mav_put_double(buf, 24, height);
+    _mav_put_float(buf, 32, vel_north);
+    _mav_put_float(buf, 36, vel_east);
+    _mav_put_float(buf, 40, vel_down);
+    _mav_put_float(buf, 44, speed);
+    _mav_put_float(buf, 48, track);
+    _mav_put_uint8_t(buf, 72, fix);
+    _mav_put_uint8_t(buf, 73, n_satellites);
+    _mav_put_char_array(buf, 52, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_GPS_TM_LEN);
+#else
+    mavlink_gps_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+    packet.vel_north = vel_north;
+    packet.vel_east = vel_east;
+    packet.vel_down = vel_down;
+    packet.speed = speed;
+    packet.track = track;
+    packet.fix = fix;
+    packet.n_satellites = n_satellites;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_GPS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_GPS_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_GPS_TM_MIN_LEN, MAVLINK_MSG_ID_GPS_TM_LEN, MAVLINK_MSG_ID_GPS_TM_CRC);
+}
+
+/**
+ * @brief Pack a gps_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param fix  Wether the GPS has a FIX
+ * @param latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Altitude
+ * @param vel_north [m/s] Velocity in NED frame (north)
+ * @param vel_east [m/s] Velocity in NED frame (east)
+ * @param vel_down [m/s] Velocity in NED frame (down)
+ * @param speed [m/s] Speed
+ * @param track [deg] Track
+ * @param n_satellites  Number of connected satellites
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_gps_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,uint8_t fix,double latitude,double longitude,double height,float vel_north,float vel_east,float vel_down,float speed,float track,uint8_t n_satellites)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_GPS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_double(buf, 8, latitude);
+    _mav_put_double(buf, 16, longitude);
+    _mav_put_double(buf, 24, height);
+    _mav_put_float(buf, 32, vel_north);
+    _mav_put_float(buf, 36, vel_east);
+    _mav_put_float(buf, 40, vel_down);
+    _mav_put_float(buf, 44, speed);
+    _mav_put_float(buf, 48, track);
+    _mav_put_uint8_t(buf, 72, fix);
+    _mav_put_uint8_t(buf, 73, n_satellites);
+    _mav_put_char_array(buf, 52, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_GPS_TM_LEN);
+#else
+    mavlink_gps_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+    packet.vel_north = vel_north;
+    packet.vel_east = vel_east;
+    packet.vel_down = vel_down;
+    packet.speed = speed;
+    packet.track = track;
+    packet.fix = fix;
+    packet.n_satellites = n_satellites;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_GPS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_GPS_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_GPS_TM_MIN_LEN, MAVLINK_MSG_ID_GPS_TM_LEN, MAVLINK_MSG_ID_GPS_TM_CRC);
+}
+
+/**
+ * @brief Encode a gps_tm 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_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_gps_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_gps_tm_t* gps_tm)
+{
+    return mavlink_msg_gps_tm_pack(system_id, component_id, msg, gps_tm->timestamp, gps_tm->sensor_name, gps_tm->fix, gps_tm->latitude, gps_tm->longitude, gps_tm->height, gps_tm->vel_north, gps_tm->vel_east, gps_tm->vel_down, gps_tm->speed, gps_tm->track, gps_tm->n_satellites);
+}
+
+/**
+ * @brief Encode a gps_tm 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_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_gps_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_gps_tm_t* gps_tm)
+{
+    return mavlink_msg_gps_tm_pack_chan(system_id, component_id, chan, msg, gps_tm->timestamp, gps_tm->sensor_name, gps_tm->fix, gps_tm->latitude, gps_tm->longitude, gps_tm->height, gps_tm->vel_north, gps_tm->vel_east, gps_tm->vel_down, gps_tm->speed, gps_tm->track, gps_tm->n_satellites);
+}
+
+/**
+ * @brief Send a gps_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param fix  Wether the GPS has a FIX
+ * @param latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Altitude
+ * @param vel_north [m/s] Velocity in NED frame (north)
+ * @param vel_east [m/s] Velocity in NED frame (east)
+ * @param vel_down [m/s] Velocity in NED frame (down)
+ * @param speed [m/s] Speed
+ * @param track [deg] Track
+ * @param n_satellites  Number of connected satellites
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_gps_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, uint8_t fix, double latitude, double longitude, double height, float vel_north, float vel_east, float vel_down, float speed, float track, uint8_t n_satellites)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_GPS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_double(buf, 8, latitude);
+    _mav_put_double(buf, 16, longitude);
+    _mav_put_double(buf, 24, height);
+    _mav_put_float(buf, 32, vel_north);
+    _mav_put_float(buf, 36, vel_east);
+    _mav_put_float(buf, 40, vel_down);
+    _mav_put_float(buf, 44, speed);
+    _mav_put_float(buf, 48, track);
+    _mav_put_uint8_t(buf, 72, fix);
+    _mav_put_uint8_t(buf, 73, n_satellites);
+    _mav_put_char_array(buf, 52, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_TM, buf, MAVLINK_MSG_ID_GPS_TM_MIN_LEN, MAVLINK_MSG_ID_GPS_TM_LEN, MAVLINK_MSG_ID_GPS_TM_CRC);
+#else
+    mavlink_gps_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+    packet.vel_north = vel_north;
+    packet.vel_east = vel_east;
+    packet.vel_down = vel_down;
+    packet.speed = speed;
+    packet.track = track;
+    packet.fix = fix;
+    packet.n_satellites = n_satellites;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_TM, (const char *)&packet, MAVLINK_MSG_ID_GPS_TM_MIN_LEN, MAVLINK_MSG_ID_GPS_TM_LEN, MAVLINK_MSG_ID_GPS_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a gps_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_gps_tm_send_struct(mavlink_channel_t chan, const mavlink_gps_tm_t* gps_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_gps_tm_send(chan, gps_tm->timestamp, gps_tm->sensor_name, gps_tm->fix, gps_tm->latitude, gps_tm->longitude, gps_tm->height, gps_tm->vel_north, gps_tm->vel_east, gps_tm->vel_down, gps_tm->speed, gps_tm->track, gps_tm->n_satellites);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_TM, (const char *)gps_tm, MAVLINK_MSG_ID_GPS_TM_MIN_LEN, MAVLINK_MSG_ID_GPS_TM_LEN, MAVLINK_MSG_ID_GPS_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_GPS_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, uint8_t fix, double latitude, double longitude, double height, float vel_north, float vel_east, float vel_down, float speed, float track, uint8_t n_satellites)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_double(buf, 8, latitude);
+    _mav_put_double(buf, 16, longitude);
+    _mav_put_double(buf, 24, height);
+    _mav_put_float(buf, 32, vel_north);
+    _mav_put_float(buf, 36, vel_east);
+    _mav_put_float(buf, 40, vel_down);
+    _mav_put_float(buf, 44, speed);
+    _mav_put_float(buf, 48, track);
+    _mav_put_uint8_t(buf, 72, fix);
+    _mav_put_uint8_t(buf, 73, n_satellites);
+    _mav_put_char_array(buf, 52, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_TM, buf, MAVLINK_MSG_ID_GPS_TM_MIN_LEN, MAVLINK_MSG_ID_GPS_TM_LEN, MAVLINK_MSG_ID_GPS_TM_CRC);
+#else
+    mavlink_gps_tm_t *packet = (mavlink_gps_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->latitude = latitude;
+    packet->longitude = longitude;
+    packet->height = height;
+    packet->vel_north = vel_north;
+    packet->vel_east = vel_east;
+    packet->vel_down = vel_down;
+    packet->speed = speed;
+    packet->track = track;
+    packet->fix = fix;
+    packet->n_satellites = n_satellites;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_TM, (const char *)packet, MAVLINK_MSG_ID_GPS_TM_MIN_LEN, MAVLINK_MSG_ID_GPS_TM_LEN, MAVLINK_MSG_ID_GPS_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE GPS_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from gps_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_gps_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from gps_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_gps_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  52);
+}
+
+/**
+ * @brief Get field fix from gps_tm message
+ *
+ * @return  Wether the GPS has a FIX
+ */
+static inline uint8_t mavlink_msg_gps_tm_get_fix(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  72);
+}
+
+/**
+ * @brief Get field latitude from gps_tm message
+ *
+ * @return [deg] Latitude
+ */
+static inline double mavlink_msg_gps_tm_get_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_double(msg,  8);
+}
+
+/**
+ * @brief Get field longitude from gps_tm message
+ *
+ * @return [deg] Longitude
+ */
+static inline double mavlink_msg_gps_tm_get_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_double(msg,  16);
+}
+
+/**
+ * @brief Get field height from gps_tm message
+ *
+ * @return [m] Altitude
+ */
+static inline double mavlink_msg_gps_tm_get_height(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_double(msg,  24);
+}
+
+/**
+ * @brief Get field vel_north from gps_tm message
+ *
+ * @return [m/s] Velocity in NED frame (north)
+ */
+static inline float mavlink_msg_gps_tm_get_vel_north(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field vel_east from gps_tm message
+ *
+ * @return [m/s] Velocity in NED frame (east)
+ */
+static inline float mavlink_msg_gps_tm_get_vel_east(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field vel_down from gps_tm message
+ *
+ * @return [m/s] Velocity in NED frame (down)
+ */
+static inline float mavlink_msg_gps_tm_get_vel_down(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Get field speed from gps_tm message
+ *
+ * @return [m/s] Speed
+ */
+static inline float mavlink_msg_gps_tm_get_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  44);
+}
+
+/**
+ * @brief Get field track from gps_tm message
+ *
+ * @return [deg] Track
+ */
+static inline float mavlink_msg_gps_tm_get_track(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  48);
+}
+
+/**
+ * @brief Get field n_satellites from gps_tm message
+ *
+ * @return  Number of connected satellites
+ */
+static inline uint8_t mavlink_msg_gps_tm_get_n_satellites(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  73);
+}
+
+/**
+ * @brief Decode a gps_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param gps_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_gps_tm_decode(const mavlink_message_t* msg, mavlink_gps_tm_t* gps_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    gps_tm->timestamp = mavlink_msg_gps_tm_get_timestamp(msg);
+    gps_tm->latitude = mavlink_msg_gps_tm_get_latitude(msg);
+    gps_tm->longitude = mavlink_msg_gps_tm_get_longitude(msg);
+    gps_tm->height = mavlink_msg_gps_tm_get_height(msg);
+    gps_tm->vel_north = mavlink_msg_gps_tm_get_vel_north(msg);
+    gps_tm->vel_east = mavlink_msg_gps_tm_get_vel_east(msg);
+    gps_tm->vel_down = mavlink_msg_gps_tm_get_vel_down(msg);
+    gps_tm->speed = mavlink_msg_gps_tm_get_speed(msg);
+    gps_tm->track = mavlink_msg_gps_tm_get_track(msg);
+    mavlink_msg_gps_tm_get_sensor_name(msg, gps_tm->sensor_name);
+    gps_tm->fix = mavlink_msg_gps_tm_get_fix(msg);
+    gps_tm->n_satellites = mavlink_msg_gps_tm_get_n_satellites(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_GPS_TM_LEN? msg->len : MAVLINK_MSG_ID_GPS_TM_LEN;
+        memset(gps_tm, 0, MAVLINK_MSG_ID_GPS_TM_LEN);
+    memcpy(gps_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_gse_tm.h b/mavlink_lib/orion/mavlink_msg_gse_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..01381833f25aee999c037ed570927498b8fddbda
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_gse_tm.h
@@ -0,0 +1,838 @@
+#pragma once
+// MESSAGE GSE_TM PACKING
+
+#define MAVLINK_MSG_ID_GSE_TM 212
+
+
+typedef struct __mavlink_gse_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp in microseconds*/
+ float loadcell_rocket; /*< [kg] Rocket weight*/
+ float loadcell_vessel; /*< [kg] External tank weight*/
+ float filling_pressure; /*< [Bar] Refueling line pressure*/
+ float vessel_pressure; /*< [Bar] Vessel tank pressure*/
+ float cpu_load; /*<  CPU load in percentage*/
+ uint32_t free_heap; /*<  Amount of available heap in memory*/
+ float battery_voltage; /*<  Battery voltage*/
+ float current_consumption; /*< [A] RIG current*/
+ float umbilical_current_consumption; /*< [A] Umbilical current*/
+ int32_t log_good; /*<  0 if log failed, 1 otherwise*/
+ int16_t log_number; /*<  Currently active log file, -1 if the logger is inactive*/
+ uint8_t filling_valve_state; /*<  1 If the filling valve is open*/
+ uint8_t venting_valve_state; /*<  1 If the venting valve is open*/
+ uint8_t release_valve_state; /*<  1 If the release valve is open*/
+ uint8_t main_valve_state; /*<  1 If the main valve is open*/
+ uint8_t nitrogen_valve_state; /*<   1 If the nitrogen valve is open*/
+ uint8_t gmm_state; /*<  State of the GroundModeManager*/
+ uint8_t tars_state; /*<  State of Tars*/
+ uint8_t arming_state; /*<  Arming state (1 if armed, 0 otherwise)*/
+ uint8_t main_board_state; /*<  Main board fmm state*/
+ uint8_t payload_board_state; /*<  Payload board fmm state*/
+ uint8_t motor_board_state; /*<  Motor board fmm state*/
+ uint8_t main_can_status; /*<  Main CAN status*/
+ uint8_t payload_can_status; /*<  Payload CAN status*/
+ uint8_t motor_can_status; /*<  Motor CAN status*/
+} mavlink_gse_tm_t;
+
+#define MAVLINK_MSG_ID_GSE_TM_LEN 64
+#define MAVLINK_MSG_ID_GSE_TM_MIN_LEN 64
+#define MAVLINK_MSG_ID_212_LEN 64
+#define MAVLINK_MSG_ID_212_MIN_LEN 64
+
+#define MAVLINK_MSG_ID_GSE_TM_CRC 87
+#define MAVLINK_MSG_ID_212_CRC 87
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_GSE_TM { \
+    212, \
+    "GSE_TM", \
+    26, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_gse_tm_t, timestamp) }, \
+         { "loadcell_rocket", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_gse_tm_t, loadcell_rocket) }, \
+         { "loadcell_vessel", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_gse_tm_t, loadcell_vessel) }, \
+         { "filling_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_gse_tm_t, filling_pressure) }, \
+         { "vessel_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_gse_tm_t, vessel_pressure) }, \
+         { "filling_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 50, offsetof(mavlink_gse_tm_t, filling_valve_state) }, \
+         { "venting_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 51, offsetof(mavlink_gse_tm_t, venting_valve_state) }, \
+         { "release_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 52, offsetof(mavlink_gse_tm_t, release_valve_state) }, \
+         { "main_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 53, offsetof(mavlink_gse_tm_t, main_valve_state) }, \
+         { "nitrogen_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 54, offsetof(mavlink_gse_tm_t, nitrogen_valve_state) }, \
+         { "gmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 55, offsetof(mavlink_gse_tm_t, gmm_state) }, \
+         { "tars_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 56, offsetof(mavlink_gse_tm_t, tars_state) }, \
+         { "arming_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 57, offsetof(mavlink_gse_tm_t, arming_state) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_gse_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 28, offsetof(mavlink_gse_tm_t, free_heap) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_gse_tm_t, battery_voltage) }, \
+         { "current_consumption", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_gse_tm_t, current_consumption) }, \
+         { "umbilical_current_consumption", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_gse_tm_t, umbilical_current_consumption) }, \
+         { "main_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 58, offsetof(mavlink_gse_tm_t, main_board_state) }, \
+         { "payload_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 59, offsetof(mavlink_gse_tm_t, payload_board_state) }, \
+         { "motor_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 60, offsetof(mavlink_gse_tm_t, motor_board_state) }, \
+         { "main_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 61, offsetof(mavlink_gse_tm_t, main_can_status) }, \
+         { "payload_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 62, offsetof(mavlink_gse_tm_t, payload_can_status) }, \
+         { "motor_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 63, offsetof(mavlink_gse_tm_t, motor_can_status) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 48, offsetof(mavlink_gse_tm_t, log_number) }, \
+         { "log_good", NULL, MAVLINK_TYPE_INT32_T, 0, 44, offsetof(mavlink_gse_tm_t, log_good) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_GSE_TM { \
+    "GSE_TM", \
+    26, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_gse_tm_t, timestamp) }, \
+         { "loadcell_rocket", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_gse_tm_t, loadcell_rocket) }, \
+         { "loadcell_vessel", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_gse_tm_t, loadcell_vessel) }, \
+         { "filling_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_gse_tm_t, filling_pressure) }, \
+         { "vessel_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_gse_tm_t, vessel_pressure) }, \
+         { "filling_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 50, offsetof(mavlink_gse_tm_t, filling_valve_state) }, \
+         { "venting_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 51, offsetof(mavlink_gse_tm_t, venting_valve_state) }, \
+         { "release_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 52, offsetof(mavlink_gse_tm_t, release_valve_state) }, \
+         { "main_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 53, offsetof(mavlink_gse_tm_t, main_valve_state) }, \
+         { "nitrogen_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 54, offsetof(mavlink_gse_tm_t, nitrogen_valve_state) }, \
+         { "gmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 55, offsetof(mavlink_gse_tm_t, gmm_state) }, \
+         { "tars_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 56, offsetof(mavlink_gse_tm_t, tars_state) }, \
+         { "arming_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 57, offsetof(mavlink_gse_tm_t, arming_state) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_gse_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 28, offsetof(mavlink_gse_tm_t, free_heap) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_gse_tm_t, battery_voltage) }, \
+         { "current_consumption", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_gse_tm_t, current_consumption) }, \
+         { "umbilical_current_consumption", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_gse_tm_t, umbilical_current_consumption) }, \
+         { "main_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 58, offsetof(mavlink_gse_tm_t, main_board_state) }, \
+         { "payload_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 59, offsetof(mavlink_gse_tm_t, payload_board_state) }, \
+         { "motor_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 60, offsetof(mavlink_gse_tm_t, motor_board_state) }, \
+         { "main_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 61, offsetof(mavlink_gse_tm_t, main_can_status) }, \
+         { "payload_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 62, offsetof(mavlink_gse_tm_t, payload_can_status) }, \
+         { "motor_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 63, offsetof(mavlink_gse_tm_t, motor_can_status) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 48, offsetof(mavlink_gse_tm_t, log_number) }, \
+         { "log_good", NULL, MAVLINK_TYPE_INT32_T, 0, 44, offsetof(mavlink_gse_tm_t, log_good) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a gse_tm 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 timestamp [us] Timestamp in microseconds
+ * @param loadcell_rocket [kg] Rocket weight
+ * @param loadcell_vessel [kg] External tank weight
+ * @param filling_pressure [Bar] Refueling line pressure
+ * @param vessel_pressure [Bar] Vessel tank pressure
+ * @param filling_valve_state  1 If the filling valve is open
+ * @param venting_valve_state  1 If the venting valve is open
+ * @param release_valve_state  1 If the release valve is open
+ * @param main_valve_state  1 If the main valve is open
+ * @param nitrogen_valve_state   1 If the nitrogen valve is open
+ * @param gmm_state  State of the GroundModeManager
+ * @param tars_state  State of Tars
+ * @param arming_state  Arming state (1 if armed, 0 otherwise)
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param battery_voltage  Battery voltage
+ * @param current_consumption [A] RIG current
+ * @param umbilical_current_consumption [A] Umbilical current
+ * @param main_board_state  Main board fmm state
+ * @param payload_board_state  Payload board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param main_can_status  Main CAN status
+ * @param payload_can_status  Payload CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_gse_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, float loadcell_rocket, float loadcell_vessel, float filling_pressure, float vessel_pressure, uint8_t filling_valve_state, uint8_t venting_valve_state, uint8_t release_valve_state, uint8_t main_valve_state, uint8_t nitrogen_valve_state, uint8_t gmm_state, uint8_t tars_state, uint8_t arming_state, float cpu_load, uint32_t free_heap, float battery_voltage, float current_consumption, float umbilical_current_consumption, uint8_t main_board_state, uint8_t payload_board_state, uint8_t motor_board_state, uint8_t main_can_status, uint8_t payload_can_status, uint8_t motor_can_status, int16_t log_number, int32_t log_good)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_GSE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, loadcell_rocket);
+    _mav_put_float(buf, 12, loadcell_vessel);
+    _mav_put_float(buf, 16, filling_pressure);
+    _mav_put_float(buf, 20, vessel_pressure);
+    _mav_put_float(buf, 24, cpu_load);
+    _mav_put_uint32_t(buf, 28, free_heap);
+    _mav_put_float(buf, 32, battery_voltage);
+    _mav_put_float(buf, 36, current_consumption);
+    _mav_put_float(buf, 40, umbilical_current_consumption);
+    _mav_put_int32_t(buf, 44, log_good);
+    _mav_put_int16_t(buf, 48, log_number);
+    _mav_put_uint8_t(buf, 50, filling_valve_state);
+    _mav_put_uint8_t(buf, 51, venting_valve_state);
+    _mav_put_uint8_t(buf, 52, release_valve_state);
+    _mav_put_uint8_t(buf, 53, main_valve_state);
+    _mav_put_uint8_t(buf, 54, nitrogen_valve_state);
+    _mav_put_uint8_t(buf, 55, gmm_state);
+    _mav_put_uint8_t(buf, 56, tars_state);
+    _mav_put_uint8_t(buf, 57, arming_state);
+    _mav_put_uint8_t(buf, 58, main_board_state);
+    _mav_put_uint8_t(buf, 59, payload_board_state);
+    _mav_put_uint8_t(buf, 60, motor_board_state);
+    _mav_put_uint8_t(buf, 61, main_can_status);
+    _mav_put_uint8_t(buf, 62, payload_can_status);
+    _mav_put_uint8_t(buf, 63, motor_can_status);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_GSE_TM_LEN);
+#else
+    mavlink_gse_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.loadcell_rocket = loadcell_rocket;
+    packet.loadcell_vessel = loadcell_vessel;
+    packet.filling_pressure = filling_pressure;
+    packet.vessel_pressure = vessel_pressure;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.battery_voltage = battery_voltage;
+    packet.current_consumption = current_consumption;
+    packet.umbilical_current_consumption = umbilical_current_consumption;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.filling_valve_state = filling_valve_state;
+    packet.venting_valve_state = venting_valve_state;
+    packet.release_valve_state = release_valve_state;
+    packet.main_valve_state = main_valve_state;
+    packet.nitrogen_valve_state = nitrogen_valve_state;
+    packet.gmm_state = gmm_state;
+    packet.tars_state = tars_state;
+    packet.arming_state = arming_state;
+    packet.main_board_state = main_board_state;
+    packet.payload_board_state = payload_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.main_can_status = main_can_status;
+    packet.payload_can_status = payload_can_status;
+    packet.motor_can_status = motor_can_status;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_GSE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_GSE_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_GSE_TM_MIN_LEN, MAVLINK_MSG_ID_GSE_TM_LEN, MAVLINK_MSG_ID_GSE_TM_CRC);
+}
+
+/**
+ * @brief Pack a gse_tm 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 timestamp [us] Timestamp in microseconds
+ * @param loadcell_rocket [kg] Rocket weight
+ * @param loadcell_vessel [kg] External tank weight
+ * @param filling_pressure [Bar] Refueling line pressure
+ * @param vessel_pressure [Bar] Vessel tank pressure
+ * @param filling_valve_state  1 If the filling valve is open
+ * @param venting_valve_state  1 If the venting valve is open
+ * @param release_valve_state  1 If the release valve is open
+ * @param main_valve_state  1 If the main valve is open
+ * @param nitrogen_valve_state   1 If the nitrogen valve is open
+ * @param gmm_state  State of the GroundModeManager
+ * @param tars_state  State of Tars
+ * @param arming_state  Arming state (1 if armed, 0 otherwise)
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param battery_voltage  Battery voltage
+ * @param current_consumption [A] RIG current
+ * @param umbilical_current_consumption [A] Umbilical current
+ * @param main_board_state  Main board fmm state
+ * @param payload_board_state  Payload board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param main_can_status  Main CAN status
+ * @param payload_can_status  Payload CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_gse_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,float loadcell_rocket,float loadcell_vessel,float filling_pressure,float vessel_pressure,uint8_t filling_valve_state,uint8_t venting_valve_state,uint8_t release_valve_state,uint8_t main_valve_state,uint8_t nitrogen_valve_state,uint8_t gmm_state,uint8_t tars_state,uint8_t arming_state,float cpu_load,uint32_t free_heap,float battery_voltage,float current_consumption,float umbilical_current_consumption,uint8_t main_board_state,uint8_t payload_board_state,uint8_t motor_board_state,uint8_t main_can_status,uint8_t payload_can_status,uint8_t motor_can_status,int16_t log_number,int32_t log_good)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_GSE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, loadcell_rocket);
+    _mav_put_float(buf, 12, loadcell_vessel);
+    _mav_put_float(buf, 16, filling_pressure);
+    _mav_put_float(buf, 20, vessel_pressure);
+    _mav_put_float(buf, 24, cpu_load);
+    _mav_put_uint32_t(buf, 28, free_heap);
+    _mav_put_float(buf, 32, battery_voltage);
+    _mav_put_float(buf, 36, current_consumption);
+    _mav_put_float(buf, 40, umbilical_current_consumption);
+    _mav_put_int32_t(buf, 44, log_good);
+    _mav_put_int16_t(buf, 48, log_number);
+    _mav_put_uint8_t(buf, 50, filling_valve_state);
+    _mav_put_uint8_t(buf, 51, venting_valve_state);
+    _mav_put_uint8_t(buf, 52, release_valve_state);
+    _mav_put_uint8_t(buf, 53, main_valve_state);
+    _mav_put_uint8_t(buf, 54, nitrogen_valve_state);
+    _mav_put_uint8_t(buf, 55, gmm_state);
+    _mav_put_uint8_t(buf, 56, tars_state);
+    _mav_put_uint8_t(buf, 57, arming_state);
+    _mav_put_uint8_t(buf, 58, main_board_state);
+    _mav_put_uint8_t(buf, 59, payload_board_state);
+    _mav_put_uint8_t(buf, 60, motor_board_state);
+    _mav_put_uint8_t(buf, 61, main_can_status);
+    _mav_put_uint8_t(buf, 62, payload_can_status);
+    _mav_put_uint8_t(buf, 63, motor_can_status);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_GSE_TM_LEN);
+#else
+    mavlink_gse_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.loadcell_rocket = loadcell_rocket;
+    packet.loadcell_vessel = loadcell_vessel;
+    packet.filling_pressure = filling_pressure;
+    packet.vessel_pressure = vessel_pressure;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.battery_voltage = battery_voltage;
+    packet.current_consumption = current_consumption;
+    packet.umbilical_current_consumption = umbilical_current_consumption;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.filling_valve_state = filling_valve_state;
+    packet.venting_valve_state = venting_valve_state;
+    packet.release_valve_state = release_valve_state;
+    packet.main_valve_state = main_valve_state;
+    packet.nitrogen_valve_state = nitrogen_valve_state;
+    packet.gmm_state = gmm_state;
+    packet.tars_state = tars_state;
+    packet.arming_state = arming_state;
+    packet.main_board_state = main_board_state;
+    packet.payload_board_state = payload_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.main_can_status = main_can_status;
+    packet.payload_can_status = payload_can_status;
+    packet.motor_can_status = motor_can_status;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_GSE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_GSE_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_GSE_TM_MIN_LEN, MAVLINK_MSG_ID_GSE_TM_LEN, MAVLINK_MSG_ID_GSE_TM_CRC);
+}
+
+/**
+ * @brief Encode a gse_tm 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 gse_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_gse_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_gse_tm_t* gse_tm)
+{
+    return mavlink_msg_gse_tm_pack(system_id, component_id, msg, gse_tm->timestamp, gse_tm->loadcell_rocket, gse_tm->loadcell_vessel, gse_tm->filling_pressure, gse_tm->vessel_pressure, gse_tm->filling_valve_state, gse_tm->venting_valve_state, gse_tm->release_valve_state, gse_tm->main_valve_state, gse_tm->nitrogen_valve_state, gse_tm->gmm_state, gse_tm->tars_state, gse_tm->arming_state, gse_tm->cpu_load, gse_tm->free_heap, gse_tm->battery_voltage, gse_tm->current_consumption, gse_tm->umbilical_current_consumption, gse_tm->main_board_state, gse_tm->payload_board_state, gse_tm->motor_board_state, gse_tm->main_can_status, gse_tm->payload_can_status, gse_tm->motor_can_status, gse_tm->log_number, gse_tm->log_good);
+}
+
+/**
+ * @brief Encode a gse_tm 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 gse_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_gse_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_gse_tm_t* gse_tm)
+{
+    return mavlink_msg_gse_tm_pack_chan(system_id, component_id, chan, msg, gse_tm->timestamp, gse_tm->loadcell_rocket, gse_tm->loadcell_vessel, gse_tm->filling_pressure, gse_tm->vessel_pressure, gse_tm->filling_valve_state, gse_tm->venting_valve_state, gse_tm->release_valve_state, gse_tm->main_valve_state, gse_tm->nitrogen_valve_state, gse_tm->gmm_state, gse_tm->tars_state, gse_tm->arming_state, gse_tm->cpu_load, gse_tm->free_heap, gse_tm->battery_voltage, gse_tm->current_consumption, gse_tm->umbilical_current_consumption, gse_tm->main_board_state, gse_tm->payload_board_state, gse_tm->motor_board_state, gse_tm->main_can_status, gse_tm->payload_can_status, gse_tm->motor_can_status, gse_tm->log_number, gse_tm->log_good);
+}
+
+/**
+ * @brief Send a gse_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp in microseconds
+ * @param loadcell_rocket [kg] Rocket weight
+ * @param loadcell_vessel [kg] External tank weight
+ * @param filling_pressure [Bar] Refueling line pressure
+ * @param vessel_pressure [Bar] Vessel tank pressure
+ * @param filling_valve_state  1 If the filling valve is open
+ * @param venting_valve_state  1 If the venting valve is open
+ * @param release_valve_state  1 If the release valve is open
+ * @param main_valve_state  1 If the main valve is open
+ * @param nitrogen_valve_state   1 If the nitrogen valve is open
+ * @param gmm_state  State of the GroundModeManager
+ * @param tars_state  State of Tars
+ * @param arming_state  Arming state (1 if armed, 0 otherwise)
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param battery_voltage  Battery voltage
+ * @param current_consumption [A] RIG current
+ * @param umbilical_current_consumption [A] Umbilical current
+ * @param main_board_state  Main board fmm state
+ * @param payload_board_state  Payload board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param main_can_status  Main CAN status
+ * @param payload_can_status  Payload CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_gse_tm_send(mavlink_channel_t chan, uint64_t timestamp, float loadcell_rocket, float loadcell_vessel, float filling_pressure, float vessel_pressure, uint8_t filling_valve_state, uint8_t venting_valve_state, uint8_t release_valve_state, uint8_t main_valve_state, uint8_t nitrogen_valve_state, uint8_t gmm_state, uint8_t tars_state, uint8_t arming_state, float cpu_load, uint32_t free_heap, float battery_voltage, float current_consumption, float umbilical_current_consumption, uint8_t main_board_state, uint8_t payload_board_state, uint8_t motor_board_state, uint8_t main_can_status, uint8_t payload_can_status, uint8_t motor_can_status, int16_t log_number, int32_t log_good)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_GSE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, loadcell_rocket);
+    _mav_put_float(buf, 12, loadcell_vessel);
+    _mav_put_float(buf, 16, filling_pressure);
+    _mav_put_float(buf, 20, vessel_pressure);
+    _mav_put_float(buf, 24, cpu_load);
+    _mav_put_uint32_t(buf, 28, free_heap);
+    _mav_put_float(buf, 32, battery_voltage);
+    _mav_put_float(buf, 36, current_consumption);
+    _mav_put_float(buf, 40, umbilical_current_consumption);
+    _mav_put_int32_t(buf, 44, log_good);
+    _mav_put_int16_t(buf, 48, log_number);
+    _mav_put_uint8_t(buf, 50, filling_valve_state);
+    _mav_put_uint8_t(buf, 51, venting_valve_state);
+    _mav_put_uint8_t(buf, 52, release_valve_state);
+    _mav_put_uint8_t(buf, 53, main_valve_state);
+    _mav_put_uint8_t(buf, 54, nitrogen_valve_state);
+    _mav_put_uint8_t(buf, 55, gmm_state);
+    _mav_put_uint8_t(buf, 56, tars_state);
+    _mav_put_uint8_t(buf, 57, arming_state);
+    _mav_put_uint8_t(buf, 58, main_board_state);
+    _mav_put_uint8_t(buf, 59, payload_board_state);
+    _mav_put_uint8_t(buf, 60, motor_board_state);
+    _mav_put_uint8_t(buf, 61, main_can_status);
+    _mav_put_uint8_t(buf, 62, payload_can_status);
+    _mav_put_uint8_t(buf, 63, motor_can_status);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GSE_TM, buf, MAVLINK_MSG_ID_GSE_TM_MIN_LEN, MAVLINK_MSG_ID_GSE_TM_LEN, MAVLINK_MSG_ID_GSE_TM_CRC);
+#else
+    mavlink_gse_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.loadcell_rocket = loadcell_rocket;
+    packet.loadcell_vessel = loadcell_vessel;
+    packet.filling_pressure = filling_pressure;
+    packet.vessel_pressure = vessel_pressure;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.battery_voltage = battery_voltage;
+    packet.current_consumption = current_consumption;
+    packet.umbilical_current_consumption = umbilical_current_consumption;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.filling_valve_state = filling_valve_state;
+    packet.venting_valve_state = venting_valve_state;
+    packet.release_valve_state = release_valve_state;
+    packet.main_valve_state = main_valve_state;
+    packet.nitrogen_valve_state = nitrogen_valve_state;
+    packet.gmm_state = gmm_state;
+    packet.tars_state = tars_state;
+    packet.arming_state = arming_state;
+    packet.main_board_state = main_board_state;
+    packet.payload_board_state = payload_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.main_can_status = main_can_status;
+    packet.payload_can_status = payload_can_status;
+    packet.motor_can_status = motor_can_status;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GSE_TM, (const char *)&packet, MAVLINK_MSG_ID_GSE_TM_MIN_LEN, MAVLINK_MSG_ID_GSE_TM_LEN, MAVLINK_MSG_ID_GSE_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a gse_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_gse_tm_send_struct(mavlink_channel_t chan, const mavlink_gse_tm_t* gse_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_gse_tm_send(chan, gse_tm->timestamp, gse_tm->loadcell_rocket, gse_tm->loadcell_vessel, gse_tm->filling_pressure, gse_tm->vessel_pressure, gse_tm->filling_valve_state, gse_tm->venting_valve_state, gse_tm->release_valve_state, gse_tm->main_valve_state, gse_tm->nitrogen_valve_state, gse_tm->gmm_state, gse_tm->tars_state, gse_tm->arming_state, gse_tm->cpu_load, gse_tm->free_heap, gse_tm->battery_voltage, gse_tm->current_consumption, gse_tm->umbilical_current_consumption, gse_tm->main_board_state, gse_tm->payload_board_state, gse_tm->motor_board_state, gse_tm->main_can_status, gse_tm->payload_can_status, gse_tm->motor_can_status, gse_tm->log_number, gse_tm->log_good);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GSE_TM, (const char *)gse_tm, MAVLINK_MSG_ID_GSE_TM_MIN_LEN, MAVLINK_MSG_ID_GSE_TM_LEN, MAVLINK_MSG_ID_GSE_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_GSE_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_gse_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, float loadcell_rocket, float loadcell_vessel, float filling_pressure, float vessel_pressure, uint8_t filling_valve_state, uint8_t venting_valve_state, uint8_t release_valve_state, uint8_t main_valve_state, uint8_t nitrogen_valve_state, uint8_t gmm_state, uint8_t tars_state, uint8_t arming_state, float cpu_load, uint32_t free_heap, float battery_voltage, float current_consumption, float umbilical_current_consumption, uint8_t main_board_state, uint8_t payload_board_state, uint8_t motor_board_state, uint8_t main_can_status, uint8_t payload_can_status, uint8_t motor_can_status, int16_t log_number, int32_t log_good)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, loadcell_rocket);
+    _mav_put_float(buf, 12, loadcell_vessel);
+    _mav_put_float(buf, 16, filling_pressure);
+    _mav_put_float(buf, 20, vessel_pressure);
+    _mav_put_float(buf, 24, cpu_load);
+    _mav_put_uint32_t(buf, 28, free_heap);
+    _mav_put_float(buf, 32, battery_voltage);
+    _mav_put_float(buf, 36, current_consumption);
+    _mav_put_float(buf, 40, umbilical_current_consumption);
+    _mav_put_int32_t(buf, 44, log_good);
+    _mav_put_int16_t(buf, 48, log_number);
+    _mav_put_uint8_t(buf, 50, filling_valve_state);
+    _mav_put_uint8_t(buf, 51, venting_valve_state);
+    _mav_put_uint8_t(buf, 52, release_valve_state);
+    _mav_put_uint8_t(buf, 53, main_valve_state);
+    _mav_put_uint8_t(buf, 54, nitrogen_valve_state);
+    _mav_put_uint8_t(buf, 55, gmm_state);
+    _mav_put_uint8_t(buf, 56, tars_state);
+    _mav_put_uint8_t(buf, 57, arming_state);
+    _mav_put_uint8_t(buf, 58, main_board_state);
+    _mav_put_uint8_t(buf, 59, payload_board_state);
+    _mav_put_uint8_t(buf, 60, motor_board_state);
+    _mav_put_uint8_t(buf, 61, main_can_status);
+    _mav_put_uint8_t(buf, 62, payload_can_status);
+    _mav_put_uint8_t(buf, 63, motor_can_status);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GSE_TM, buf, MAVLINK_MSG_ID_GSE_TM_MIN_LEN, MAVLINK_MSG_ID_GSE_TM_LEN, MAVLINK_MSG_ID_GSE_TM_CRC);
+#else
+    mavlink_gse_tm_t *packet = (mavlink_gse_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->loadcell_rocket = loadcell_rocket;
+    packet->loadcell_vessel = loadcell_vessel;
+    packet->filling_pressure = filling_pressure;
+    packet->vessel_pressure = vessel_pressure;
+    packet->cpu_load = cpu_load;
+    packet->free_heap = free_heap;
+    packet->battery_voltage = battery_voltage;
+    packet->current_consumption = current_consumption;
+    packet->umbilical_current_consumption = umbilical_current_consumption;
+    packet->log_good = log_good;
+    packet->log_number = log_number;
+    packet->filling_valve_state = filling_valve_state;
+    packet->venting_valve_state = venting_valve_state;
+    packet->release_valve_state = release_valve_state;
+    packet->main_valve_state = main_valve_state;
+    packet->nitrogen_valve_state = nitrogen_valve_state;
+    packet->gmm_state = gmm_state;
+    packet->tars_state = tars_state;
+    packet->arming_state = arming_state;
+    packet->main_board_state = main_board_state;
+    packet->payload_board_state = payload_board_state;
+    packet->motor_board_state = motor_board_state;
+    packet->main_can_status = main_can_status;
+    packet->payload_can_status = payload_can_status;
+    packet->motor_can_status = motor_can_status;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GSE_TM, (const char *)packet, MAVLINK_MSG_ID_GSE_TM_MIN_LEN, MAVLINK_MSG_ID_GSE_TM_LEN, MAVLINK_MSG_ID_GSE_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE GSE_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from gse_tm message
+ *
+ * @return [us] Timestamp in microseconds
+ */
+static inline uint64_t mavlink_msg_gse_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field loadcell_rocket from gse_tm message
+ *
+ * @return [kg] Rocket weight
+ */
+static inline float mavlink_msg_gse_tm_get_loadcell_rocket(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field loadcell_vessel from gse_tm message
+ *
+ * @return [kg] External tank weight
+ */
+static inline float mavlink_msg_gse_tm_get_loadcell_vessel(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field filling_pressure from gse_tm message
+ *
+ * @return [Bar] Refueling line pressure
+ */
+static inline float mavlink_msg_gse_tm_get_filling_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field vessel_pressure from gse_tm message
+ *
+ * @return [Bar] Vessel tank pressure
+ */
+static inline float mavlink_msg_gse_tm_get_vessel_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field filling_valve_state from gse_tm message
+ *
+ * @return  1 If the filling valve is open
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_filling_valve_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  50);
+}
+
+/**
+ * @brief Get field venting_valve_state from gse_tm message
+ *
+ * @return  1 If the venting valve is open
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_venting_valve_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  51);
+}
+
+/**
+ * @brief Get field release_valve_state from gse_tm message
+ *
+ * @return  1 If the release valve is open
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_release_valve_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  52);
+}
+
+/**
+ * @brief Get field main_valve_state from gse_tm message
+ *
+ * @return  1 If the main valve is open
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_main_valve_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  53);
+}
+
+/**
+ * @brief Get field nitrogen_valve_state from gse_tm message
+ *
+ * @return   1 If the nitrogen valve is open
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_nitrogen_valve_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  54);
+}
+
+/**
+ * @brief Get field gmm_state from gse_tm message
+ *
+ * @return  State of the GroundModeManager
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_gmm_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  55);
+}
+
+/**
+ * @brief Get field tars_state from gse_tm message
+ *
+ * @return  State of Tars
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_tars_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  56);
+}
+
+/**
+ * @brief Get field arming_state from gse_tm message
+ *
+ * @return  Arming state (1 if armed, 0 otherwise)
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_arming_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  57);
+}
+
+/**
+ * @brief Get field cpu_load from gse_tm message
+ *
+ * @return  CPU load in percentage
+ */
+static inline float mavlink_msg_gse_tm_get_cpu_load(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field free_heap from gse_tm message
+ *
+ * @return  Amount of available heap in memory
+ */
+static inline uint32_t mavlink_msg_gse_tm_get_free_heap(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  28);
+}
+
+/**
+ * @brief Get field battery_voltage from gse_tm message
+ *
+ * @return  Battery voltage
+ */
+static inline float mavlink_msg_gse_tm_get_battery_voltage(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field current_consumption from gse_tm message
+ *
+ * @return [A] RIG current
+ */
+static inline float mavlink_msg_gse_tm_get_current_consumption(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field umbilical_current_consumption from gse_tm message
+ *
+ * @return [A] Umbilical current
+ */
+static inline float mavlink_msg_gse_tm_get_umbilical_current_consumption(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Get field main_board_state from gse_tm message
+ *
+ * @return  Main board fmm state
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_main_board_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  58);
+}
+
+/**
+ * @brief Get field payload_board_state from gse_tm message
+ *
+ * @return  Payload board fmm state
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_payload_board_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  59);
+}
+
+/**
+ * @brief Get field motor_board_state from gse_tm message
+ *
+ * @return  Motor board fmm state
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_motor_board_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  60);
+}
+
+/**
+ * @brief Get field main_can_status from gse_tm message
+ *
+ * @return  Main CAN status
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_main_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  61);
+}
+
+/**
+ * @brief Get field payload_can_status from gse_tm message
+ *
+ * @return  Payload CAN status
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_payload_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  62);
+}
+
+/**
+ * @brief Get field motor_can_status from gse_tm message
+ *
+ * @return  Motor CAN status
+ */
+static inline uint8_t mavlink_msg_gse_tm_get_motor_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  63);
+}
+
+/**
+ * @brief Get field log_number from gse_tm message
+ *
+ * @return  Currently active log file, -1 if the logger is inactive
+ */
+static inline int16_t mavlink_msg_gse_tm_get_log_number(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int16_t(msg,  48);
+}
+
+/**
+ * @brief Get field log_good from gse_tm message
+ *
+ * @return  0 if log failed, 1 otherwise
+ */
+static inline int32_t mavlink_msg_gse_tm_get_log_good(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  44);
+}
+
+/**
+ * @brief Decode a gse_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param gse_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_gse_tm_decode(const mavlink_message_t* msg, mavlink_gse_tm_t* gse_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    gse_tm->timestamp = mavlink_msg_gse_tm_get_timestamp(msg);
+    gse_tm->loadcell_rocket = mavlink_msg_gse_tm_get_loadcell_rocket(msg);
+    gse_tm->loadcell_vessel = mavlink_msg_gse_tm_get_loadcell_vessel(msg);
+    gse_tm->filling_pressure = mavlink_msg_gse_tm_get_filling_pressure(msg);
+    gse_tm->vessel_pressure = mavlink_msg_gse_tm_get_vessel_pressure(msg);
+    gse_tm->cpu_load = mavlink_msg_gse_tm_get_cpu_load(msg);
+    gse_tm->free_heap = mavlink_msg_gse_tm_get_free_heap(msg);
+    gse_tm->battery_voltage = mavlink_msg_gse_tm_get_battery_voltage(msg);
+    gse_tm->current_consumption = mavlink_msg_gse_tm_get_current_consumption(msg);
+    gse_tm->umbilical_current_consumption = mavlink_msg_gse_tm_get_umbilical_current_consumption(msg);
+    gse_tm->log_good = mavlink_msg_gse_tm_get_log_good(msg);
+    gse_tm->log_number = mavlink_msg_gse_tm_get_log_number(msg);
+    gse_tm->filling_valve_state = mavlink_msg_gse_tm_get_filling_valve_state(msg);
+    gse_tm->venting_valve_state = mavlink_msg_gse_tm_get_venting_valve_state(msg);
+    gse_tm->release_valve_state = mavlink_msg_gse_tm_get_release_valve_state(msg);
+    gse_tm->main_valve_state = mavlink_msg_gse_tm_get_main_valve_state(msg);
+    gse_tm->nitrogen_valve_state = mavlink_msg_gse_tm_get_nitrogen_valve_state(msg);
+    gse_tm->gmm_state = mavlink_msg_gse_tm_get_gmm_state(msg);
+    gse_tm->tars_state = mavlink_msg_gse_tm_get_tars_state(msg);
+    gse_tm->arming_state = mavlink_msg_gse_tm_get_arming_state(msg);
+    gse_tm->main_board_state = mavlink_msg_gse_tm_get_main_board_state(msg);
+    gse_tm->payload_board_state = mavlink_msg_gse_tm_get_payload_board_state(msg);
+    gse_tm->motor_board_state = mavlink_msg_gse_tm_get_motor_board_state(msg);
+    gse_tm->main_can_status = mavlink_msg_gse_tm_get_main_can_status(msg);
+    gse_tm->payload_can_status = mavlink_msg_gse_tm_get_payload_can_status(msg);
+    gse_tm->motor_can_status = mavlink_msg_gse_tm_get_motor_can_status(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_GSE_TM_LEN? msg->len : MAVLINK_MSG_ID_GSE_TM_LEN;
+        memset(gse_tm, 0, MAVLINK_MSG_ID_GSE_TM_LEN);
+    memcpy(gse_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_imu_tm.h b/mavlink_lib/orion/mavlink_msg_imu_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..1ce0401a5bfdcb2013beeb08914ea6115e1da2cb
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_imu_tm.h
@@ -0,0 +1,455 @@
+#pragma once
+// MESSAGE IMU_TM PACKING
+
+#define MAVLINK_MSG_ID_IMU_TM 104
+
+
+typedef struct __mavlink_imu_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float acc_x; /*< [m/s2] X axis acceleration*/
+ float acc_y; /*< [m/s2] Y axis acceleration*/
+ float acc_z; /*< [m/s2] Z axis acceleration*/
+ float gyro_x; /*< [rad/s] X axis gyro*/
+ float gyro_y; /*< [rad/s] Y axis gyro*/
+ float gyro_z; /*< [rad/s] Z axis gyro*/
+ float mag_x; /*< [uT] X axis compass*/
+ float mag_y; /*< [uT] Y axis compass*/
+ float mag_z; /*< [uT] Z axis compass*/
+ char sensor_name[20]; /*<  Sensor name*/
+} mavlink_imu_tm_t;
+
+#define MAVLINK_MSG_ID_IMU_TM_LEN 64
+#define MAVLINK_MSG_ID_IMU_TM_MIN_LEN 64
+#define MAVLINK_MSG_ID_104_LEN 64
+#define MAVLINK_MSG_ID_104_MIN_LEN 64
+
+#define MAVLINK_MSG_ID_IMU_TM_CRC 72
+#define MAVLINK_MSG_ID_104_CRC 72
+
+#define MAVLINK_MSG_IMU_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_IMU_TM { \
+    104, \
+    "IMU_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_imu_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 44, offsetof(mavlink_imu_tm_t, sensor_name) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_imu_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_imu_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_imu_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_imu_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_imu_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_imu_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_imu_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_imu_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_imu_tm_t, mag_z) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_IMU_TM { \
+    "IMU_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_imu_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 44, offsetof(mavlink_imu_tm_t, sensor_name) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_imu_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_imu_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_imu_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_imu_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_imu_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_imu_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_imu_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_imu_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_imu_tm_t, mag_z) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a imu_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param acc_x [m/s2] X axis acceleration
+ * @param acc_y [m/s2] Y axis acceleration
+ * @param acc_z [m/s2] Z axis acceleration
+ * @param gyro_x [rad/s] X axis gyro
+ * @param gyro_y [rad/s] Y axis gyro
+ * @param gyro_z [rad/s] Z axis gyro
+ * @param mag_x [uT] X axis compass
+ * @param mag_y [uT] Y axis compass
+ * @param mag_z [uT] Z axis compass
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_imu_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_IMU_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, acc_x);
+    _mav_put_float(buf, 12, acc_y);
+    _mav_put_float(buf, 16, acc_z);
+    _mav_put_float(buf, 20, gyro_x);
+    _mav_put_float(buf, 24, gyro_y);
+    _mav_put_float(buf, 28, gyro_z);
+    _mav_put_float(buf, 32, mag_x);
+    _mav_put_float(buf, 36, mag_y);
+    _mav_put_float(buf, 40, mag_z);
+    _mav_put_char_array(buf, 44, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_IMU_TM_LEN);
+#else
+    mavlink_imu_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_IMU_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_IMU_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_IMU_TM_MIN_LEN, MAVLINK_MSG_ID_IMU_TM_LEN, MAVLINK_MSG_ID_IMU_TM_CRC);
+}
+
+/**
+ * @brief Pack a imu_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param acc_x [m/s2] X axis acceleration
+ * @param acc_y [m/s2] Y axis acceleration
+ * @param acc_z [m/s2] Z axis acceleration
+ * @param gyro_x [rad/s] X axis gyro
+ * @param gyro_y [rad/s] Y axis gyro
+ * @param gyro_z [rad/s] Z axis gyro
+ * @param mag_x [uT] X axis compass
+ * @param mag_y [uT] Y axis compass
+ * @param mag_z [uT] Z axis compass
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_imu_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,float acc_x,float acc_y,float acc_z,float gyro_x,float gyro_y,float gyro_z,float mag_x,float mag_y,float mag_z)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_IMU_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, acc_x);
+    _mav_put_float(buf, 12, acc_y);
+    _mav_put_float(buf, 16, acc_z);
+    _mav_put_float(buf, 20, gyro_x);
+    _mav_put_float(buf, 24, gyro_y);
+    _mav_put_float(buf, 28, gyro_z);
+    _mav_put_float(buf, 32, mag_x);
+    _mav_put_float(buf, 36, mag_y);
+    _mav_put_float(buf, 40, mag_z);
+    _mav_put_char_array(buf, 44, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_IMU_TM_LEN);
+#else
+    mavlink_imu_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_IMU_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_IMU_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_IMU_TM_MIN_LEN, MAVLINK_MSG_ID_IMU_TM_LEN, MAVLINK_MSG_ID_IMU_TM_CRC);
+}
+
+/**
+ * @brief Encode a imu_tm 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 imu_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_imu_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_imu_tm_t* imu_tm)
+{
+    return mavlink_msg_imu_tm_pack(system_id, component_id, msg, imu_tm->timestamp, imu_tm->sensor_name, imu_tm->acc_x, imu_tm->acc_y, imu_tm->acc_z, imu_tm->gyro_x, imu_tm->gyro_y, imu_tm->gyro_z, imu_tm->mag_x, imu_tm->mag_y, imu_tm->mag_z);
+}
+
+/**
+ * @brief Encode a imu_tm 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 imu_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_imu_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_imu_tm_t* imu_tm)
+{
+    return mavlink_msg_imu_tm_pack_chan(system_id, component_id, chan, msg, imu_tm->timestamp, imu_tm->sensor_name, imu_tm->acc_x, imu_tm->acc_y, imu_tm->acc_z, imu_tm->gyro_x, imu_tm->gyro_y, imu_tm->gyro_z, imu_tm->mag_x, imu_tm->mag_y, imu_tm->mag_z);
+}
+
+/**
+ * @brief Send a imu_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param acc_x [m/s2] X axis acceleration
+ * @param acc_y [m/s2] Y axis acceleration
+ * @param acc_z [m/s2] Z axis acceleration
+ * @param gyro_x [rad/s] X axis gyro
+ * @param gyro_y [rad/s] Y axis gyro
+ * @param gyro_z [rad/s] Z axis gyro
+ * @param mag_x [uT] X axis compass
+ * @param mag_y [uT] Y axis compass
+ * @param mag_z [uT] Z axis compass
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_imu_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_IMU_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, acc_x);
+    _mav_put_float(buf, 12, acc_y);
+    _mav_put_float(buf, 16, acc_z);
+    _mav_put_float(buf, 20, gyro_x);
+    _mav_put_float(buf, 24, gyro_y);
+    _mav_put_float(buf, 28, gyro_z);
+    _mav_put_float(buf, 32, mag_x);
+    _mav_put_float(buf, 36, mag_y);
+    _mav_put_float(buf, 40, mag_z);
+    _mav_put_char_array(buf, 44, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_IMU_TM, buf, MAVLINK_MSG_ID_IMU_TM_MIN_LEN, MAVLINK_MSG_ID_IMU_TM_LEN, MAVLINK_MSG_ID_IMU_TM_CRC);
+#else
+    mavlink_imu_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_IMU_TM, (const char *)&packet, MAVLINK_MSG_ID_IMU_TM_MIN_LEN, MAVLINK_MSG_ID_IMU_TM_LEN, MAVLINK_MSG_ID_IMU_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a imu_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_imu_tm_send_struct(mavlink_channel_t chan, const mavlink_imu_tm_t* imu_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_imu_tm_send(chan, imu_tm->timestamp, imu_tm->sensor_name, imu_tm->acc_x, imu_tm->acc_y, imu_tm->acc_z, imu_tm->gyro_x, imu_tm->gyro_y, imu_tm->gyro_z, imu_tm->mag_x, imu_tm->mag_y, imu_tm->mag_z);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_IMU_TM, (const char *)imu_tm, MAVLINK_MSG_ID_IMU_TM_MIN_LEN, MAVLINK_MSG_ID_IMU_TM_LEN, MAVLINK_MSG_ID_IMU_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_IMU_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_imu_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, acc_x);
+    _mav_put_float(buf, 12, acc_y);
+    _mav_put_float(buf, 16, acc_z);
+    _mav_put_float(buf, 20, gyro_x);
+    _mav_put_float(buf, 24, gyro_y);
+    _mav_put_float(buf, 28, gyro_z);
+    _mav_put_float(buf, 32, mag_x);
+    _mav_put_float(buf, 36, mag_y);
+    _mav_put_float(buf, 40, mag_z);
+    _mav_put_char_array(buf, 44, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_IMU_TM, buf, MAVLINK_MSG_ID_IMU_TM_MIN_LEN, MAVLINK_MSG_ID_IMU_TM_LEN, MAVLINK_MSG_ID_IMU_TM_CRC);
+#else
+    mavlink_imu_tm_t *packet = (mavlink_imu_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->acc_x = acc_x;
+    packet->acc_y = acc_y;
+    packet->acc_z = acc_z;
+    packet->gyro_x = gyro_x;
+    packet->gyro_y = gyro_y;
+    packet->gyro_z = gyro_z;
+    packet->mag_x = mag_x;
+    packet->mag_y = mag_y;
+    packet->mag_z = mag_z;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_IMU_TM, (const char *)packet, MAVLINK_MSG_ID_IMU_TM_MIN_LEN, MAVLINK_MSG_ID_IMU_TM_LEN, MAVLINK_MSG_ID_IMU_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE IMU_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from imu_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_imu_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from imu_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_imu_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  44);
+}
+
+/**
+ * @brief Get field acc_x from imu_tm message
+ *
+ * @return [m/s2] X axis acceleration
+ */
+static inline float mavlink_msg_imu_tm_get_acc_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field acc_y from imu_tm message
+ *
+ * @return [m/s2] Y axis acceleration
+ */
+static inline float mavlink_msg_imu_tm_get_acc_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field acc_z from imu_tm message
+ *
+ * @return [m/s2] Z axis acceleration
+ */
+static inline float mavlink_msg_imu_tm_get_acc_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field gyro_x from imu_tm message
+ *
+ * @return [rad/s] X axis gyro
+ */
+static inline float mavlink_msg_imu_tm_get_gyro_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field gyro_y from imu_tm message
+ *
+ * @return [rad/s] Y axis gyro
+ */
+static inline float mavlink_msg_imu_tm_get_gyro_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field gyro_z from imu_tm message
+ *
+ * @return [rad/s] Z axis gyro
+ */
+static inline float mavlink_msg_imu_tm_get_gyro_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field mag_x from imu_tm message
+ *
+ * @return [uT] X axis compass
+ */
+static inline float mavlink_msg_imu_tm_get_mag_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field mag_y from imu_tm message
+ *
+ * @return [uT] Y axis compass
+ */
+static inline float mavlink_msg_imu_tm_get_mag_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field mag_z from imu_tm message
+ *
+ * @return [uT] Z axis compass
+ */
+static inline float mavlink_msg_imu_tm_get_mag_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Decode a imu_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param imu_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_imu_tm_decode(const mavlink_message_t* msg, mavlink_imu_tm_t* imu_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    imu_tm->timestamp = mavlink_msg_imu_tm_get_timestamp(msg);
+    imu_tm->acc_x = mavlink_msg_imu_tm_get_acc_x(msg);
+    imu_tm->acc_y = mavlink_msg_imu_tm_get_acc_y(msg);
+    imu_tm->acc_z = mavlink_msg_imu_tm_get_acc_z(msg);
+    imu_tm->gyro_x = mavlink_msg_imu_tm_get_gyro_x(msg);
+    imu_tm->gyro_y = mavlink_msg_imu_tm_get_gyro_y(msg);
+    imu_tm->gyro_z = mavlink_msg_imu_tm_get_gyro_z(msg);
+    imu_tm->mag_x = mavlink_msg_imu_tm_get_mag_x(msg);
+    imu_tm->mag_y = mavlink_msg_imu_tm_get_mag_y(msg);
+    imu_tm->mag_z = mavlink_msg_imu_tm_get_mag_z(msg);
+    mavlink_msg_imu_tm_get_sensor_name(msg, imu_tm->sensor_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_IMU_TM_LEN? msg->len : MAVLINK_MSG_ID_IMU_TM_LEN;
+        memset(imu_tm, 0, MAVLINK_MSG_ID_IMU_TM_LEN);
+    memcpy(imu_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_load_tm.h b/mavlink_lib/orion/mavlink_msg_load_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..d93d5e301a3ad5c13003cf6ea37d33329f24ee91
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_load_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE LOAD_TM PACKING
+
+#define MAVLINK_MSG_ID_LOAD_TM 110
+
+
+typedef struct __mavlink_load_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float load; /*< [kg] Load force*/
+ char sensor_name[20]; /*<  Sensor name*/
+} mavlink_load_tm_t;
+
+#define MAVLINK_MSG_ID_LOAD_TM_LEN 32
+#define MAVLINK_MSG_ID_LOAD_TM_MIN_LEN 32
+#define MAVLINK_MSG_ID_110_LEN 32
+#define MAVLINK_MSG_ID_110_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_LOAD_TM_CRC 148
+#define MAVLINK_MSG_ID_110_CRC 148
+
+#define MAVLINK_MSG_LOAD_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_LOAD_TM { \
+    110, \
+    "LOAD_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_load_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_load_tm_t, sensor_name) }, \
+         { "load", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_load_tm_t, load) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_LOAD_TM { \
+    "LOAD_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_load_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_load_tm_t, sensor_name) }, \
+         { "load", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_load_tm_t, load) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a load_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param load [kg] Load force
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_load_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, float load)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_LOAD_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, load);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_LOAD_TM_LEN);
+#else
+    mavlink_load_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.load = load;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_LOAD_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_LOAD_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_LOAD_TM_MIN_LEN, MAVLINK_MSG_ID_LOAD_TM_LEN, MAVLINK_MSG_ID_LOAD_TM_CRC);
+}
+
+/**
+ * @brief Pack a load_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param load [kg] Load force
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_load_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,float load)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_LOAD_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, load);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_LOAD_TM_LEN);
+#else
+    mavlink_load_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.load = load;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_LOAD_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_LOAD_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_LOAD_TM_MIN_LEN, MAVLINK_MSG_ID_LOAD_TM_LEN, MAVLINK_MSG_ID_LOAD_TM_CRC);
+}
+
+/**
+ * @brief Encode a load_tm 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 load_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_load_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_load_tm_t* load_tm)
+{
+    return mavlink_msg_load_tm_pack(system_id, component_id, msg, load_tm->timestamp, load_tm->sensor_name, load_tm->load);
+}
+
+/**
+ * @brief Encode a load_tm 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 load_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_load_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_load_tm_t* load_tm)
+{
+    return mavlink_msg_load_tm_pack_chan(system_id, component_id, chan, msg, load_tm->timestamp, load_tm->sensor_name, load_tm->load);
+}
+
+/**
+ * @brief Send a load_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param load [kg] Load force
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_load_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, float load)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_LOAD_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, load);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOAD_TM, buf, MAVLINK_MSG_ID_LOAD_TM_MIN_LEN, MAVLINK_MSG_ID_LOAD_TM_LEN, MAVLINK_MSG_ID_LOAD_TM_CRC);
+#else
+    mavlink_load_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.load = load;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOAD_TM, (const char *)&packet, MAVLINK_MSG_ID_LOAD_TM_MIN_LEN, MAVLINK_MSG_ID_LOAD_TM_LEN, MAVLINK_MSG_ID_LOAD_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a load_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_load_tm_send_struct(mavlink_channel_t chan, const mavlink_load_tm_t* load_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_load_tm_send(chan, load_tm->timestamp, load_tm->sensor_name, load_tm->load);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOAD_TM, (const char *)load_tm, MAVLINK_MSG_ID_LOAD_TM_MIN_LEN, MAVLINK_MSG_ID_LOAD_TM_LEN, MAVLINK_MSG_ID_LOAD_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_LOAD_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_load_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, float load)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, load);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOAD_TM, buf, MAVLINK_MSG_ID_LOAD_TM_MIN_LEN, MAVLINK_MSG_ID_LOAD_TM_LEN, MAVLINK_MSG_ID_LOAD_TM_CRC);
+#else
+    mavlink_load_tm_t *packet = (mavlink_load_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->load = load;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOAD_TM, (const char *)packet, MAVLINK_MSG_ID_LOAD_TM_MIN_LEN, MAVLINK_MSG_ID_LOAD_TM_LEN, MAVLINK_MSG_ID_LOAD_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE LOAD_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from load_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_load_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from load_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_load_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  12);
+}
+
+/**
+ * @brief Get field load from load_tm message
+ *
+ * @return [kg] Load force
+ */
+static inline float mavlink_msg_load_tm_get_load(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Decode a load_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param load_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_load_tm_decode(const mavlink_message_t* msg, mavlink_load_tm_t* load_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    load_tm->timestamp = mavlink_msg_load_tm_get_timestamp(msg);
+    load_tm->load = mavlink_msg_load_tm_get_load(msg);
+    mavlink_msg_load_tm_get_sensor_name(msg, load_tm->sensor_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_LOAD_TM_LEN? msg->len : MAVLINK_MSG_ID_LOAD_TM_LEN;
+        memset(load_tm, 0, MAVLINK_MSG_ID_LOAD_TM_LEN);
+    memcpy(load_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_logger_tm.h b/mavlink_lib/orion/mavlink_msg_logger_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..774424b626afd390bab1065fafad81eea390af1c
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_logger_tm.h
@@ -0,0 +1,463 @@
+#pragma once
+// MESSAGE LOGGER_TM PACKING
+
+#define MAVLINK_MSG_ID_LOGGER_TM 201
+
+
+typedef struct __mavlink_logger_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp*/
+ int32_t too_large_samples; /*<  Number of dropped samples because too large*/
+ int32_t dropped_samples; /*<  Number of dropped samples due to fifo full*/
+ int32_t queued_samples; /*<  Number of samples written to buffer*/
+ int32_t buffers_filled; /*<  Number of buffers filled*/
+ int32_t buffers_written; /*<  Number of buffers written to disk*/
+ int32_t writes_failed; /*<  Number of fwrite() that failed*/
+ int32_t last_write_error; /*<  Error of the last fwrite() that failed*/
+ int32_t average_write_time; /*<  Average time to perform an fwrite() of a buffer*/
+ int32_t max_write_time; /*<  Max time to perform an fwrite() of a buffer*/
+ int16_t log_number; /*<  Currently active log file, -1 if the logger is inactive*/
+} mavlink_logger_tm_t;
+
+#define MAVLINK_MSG_ID_LOGGER_TM_LEN 46
+#define MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN 46
+#define MAVLINK_MSG_ID_201_LEN 46
+#define MAVLINK_MSG_ID_201_MIN_LEN 46
+
+#define MAVLINK_MSG_ID_LOGGER_TM_CRC 142
+#define MAVLINK_MSG_ID_201_CRC 142
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_LOGGER_TM { \
+    201, \
+    "LOGGER_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_logger_tm_t, timestamp) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 44, offsetof(mavlink_logger_tm_t, log_number) }, \
+         { "too_large_samples", NULL, MAVLINK_TYPE_INT32_T, 0, 8, offsetof(mavlink_logger_tm_t, too_large_samples) }, \
+         { "dropped_samples", NULL, MAVLINK_TYPE_INT32_T, 0, 12, offsetof(mavlink_logger_tm_t, dropped_samples) }, \
+         { "queued_samples", NULL, MAVLINK_TYPE_INT32_T, 0, 16, offsetof(mavlink_logger_tm_t, queued_samples) }, \
+         { "buffers_filled", NULL, MAVLINK_TYPE_INT32_T, 0, 20, offsetof(mavlink_logger_tm_t, buffers_filled) }, \
+         { "buffers_written", NULL, MAVLINK_TYPE_INT32_T, 0, 24, offsetof(mavlink_logger_tm_t, buffers_written) }, \
+         { "writes_failed", NULL, MAVLINK_TYPE_INT32_T, 0, 28, offsetof(mavlink_logger_tm_t, writes_failed) }, \
+         { "last_write_error", NULL, MAVLINK_TYPE_INT32_T, 0, 32, offsetof(mavlink_logger_tm_t, last_write_error) }, \
+         { "average_write_time", NULL, MAVLINK_TYPE_INT32_T, 0, 36, offsetof(mavlink_logger_tm_t, average_write_time) }, \
+         { "max_write_time", NULL, MAVLINK_TYPE_INT32_T, 0, 40, offsetof(mavlink_logger_tm_t, max_write_time) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_LOGGER_TM { \
+    "LOGGER_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_logger_tm_t, timestamp) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 44, offsetof(mavlink_logger_tm_t, log_number) }, \
+         { "too_large_samples", NULL, MAVLINK_TYPE_INT32_T, 0, 8, offsetof(mavlink_logger_tm_t, too_large_samples) }, \
+         { "dropped_samples", NULL, MAVLINK_TYPE_INT32_T, 0, 12, offsetof(mavlink_logger_tm_t, dropped_samples) }, \
+         { "queued_samples", NULL, MAVLINK_TYPE_INT32_T, 0, 16, offsetof(mavlink_logger_tm_t, queued_samples) }, \
+         { "buffers_filled", NULL, MAVLINK_TYPE_INT32_T, 0, 20, offsetof(mavlink_logger_tm_t, buffers_filled) }, \
+         { "buffers_written", NULL, MAVLINK_TYPE_INT32_T, 0, 24, offsetof(mavlink_logger_tm_t, buffers_written) }, \
+         { "writes_failed", NULL, MAVLINK_TYPE_INT32_T, 0, 28, offsetof(mavlink_logger_tm_t, writes_failed) }, \
+         { "last_write_error", NULL, MAVLINK_TYPE_INT32_T, 0, 32, offsetof(mavlink_logger_tm_t, last_write_error) }, \
+         { "average_write_time", NULL, MAVLINK_TYPE_INT32_T, 0, 36, offsetof(mavlink_logger_tm_t, average_write_time) }, \
+         { "max_write_time", NULL, MAVLINK_TYPE_INT32_T, 0, 40, offsetof(mavlink_logger_tm_t, max_write_time) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a logger_tm 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 timestamp [us] Timestamp
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param too_large_samples  Number of dropped samples because too large
+ * @param dropped_samples  Number of dropped samples due to fifo full
+ * @param queued_samples  Number of samples written to buffer
+ * @param buffers_filled  Number of buffers filled
+ * @param buffers_written  Number of buffers written to disk
+ * @param writes_failed  Number of fwrite() that failed
+ * @param last_write_error  Error of the last fwrite() that failed
+ * @param average_write_time  Average time to perform an fwrite() of a buffer
+ * @param max_write_time  Max time to perform an fwrite() of a buffer
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_logger_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, int16_t log_number, int32_t too_large_samples, int32_t dropped_samples, int32_t queued_samples, int32_t buffers_filled, int32_t buffers_written, int32_t writes_failed, int32_t last_write_error, int32_t average_write_time, int32_t max_write_time)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_LOGGER_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_int32_t(buf, 8, too_large_samples);
+    _mav_put_int32_t(buf, 12, dropped_samples);
+    _mav_put_int32_t(buf, 16, queued_samples);
+    _mav_put_int32_t(buf, 20, buffers_filled);
+    _mav_put_int32_t(buf, 24, buffers_written);
+    _mav_put_int32_t(buf, 28, writes_failed);
+    _mav_put_int32_t(buf, 32, last_write_error);
+    _mav_put_int32_t(buf, 36, average_write_time);
+    _mav_put_int32_t(buf, 40, max_write_time);
+    _mav_put_int16_t(buf, 44, log_number);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_LOGGER_TM_LEN);
+#else
+    mavlink_logger_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.too_large_samples = too_large_samples;
+    packet.dropped_samples = dropped_samples;
+    packet.queued_samples = queued_samples;
+    packet.buffers_filled = buffers_filled;
+    packet.buffers_written = buffers_written;
+    packet.writes_failed = writes_failed;
+    packet.last_write_error = last_write_error;
+    packet.average_write_time = average_write_time;
+    packet.max_write_time = max_write_time;
+    packet.log_number = log_number;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_LOGGER_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_LOGGER_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN, MAVLINK_MSG_ID_LOGGER_TM_LEN, MAVLINK_MSG_ID_LOGGER_TM_CRC);
+}
+
+/**
+ * @brief Pack a logger_tm 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 timestamp [us] Timestamp
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param too_large_samples  Number of dropped samples because too large
+ * @param dropped_samples  Number of dropped samples due to fifo full
+ * @param queued_samples  Number of samples written to buffer
+ * @param buffers_filled  Number of buffers filled
+ * @param buffers_written  Number of buffers written to disk
+ * @param writes_failed  Number of fwrite() that failed
+ * @param last_write_error  Error of the last fwrite() that failed
+ * @param average_write_time  Average time to perform an fwrite() of a buffer
+ * @param max_write_time  Max time to perform an fwrite() of a buffer
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_logger_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,int16_t log_number,int32_t too_large_samples,int32_t dropped_samples,int32_t queued_samples,int32_t buffers_filled,int32_t buffers_written,int32_t writes_failed,int32_t last_write_error,int32_t average_write_time,int32_t max_write_time)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_LOGGER_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_int32_t(buf, 8, too_large_samples);
+    _mav_put_int32_t(buf, 12, dropped_samples);
+    _mav_put_int32_t(buf, 16, queued_samples);
+    _mav_put_int32_t(buf, 20, buffers_filled);
+    _mav_put_int32_t(buf, 24, buffers_written);
+    _mav_put_int32_t(buf, 28, writes_failed);
+    _mav_put_int32_t(buf, 32, last_write_error);
+    _mav_put_int32_t(buf, 36, average_write_time);
+    _mav_put_int32_t(buf, 40, max_write_time);
+    _mav_put_int16_t(buf, 44, log_number);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_LOGGER_TM_LEN);
+#else
+    mavlink_logger_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.too_large_samples = too_large_samples;
+    packet.dropped_samples = dropped_samples;
+    packet.queued_samples = queued_samples;
+    packet.buffers_filled = buffers_filled;
+    packet.buffers_written = buffers_written;
+    packet.writes_failed = writes_failed;
+    packet.last_write_error = last_write_error;
+    packet.average_write_time = average_write_time;
+    packet.max_write_time = max_write_time;
+    packet.log_number = log_number;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_LOGGER_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_LOGGER_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN, MAVLINK_MSG_ID_LOGGER_TM_LEN, MAVLINK_MSG_ID_LOGGER_TM_CRC);
+}
+
+/**
+ * @brief Encode a logger_tm 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 logger_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_logger_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_logger_tm_t* logger_tm)
+{
+    return mavlink_msg_logger_tm_pack(system_id, component_id, msg, logger_tm->timestamp, logger_tm->log_number, logger_tm->too_large_samples, logger_tm->dropped_samples, logger_tm->queued_samples, logger_tm->buffers_filled, logger_tm->buffers_written, logger_tm->writes_failed, logger_tm->last_write_error, logger_tm->average_write_time, logger_tm->max_write_time);
+}
+
+/**
+ * @brief Encode a logger_tm 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 logger_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_logger_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_logger_tm_t* logger_tm)
+{
+    return mavlink_msg_logger_tm_pack_chan(system_id, component_id, chan, msg, logger_tm->timestamp, logger_tm->log_number, logger_tm->too_large_samples, logger_tm->dropped_samples, logger_tm->queued_samples, logger_tm->buffers_filled, logger_tm->buffers_written, logger_tm->writes_failed, logger_tm->last_write_error, logger_tm->average_write_time, logger_tm->max_write_time);
+}
+
+/**
+ * @brief Send a logger_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param too_large_samples  Number of dropped samples because too large
+ * @param dropped_samples  Number of dropped samples due to fifo full
+ * @param queued_samples  Number of samples written to buffer
+ * @param buffers_filled  Number of buffers filled
+ * @param buffers_written  Number of buffers written to disk
+ * @param writes_failed  Number of fwrite() that failed
+ * @param last_write_error  Error of the last fwrite() that failed
+ * @param average_write_time  Average time to perform an fwrite() of a buffer
+ * @param max_write_time  Max time to perform an fwrite() of a buffer
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_logger_tm_send(mavlink_channel_t chan, uint64_t timestamp, int16_t log_number, int32_t too_large_samples, int32_t dropped_samples, int32_t queued_samples, int32_t buffers_filled, int32_t buffers_written, int32_t writes_failed, int32_t last_write_error, int32_t average_write_time, int32_t max_write_time)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_LOGGER_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_int32_t(buf, 8, too_large_samples);
+    _mav_put_int32_t(buf, 12, dropped_samples);
+    _mav_put_int32_t(buf, 16, queued_samples);
+    _mav_put_int32_t(buf, 20, buffers_filled);
+    _mav_put_int32_t(buf, 24, buffers_written);
+    _mav_put_int32_t(buf, 28, writes_failed);
+    _mav_put_int32_t(buf, 32, last_write_error);
+    _mav_put_int32_t(buf, 36, average_write_time);
+    _mav_put_int32_t(buf, 40, max_write_time);
+    _mav_put_int16_t(buf, 44, log_number);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOGGER_TM, buf, MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN, MAVLINK_MSG_ID_LOGGER_TM_LEN, MAVLINK_MSG_ID_LOGGER_TM_CRC);
+#else
+    mavlink_logger_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.too_large_samples = too_large_samples;
+    packet.dropped_samples = dropped_samples;
+    packet.queued_samples = queued_samples;
+    packet.buffers_filled = buffers_filled;
+    packet.buffers_written = buffers_written;
+    packet.writes_failed = writes_failed;
+    packet.last_write_error = last_write_error;
+    packet.average_write_time = average_write_time;
+    packet.max_write_time = max_write_time;
+    packet.log_number = log_number;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOGGER_TM, (const char *)&packet, MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN, MAVLINK_MSG_ID_LOGGER_TM_LEN, MAVLINK_MSG_ID_LOGGER_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a logger_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_logger_tm_send_struct(mavlink_channel_t chan, const mavlink_logger_tm_t* logger_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_logger_tm_send(chan, logger_tm->timestamp, logger_tm->log_number, logger_tm->too_large_samples, logger_tm->dropped_samples, logger_tm->queued_samples, logger_tm->buffers_filled, logger_tm->buffers_written, logger_tm->writes_failed, logger_tm->last_write_error, logger_tm->average_write_time, logger_tm->max_write_time);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOGGER_TM, (const char *)logger_tm, MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN, MAVLINK_MSG_ID_LOGGER_TM_LEN, MAVLINK_MSG_ID_LOGGER_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_LOGGER_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_logger_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, int16_t log_number, int32_t too_large_samples, int32_t dropped_samples, int32_t queued_samples, int32_t buffers_filled, int32_t buffers_written, int32_t writes_failed, int32_t last_write_error, int32_t average_write_time, int32_t max_write_time)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_int32_t(buf, 8, too_large_samples);
+    _mav_put_int32_t(buf, 12, dropped_samples);
+    _mav_put_int32_t(buf, 16, queued_samples);
+    _mav_put_int32_t(buf, 20, buffers_filled);
+    _mav_put_int32_t(buf, 24, buffers_written);
+    _mav_put_int32_t(buf, 28, writes_failed);
+    _mav_put_int32_t(buf, 32, last_write_error);
+    _mav_put_int32_t(buf, 36, average_write_time);
+    _mav_put_int32_t(buf, 40, max_write_time);
+    _mav_put_int16_t(buf, 44, log_number);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOGGER_TM, buf, MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN, MAVLINK_MSG_ID_LOGGER_TM_LEN, MAVLINK_MSG_ID_LOGGER_TM_CRC);
+#else
+    mavlink_logger_tm_t *packet = (mavlink_logger_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->too_large_samples = too_large_samples;
+    packet->dropped_samples = dropped_samples;
+    packet->queued_samples = queued_samples;
+    packet->buffers_filled = buffers_filled;
+    packet->buffers_written = buffers_written;
+    packet->writes_failed = writes_failed;
+    packet->last_write_error = last_write_error;
+    packet->average_write_time = average_write_time;
+    packet->max_write_time = max_write_time;
+    packet->log_number = log_number;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LOGGER_TM, (const char *)packet, MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN, MAVLINK_MSG_ID_LOGGER_TM_LEN, MAVLINK_MSG_ID_LOGGER_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE LOGGER_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from logger_tm message
+ *
+ * @return [us] Timestamp
+ */
+static inline uint64_t mavlink_msg_logger_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field log_number from logger_tm message
+ *
+ * @return  Currently active log file, -1 if the logger is inactive
+ */
+static inline int16_t mavlink_msg_logger_tm_get_log_number(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int16_t(msg,  44);
+}
+
+/**
+ * @brief Get field too_large_samples from logger_tm message
+ *
+ * @return  Number of dropped samples because too large
+ */
+static inline int32_t mavlink_msg_logger_tm_get_too_large_samples(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  8);
+}
+
+/**
+ * @brief Get field dropped_samples from logger_tm message
+ *
+ * @return  Number of dropped samples due to fifo full
+ */
+static inline int32_t mavlink_msg_logger_tm_get_dropped_samples(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  12);
+}
+
+/**
+ * @brief Get field queued_samples from logger_tm message
+ *
+ * @return  Number of samples written to buffer
+ */
+static inline int32_t mavlink_msg_logger_tm_get_queued_samples(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  16);
+}
+
+/**
+ * @brief Get field buffers_filled from logger_tm message
+ *
+ * @return  Number of buffers filled
+ */
+static inline int32_t mavlink_msg_logger_tm_get_buffers_filled(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  20);
+}
+
+/**
+ * @brief Get field buffers_written from logger_tm message
+ *
+ * @return  Number of buffers written to disk
+ */
+static inline int32_t mavlink_msg_logger_tm_get_buffers_written(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  24);
+}
+
+/**
+ * @brief Get field writes_failed from logger_tm message
+ *
+ * @return  Number of fwrite() that failed
+ */
+static inline int32_t mavlink_msg_logger_tm_get_writes_failed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  28);
+}
+
+/**
+ * @brief Get field last_write_error from logger_tm message
+ *
+ * @return  Error of the last fwrite() that failed
+ */
+static inline int32_t mavlink_msg_logger_tm_get_last_write_error(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  32);
+}
+
+/**
+ * @brief Get field average_write_time from logger_tm message
+ *
+ * @return  Average time to perform an fwrite() of a buffer
+ */
+static inline int32_t mavlink_msg_logger_tm_get_average_write_time(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  36);
+}
+
+/**
+ * @brief Get field max_write_time from logger_tm message
+ *
+ * @return  Max time to perform an fwrite() of a buffer
+ */
+static inline int32_t mavlink_msg_logger_tm_get_max_write_time(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  40);
+}
+
+/**
+ * @brief Decode a logger_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param logger_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_logger_tm_decode(const mavlink_message_t* msg, mavlink_logger_tm_t* logger_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    logger_tm->timestamp = mavlink_msg_logger_tm_get_timestamp(msg);
+    logger_tm->too_large_samples = mavlink_msg_logger_tm_get_too_large_samples(msg);
+    logger_tm->dropped_samples = mavlink_msg_logger_tm_get_dropped_samples(msg);
+    logger_tm->queued_samples = mavlink_msg_logger_tm_get_queued_samples(msg);
+    logger_tm->buffers_filled = mavlink_msg_logger_tm_get_buffers_filled(msg);
+    logger_tm->buffers_written = mavlink_msg_logger_tm_get_buffers_written(msg);
+    logger_tm->writes_failed = mavlink_msg_logger_tm_get_writes_failed(msg);
+    logger_tm->last_write_error = mavlink_msg_logger_tm_get_last_write_error(msg);
+    logger_tm->average_write_time = mavlink_msg_logger_tm_get_average_write_time(msg);
+    logger_tm->max_write_time = mavlink_msg_logger_tm_get_max_write_time(msg);
+    logger_tm->log_number = mavlink_msg_logger_tm_get_log_number(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_LOGGER_TM_LEN? msg->len : MAVLINK_MSG_ID_LOGGER_TM_LEN;
+        memset(logger_tm, 0, MAVLINK_MSG_ID_LOGGER_TM_LEN);
+    memcpy(logger_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_mavlink_stats_tm.h b/mavlink_lib/orion/mavlink_msg_mavlink_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..70bc63247f7ab08a34c0bcd15cae5d11c7727100
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_mavlink_stats_tm.h
@@ -0,0 +1,513 @@
+#pragma once
+// MESSAGE MAVLINK_STATS_TM PACKING
+
+#define MAVLINK_MSG_ID_MAVLINK_STATS_TM 202
+
+
+typedef struct __mavlink_mavlink_stats_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged */
+ uint32_t parse_state; /*<   Parsing state machine*/
+ uint16_t n_send_queue; /*<  Current len of the occupied portion of the queue*/
+ uint16_t max_send_queue; /*<  Max occupied len of the queue */
+ uint16_t n_send_errors; /*<  Number of packet not sent correctly by the TMTC*/
+ uint16_t packet_rx_success_count; /*<   Received packets*/
+ uint16_t packet_rx_drop_count; /*<    Number of packet drops   */
+ uint8_t msg_received; /*<   Number of received messages*/
+ uint8_t buffer_overrun; /*<   Number of buffer overruns*/
+ uint8_t parse_error; /*<   Number of parse errors*/
+ uint8_t packet_idx; /*<   Index in current packet*/
+ uint8_t current_rx_seq; /*<   Sequence number of last packet received*/
+ uint8_t current_tx_seq; /*<   Sequence number of last packet sent  */
+} mavlink_mavlink_stats_tm_t;
+
+#define MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN 28
+#define MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN 28
+#define MAVLINK_MSG_ID_202_LEN 28
+#define MAVLINK_MSG_ID_202_MIN_LEN 28
+
+#define MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC 108
+#define MAVLINK_MSG_ID_202_CRC 108
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_MAVLINK_STATS_TM { \
+    202, \
+    "MAVLINK_STATS_TM", \
+    13, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_mavlink_stats_tm_t, timestamp) }, \
+         { "n_send_queue", NULL, MAVLINK_TYPE_UINT16_T, 0, 12, offsetof(mavlink_mavlink_stats_tm_t, n_send_queue) }, \
+         { "max_send_queue", NULL, MAVLINK_TYPE_UINT16_T, 0, 14, offsetof(mavlink_mavlink_stats_tm_t, max_send_queue) }, \
+         { "n_send_errors", NULL, MAVLINK_TYPE_UINT16_T, 0, 16, offsetof(mavlink_mavlink_stats_tm_t, n_send_errors) }, \
+         { "msg_received", NULL, MAVLINK_TYPE_UINT8_T, 0, 22, offsetof(mavlink_mavlink_stats_tm_t, msg_received) }, \
+         { "buffer_overrun", NULL, MAVLINK_TYPE_UINT8_T, 0, 23, offsetof(mavlink_mavlink_stats_tm_t, buffer_overrun) }, \
+         { "parse_error", NULL, MAVLINK_TYPE_UINT8_T, 0, 24, offsetof(mavlink_mavlink_stats_tm_t, parse_error) }, \
+         { "parse_state", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_mavlink_stats_tm_t, parse_state) }, \
+         { "packet_idx", NULL, MAVLINK_TYPE_UINT8_T, 0, 25, offsetof(mavlink_mavlink_stats_tm_t, packet_idx) }, \
+         { "current_rx_seq", NULL, MAVLINK_TYPE_UINT8_T, 0, 26, offsetof(mavlink_mavlink_stats_tm_t, current_rx_seq) }, \
+         { "current_tx_seq", NULL, MAVLINK_TYPE_UINT8_T, 0, 27, offsetof(mavlink_mavlink_stats_tm_t, current_tx_seq) }, \
+         { "packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 18, offsetof(mavlink_mavlink_stats_tm_t, packet_rx_success_count) }, \
+         { "packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 20, offsetof(mavlink_mavlink_stats_tm_t, packet_rx_drop_count) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_MAVLINK_STATS_TM { \
+    "MAVLINK_STATS_TM", \
+    13, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_mavlink_stats_tm_t, timestamp) }, \
+         { "n_send_queue", NULL, MAVLINK_TYPE_UINT16_T, 0, 12, offsetof(mavlink_mavlink_stats_tm_t, n_send_queue) }, \
+         { "max_send_queue", NULL, MAVLINK_TYPE_UINT16_T, 0, 14, offsetof(mavlink_mavlink_stats_tm_t, max_send_queue) }, \
+         { "n_send_errors", NULL, MAVLINK_TYPE_UINT16_T, 0, 16, offsetof(mavlink_mavlink_stats_tm_t, n_send_errors) }, \
+         { "msg_received", NULL, MAVLINK_TYPE_UINT8_T, 0, 22, offsetof(mavlink_mavlink_stats_tm_t, msg_received) }, \
+         { "buffer_overrun", NULL, MAVLINK_TYPE_UINT8_T, 0, 23, offsetof(mavlink_mavlink_stats_tm_t, buffer_overrun) }, \
+         { "parse_error", NULL, MAVLINK_TYPE_UINT8_T, 0, 24, offsetof(mavlink_mavlink_stats_tm_t, parse_error) }, \
+         { "parse_state", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_mavlink_stats_tm_t, parse_state) }, \
+         { "packet_idx", NULL, MAVLINK_TYPE_UINT8_T, 0, 25, offsetof(mavlink_mavlink_stats_tm_t, packet_idx) }, \
+         { "current_rx_seq", NULL, MAVLINK_TYPE_UINT8_T, 0, 26, offsetof(mavlink_mavlink_stats_tm_t, current_rx_seq) }, \
+         { "current_tx_seq", NULL, MAVLINK_TYPE_UINT8_T, 0, 27, offsetof(mavlink_mavlink_stats_tm_t, current_tx_seq) }, \
+         { "packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 18, offsetof(mavlink_mavlink_stats_tm_t, packet_rx_success_count) }, \
+         { "packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 20, offsetof(mavlink_mavlink_stats_tm_t, packet_rx_drop_count) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a mavlink_stats_tm 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 timestamp [us] When was this logged 
+ * @param n_send_queue  Current len of the occupied portion of the queue
+ * @param max_send_queue  Max occupied len of the queue 
+ * @param n_send_errors  Number of packet not sent correctly by the TMTC
+ * @param msg_received   Number of received messages
+ * @param buffer_overrun   Number of buffer overruns
+ * @param parse_error   Number of parse errors
+ * @param parse_state   Parsing state machine
+ * @param packet_idx   Index in current packet
+ * @param current_rx_seq   Sequence number of last packet received
+ * @param current_tx_seq   Sequence number of last packet sent  
+ * @param packet_rx_success_count   Received packets
+ * @param packet_rx_drop_count    Number of packet drops   
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint16_t n_send_queue, uint16_t max_send_queue, uint16_t n_send_errors, uint8_t msg_received, uint8_t buffer_overrun, uint8_t parse_error, uint32_t parse_state, uint8_t packet_idx, uint8_t current_rx_seq, uint8_t current_tx_seq, uint16_t packet_rx_success_count, uint16_t packet_rx_drop_count)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, parse_state);
+    _mav_put_uint16_t(buf, 12, n_send_queue);
+    _mav_put_uint16_t(buf, 14, max_send_queue);
+    _mav_put_uint16_t(buf, 16, n_send_errors);
+    _mav_put_uint16_t(buf, 18, packet_rx_success_count);
+    _mav_put_uint16_t(buf, 20, packet_rx_drop_count);
+    _mav_put_uint8_t(buf, 22, msg_received);
+    _mav_put_uint8_t(buf, 23, buffer_overrun);
+    _mav_put_uint8_t(buf, 24, parse_error);
+    _mav_put_uint8_t(buf, 25, packet_idx);
+    _mav_put_uint8_t(buf, 26, current_rx_seq);
+    _mav_put_uint8_t(buf, 27, current_tx_seq);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN);
+#else
+    mavlink_mavlink_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.parse_state = parse_state;
+    packet.n_send_queue = n_send_queue;
+    packet.max_send_queue = max_send_queue;
+    packet.n_send_errors = n_send_errors;
+    packet.packet_rx_success_count = packet_rx_success_count;
+    packet.packet_rx_drop_count = packet_rx_drop_count;
+    packet.msg_received = msg_received;
+    packet.buffer_overrun = buffer_overrun;
+    packet.parse_error = parse_error;
+    packet.packet_idx = packet_idx;
+    packet.current_rx_seq = current_rx_seq;
+    packet.current_tx_seq = current_tx_seq;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_MAVLINK_STATS_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC);
+}
+
+/**
+ * @brief Pack a mavlink_stats_tm 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 timestamp [us] When was this logged 
+ * @param n_send_queue  Current len of the occupied portion of the queue
+ * @param max_send_queue  Max occupied len of the queue 
+ * @param n_send_errors  Number of packet not sent correctly by the TMTC
+ * @param msg_received   Number of received messages
+ * @param buffer_overrun   Number of buffer overruns
+ * @param parse_error   Number of parse errors
+ * @param parse_state   Parsing state machine
+ * @param packet_idx   Index in current packet
+ * @param current_rx_seq   Sequence number of last packet received
+ * @param current_tx_seq   Sequence number of last packet sent  
+ * @param packet_rx_success_count   Received packets
+ * @param packet_rx_drop_count    Number of packet drops   
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint16_t n_send_queue,uint16_t max_send_queue,uint16_t n_send_errors,uint8_t msg_received,uint8_t buffer_overrun,uint8_t parse_error,uint32_t parse_state,uint8_t packet_idx,uint8_t current_rx_seq,uint8_t current_tx_seq,uint16_t packet_rx_success_count,uint16_t packet_rx_drop_count)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, parse_state);
+    _mav_put_uint16_t(buf, 12, n_send_queue);
+    _mav_put_uint16_t(buf, 14, max_send_queue);
+    _mav_put_uint16_t(buf, 16, n_send_errors);
+    _mav_put_uint16_t(buf, 18, packet_rx_success_count);
+    _mav_put_uint16_t(buf, 20, packet_rx_drop_count);
+    _mav_put_uint8_t(buf, 22, msg_received);
+    _mav_put_uint8_t(buf, 23, buffer_overrun);
+    _mav_put_uint8_t(buf, 24, parse_error);
+    _mav_put_uint8_t(buf, 25, packet_idx);
+    _mav_put_uint8_t(buf, 26, current_rx_seq);
+    _mav_put_uint8_t(buf, 27, current_tx_seq);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN);
+#else
+    mavlink_mavlink_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.parse_state = parse_state;
+    packet.n_send_queue = n_send_queue;
+    packet.max_send_queue = max_send_queue;
+    packet.n_send_errors = n_send_errors;
+    packet.packet_rx_success_count = packet_rx_success_count;
+    packet.packet_rx_drop_count = packet_rx_drop_count;
+    packet.msg_received = msg_received;
+    packet.buffer_overrun = buffer_overrun;
+    packet.parse_error = parse_error;
+    packet.packet_idx = packet_idx;
+    packet.current_rx_seq = current_rx_seq;
+    packet.current_tx_seq = current_tx_seq;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_MAVLINK_STATS_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC);
+}
+
+/**
+ * @brief Encode a mavlink_stats_tm 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 mavlink_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_mavlink_stats_tm_t* mavlink_stats_tm)
+{
+    return mavlink_msg_mavlink_stats_tm_pack(system_id, component_id, msg, mavlink_stats_tm->timestamp, mavlink_stats_tm->n_send_queue, mavlink_stats_tm->max_send_queue, mavlink_stats_tm->n_send_errors, mavlink_stats_tm->msg_received, mavlink_stats_tm->buffer_overrun, mavlink_stats_tm->parse_error, mavlink_stats_tm->parse_state, mavlink_stats_tm->packet_idx, mavlink_stats_tm->current_rx_seq, mavlink_stats_tm->current_tx_seq, mavlink_stats_tm->packet_rx_success_count, mavlink_stats_tm->packet_rx_drop_count);
+}
+
+/**
+ * @brief Encode a mavlink_stats_tm 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 mavlink_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_mavlink_stats_tm_t* mavlink_stats_tm)
+{
+    return mavlink_msg_mavlink_stats_tm_pack_chan(system_id, component_id, chan, msg, mavlink_stats_tm->timestamp, mavlink_stats_tm->n_send_queue, mavlink_stats_tm->max_send_queue, mavlink_stats_tm->n_send_errors, mavlink_stats_tm->msg_received, mavlink_stats_tm->buffer_overrun, mavlink_stats_tm->parse_error, mavlink_stats_tm->parse_state, mavlink_stats_tm->packet_idx, mavlink_stats_tm->current_rx_seq, mavlink_stats_tm->current_tx_seq, mavlink_stats_tm->packet_rx_success_count, mavlink_stats_tm->packet_rx_drop_count);
+}
+
+/**
+ * @brief Send a mavlink_stats_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged 
+ * @param n_send_queue  Current len of the occupied portion of the queue
+ * @param max_send_queue  Max occupied len of the queue 
+ * @param n_send_errors  Number of packet not sent correctly by the TMTC
+ * @param msg_received   Number of received messages
+ * @param buffer_overrun   Number of buffer overruns
+ * @param parse_error   Number of parse errors
+ * @param parse_state   Parsing state machine
+ * @param packet_idx   Index in current packet
+ * @param current_rx_seq   Sequence number of last packet received
+ * @param current_tx_seq   Sequence number of last packet sent  
+ * @param packet_rx_success_count   Received packets
+ * @param packet_rx_drop_count    Number of packet drops   
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_mavlink_stats_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint16_t n_send_queue, uint16_t max_send_queue, uint16_t n_send_errors, uint8_t msg_received, uint8_t buffer_overrun, uint8_t parse_error, uint32_t parse_state, uint8_t packet_idx, uint8_t current_rx_seq, uint8_t current_tx_seq, uint16_t packet_rx_success_count, uint16_t packet_rx_drop_count)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, parse_state);
+    _mav_put_uint16_t(buf, 12, n_send_queue);
+    _mav_put_uint16_t(buf, 14, max_send_queue);
+    _mav_put_uint16_t(buf, 16, n_send_errors);
+    _mav_put_uint16_t(buf, 18, packet_rx_success_count);
+    _mav_put_uint16_t(buf, 20, packet_rx_drop_count);
+    _mav_put_uint8_t(buf, 22, msg_received);
+    _mav_put_uint8_t(buf, 23, buffer_overrun);
+    _mav_put_uint8_t(buf, 24, parse_error);
+    _mav_put_uint8_t(buf, 25, packet_idx);
+    _mav_put_uint8_t(buf, 26, current_rx_seq);
+    _mav_put_uint8_t(buf, 27, current_tx_seq);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MAVLINK_STATS_TM, buf, MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC);
+#else
+    mavlink_mavlink_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.parse_state = parse_state;
+    packet.n_send_queue = n_send_queue;
+    packet.max_send_queue = max_send_queue;
+    packet.n_send_errors = n_send_errors;
+    packet.packet_rx_success_count = packet_rx_success_count;
+    packet.packet_rx_drop_count = packet_rx_drop_count;
+    packet.msg_received = msg_received;
+    packet.buffer_overrun = buffer_overrun;
+    packet.parse_error = parse_error;
+    packet.packet_idx = packet_idx;
+    packet.current_rx_seq = current_rx_seq;
+    packet.current_tx_seq = current_tx_seq;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MAVLINK_STATS_TM, (const char *)&packet, MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a mavlink_stats_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_mavlink_stats_tm_send_struct(mavlink_channel_t chan, const mavlink_mavlink_stats_tm_t* mavlink_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_mavlink_stats_tm_send(chan, mavlink_stats_tm->timestamp, mavlink_stats_tm->n_send_queue, mavlink_stats_tm->max_send_queue, mavlink_stats_tm->n_send_errors, mavlink_stats_tm->msg_received, mavlink_stats_tm->buffer_overrun, mavlink_stats_tm->parse_error, mavlink_stats_tm->parse_state, mavlink_stats_tm->packet_idx, mavlink_stats_tm->current_rx_seq, mavlink_stats_tm->current_tx_seq, mavlink_stats_tm->packet_rx_success_count, mavlink_stats_tm->packet_rx_drop_count);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MAVLINK_STATS_TM, (const char *)mavlink_stats_tm, MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_mavlink_stats_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint16_t n_send_queue, uint16_t max_send_queue, uint16_t n_send_errors, uint8_t msg_received, uint8_t buffer_overrun, uint8_t parse_error, uint32_t parse_state, uint8_t packet_idx, uint8_t current_rx_seq, uint8_t current_tx_seq, uint16_t packet_rx_success_count, uint16_t packet_rx_drop_count)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, parse_state);
+    _mav_put_uint16_t(buf, 12, n_send_queue);
+    _mav_put_uint16_t(buf, 14, max_send_queue);
+    _mav_put_uint16_t(buf, 16, n_send_errors);
+    _mav_put_uint16_t(buf, 18, packet_rx_success_count);
+    _mav_put_uint16_t(buf, 20, packet_rx_drop_count);
+    _mav_put_uint8_t(buf, 22, msg_received);
+    _mav_put_uint8_t(buf, 23, buffer_overrun);
+    _mav_put_uint8_t(buf, 24, parse_error);
+    _mav_put_uint8_t(buf, 25, packet_idx);
+    _mav_put_uint8_t(buf, 26, current_rx_seq);
+    _mav_put_uint8_t(buf, 27, current_tx_seq);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MAVLINK_STATS_TM, buf, MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC);
+#else
+    mavlink_mavlink_stats_tm_t *packet = (mavlink_mavlink_stats_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->parse_state = parse_state;
+    packet->n_send_queue = n_send_queue;
+    packet->max_send_queue = max_send_queue;
+    packet->n_send_errors = n_send_errors;
+    packet->packet_rx_success_count = packet_rx_success_count;
+    packet->packet_rx_drop_count = packet_rx_drop_count;
+    packet->msg_received = msg_received;
+    packet->buffer_overrun = buffer_overrun;
+    packet->parse_error = parse_error;
+    packet->packet_idx = packet_idx;
+    packet->current_rx_seq = current_rx_seq;
+    packet->current_tx_seq = current_tx_seq;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MAVLINK_STATS_TM, (const char *)packet, MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN, MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE MAVLINK_STATS_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from mavlink_stats_tm message
+ *
+ * @return [us] When was this logged 
+ */
+static inline uint64_t mavlink_msg_mavlink_stats_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field n_send_queue from mavlink_stats_tm message
+ *
+ * @return  Current len of the occupied portion of the queue
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_get_n_send_queue(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  12);
+}
+
+/**
+ * @brief Get field max_send_queue from mavlink_stats_tm message
+ *
+ * @return  Max occupied len of the queue 
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_get_max_send_queue(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  14);
+}
+
+/**
+ * @brief Get field n_send_errors from mavlink_stats_tm message
+ *
+ * @return  Number of packet not sent correctly by the TMTC
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_get_n_send_errors(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  16);
+}
+
+/**
+ * @brief Get field msg_received from mavlink_stats_tm message
+ *
+ * @return   Number of received messages
+ */
+static inline uint8_t mavlink_msg_mavlink_stats_tm_get_msg_received(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  22);
+}
+
+/**
+ * @brief Get field buffer_overrun from mavlink_stats_tm message
+ *
+ * @return   Number of buffer overruns
+ */
+static inline uint8_t mavlink_msg_mavlink_stats_tm_get_buffer_overrun(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  23);
+}
+
+/**
+ * @brief Get field parse_error from mavlink_stats_tm message
+ *
+ * @return   Number of parse errors
+ */
+static inline uint8_t mavlink_msg_mavlink_stats_tm_get_parse_error(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  24);
+}
+
+/**
+ * @brief Get field parse_state from mavlink_stats_tm message
+ *
+ * @return   Parsing state machine
+ */
+static inline uint32_t mavlink_msg_mavlink_stats_tm_get_parse_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  8);
+}
+
+/**
+ * @brief Get field packet_idx from mavlink_stats_tm message
+ *
+ * @return   Index in current packet
+ */
+static inline uint8_t mavlink_msg_mavlink_stats_tm_get_packet_idx(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  25);
+}
+
+/**
+ * @brief Get field current_rx_seq from mavlink_stats_tm message
+ *
+ * @return   Sequence number of last packet received
+ */
+static inline uint8_t mavlink_msg_mavlink_stats_tm_get_current_rx_seq(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  26);
+}
+
+/**
+ * @brief Get field current_tx_seq from mavlink_stats_tm message
+ *
+ * @return   Sequence number of last packet sent  
+ */
+static inline uint8_t mavlink_msg_mavlink_stats_tm_get_current_tx_seq(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  27);
+}
+
+/**
+ * @brief Get field packet_rx_success_count from mavlink_stats_tm message
+ *
+ * @return   Received packets
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_get_packet_rx_success_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  18);
+}
+
+/**
+ * @brief Get field packet_rx_drop_count from mavlink_stats_tm message
+ *
+ * @return    Number of packet drops   
+ */
+static inline uint16_t mavlink_msg_mavlink_stats_tm_get_packet_rx_drop_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  20);
+}
+
+/**
+ * @brief Decode a mavlink_stats_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param mavlink_stats_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_mavlink_stats_tm_decode(const mavlink_message_t* msg, mavlink_mavlink_stats_tm_t* mavlink_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_stats_tm->timestamp = mavlink_msg_mavlink_stats_tm_get_timestamp(msg);
+    mavlink_stats_tm->parse_state = mavlink_msg_mavlink_stats_tm_get_parse_state(msg);
+    mavlink_stats_tm->n_send_queue = mavlink_msg_mavlink_stats_tm_get_n_send_queue(msg);
+    mavlink_stats_tm->max_send_queue = mavlink_msg_mavlink_stats_tm_get_max_send_queue(msg);
+    mavlink_stats_tm->n_send_errors = mavlink_msg_mavlink_stats_tm_get_n_send_errors(msg);
+    mavlink_stats_tm->packet_rx_success_count = mavlink_msg_mavlink_stats_tm_get_packet_rx_success_count(msg);
+    mavlink_stats_tm->packet_rx_drop_count = mavlink_msg_mavlink_stats_tm_get_packet_rx_drop_count(msg);
+    mavlink_stats_tm->msg_received = mavlink_msg_mavlink_stats_tm_get_msg_received(msg);
+    mavlink_stats_tm->buffer_overrun = mavlink_msg_mavlink_stats_tm_get_buffer_overrun(msg);
+    mavlink_stats_tm->parse_error = mavlink_msg_mavlink_stats_tm_get_parse_error(msg);
+    mavlink_stats_tm->packet_idx = mavlink_msg_mavlink_stats_tm_get_packet_idx(msg);
+    mavlink_stats_tm->current_rx_seq = mavlink_msg_mavlink_stats_tm_get_current_rx_seq(msg);
+    mavlink_stats_tm->current_tx_seq = mavlink_msg_mavlink_stats_tm_get_current_tx_seq(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN? msg->len : MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN;
+        memset(mavlink_stats_tm, 0, MAVLINK_MSG_ID_MAVLINK_STATS_TM_LEN);
+    memcpy(mavlink_stats_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_mea_tm.h b/mavlink_lib/orion/mavlink_msg_mea_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..dafa6490105c6b3af62244e0c8c1f29b73d00d4b
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_mea_tm.h
@@ -0,0 +1,363 @@
+#pragma once
+// MESSAGE MEA_TM PACKING
+
+#define MAVLINK_MSG_ID_MEA_TM 207
+
+
+typedef struct __mavlink_mea_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float kalman_x0; /*<  Kalman state variable 0 (corrected pressure)*/
+ float kalman_x1; /*<  Kalman state variable 1 */
+ float kalman_x2; /*<  Kalman state variable 2 (mass)*/
+ float mass; /*< [kg] Mass estimated*/
+ float corrected_pressure; /*< [Pa] Corrected pressure*/
+ uint8_t state; /*<  MEA current state*/
+} mavlink_mea_tm_t;
+
+#define MAVLINK_MSG_ID_MEA_TM_LEN 29
+#define MAVLINK_MSG_ID_MEA_TM_MIN_LEN 29
+#define MAVLINK_MSG_ID_207_LEN 29
+#define MAVLINK_MSG_ID_207_MIN_LEN 29
+
+#define MAVLINK_MSG_ID_MEA_TM_CRC 11
+#define MAVLINK_MSG_ID_207_CRC 11
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_MEA_TM { \
+    207, \
+    "MEA_TM", \
+    7, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_mea_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 28, offsetof(mavlink_mea_tm_t, state) }, \
+         { "kalman_x0", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_mea_tm_t, kalman_x0) }, \
+         { "kalman_x1", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_mea_tm_t, kalman_x1) }, \
+         { "kalman_x2", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_mea_tm_t, kalman_x2) }, \
+         { "mass", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_mea_tm_t, mass) }, \
+         { "corrected_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_mea_tm_t, corrected_pressure) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_MEA_TM { \
+    "MEA_TM", \
+    7, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_mea_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 28, offsetof(mavlink_mea_tm_t, state) }, \
+         { "kalman_x0", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_mea_tm_t, kalman_x0) }, \
+         { "kalman_x1", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_mea_tm_t, kalman_x1) }, \
+         { "kalman_x2", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_mea_tm_t, kalman_x2) }, \
+         { "mass", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_mea_tm_t, mass) }, \
+         { "corrected_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_mea_tm_t, corrected_pressure) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a mea_tm 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 timestamp [us] When was this logged
+ * @param state  MEA current state
+ * @param kalman_x0  Kalman state variable 0 (corrected pressure)
+ * @param kalman_x1  Kalman state variable 1 
+ * @param kalman_x2  Kalman state variable 2 (mass)
+ * @param mass [kg] Mass estimated
+ * @param corrected_pressure [Pa] Corrected pressure
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_mea_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint8_t state, float kalman_x0, float kalman_x1, float kalman_x2, float mass, float corrected_pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MEA_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, kalman_x0);
+    _mav_put_float(buf, 12, kalman_x1);
+    _mav_put_float(buf, 16, kalman_x2);
+    _mav_put_float(buf, 20, mass);
+    _mav_put_float(buf, 24, corrected_pressure);
+    _mav_put_uint8_t(buf, 28, state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_MEA_TM_LEN);
+#else
+    mavlink_mea_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.kalman_x0 = kalman_x0;
+    packet.kalman_x1 = kalman_x1;
+    packet.kalman_x2 = kalman_x2;
+    packet.mass = mass;
+    packet.corrected_pressure = corrected_pressure;
+    packet.state = state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_MEA_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_MEA_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_MEA_TM_MIN_LEN, MAVLINK_MSG_ID_MEA_TM_LEN, MAVLINK_MSG_ID_MEA_TM_CRC);
+}
+
+/**
+ * @brief Pack a mea_tm 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 timestamp [us] When was this logged
+ * @param state  MEA current state
+ * @param kalman_x0  Kalman state variable 0 (corrected pressure)
+ * @param kalman_x1  Kalman state variable 1 
+ * @param kalman_x2  Kalman state variable 2 (mass)
+ * @param mass [kg] Mass estimated
+ * @param corrected_pressure [Pa] Corrected pressure
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_mea_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint8_t state,float kalman_x0,float kalman_x1,float kalman_x2,float mass,float corrected_pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MEA_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, kalman_x0);
+    _mav_put_float(buf, 12, kalman_x1);
+    _mav_put_float(buf, 16, kalman_x2);
+    _mav_put_float(buf, 20, mass);
+    _mav_put_float(buf, 24, corrected_pressure);
+    _mav_put_uint8_t(buf, 28, state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_MEA_TM_LEN);
+#else
+    mavlink_mea_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.kalman_x0 = kalman_x0;
+    packet.kalman_x1 = kalman_x1;
+    packet.kalman_x2 = kalman_x2;
+    packet.mass = mass;
+    packet.corrected_pressure = corrected_pressure;
+    packet.state = state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_MEA_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_MEA_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_MEA_TM_MIN_LEN, MAVLINK_MSG_ID_MEA_TM_LEN, MAVLINK_MSG_ID_MEA_TM_CRC);
+}
+
+/**
+ * @brief Encode a mea_tm 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 mea_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_mea_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_mea_tm_t* mea_tm)
+{
+    return mavlink_msg_mea_tm_pack(system_id, component_id, msg, mea_tm->timestamp, mea_tm->state, mea_tm->kalman_x0, mea_tm->kalman_x1, mea_tm->kalman_x2, mea_tm->mass, mea_tm->corrected_pressure);
+}
+
+/**
+ * @brief Encode a mea_tm 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 mea_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_mea_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_mea_tm_t* mea_tm)
+{
+    return mavlink_msg_mea_tm_pack_chan(system_id, component_id, chan, msg, mea_tm->timestamp, mea_tm->state, mea_tm->kalman_x0, mea_tm->kalman_x1, mea_tm->kalman_x2, mea_tm->mass, mea_tm->corrected_pressure);
+}
+
+/**
+ * @brief Send a mea_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param state  MEA current state
+ * @param kalman_x0  Kalman state variable 0 (corrected pressure)
+ * @param kalman_x1  Kalman state variable 1 
+ * @param kalman_x2  Kalman state variable 2 (mass)
+ * @param mass [kg] Mass estimated
+ * @param corrected_pressure [Pa] Corrected pressure
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_mea_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t state, float kalman_x0, float kalman_x1, float kalman_x2, float mass, float corrected_pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MEA_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, kalman_x0);
+    _mav_put_float(buf, 12, kalman_x1);
+    _mav_put_float(buf, 16, kalman_x2);
+    _mav_put_float(buf, 20, mass);
+    _mav_put_float(buf, 24, corrected_pressure);
+    _mav_put_uint8_t(buf, 28, state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MEA_TM, buf, MAVLINK_MSG_ID_MEA_TM_MIN_LEN, MAVLINK_MSG_ID_MEA_TM_LEN, MAVLINK_MSG_ID_MEA_TM_CRC);
+#else
+    mavlink_mea_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.kalman_x0 = kalman_x0;
+    packet.kalman_x1 = kalman_x1;
+    packet.kalman_x2 = kalman_x2;
+    packet.mass = mass;
+    packet.corrected_pressure = corrected_pressure;
+    packet.state = state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MEA_TM, (const char *)&packet, MAVLINK_MSG_ID_MEA_TM_MIN_LEN, MAVLINK_MSG_ID_MEA_TM_LEN, MAVLINK_MSG_ID_MEA_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a mea_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_mea_tm_send_struct(mavlink_channel_t chan, const mavlink_mea_tm_t* mea_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_mea_tm_send(chan, mea_tm->timestamp, mea_tm->state, mea_tm->kalman_x0, mea_tm->kalman_x1, mea_tm->kalman_x2, mea_tm->mass, mea_tm->corrected_pressure);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MEA_TM, (const char *)mea_tm, MAVLINK_MSG_ID_MEA_TM_MIN_LEN, MAVLINK_MSG_ID_MEA_TM_LEN, MAVLINK_MSG_ID_MEA_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_MEA_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_mea_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint8_t state, float kalman_x0, float kalman_x1, float kalman_x2, float mass, float corrected_pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, kalman_x0);
+    _mav_put_float(buf, 12, kalman_x1);
+    _mav_put_float(buf, 16, kalman_x2);
+    _mav_put_float(buf, 20, mass);
+    _mav_put_float(buf, 24, corrected_pressure);
+    _mav_put_uint8_t(buf, 28, state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MEA_TM, buf, MAVLINK_MSG_ID_MEA_TM_MIN_LEN, MAVLINK_MSG_ID_MEA_TM_LEN, MAVLINK_MSG_ID_MEA_TM_CRC);
+#else
+    mavlink_mea_tm_t *packet = (mavlink_mea_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->kalman_x0 = kalman_x0;
+    packet->kalman_x1 = kalman_x1;
+    packet->kalman_x2 = kalman_x2;
+    packet->mass = mass;
+    packet->corrected_pressure = corrected_pressure;
+    packet->state = state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MEA_TM, (const char *)packet, MAVLINK_MSG_ID_MEA_TM_MIN_LEN, MAVLINK_MSG_ID_MEA_TM_LEN, MAVLINK_MSG_ID_MEA_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE MEA_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from mea_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_mea_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field state from mea_tm message
+ *
+ * @return  MEA current state
+ */
+static inline uint8_t mavlink_msg_mea_tm_get_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  28);
+}
+
+/**
+ * @brief Get field kalman_x0 from mea_tm message
+ *
+ * @return  Kalman state variable 0 (corrected pressure)
+ */
+static inline float mavlink_msg_mea_tm_get_kalman_x0(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field kalman_x1 from mea_tm message
+ *
+ * @return  Kalman state variable 1 
+ */
+static inline float mavlink_msg_mea_tm_get_kalman_x1(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field kalman_x2 from mea_tm message
+ *
+ * @return  Kalman state variable 2 (mass)
+ */
+static inline float mavlink_msg_mea_tm_get_kalman_x2(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field mass from mea_tm message
+ *
+ * @return [kg] Mass estimated
+ */
+static inline float mavlink_msg_mea_tm_get_mass(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field corrected_pressure from mea_tm message
+ *
+ * @return [Pa] Corrected pressure
+ */
+static inline float mavlink_msg_mea_tm_get_corrected_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Decode a mea_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param mea_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_mea_tm_decode(const mavlink_message_t* msg, mavlink_mea_tm_t* mea_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mea_tm->timestamp = mavlink_msg_mea_tm_get_timestamp(msg);
+    mea_tm->kalman_x0 = mavlink_msg_mea_tm_get_kalman_x0(msg);
+    mea_tm->kalman_x1 = mavlink_msg_mea_tm_get_kalman_x1(msg);
+    mea_tm->kalman_x2 = mavlink_msg_mea_tm_get_kalman_x2(msg);
+    mea_tm->mass = mavlink_msg_mea_tm_get_mass(msg);
+    mea_tm->corrected_pressure = mavlink_msg_mea_tm_get_corrected_pressure(msg);
+    mea_tm->state = mavlink_msg_mea_tm_get_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_MEA_TM_LEN? msg->len : MAVLINK_MSG_ID_MEA_TM_LEN;
+        memset(mea_tm, 0, MAVLINK_MSG_ID_MEA_TM_LEN);
+    memcpy(mea_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_motor_tm.h b/mavlink_lib/orion/mavlink_msg_motor_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..42a26a13161d0556257cd6bdd12bfe38a5882460
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_motor_tm.h
@@ -0,0 +1,463 @@
+#pragma once
+// MESSAGE MOTOR_TM PACKING
+
+#define MAVLINK_MSG_ID_MOTOR_TM 213
+
+
+typedef struct __mavlink_motor_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp in microseconds*/
+ float top_tank_pressure; /*< [Bar] Tank upper pressure*/
+ float bottom_tank_pressure; /*< [Bar] Tank bottom pressure*/
+ float combustion_chamber_pressure; /*< [Bar] Pressure inside the combustion chamber used for automatic shutdown*/
+ float tank_temperature; /*<  Tank temperature*/
+ float battery_voltage; /*< [V] Battery voltage*/
+ int32_t log_good; /*<  0 if log failed, 1 otherwise*/
+ int16_t log_number; /*<  Currently active log file, -1 if the logger is inactive*/
+ uint8_t main_valve_state; /*<  1 If the main valve is open */
+ uint8_t venting_valve_state; /*<  1 If the venting valve is open */
+ uint8_t hil_state; /*<  1 if the board is currently in HIL mode*/
+} mavlink_motor_tm_t;
+
+#define MAVLINK_MSG_ID_MOTOR_TM_LEN 37
+#define MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN 37
+#define MAVLINK_MSG_ID_213_LEN 37
+#define MAVLINK_MSG_ID_213_MIN_LEN 37
+
+#define MAVLINK_MSG_ID_MOTOR_TM_CRC 67
+#define MAVLINK_MSG_ID_213_CRC 67
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_MOTOR_TM { \
+    213, \
+    "MOTOR_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_motor_tm_t, timestamp) }, \
+         { "top_tank_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_motor_tm_t, top_tank_pressure) }, \
+         { "bottom_tank_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_motor_tm_t, bottom_tank_pressure) }, \
+         { "combustion_chamber_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_motor_tm_t, combustion_chamber_pressure) }, \
+         { "tank_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_motor_tm_t, tank_temperature) }, \
+         { "main_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 34, offsetof(mavlink_motor_tm_t, main_valve_state) }, \
+         { "venting_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 35, offsetof(mavlink_motor_tm_t, venting_valve_state) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_motor_tm_t, battery_voltage) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 32, offsetof(mavlink_motor_tm_t, log_number) }, \
+         { "log_good", NULL, MAVLINK_TYPE_INT32_T, 0, 28, offsetof(mavlink_motor_tm_t, log_good) }, \
+         { "hil_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 36, offsetof(mavlink_motor_tm_t, hil_state) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_MOTOR_TM { \
+    "MOTOR_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_motor_tm_t, timestamp) }, \
+         { "top_tank_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_motor_tm_t, top_tank_pressure) }, \
+         { "bottom_tank_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_motor_tm_t, bottom_tank_pressure) }, \
+         { "combustion_chamber_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_motor_tm_t, combustion_chamber_pressure) }, \
+         { "tank_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_motor_tm_t, tank_temperature) }, \
+         { "main_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 34, offsetof(mavlink_motor_tm_t, main_valve_state) }, \
+         { "venting_valve_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 35, offsetof(mavlink_motor_tm_t, venting_valve_state) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_motor_tm_t, battery_voltage) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 32, offsetof(mavlink_motor_tm_t, log_number) }, \
+         { "log_good", NULL, MAVLINK_TYPE_INT32_T, 0, 28, offsetof(mavlink_motor_tm_t, log_good) }, \
+         { "hil_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 36, offsetof(mavlink_motor_tm_t, hil_state) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a motor_tm 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 timestamp [us] Timestamp in microseconds
+ * @param top_tank_pressure [Bar] Tank upper pressure
+ * @param bottom_tank_pressure [Bar] Tank bottom pressure
+ * @param combustion_chamber_pressure [Bar] Pressure inside the combustion chamber used for automatic shutdown
+ * @param tank_temperature  Tank temperature
+ * @param main_valve_state  1 If the main valve is open 
+ * @param venting_valve_state  1 If the venting valve is open 
+ * @param battery_voltage [V] Battery voltage
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param hil_state  1 if the board is currently in HIL mode
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_motor_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, float top_tank_pressure, float bottom_tank_pressure, float combustion_chamber_pressure, float tank_temperature, uint8_t main_valve_state, uint8_t venting_valve_state, float battery_voltage, int16_t log_number, int32_t log_good, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MOTOR_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, top_tank_pressure);
+    _mav_put_float(buf, 12, bottom_tank_pressure);
+    _mav_put_float(buf, 16, combustion_chamber_pressure);
+    _mav_put_float(buf, 20, tank_temperature);
+    _mav_put_float(buf, 24, battery_voltage);
+    _mav_put_int32_t(buf, 28, log_good);
+    _mav_put_int16_t(buf, 32, log_number);
+    _mav_put_uint8_t(buf, 34, main_valve_state);
+    _mav_put_uint8_t(buf, 35, venting_valve_state);
+    _mav_put_uint8_t(buf, 36, hil_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_MOTOR_TM_LEN);
+#else
+    mavlink_motor_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.top_tank_pressure = top_tank_pressure;
+    packet.bottom_tank_pressure = bottom_tank_pressure;
+    packet.combustion_chamber_pressure = combustion_chamber_pressure;
+    packet.tank_temperature = tank_temperature;
+    packet.battery_voltage = battery_voltage;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.main_valve_state = main_valve_state;
+    packet.venting_valve_state = venting_valve_state;
+    packet.hil_state = hil_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_MOTOR_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_MOTOR_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN, MAVLINK_MSG_ID_MOTOR_TM_LEN, MAVLINK_MSG_ID_MOTOR_TM_CRC);
+}
+
+/**
+ * @brief Pack a motor_tm 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 timestamp [us] Timestamp in microseconds
+ * @param top_tank_pressure [Bar] Tank upper pressure
+ * @param bottom_tank_pressure [Bar] Tank bottom pressure
+ * @param combustion_chamber_pressure [Bar] Pressure inside the combustion chamber used for automatic shutdown
+ * @param tank_temperature  Tank temperature
+ * @param main_valve_state  1 If the main valve is open 
+ * @param venting_valve_state  1 If the venting valve is open 
+ * @param battery_voltage [V] Battery voltage
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param hil_state  1 if the board is currently in HIL mode
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_motor_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,float top_tank_pressure,float bottom_tank_pressure,float combustion_chamber_pressure,float tank_temperature,uint8_t main_valve_state,uint8_t venting_valve_state,float battery_voltage,int16_t log_number,int32_t log_good,uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MOTOR_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, top_tank_pressure);
+    _mav_put_float(buf, 12, bottom_tank_pressure);
+    _mav_put_float(buf, 16, combustion_chamber_pressure);
+    _mav_put_float(buf, 20, tank_temperature);
+    _mav_put_float(buf, 24, battery_voltage);
+    _mav_put_int32_t(buf, 28, log_good);
+    _mav_put_int16_t(buf, 32, log_number);
+    _mav_put_uint8_t(buf, 34, main_valve_state);
+    _mav_put_uint8_t(buf, 35, venting_valve_state);
+    _mav_put_uint8_t(buf, 36, hil_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_MOTOR_TM_LEN);
+#else
+    mavlink_motor_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.top_tank_pressure = top_tank_pressure;
+    packet.bottom_tank_pressure = bottom_tank_pressure;
+    packet.combustion_chamber_pressure = combustion_chamber_pressure;
+    packet.tank_temperature = tank_temperature;
+    packet.battery_voltage = battery_voltage;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.main_valve_state = main_valve_state;
+    packet.venting_valve_state = venting_valve_state;
+    packet.hil_state = hil_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_MOTOR_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_MOTOR_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN, MAVLINK_MSG_ID_MOTOR_TM_LEN, MAVLINK_MSG_ID_MOTOR_TM_CRC);
+}
+
+/**
+ * @brief Encode a motor_tm 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 motor_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_motor_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_motor_tm_t* motor_tm)
+{
+    return mavlink_msg_motor_tm_pack(system_id, component_id, msg, motor_tm->timestamp, motor_tm->top_tank_pressure, motor_tm->bottom_tank_pressure, motor_tm->combustion_chamber_pressure, motor_tm->tank_temperature, motor_tm->main_valve_state, motor_tm->venting_valve_state, motor_tm->battery_voltage, motor_tm->log_number, motor_tm->log_good, motor_tm->hil_state);
+}
+
+/**
+ * @brief Encode a motor_tm 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 motor_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_motor_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_motor_tm_t* motor_tm)
+{
+    return mavlink_msg_motor_tm_pack_chan(system_id, component_id, chan, msg, motor_tm->timestamp, motor_tm->top_tank_pressure, motor_tm->bottom_tank_pressure, motor_tm->combustion_chamber_pressure, motor_tm->tank_temperature, motor_tm->main_valve_state, motor_tm->venting_valve_state, motor_tm->battery_voltage, motor_tm->log_number, motor_tm->log_good, motor_tm->hil_state);
+}
+
+/**
+ * @brief Send a motor_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp in microseconds
+ * @param top_tank_pressure [Bar] Tank upper pressure
+ * @param bottom_tank_pressure [Bar] Tank bottom pressure
+ * @param combustion_chamber_pressure [Bar] Pressure inside the combustion chamber used for automatic shutdown
+ * @param tank_temperature  Tank temperature
+ * @param main_valve_state  1 If the main valve is open 
+ * @param venting_valve_state  1 If the venting valve is open 
+ * @param battery_voltage [V] Battery voltage
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param hil_state  1 if the board is currently in HIL mode
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_motor_tm_send(mavlink_channel_t chan, uint64_t timestamp, float top_tank_pressure, float bottom_tank_pressure, float combustion_chamber_pressure, float tank_temperature, uint8_t main_valve_state, uint8_t venting_valve_state, float battery_voltage, int16_t log_number, int32_t log_good, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_MOTOR_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, top_tank_pressure);
+    _mav_put_float(buf, 12, bottom_tank_pressure);
+    _mav_put_float(buf, 16, combustion_chamber_pressure);
+    _mav_put_float(buf, 20, tank_temperature);
+    _mav_put_float(buf, 24, battery_voltage);
+    _mav_put_int32_t(buf, 28, log_good);
+    _mav_put_int16_t(buf, 32, log_number);
+    _mav_put_uint8_t(buf, 34, main_valve_state);
+    _mav_put_uint8_t(buf, 35, venting_valve_state);
+    _mav_put_uint8_t(buf, 36, hil_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MOTOR_TM, buf, MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN, MAVLINK_MSG_ID_MOTOR_TM_LEN, MAVLINK_MSG_ID_MOTOR_TM_CRC);
+#else
+    mavlink_motor_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.top_tank_pressure = top_tank_pressure;
+    packet.bottom_tank_pressure = bottom_tank_pressure;
+    packet.combustion_chamber_pressure = combustion_chamber_pressure;
+    packet.tank_temperature = tank_temperature;
+    packet.battery_voltage = battery_voltage;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.main_valve_state = main_valve_state;
+    packet.venting_valve_state = venting_valve_state;
+    packet.hil_state = hil_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MOTOR_TM, (const char *)&packet, MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN, MAVLINK_MSG_ID_MOTOR_TM_LEN, MAVLINK_MSG_ID_MOTOR_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a motor_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_motor_tm_send_struct(mavlink_channel_t chan, const mavlink_motor_tm_t* motor_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_motor_tm_send(chan, motor_tm->timestamp, motor_tm->top_tank_pressure, motor_tm->bottom_tank_pressure, motor_tm->combustion_chamber_pressure, motor_tm->tank_temperature, motor_tm->main_valve_state, motor_tm->venting_valve_state, motor_tm->battery_voltage, motor_tm->log_number, motor_tm->log_good, motor_tm->hil_state);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MOTOR_TM, (const char *)motor_tm, MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN, MAVLINK_MSG_ID_MOTOR_TM_LEN, MAVLINK_MSG_ID_MOTOR_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_MOTOR_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_motor_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, float top_tank_pressure, float bottom_tank_pressure, float combustion_chamber_pressure, float tank_temperature, uint8_t main_valve_state, uint8_t venting_valve_state, float battery_voltage, int16_t log_number, int32_t log_good, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, top_tank_pressure);
+    _mav_put_float(buf, 12, bottom_tank_pressure);
+    _mav_put_float(buf, 16, combustion_chamber_pressure);
+    _mav_put_float(buf, 20, tank_temperature);
+    _mav_put_float(buf, 24, battery_voltage);
+    _mav_put_int32_t(buf, 28, log_good);
+    _mav_put_int16_t(buf, 32, log_number);
+    _mav_put_uint8_t(buf, 34, main_valve_state);
+    _mav_put_uint8_t(buf, 35, venting_valve_state);
+    _mav_put_uint8_t(buf, 36, hil_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MOTOR_TM, buf, MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN, MAVLINK_MSG_ID_MOTOR_TM_LEN, MAVLINK_MSG_ID_MOTOR_TM_CRC);
+#else
+    mavlink_motor_tm_t *packet = (mavlink_motor_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->top_tank_pressure = top_tank_pressure;
+    packet->bottom_tank_pressure = bottom_tank_pressure;
+    packet->combustion_chamber_pressure = combustion_chamber_pressure;
+    packet->tank_temperature = tank_temperature;
+    packet->battery_voltage = battery_voltage;
+    packet->log_good = log_good;
+    packet->log_number = log_number;
+    packet->main_valve_state = main_valve_state;
+    packet->venting_valve_state = venting_valve_state;
+    packet->hil_state = hil_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_MOTOR_TM, (const char *)packet, MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN, MAVLINK_MSG_ID_MOTOR_TM_LEN, MAVLINK_MSG_ID_MOTOR_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE MOTOR_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from motor_tm message
+ *
+ * @return [us] Timestamp in microseconds
+ */
+static inline uint64_t mavlink_msg_motor_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field top_tank_pressure from motor_tm message
+ *
+ * @return [Bar] Tank upper pressure
+ */
+static inline float mavlink_msg_motor_tm_get_top_tank_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field bottom_tank_pressure from motor_tm message
+ *
+ * @return [Bar] Tank bottom pressure
+ */
+static inline float mavlink_msg_motor_tm_get_bottom_tank_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field combustion_chamber_pressure from motor_tm message
+ *
+ * @return [Bar] Pressure inside the combustion chamber used for automatic shutdown
+ */
+static inline float mavlink_msg_motor_tm_get_combustion_chamber_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field tank_temperature from motor_tm message
+ *
+ * @return  Tank temperature
+ */
+static inline float mavlink_msg_motor_tm_get_tank_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field main_valve_state from motor_tm message
+ *
+ * @return  1 If the main valve is open 
+ */
+static inline uint8_t mavlink_msg_motor_tm_get_main_valve_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  34);
+}
+
+/**
+ * @brief Get field venting_valve_state from motor_tm message
+ *
+ * @return  1 If the venting valve is open 
+ */
+static inline uint8_t mavlink_msg_motor_tm_get_venting_valve_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  35);
+}
+
+/**
+ * @brief Get field battery_voltage from motor_tm message
+ *
+ * @return [V] Battery voltage
+ */
+static inline float mavlink_msg_motor_tm_get_battery_voltage(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field log_number from motor_tm message
+ *
+ * @return  Currently active log file, -1 if the logger is inactive
+ */
+static inline int16_t mavlink_msg_motor_tm_get_log_number(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int16_t(msg,  32);
+}
+
+/**
+ * @brief Get field log_good from motor_tm message
+ *
+ * @return  0 if log failed, 1 otherwise
+ */
+static inline int32_t mavlink_msg_motor_tm_get_log_good(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  28);
+}
+
+/**
+ * @brief Get field hil_state from motor_tm message
+ *
+ * @return  1 if the board is currently in HIL mode
+ */
+static inline uint8_t mavlink_msg_motor_tm_get_hil_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  36);
+}
+
+/**
+ * @brief Decode a motor_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param motor_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_motor_tm_decode(const mavlink_message_t* msg, mavlink_motor_tm_t* motor_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    motor_tm->timestamp = mavlink_msg_motor_tm_get_timestamp(msg);
+    motor_tm->top_tank_pressure = mavlink_msg_motor_tm_get_top_tank_pressure(msg);
+    motor_tm->bottom_tank_pressure = mavlink_msg_motor_tm_get_bottom_tank_pressure(msg);
+    motor_tm->combustion_chamber_pressure = mavlink_msg_motor_tm_get_combustion_chamber_pressure(msg);
+    motor_tm->tank_temperature = mavlink_msg_motor_tm_get_tank_temperature(msg);
+    motor_tm->battery_voltage = mavlink_msg_motor_tm_get_battery_voltage(msg);
+    motor_tm->log_good = mavlink_msg_motor_tm_get_log_good(msg);
+    motor_tm->log_number = mavlink_msg_motor_tm_get_log_number(msg);
+    motor_tm->main_valve_state = mavlink_msg_motor_tm_get_main_valve_state(msg);
+    motor_tm->venting_valve_state = mavlink_msg_motor_tm_get_venting_valve_state(msg);
+    motor_tm->hil_state = mavlink_msg_motor_tm_get_hil_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_MOTOR_TM_LEN? msg->len : MAVLINK_MSG_ID_MOTOR_TM_LEN;
+        memset(motor_tm, 0, MAVLINK_MSG_ID_MOTOR_TM_LEN);
+    memcpy(motor_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_nack_tm.h b/mavlink_lib/orion/mavlink_msg_nack_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..ecbddd6542c2960a72522b01514efc333a845e75
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_nack_tm.h
@@ -0,0 +1,263 @@
+#pragma once
+// MESSAGE NACK_TM PACKING
+
+#define MAVLINK_MSG_ID_NACK_TM 101
+
+
+typedef struct __mavlink_nack_tm_t {
+ uint16_t err_id; /*<  Error core that generated the NACK*/
+ uint8_t recv_msgid; /*<  Message id of the received message*/
+ uint8_t seq_ack; /*<  Sequence number of the received message*/
+} mavlink_nack_tm_t;
+
+#define MAVLINK_MSG_ID_NACK_TM_LEN 4
+#define MAVLINK_MSG_ID_NACK_TM_MIN_LEN 4
+#define MAVLINK_MSG_ID_101_LEN 4
+#define MAVLINK_MSG_ID_101_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_NACK_TM_CRC 251
+#define MAVLINK_MSG_ID_101_CRC 251
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_NACK_TM { \
+    101, \
+    "NACK_TM", \
+    3, \
+    {  { "recv_msgid", NULL, MAVLINK_TYPE_UINT8_T, 0, 2, offsetof(mavlink_nack_tm_t, recv_msgid) }, \
+         { "seq_ack", NULL, MAVLINK_TYPE_UINT8_T, 0, 3, offsetof(mavlink_nack_tm_t, seq_ack) }, \
+         { "err_id", NULL, MAVLINK_TYPE_UINT16_T, 0, 0, offsetof(mavlink_nack_tm_t, err_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_NACK_TM { \
+    "NACK_TM", \
+    3, \
+    {  { "recv_msgid", NULL, MAVLINK_TYPE_UINT8_T, 0, 2, offsetof(mavlink_nack_tm_t, recv_msgid) }, \
+         { "seq_ack", NULL, MAVLINK_TYPE_UINT8_T, 0, 3, offsetof(mavlink_nack_tm_t, seq_ack) }, \
+         { "err_id", NULL, MAVLINK_TYPE_UINT16_T, 0, 0, offsetof(mavlink_nack_tm_t, err_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a nack_tm 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 recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ * @param err_id  Error core that generated the NACK
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_nack_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t recv_msgid, uint8_t seq_ack, uint16_t err_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NACK_TM_LEN];
+    _mav_put_uint16_t(buf, 0, err_id);
+    _mav_put_uint8_t(buf, 2, recv_msgid);
+    _mav_put_uint8_t(buf, 3, seq_ack);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_NACK_TM_LEN);
+#else
+    mavlink_nack_tm_t packet;
+    packet.err_id = err_id;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_NACK_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_NACK_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_NACK_TM_MIN_LEN, MAVLINK_MSG_ID_NACK_TM_LEN, MAVLINK_MSG_ID_NACK_TM_CRC);
+}
+
+/**
+ * @brief Pack a nack_tm 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 recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ * @param err_id  Error core that generated the NACK
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_nack_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t recv_msgid,uint8_t seq_ack,uint16_t err_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NACK_TM_LEN];
+    _mav_put_uint16_t(buf, 0, err_id);
+    _mav_put_uint8_t(buf, 2, recv_msgid);
+    _mav_put_uint8_t(buf, 3, seq_ack);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_NACK_TM_LEN);
+#else
+    mavlink_nack_tm_t packet;
+    packet.err_id = err_id;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_NACK_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_NACK_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_NACK_TM_MIN_LEN, MAVLINK_MSG_ID_NACK_TM_LEN, MAVLINK_MSG_ID_NACK_TM_CRC);
+}
+
+/**
+ * @brief Encode a nack_tm 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 nack_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_nack_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_nack_tm_t* nack_tm)
+{
+    return mavlink_msg_nack_tm_pack(system_id, component_id, msg, nack_tm->recv_msgid, nack_tm->seq_ack, nack_tm->err_id);
+}
+
+/**
+ * @brief Encode a nack_tm 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 nack_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_nack_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_nack_tm_t* nack_tm)
+{
+    return mavlink_msg_nack_tm_pack_chan(system_id, component_id, chan, msg, nack_tm->recv_msgid, nack_tm->seq_ack, nack_tm->err_id);
+}
+
+/**
+ * @brief Send a nack_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ * @param err_id  Error core that generated the NACK
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_nack_tm_send(mavlink_channel_t chan, uint8_t recv_msgid, uint8_t seq_ack, uint16_t err_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NACK_TM_LEN];
+    _mav_put_uint16_t(buf, 0, err_id);
+    _mav_put_uint8_t(buf, 2, recv_msgid);
+    _mav_put_uint8_t(buf, 3, seq_ack);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NACK_TM, buf, MAVLINK_MSG_ID_NACK_TM_MIN_LEN, MAVLINK_MSG_ID_NACK_TM_LEN, MAVLINK_MSG_ID_NACK_TM_CRC);
+#else
+    mavlink_nack_tm_t packet;
+    packet.err_id = err_id;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NACK_TM, (const char *)&packet, MAVLINK_MSG_ID_NACK_TM_MIN_LEN, MAVLINK_MSG_ID_NACK_TM_LEN, MAVLINK_MSG_ID_NACK_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a nack_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_nack_tm_send_struct(mavlink_channel_t chan, const mavlink_nack_tm_t* nack_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_nack_tm_send(chan, nack_tm->recv_msgid, nack_tm->seq_ack, nack_tm->err_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NACK_TM, (const char *)nack_tm, MAVLINK_MSG_ID_NACK_TM_MIN_LEN, MAVLINK_MSG_ID_NACK_TM_LEN, MAVLINK_MSG_ID_NACK_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_NACK_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_nack_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t recv_msgid, uint8_t seq_ack, uint16_t err_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint16_t(buf, 0, err_id);
+    _mav_put_uint8_t(buf, 2, recv_msgid);
+    _mav_put_uint8_t(buf, 3, seq_ack);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NACK_TM, buf, MAVLINK_MSG_ID_NACK_TM_MIN_LEN, MAVLINK_MSG_ID_NACK_TM_LEN, MAVLINK_MSG_ID_NACK_TM_CRC);
+#else
+    mavlink_nack_tm_t *packet = (mavlink_nack_tm_t *)msgbuf;
+    packet->err_id = err_id;
+    packet->recv_msgid = recv_msgid;
+    packet->seq_ack = seq_ack;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NACK_TM, (const char *)packet, MAVLINK_MSG_ID_NACK_TM_MIN_LEN, MAVLINK_MSG_ID_NACK_TM_LEN, MAVLINK_MSG_ID_NACK_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE NACK_TM UNPACKING
+
+
+/**
+ * @brief Get field recv_msgid from nack_tm message
+ *
+ * @return  Message id of the received message
+ */
+static inline uint8_t mavlink_msg_nack_tm_get_recv_msgid(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  2);
+}
+
+/**
+ * @brief Get field seq_ack from nack_tm message
+ *
+ * @return  Sequence number of the received message
+ */
+static inline uint8_t mavlink_msg_nack_tm_get_seq_ack(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  3);
+}
+
+/**
+ * @brief Get field err_id from nack_tm message
+ *
+ * @return  Error core that generated the NACK
+ */
+static inline uint16_t mavlink_msg_nack_tm_get_err_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  0);
+}
+
+/**
+ * @brief Decode a nack_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param nack_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_nack_tm_decode(const mavlink_message_t* msg, mavlink_nack_tm_t* nack_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    nack_tm->err_id = mavlink_msg_nack_tm_get_err_id(msg);
+    nack_tm->recv_msgid = mavlink_msg_nack_tm_get_recv_msgid(msg);
+    nack_tm->seq_ack = mavlink_msg_nack_tm_get_seq_ack(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_NACK_TM_LEN? msg->len : MAVLINK_MSG_ID_NACK_TM_LEN;
+        memset(nack_tm, 0, MAVLINK_MSG_ID_NACK_TM_LEN);
+    memcpy(nack_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_nas_tm.h b/mavlink_lib/orion/mavlink_msg_nas_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..e91b837c04d4e2bc46c3226696f68c32890b9f08
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_nas_tm.h
@@ -0,0 +1,663 @@
+#pragma once
+// MESSAGE NAS_TM PACKING
+
+#define MAVLINK_MSG_ID_NAS_TM 206
+
+
+typedef struct __mavlink_nas_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float nas_n; /*< [deg] Navigation system estimated noth position*/
+ float nas_e; /*< [deg] Navigation system estimated east position*/
+ float nas_d; /*< [m] Navigation system estimated down position*/
+ float nas_vn; /*< [m/s] Navigation system estimated north velocity*/
+ float nas_ve; /*< [m/s] Navigation system estimated east velocity*/
+ float nas_vd; /*< [m/s] Navigation system estimated down velocity*/
+ float nas_qx; /*< [deg] Navigation system estimated attitude (qx)*/
+ float nas_qy; /*< [deg] Navigation system estimated attitude (qy)*/
+ float nas_qz; /*< [deg] Navigation system estimated attitude (qz)*/
+ float nas_qw; /*< [deg] Navigation system estimated attitude (qw)*/
+ float nas_bias_x; /*<  Navigation system gyroscope bias on x axis*/
+ float nas_bias_y; /*<  Navigation system gyroscope bias on y axis*/
+ float nas_bias_z; /*<  Navigation system gyroscope bias on z axis*/
+ float ref_pressure; /*< [Pa] Calibration pressure*/
+ float ref_temperature; /*< [degC] Calibration temperature*/
+ float ref_latitude; /*< [deg] Calibration latitude*/
+ float ref_longitude; /*< [deg] Calibration longitude*/
+ uint8_t state; /*<  NAS current state*/
+} mavlink_nas_tm_t;
+
+#define MAVLINK_MSG_ID_NAS_TM_LEN 77
+#define MAVLINK_MSG_ID_NAS_TM_MIN_LEN 77
+#define MAVLINK_MSG_ID_206_LEN 77
+#define MAVLINK_MSG_ID_206_MIN_LEN 77
+
+#define MAVLINK_MSG_ID_NAS_TM_CRC 66
+#define MAVLINK_MSG_ID_206_CRC 66
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_NAS_TM { \
+    206, \
+    "NAS_TM", \
+    19, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_nas_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 76, offsetof(mavlink_nas_tm_t, state) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_nas_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_nas_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_nas_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_nas_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_nas_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_nas_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_nas_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_nas_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_nas_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_nas_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_nas_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_nas_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_nas_tm_t, nas_bias_z) }, \
+         { "ref_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_nas_tm_t, ref_pressure) }, \
+         { "ref_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_nas_tm_t, ref_temperature) }, \
+         { "ref_latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_nas_tm_t, ref_latitude) }, \
+         { "ref_longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_nas_tm_t, ref_longitude) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_NAS_TM { \
+    "NAS_TM", \
+    19, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_nas_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 76, offsetof(mavlink_nas_tm_t, state) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_nas_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_nas_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_nas_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_nas_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_nas_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_nas_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_nas_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_nas_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_nas_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_nas_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_nas_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_nas_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_nas_tm_t, nas_bias_z) }, \
+         { "ref_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_nas_tm_t, ref_pressure) }, \
+         { "ref_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_nas_tm_t, ref_temperature) }, \
+         { "ref_latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_nas_tm_t, ref_latitude) }, \
+         { "ref_longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_nas_tm_t, ref_longitude) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a nas_tm 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 timestamp [us] When was this logged
+ * @param state  NAS current state
+ * @param nas_n [deg] Navigation system estimated noth position
+ * @param nas_e [deg] Navigation system estimated east position
+ * @param nas_d [m] Navigation system estimated down position
+ * @param nas_vn [m/s] Navigation system estimated north velocity
+ * @param nas_ve [m/s] Navigation system estimated east velocity
+ * @param nas_vd [m/s] Navigation system estimated down velocity
+ * @param nas_qx [deg] Navigation system estimated attitude (qx)
+ * @param nas_qy [deg] Navigation system estimated attitude (qy)
+ * @param nas_qz [deg] Navigation system estimated attitude (qz)
+ * @param nas_qw [deg] Navigation system estimated attitude (qw)
+ * @param nas_bias_x  Navigation system gyroscope bias on x axis
+ * @param nas_bias_y  Navigation system gyroscope bias on y axis
+ * @param nas_bias_z  Navigation system gyroscope bias on z axis
+ * @param ref_pressure [Pa] Calibration pressure
+ * @param ref_temperature [degC] Calibration temperature
+ * @param ref_latitude [deg] Calibration latitude
+ * @param ref_longitude [deg] Calibration longitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_nas_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint8_t state, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float ref_pressure, float ref_temperature, float ref_latitude, float ref_longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NAS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, nas_n);
+    _mav_put_float(buf, 12, nas_e);
+    _mav_put_float(buf, 16, nas_d);
+    _mav_put_float(buf, 20, nas_vn);
+    _mav_put_float(buf, 24, nas_ve);
+    _mav_put_float(buf, 28, nas_vd);
+    _mav_put_float(buf, 32, nas_qx);
+    _mav_put_float(buf, 36, nas_qy);
+    _mav_put_float(buf, 40, nas_qz);
+    _mav_put_float(buf, 44, nas_qw);
+    _mav_put_float(buf, 48, nas_bias_x);
+    _mav_put_float(buf, 52, nas_bias_y);
+    _mav_put_float(buf, 56, nas_bias_z);
+    _mav_put_float(buf, 60, ref_pressure);
+    _mav_put_float(buf, 64, ref_temperature);
+    _mav_put_float(buf, 68, ref_latitude);
+    _mav_put_float(buf, 72, ref_longitude);
+    _mav_put_uint8_t(buf, 76, state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_NAS_TM_LEN);
+#else
+    mavlink_nas_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_temperature = ref_temperature;
+    packet.ref_latitude = ref_latitude;
+    packet.ref_longitude = ref_longitude;
+    packet.state = state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_NAS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_NAS_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_NAS_TM_MIN_LEN, MAVLINK_MSG_ID_NAS_TM_LEN, MAVLINK_MSG_ID_NAS_TM_CRC);
+}
+
+/**
+ * @brief Pack a nas_tm 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 timestamp [us] When was this logged
+ * @param state  NAS current state
+ * @param nas_n [deg] Navigation system estimated noth position
+ * @param nas_e [deg] Navigation system estimated east position
+ * @param nas_d [m] Navigation system estimated down position
+ * @param nas_vn [m/s] Navigation system estimated north velocity
+ * @param nas_ve [m/s] Navigation system estimated east velocity
+ * @param nas_vd [m/s] Navigation system estimated down velocity
+ * @param nas_qx [deg] Navigation system estimated attitude (qx)
+ * @param nas_qy [deg] Navigation system estimated attitude (qy)
+ * @param nas_qz [deg] Navigation system estimated attitude (qz)
+ * @param nas_qw [deg] Navigation system estimated attitude (qw)
+ * @param nas_bias_x  Navigation system gyroscope bias on x axis
+ * @param nas_bias_y  Navigation system gyroscope bias on y axis
+ * @param nas_bias_z  Navigation system gyroscope bias on z axis
+ * @param ref_pressure [Pa] Calibration pressure
+ * @param ref_temperature [degC] Calibration temperature
+ * @param ref_latitude [deg] Calibration latitude
+ * @param ref_longitude [deg] Calibration longitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_nas_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint8_t state,float nas_n,float nas_e,float nas_d,float nas_vn,float nas_ve,float nas_vd,float nas_qx,float nas_qy,float nas_qz,float nas_qw,float nas_bias_x,float nas_bias_y,float nas_bias_z,float ref_pressure,float ref_temperature,float ref_latitude,float ref_longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NAS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, nas_n);
+    _mav_put_float(buf, 12, nas_e);
+    _mav_put_float(buf, 16, nas_d);
+    _mav_put_float(buf, 20, nas_vn);
+    _mav_put_float(buf, 24, nas_ve);
+    _mav_put_float(buf, 28, nas_vd);
+    _mav_put_float(buf, 32, nas_qx);
+    _mav_put_float(buf, 36, nas_qy);
+    _mav_put_float(buf, 40, nas_qz);
+    _mav_put_float(buf, 44, nas_qw);
+    _mav_put_float(buf, 48, nas_bias_x);
+    _mav_put_float(buf, 52, nas_bias_y);
+    _mav_put_float(buf, 56, nas_bias_z);
+    _mav_put_float(buf, 60, ref_pressure);
+    _mav_put_float(buf, 64, ref_temperature);
+    _mav_put_float(buf, 68, ref_latitude);
+    _mav_put_float(buf, 72, ref_longitude);
+    _mav_put_uint8_t(buf, 76, state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_NAS_TM_LEN);
+#else
+    mavlink_nas_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_temperature = ref_temperature;
+    packet.ref_latitude = ref_latitude;
+    packet.ref_longitude = ref_longitude;
+    packet.state = state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_NAS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_NAS_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_NAS_TM_MIN_LEN, MAVLINK_MSG_ID_NAS_TM_LEN, MAVLINK_MSG_ID_NAS_TM_CRC);
+}
+
+/**
+ * @brief Encode a nas_tm 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 nas_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_nas_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_nas_tm_t* nas_tm)
+{
+    return mavlink_msg_nas_tm_pack(system_id, component_id, msg, nas_tm->timestamp, nas_tm->state, nas_tm->nas_n, nas_tm->nas_e, nas_tm->nas_d, nas_tm->nas_vn, nas_tm->nas_ve, nas_tm->nas_vd, nas_tm->nas_qx, nas_tm->nas_qy, nas_tm->nas_qz, nas_tm->nas_qw, nas_tm->nas_bias_x, nas_tm->nas_bias_y, nas_tm->nas_bias_z, nas_tm->ref_pressure, nas_tm->ref_temperature, nas_tm->ref_latitude, nas_tm->ref_longitude);
+}
+
+/**
+ * @brief Encode a nas_tm 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 nas_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_nas_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_nas_tm_t* nas_tm)
+{
+    return mavlink_msg_nas_tm_pack_chan(system_id, component_id, chan, msg, nas_tm->timestamp, nas_tm->state, nas_tm->nas_n, nas_tm->nas_e, nas_tm->nas_d, nas_tm->nas_vn, nas_tm->nas_ve, nas_tm->nas_vd, nas_tm->nas_qx, nas_tm->nas_qy, nas_tm->nas_qz, nas_tm->nas_qw, nas_tm->nas_bias_x, nas_tm->nas_bias_y, nas_tm->nas_bias_z, nas_tm->ref_pressure, nas_tm->ref_temperature, nas_tm->ref_latitude, nas_tm->ref_longitude);
+}
+
+/**
+ * @brief Send a nas_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param state  NAS current state
+ * @param nas_n [deg] Navigation system estimated noth position
+ * @param nas_e [deg] Navigation system estimated east position
+ * @param nas_d [m] Navigation system estimated down position
+ * @param nas_vn [m/s] Navigation system estimated north velocity
+ * @param nas_ve [m/s] Navigation system estimated east velocity
+ * @param nas_vd [m/s] Navigation system estimated down velocity
+ * @param nas_qx [deg] Navigation system estimated attitude (qx)
+ * @param nas_qy [deg] Navigation system estimated attitude (qy)
+ * @param nas_qz [deg] Navigation system estimated attitude (qz)
+ * @param nas_qw [deg] Navigation system estimated attitude (qw)
+ * @param nas_bias_x  Navigation system gyroscope bias on x axis
+ * @param nas_bias_y  Navigation system gyroscope bias on y axis
+ * @param nas_bias_z  Navigation system gyroscope bias on z axis
+ * @param ref_pressure [Pa] Calibration pressure
+ * @param ref_temperature [degC] Calibration temperature
+ * @param ref_latitude [deg] Calibration latitude
+ * @param ref_longitude [deg] Calibration longitude
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_nas_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t state, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float ref_pressure, float ref_temperature, float ref_latitude, float ref_longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NAS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, nas_n);
+    _mav_put_float(buf, 12, nas_e);
+    _mav_put_float(buf, 16, nas_d);
+    _mav_put_float(buf, 20, nas_vn);
+    _mav_put_float(buf, 24, nas_ve);
+    _mav_put_float(buf, 28, nas_vd);
+    _mav_put_float(buf, 32, nas_qx);
+    _mav_put_float(buf, 36, nas_qy);
+    _mav_put_float(buf, 40, nas_qz);
+    _mav_put_float(buf, 44, nas_qw);
+    _mav_put_float(buf, 48, nas_bias_x);
+    _mav_put_float(buf, 52, nas_bias_y);
+    _mav_put_float(buf, 56, nas_bias_z);
+    _mav_put_float(buf, 60, ref_pressure);
+    _mav_put_float(buf, 64, ref_temperature);
+    _mav_put_float(buf, 68, ref_latitude);
+    _mav_put_float(buf, 72, ref_longitude);
+    _mav_put_uint8_t(buf, 76, state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NAS_TM, buf, MAVLINK_MSG_ID_NAS_TM_MIN_LEN, MAVLINK_MSG_ID_NAS_TM_LEN, MAVLINK_MSG_ID_NAS_TM_CRC);
+#else
+    mavlink_nas_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_temperature = ref_temperature;
+    packet.ref_latitude = ref_latitude;
+    packet.ref_longitude = ref_longitude;
+    packet.state = state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NAS_TM, (const char *)&packet, MAVLINK_MSG_ID_NAS_TM_MIN_LEN, MAVLINK_MSG_ID_NAS_TM_LEN, MAVLINK_MSG_ID_NAS_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a nas_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_nas_tm_send_struct(mavlink_channel_t chan, const mavlink_nas_tm_t* nas_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_nas_tm_send(chan, nas_tm->timestamp, nas_tm->state, nas_tm->nas_n, nas_tm->nas_e, nas_tm->nas_d, nas_tm->nas_vn, nas_tm->nas_ve, nas_tm->nas_vd, nas_tm->nas_qx, nas_tm->nas_qy, nas_tm->nas_qz, nas_tm->nas_qw, nas_tm->nas_bias_x, nas_tm->nas_bias_y, nas_tm->nas_bias_z, nas_tm->ref_pressure, nas_tm->ref_temperature, nas_tm->ref_latitude, nas_tm->ref_longitude);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NAS_TM, (const char *)nas_tm, MAVLINK_MSG_ID_NAS_TM_MIN_LEN, MAVLINK_MSG_ID_NAS_TM_LEN, MAVLINK_MSG_ID_NAS_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_NAS_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_nas_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint8_t state, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float ref_pressure, float ref_temperature, float ref_latitude, float ref_longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, nas_n);
+    _mav_put_float(buf, 12, nas_e);
+    _mav_put_float(buf, 16, nas_d);
+    _mav_put_float(buf, 20, nas_vn);
+    _mav_put_float(buf, 24, nas_ve);
+    _mav_put_float(buf, 28, nas_vd);
+    _mav_put_float(buf, 32, nas_qx);
+    _mav_put_float(buf, 36, nas_qy);
+    _mav_put_float(buf, 40, nas_qz);
+    _mav_put_float(buf, 44, nas_qw);
+    _mav_put_float(buf, 48, nas_bias_x);
+    _mav_put_float(buf, 52, nas_bias_y);
+    _mav_put_float(buf, 56, nas_bias_z);
+    _mav_put_float(buf, 60, ref_pressure);
+    _mav_put_float(buf, 64, ref_temperature);
+    _mav_put_float(buf, 68, ref_latitude);
+    _mav_put_float(buf, 72, ref_longitude);
+    _mav_put_uint8_t(buf, 76, state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NAS_TM, buf, MAVLINK_MSG_ID_NAS_TM_MIN_LEN, MAVLINK_MSG_ID_NAS_TM_LEN, MAVLINK_MSG_ID_NAS_TM_CRC);
+#else
+    mavlink_nas_tm_t *packet = (mavlink_nas_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->nas_n = nas_n;
+    packet->nas_e = nas_e;
+    packet->nas_d = nas_d;
+    packet->nas_vn = nas_vn;
+    packet->nas_ve = nas_ve;
+    packet->nas_vd = nas_vd;
+    packet->nas_qx = nas_qx;
+    packet->nas_qy = nas_qy;
+    packet->nas_qz = nas_qz;
+    packet->nas_qw = nas_qw;
+    packet->nas_bias_x = nas_bias_x;
+    packet->nas_bias_y = nas_bias_y;
+    packet->nas_bias_z = nas_bias_z;
+    packet->ref_pressure = ref_pressure;
+    packet->ref_temperature = ref_temperature;
+    packet->ref_latitude = ref_latitude;
+    packet->ref_longitude = ref_longitude;
+    packet->state = state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_NAS_TM, (const char *)packet, MAVLINK_MSG_ID_NAS_TM_MIN_LEN, MAVLINK_MSG_ID_NAS_TM_LEN, MAVLINK_MSG_ID_NAS_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE NAS_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from nas_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_nas_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field state from nas_tm message
+ *
+ * @return  NAS current state
+ */
+static inline uint8_t mavlink_msg_nas_tm_get_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  76);
+}
+
+/**
+ * @brief Get field nas_n from nas_tm message
+ *
+ * @return [deg] Navigation system estimated noth position
+ */
+static inline float mavlink_msg_nas_tm_get_nas_n(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field nas_e from nas_tm message
+ *
+ * @return [deg] Navigation system estimated east position
+ */
+static inline float mavlink_msg_nas_tm_get_nas_e(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field nas_d from nas_tm message
+ *
+ * @return [m] Navigation system estimated down position
+ */
+static inline float mavlink_msg_nas_tm_get_nas_d(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field nas_vn from nas_tm message
+ *
+ * @return [m/s] Navigation system estimated north velocity
+ */
+static inline float mavlink_msg_nas_tm_get_nas_vn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field nas_ve from nas_tm message
+ *
+ * @return [m/s] Navigation system estimated east velocity
+ */
+static inline float mavlink_msg_nas_tm_get_nas_ve(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field nas_vd from nas_tm message
+ *
+ * @return [m/s] Navigation system estimated down velocity
+ */
+static inline float mavlink_msg_nas_tm_get_nas_vd(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field nas_qx from nas_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qx)
+ */
+static inline float mavlink_msg_nas_tm_get_nas_qx(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field nas_qy from nas_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qy)
+ */
+static inline float mavlink_msg_nas_tm_get_nas_qy(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field nas_qz from nas_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qz)
+ */
+static inline float mavlink_msg_nas_tm_get_nas_qz(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Get field nas_qw from nas_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qw)
+ */
+static inline float mavlink_msg_nas_tm_get_nas_qw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  44);
+}
+
+/**
+ * @brief Get field nas_bias_x from nas_tm message
+ *
+ * @return  Navigation system gyroscope bias on x axis
+ */
+static inline float mavlink_msg_nas_tm_get_nas_bias_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  48);
+}
+
+/**
+ * @brief Get field nas_bias_y from nas_tm message
+ *
+ * @return  Navigation system gyroscope bias on y axis
+ */
+static inline float mavlink_msg_nas_tm_get_nas_bias_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  52);
+}
+
+/**
+ * @brief Get field nas_bias_z from nas_tm message
+ *
+ * @return  Navigation system gyroscope bias on z axis
+ */
+static inline float mavlink_msg_nas_tm_get_nas_bias_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  56);
+}
+
+/**
+ * @brief Get field ref_pressure from nas_tm message
+ *
+ * @return [Pa] Calibration pressure
+ */
+static inline float mavlink_msg_nas_tm_get_ref_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  60);
+}
+
+/**
+ * @brief Get field ref_temperature from nas_tm message
+ *
+ * @return [degC] Calibration temperature
+ */
+static inline float mavlink_msg_nas_tm_get_ref_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  64);
+}
+
+/**
+ * @brief Get field ref_latitude from nas_tm message
+ *
+ * @return [deg] Calibration latitude
+ */
+static inline float mavlink_msg_nas_tm_get_ref_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  68);
+}
+
+/**
+ * @brief Get field ref_longitude from nas_tm message
+ *
+ * @return [deg] Calibration longitude
+ */
+static inline float mavlink_msg_nas_tm_get_ref_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  72);
+}
+
+/**
+ * @brief Decode a nas_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param nas_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_nas_tm_decode(const mavlink_message_t* msg, mavlink_nas_tm_t* nas_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    nas_tm->timestamp = mavlink_msg_nas_tm_get_timestamp(msg);
+    nas_tm->nas_n = mavlink_msg_nas_tm_get_nas_n(msg);
+    nas_tm->nas_e = mavlink_msg_nas_tm_get_nas_e(msg);
+    nas_tm->nas_d = mavlink_msg_nas_tm_get_nas_d(msg);
+    nas_tm->nas_vn = mavlink_msg_nas_tm_get_nas_vn(msg);
+    nas_tm->nas_ve = mavlink_msg_nas_tm_get_nas_ve(msg);
+    nas_tm->nas_vd = mavlink_msg_nas_tm_get_nas_vd(msg);
+    nas_tm->nas_qx = mavlink_msg_nas_tm_get_nas_qx(msg);
+    nas_tm->nas_qy = mavlink_msg_nas_tm_get_nas_qy(msg);
+    nas_tm->nas_qz = mavlink_msg_nas_tm_get_nas_qz(msg);
+    nas_tm->nas_qw = mavlink_msg_nas_tm_get_nas_qw(msg);
+    nas_tm->nas_bias_x = mavlink_msg_nas_tm_get_nas_bias_x(msg);
+    nas_tm->nas_bias_y = mavlink_msg_nas_tm_get_nas_bias_y(msg);
+    nas_tm->nas_bias_z = mavlink_msg_nas_tm_get_nas_bias_z(msg);
+    nas_tm->ref_pressure = mavlink_msg_nas_tm_get_ref_pressure(msg);
+    nas_tm->ref_temperature = mavlink_msg_nas_tm_get_ref_temperature(msg);
+    nas_tm->ref_latitude = mavlink_msg_nas_tm_get_ref_latitude(msg);
+    nas_tm->ref_longitude = mavlink_msg_nas_tm_get_ref_longitude(msg);
+    nas_tm->state = mavlink_msg_nas_tm_get_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_NAS_TM_LEN? msg->len : MAVLINK_MSG_ID_NAS_TM_LEN;
+        memset(nas_tm, 0, MAVLINK_MSG_ID_NAS_TM_LEN);
+    memcpy(nas_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_payload_flight_tm.h b/mavlink_lib/orion/mavlink_msg_payload_flight_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..34f88bb624bf8aa0e4aee02595be95d1ff7cc220
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_payload_flight_tm.h
@@ -0,0 +1,1188 @@
+#pragma once
+// MESSAGE PAYLOAD_FLIGHT_TM PACKING
+
+#define MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM 209
+
+
+typedef struct __mavlink_payload_flight_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp in microseconds*/
+ float pressure_digi; /*< [Pa] Pressure from digital sensor*/
+ float pressure_static; /*< [Pa] Pressure from static port*/
+ float pressure_dynamic; /*< [Pa] Pressure from dynamic port*/
+ float airspeed_pitot; /*< [m/s] Pitot airspeed*/
+ float altitude_agl; /*< [m] Altitude above ground level*/
+ float acc_x; /*< [m/s^2] Acceleration on X axis (body)*/
+ float acc_y; /*< [m/s^2] Acceleration on Y axis (body)*/
+ float acc_z; /*< [m/s^2] Acceleration on Z axis (body)*/
+ float gyro_x; /*< [rad/s] Angular speed on X axis (body)*/
+ float gyro_y; /*< [rad/s] Angular speed on Y axis (body)*/
+ float gyro_z; /*< [rad/s] Angular speed on Z axis (body)*/
+ float mag_x; /*< [uT] Magnetic field on X axis (body)*/
+ float mag_y; /*< [uT] Magnetic field on Y axis (body)*/
+ float mag_z; /*< [uT] Magnetic field on Z axis (body)*/
+ float gps_lat; /*< [deg] Latitude*/
+ float gps_lon; /*< [deg] Longitude*/
+ float gps_alt; /*< [m] GPS Altitude*/
+ float left_servo_angle; /*< [deg] Left servo motor angle*/
+ float right_servo_angle; /*< [deg] Right servo motor angle*/
+ float nas_n; /*< [deg] NAS estimated noth position*/
+ float nas_e; /*< [deg] NAS estimated east position*/
+ float nas_d; /*< [m] NAS estimated down position*/
+ float nas_vn; /*< [m/s] NAS estimated north velocity*/
+ float nas_ve; /*< [m/s] NAS estimated east velocity*/
+ float nas_vd; /*< [m/s] NAS estimated down velocity*/
+ float nas_qx; /*<  NAS estimated attitude (qx)*/
+ float nas_qy; /*<  NAS estimated attitude (qy)*/
+ float nas_qz; /*<  NAS estimated attitude (qz)*/
+ float nas_qw; /*<  NAS estimated attitude (qw)*/
+ float nas_bias_x; /*<  NAS gyroscope bias on x axis*/
+ float nas_bias_y; /*<  NAS gyroscope bias on y axis*/
+ float nas_bias_z; /*<  NAS gyroscope bias on z axis*/
+ float wes_n; /*< [m/s] Wind estimated north velocity*/
+ float wes_e; /*< [m/s] Wind estimated east velocity*/
+ float battery_voltage; /*< [V] Battery voltage*/
+ float cam_battery_voltage; /*< [V] Camera battery voltage*/
+ float temperature; /*< [degC] Temperature*/
+ uint8_t gps_fix; /*<  Wether the GPS has a FIX*/
+ uint8_t fmm_state; /*<  Flight Mode Manager State*/
+} mavlink_payload_flight_tm_t;
+
+#define MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN 158
+#define MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN 158
+#define MAVLINK_MSG_ID_209_LEN 158
+#define MAVLINK_MSG_ID_209_MIN_LEN 158
+
+#define MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_CRC 188
+#define MAVLINK_MSG_ID_209_CRC 188
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PAYLOAD_FLIGHT_TM { \
+    209, \
+    "PAYLOAD_FLIGHT_TM", \
+    40, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_payload_flight_tm_t, timestamp) }, \
+         { "pressure_digi", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_payload_flight_tm_t, pressure_digi) }, \
+         { "pressure_static", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_payload_flight_tm_t, pressure_static) }, \
+         { "pressure_dynamic", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_payload_flight_tm_t, pressure_dynamic) }, \
+         { "airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_payload_flight_tm_t, airspeed_pitot) }, \
+         { "altitude_agl", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_payload_flight_tm_t, altitude_agl) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_payload_flight_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_payload_flight_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_payload_flight_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_payload_flight_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_payload_flight_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_payload_flight_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_payload_flight_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_payload_flight_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_payload_flight_tm_t, mag_z) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 156, offsetof(mavlink_payload_flight_tm_t, gps_fix) }, \
+         { "gps_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_payload_flight_tm_t, gps_lat) }, \
+         { "gps_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_payload_flight_tm_t, gps_lon) }, \
+         { "gps_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_payload_flight_tm_t, gps_alt) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 157, offsetof(mavlink_payload_flight_tm_t, fmm_state) }, \
+         { "left_servo_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_payload_flight_tm_t, left_servo_angle) }, \
+         { "right_servo_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_payload_flight_tm_t, right_servo_angle) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_payload_flight_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_payload_flight_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_payload_flight_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_payload_flight_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_payload_flight_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_payload_flight_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_payload_flight_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_payload_flight_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_payload_flight_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_payload_flight_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_payload_flight_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_payload_flight_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_payload_flight_tm_t, nas_bias_z) }, \
+         { "wes_n", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_payload_flight_tm_t, wes_n) }, \
+         { "wes_e", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_payload_flight_tm_t, wes_e) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_payload_flight_tm_t, battery_voltage) }, \
+         { "cam_battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_payload_flight_tm_t, cam_battery_voltage) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 152, offsetof(mavlink_payload_flight_tm_t, temperature) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_PAYLOAD_FLIGHT_TM { \
+    "PAYLOAD_FLIGHT_TM", \
+    40, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_payload_flight_tm_t, timestamp) }, \
+         { "pressure_digi", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_payload_flight_tm_t, pressure_digi) }, \
+         { "pressure_static", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_payload_flight_tm_t, pressure_static) }, \
+         { "pressure_dynamic", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_payload_flight_tm_t, pressure_dynamic) }, \
+         { "airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_payload_flight_tm_t, airspeed_pitot) }, \
+         { "altitude_agl", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_payload_flight_tm_t, altitude_agl) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_payload_flight_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_payload_flight_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_payload_flight_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_payload_flight_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_payload_flight_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_payload_flight_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_payload_flight_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_payload_flight_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_payload_flight_tm_t, mag_z) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 156, offsetof(mavlink_payload_flight_tm_t, gps_fix) }, \
+         { "gps_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_payload_flight_tm_t, gps_lat) }, \
+         { "gps_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_payload_flight_tm_t, gps_lon) }, \
+         { "gps_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_payload_flight_tm_t, gps_alt) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 157, offsetof(mavlink_payload_flight_tm_t, fmm_state) }, \
+         { "left_servo_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_payload_flight_tm_t, left_servo_angle) }, \
+         { "right_servo_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_payload_flight_tm_t, right_servo_angle) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_payload_flight_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_payload_flight_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_payload_flight_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_payload_flight_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_payload_flight_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_payload_flight_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_payload_flight_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_payload_flight_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_payload_flight_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_payload_flight_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_payload_flight_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_payload_flight_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_payload_flight_tm_t, nas_bias_z) }, \
+         { "wes_n", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_payload_flight_tm_t, wes_n) }, \
+         { "wes_e", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_payload_flight_tm_t, wes_e) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_payload_flight_tm_t, battery_voltage) }, \
+         { "cam_battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_payload_flight_tm_t, cam_battery_voltage) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 152, offsetof(mavlink_payload_flight_tm_t, temperature) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a payload_flight_tm 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 timestamp [us] Timestamp in microseconds
+ * @param pressure_digi [Pa] Pressure from digital sensor
+ * @param pressure_static [Pa] Pressure from static port
+ * @param pressure_dynamic [Pa] Pressure from dynamic port
+ * @param airspeed_pitot [m/s] Pitot airspeed
+ * @param altitude_agl [m] Altitude above ground level
+ * @param acc_x [m/s^2] Acceleration on X axis (body)
+ * @param acc_y [m/s^2] Acceleration on Y axis (body)
+ * @param acc_z [m/s^2] Acceleration on Z axis (body)
+ * @param gyro_x [rad/s] Angular speed on X axis (body)
+ * @param gyro_y [rad/s] Angular speed on Y axis (body)
+ * @param gyro_z [rad/s] Angular speed on Z axis (body)
+ * @param mag_x [uT] Magnetic field on X axis (body)
+ * @param mag_y [uT] Magnetic field on Y axis (body)
+ * @param mag_z [uT] Magnetic field on Z axis (body)
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param fmm_state  Flight Mode Manager State
+ * @param left_servo_angle [deg] Left servo motor angle
+ * @param right_servo_angle [deg] Right servo motor angle
+ * @param nas_n [deg] NAS estimated noth position
+ * @param nas_e [deg] NAS estimated east position
+ * @param nas_d [m] NAS estimated down position
+ * @param nas_vn [m/s] NAS estimated north velocity
+ * @param nas_ve [m/s] NAS estimated east velocity
+ * @param nas_vd [m/s] NAS estimated down velocity
+ * @param nas_qx  NAS estimated attitude (qx)
+ * @param nas_qy  NAS estimated attitude (qy)
+ * @param nas_qz  NAS estimated attitude (qz)
+ * @param nas_qw  NAS estimated attitude (qw)
+ * @param nas_bias_x  NAS gyroscope bias on x axis
+ * @param nas_bias_y  NAS gyroscope bias on y axis
+ * @param nas_bias_z  NAS gyroscope bias on z axis
+ * @param wes_n [m/s] Wind estimated north velocity
+ * @param wes_e [m/s] Wind estimated east velocity
+ * @param battery_voltage [V] Battery voltage
+ * @param cam_battery_voltage [V] Camera battery voltage
+ * @param temperature [degC] Temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_payload_flight_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, float pressure_digi, float pressure_static, float pressure_dynamic, float airspeed_pitot, float altitude_agl, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z, uint8_t gps_fix, float gps_lat, float gps_lon, float gps_alt, uint8_t fmm_state, float left_servo_angle, float right_servo_angle, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float wes_n, float wes_e, float battery_voltage, float cam_battery_voltage, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure_digi);
+    _mav_put_float(buf, 12, pressure_static);
+    _mav_put_float(buf, 16, pressure_dynamic);
+    _mav_put_float(buf, 20, airspeed_pitot);
+    _mav_put_float(buf, 24, altitude_agl);
+    _mav_put_float(buf, 28, acc_x);
+    _mav_put_float(buf, 32, acc_y);
+    _mav_put_float(buf, 36, acc_z);
+    _mav_put_float(buf, 40, gyro_x);
+    _mav_put_float(buf, 44, gyro_y);
+    _mav_put_float(buf, 48, gyro_z);
+    _mav_put_float(buf, 52, mag_x);
+    _mav_put_float(buf, 56, mag_y);
+    _mav_put_float(buf, 60, mag_z);
+    _mav_put_float(buf, 64, gps_lat);
+    _mav_put_float(buf, 68, gps_lon);
+    _mav_put_float(buf, 72, gps_alt);
+    _mav_put_float(buf, 76, left_servo_angle);
+    _mav_put_float(buf, 80, right_servo_angle);
+    _mav_put_float(buf, 84, nas_n);
+    _mav_put_float(buf, 88, nas_e);
+    _mav_put_float(buf, 92, nas_d);
+    _mav_put_float(buf, 96, nas_vn);
+    _mav_put_float(buf, 100, nas_ve);
+    _mav_put_float(buf, 104, nas_vd);
+    _mav_put_float(buf, 108, nas_qx);
+    _mav_put_float(buf, 112, nas_qy);
+    _mav_put_float(buf, 116, nas_qz);
+    _mav_put_float(buf, 120, nas_qw);
+    _mav_put_float(buf, 124, nas_bias_x);
+    _mav_put_float(buf, 128, nas_bias_y);
+    _mav_put_float(buf, 132, nas_bias_z);
+    _mav_put_float(buf, 136, wes_n);
+    _mav_put_float(buf, 140, wes_e);
+    _mav_put_float(buf, 144, battery_voltage);
+    _mav_put_float(buf, 148, cam_battery_voltage);
+    _mav_put_float(buf, 152, temperature);
+    _mav_put_uint8_t(buf, 156, gps_fix);
+    _mav_put_uint8_t(buf, 157, fmm_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN);
+#else
+    mavlink_payload_flight_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dynamic = pressure_dynamic;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.altitude_agl = altitude_agl;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    packet.gps_lat = gps_lat;
+    packet.gps_lon = gps_lon;
+    packet.gps_alt = gps_alt;
+    packet.left_servo_angle = left_servo_angle;
+    packet.right_servo_angle = right_servo_angle;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.wes_n = wes_n;
+    packet.wes_e = wes_e;
+    packet.battery_voltage = battery_voltage;
+    packet.cam_battery_voltage = cam_battery_voltage;
+    packet.temperature = temperature;
+    packet.gps_fix = gps_fix;
+    packet.fmm_state = fmm_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_CRC);
+}
+
+/**
+ * @brief Pack a payload_flight_tm 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 timestamp [us] Timestamp in microseconds
+ * @param pressure_digi [Pa] Pressure from digital sensor
+ * @param pressure_static [Pa] Pressure from static port
+ * @param pressure_dynamic [Pa] Pressure from dynamic port
+ * @param airspeed_pitot [m/s] Pitot airspeed
+ * @param altitude_agl [m] Altitude above ground level
+ * @param acc_x [m/s^2] Acceleration on X axis (body)
+ * @param acc_y [m/s^2] Acceleration on Y axis (body)
+ * @param acc_z [m/s^2] Acceleration on Z axis (body)
+ * @param gyro_x [rad/s] Angular speed on X axis (body)
+ * @param gyro_y [rad/s] Angular speed on Y axis (body)
+ * @param gyro_z [rad/s] Angular speed on Z axis (body)
+ * @param mag_x [uT] Magnetic field on X axis (body)
+ * @param mag_y [uT] Magnetic field on Y axis (body)
+ * @param mag_z [uT] Magnetic field on Z axis (body)
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param fmm_state  Flight Mode Manager State
+ * @param left_servo_angle [deg] Left servo motor angle
+ * @param right_servo_angle [deg] Right servo motor angle
+ * @param nas_n [deg] NAS estimated noth position
+ * @param nas_e [deg] NAS estimated east position
+ * @param nas_d [m] NAS estimated down position
+ * @param nas_vn [m/s] NAS estimated north velocity
+ * @param nas_ve [m/s] NAS estimated east velocity
+ * @param nas_vd [m/s] NAS estimated down velocity
+ * @param nas_qx  NAS estimated attitude (qx)
+ * @param nas_qy  NAS estimated attitude (qy)
+ * @param nas_qz  NAS estimated attitude (qz)
+ * @param nas_qw  NAS estimated attitude (qw)
+ * @param nas_bias_x  NAS gyroscope bias on x axis
+ * @param nas_bias_y  NAS gyroscope bias on y axis
+ * @param nas_bias_z  NAS gyroscope bias on z axis
+ * @param wes_n [m/s] Wind estimated north velocity
+ * @param wes_e [m/s] Wind estimated east velocity
+ * @param battery_voltage [V] Battery voltage
+ * @param cam_battery_voltage [V] Camera battery voltage
+ * @param temperature [degC] Temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_payload_flight_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,float pressure_digi,float pressure_static,float pressure_dynamic,float airspeed_pitot,float altitude_agl,float acc_x,float acc_y,float acc_z,float gyro_x,float gyro_y,float gyro_z,float mag_x,float mag_y,float mag_z,uint8_t gps_fix,float gps_lat,float gps_lon,float gps_alt,uint8_t fmm_state,float left_servo_angle,float right_servo_angle,float nas_n,float nas_e,float nas_d,float nas_vn,float nas_ve,float nas_vd,float nas_qx,float nas_qy,float nas_qz,float nas_qw,float nas_bias_x,float nas_bias_y,float nas_bias_z,float wes_n,float wes_e,float battery_voltage,float cam_battery_voltage,float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure_digi);
+    _mav_put_float(buf, 12, pressure_static);
+    _mav_put_float(buf, 16, pressure_dynamic);
+    _mav_put_float(buf, 20, airspeed_pitot);
+    _mav_put_float(buf, 24, altitude_agl);
+    _mav_put_float(buf, 28, acc_x);
+    _mav_put_float(buf, 32, acc_y);
+    _mav_put_float(buf, 36, acc_z);
+    _mav_put_float(buf, 40, gyro_x);
+    _mav_put_float(buf, 44, gyro_y);
+    _mav_put_float(buf, 48, gyro_z);
+    _mav_put_float(buf, 52, mag_x);
+    _mav_put_float(buf, 56, mag_y);
+    _mav_put_float(buf, 60, mag_z);
+    _mav_put_float(buf, 64, gps_lat);
+    _mav_put_float(buf, 68, gps_lon);
+    _mav_put_float(buf, 72, gps_alt);
+    _mav_put_float(buf, 76, left_servo_angle);
+    _mav_put_float(buf, 80, right_servo_angle);
+    _mav_put_float(buf, 84, nas_n);
+    _mav_put_float(buf, 88, nas_e);
+    _mav_put_float(buf, 92, nas_d);
+    _mav_put_float(buf, 96, nas_vn);
+    _mav_put_float(buf, 100, nas_ve);
+    _mav_put_float(buf, 104, nas_vd);
+    _mav_put_float(buf, 108, nas_qx);
+    _mav_put_float(buf, 112, nas_qy);
+    _mav_put_float(buf, 116, nas_qz);
+    _mav_put_float(buf, 120, nas_qw);
+    _mav_put_float(buf, 124, nas_bias_x);
+    _mav_put_float(buf, 128, nas_bias_y);
+    _mav_put_float(buf, 132, nas_bias_z);
+    _mav_put_float(buf, 136, wes_n);
+    _mav_put_float(buf, 140, wes_e);
+    _mav_put_float(buf, 144, battery_voltage);
+    _mav_put_float(buf, 148, cam_battery_voltage);
+    _mav_put_float(buf, 152, temperature);
+    _mav_put_uint8_t(buf, 156, gps_fix);
+    _mav_put_uint8_t(buf, 157, fmm_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN);
+#else
+    mavlink_payload_flight_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dynamic = pressure_dynamic;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.altitude_agl = altitude_agl;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    packet.gps_lat = gps_lat;
+    packet.gps_lon = gps_lon;
+    packet.gps_alt = gps_alt;
+    packet.left_servo_angle = left_servo_angle;
+    packet.right_servo_angle = right_servo_angle;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.wes_n = wes_n;
+    packet.wes_e = wes_e;
+    packet.battery_voltage = battery_voltage;
+    packet.cam_battery_voltage = cam_battery_voltage;
+    packet.temperature = temperature;
+    packet.gps_fix = gps_fix;
+    packet.fmm_state = fmm_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_CRC);
+}
+
+/**
+ * @brief Encode a payload_flight_tm 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 payload_flight_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_payload_flight_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_payload_flight_tm_t* payload_flight_tm)
+{
+    return mavlink_msg_payload_flight_tm_pack(system_id, component_id, msg, payload_flight_tm->timestamp, payload_flight_tm->pressure_digi, payload_flight_tm->pressure_static, payload_flight_tm->pressure_dynamic, payload_flight_tm->airspeed_pitot, payload_flight_tm->altitude_agl, payload_flight_tm->acc_x, payload_flight_tm->acc_y, payload_flight_tm->acc_z, payload_flight_tm->gyro_x, payload_flight_tm->gyro_y, payload_flight_tm->gyro_z, payload_flight_tm->mag_x, payload_flight_tm->mag_y, payload_flight_tm->mag_z, payload_flight_tm->gps_fix, payload_flight_tm->gps_lat, payload_flight_tm->gps_lon, payload_flight_tm->gps_alt, payload_flight_tm->fmm_state, payload_flight_tm->left_servo_angle, payload_flight_tm->right_servo_angle, payload_flight_tm->nas_n, payload_flight_tm->nas_e, payload_flight_tm->nas_d, payload_flight_tm->nas_vn, payload_flight_tm->nas_ve, payload_flight_tm->nas_vd, payload_flight_tm->nas_qx, payload_flight_tm->nas_qy, payload_flight_tm->nas_qz, payload_flight_tm->nas_qw, payload_flight_tm->nas_bias_x, payload_flight_tm->nas_bias_y, payload_flight_tm->nas_bias_z, payload_flight_tm->wes_n, payload_flight_tm->wes_e, payload_flight_tm->battery_voltage, payload_flight_tm->cam_battery_voltage, payload_flight_tm->temperature);
+}
+
+/**
+ * @brief Encode a payload_flight_tm 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 payload_flight_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_payload_flight_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_payload_flight_tm_t* payload_flight_tm)
+{
+    return mavlink_msg_payload_flight_tm_pack_chan(system_id, component_id, chan, msg, payload_flight_tm->timestamp, payload_flight_tm->pressure_digi, payload_flight_tm->pressure_static, payload_flight_tm->pressure_dynamic, payload_flight_tm->airspeed_pitot, payload_flight_tm->altitude_agl, payload_flight_tm->acc_x, payload_flight_tm->acc_y, payload_flight_tm->acc_z, payload_flight_tm->gyro_x, payload_flight_tm->gyro_y, payload_flight_tm->gyro_z, payload_flight_tm->mag_x, payload_flight_tm->mag_y, payload_flight_tm->mag_z, payload_flight_tm->gps_fix, payload_flight_tm->gps_lat, payload_flight_tm->gps_lon, payload_flight_tm->gps_alt, payload_flight_tm->fmm_state, payload_flight_tm->left_servo_angle, payload_flight_tm->right_servo_angle, payload_flight_tm->nas_n, payload_flight_tm->nas_e, payload_flight_tm->nas_d, payload_flight_tm->nas_vn, payload_flight_tm->nas_ve, payload_flight_tm->nas_vd, payload_flight_tm->nas_qx, payload_flight_tm->nas_qy, payload_flight_tm->nas_qz, payload_flight_tm->nas_qw, payload_flight_tm->nas_bias_x, payload_flight_tm->nas_bias_y, payload_flight_tm->nas_bias_z, payload_flight_tm->wes_n, payload_flight_tm->wes_e, payload_flight_tm->battery_voltage, payload_flight_tm->cam_battery_voltage, payload_flight_tm->temperature);
+}
+
+/**
+ * @brief Send a payload_flight_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp in microseconds
+ * @param pressure_digi [Pa] Pressure from digital sensor
+ * @param pressure_static [Pa] Pressure from static port
+ * @param pressure_dynamic [Pa] Pressure from dynamic port
+ * @param airspeed_pitot [m/s] Pitot airspeed
+ * @param altitude_agl [m] Altitude above ground level
+ * @param acc_x [m/s^2] Acceleration on X axis (body)
+ * @param acc_y [m/s^2] Acceleration on Y axis (body)
+ * @param acc_z [m/s^2] Acceleration on Z axis (body)
+ * @param gyro_x [rad/s] Angular speed on X axis (body)
+ * @param gyro_y [rad/s] Angular speed on Y axis (body)
+ * @param gyro_z [rad/s] Angular speed on Z axis (body)
+ * @param mag_x [uT] Magnetic field on X axis (body)
+ * @param mag_y [uT] Magnetic field on Y axis (body)
+ * @param mag_z [uT] Magnetic field on Z axis (body)
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param fmm_state  Flight Mode Manager State
+ * @param left_servo_angle [deg] Left servo motor angle
+ * @param right_servo_angle [deg] Right servo motor angle
+ * @param nas_n [deg] NAS estimated noth position
+ * @param nas_e [deg] NAS estimated east position
+ * @param nas_d [m] NAS estimated down position
+ * @param nas_vn [m/s] NAS estimated north velocity
+ * @param nas_ve [m/s] NAS estimated east velocity
+ * @param nas_vd [m/s] NAS estimated down velocity
+ * @param nas_qx  NAS estimated attitude (qx)
+ * @param nas_qy  NAS estimated attitude (qy)
+ * @param nas_qz  NAS estimated attitude (qz)
+ * @param nas_qw  NAS estimated attitude (qw)
+ * @param nas_bias_x  NAS gyroscope bias on x axis
+ * @param nas_bias_y  NAS gyroscope bias on y axis
+ * @param nas_bias_z  NAS gyroscope bias on z axis
+ * @param wes_n [m/s] Wind estimated north velocity
+ * @param wes_e [m/s] Wind estimated east velocity
+ * @param battery_voltage [V] Battery voltage
+ * @param cam_battery_voltage [V] Camera battery voltage
+ * @param temperature [degC] Temperature
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_payload_flight_tm_send(mavlink_channel_t chan, uint64_t timestamp, float pressure_digi, float pressure_static, float pressure_dynamic, float airspeed_pitot, float altitude_agl, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z, uint8_t gps_fix, float gps_lat, float gps_lon, float gps_alt, uint8_t fmm_state, float left_servo_angle, float right_servo_angle, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float wes_n, float wes_e, float battery_voltage, float cam_battery_voltage, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure_digi);
+    _mav_put_float(buf, 12, pressure_static);
+    _mav_put_float(buf, 16, pressure_dynamic);
+    _mav_put_float(buf, 20, airspeed_pitot);
+    _mav_put_float(buf, 24, altitude_agl);
+    _mav_put_float(buf, 28, acc_x);
+    _mav_put_float(buf, 32, acc_y);
+    _mav_put_float(buf, 36, acc_z);
+    _mav_put_float(buf, 40, gyro_x);
+    _mav_put_float(buf, 44, gyro_y);
+    _mav_put_float(buf, 48, gyro_z);
+    _mav_put_float(buf, 52, mag_x);
+    _mav_put_float(buf, 56, mag_y);
+    _mav_put_float(buf, 60, mag_z);
+    _mav_put_float(buf, 64, gps_lat);
+    _mav_put_float(buf, 68, gps_lon);
+    _mav_put_float(buf, 72, gps_alt);
+    _mav_put_float(buf, 76, left_servo_angle);
+    _mav_put_float(buf, 80, right_servo_angle);
+    _mav_put_float(buf, 84, nas_n);
+    _mav_put_float(buf, 88, nas_e);
+    _mav_put_float(buf, 92, nas_d);
+    _mav_put_float(buf, 96, nas_vn);
+    _mav_put_float(buf, 100, nas_ve);
+    _mav_put_float(buf, 104, nas_vd);
+    _mav_put_float(buf, 108, nas_qx);
+    _mav_put_float(buf, 112, nas_qy);
+    _mav_put_float(buf, 116, nas_qz);
+    _mav_put_float(buf, 120, nas_qw);
+    _mav_put_float(buf, 124, nas_bias_x);
+    _mav_put_float(buf, 128, nas_bias_y);
+    _mav_put_float(buf, 132, nas_bias_z);
+    _mav_put_float(buf, 136, wes_n);
+    _mav_put_float(buf, 140, wes_e);
+    _mav_put_float(buf, 144, battery_voltage);
+    _mav_put_float(buf, 148, cam_battery_voltage);
+    _mav_put_float(buf, 152, temperature);
+    _mav_put_uint8_t(buf, 156, gps_fix);
+    _mav_put_uint8_t(buf, 157, fmm_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM, buf, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_CRC);
+#else
+    mavlink_payload_flight_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dynamic = pressure_dynamic;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.altitude_agl = altitude_agl;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    packet.gps_lat = gps_lat;
+    packet.gps_lon = gps_lon;
+    packet.gps_alt = gps_alt;
+    packet.left_servo_angle = left_servo_angle;
+    packet.right_servo_angle = right_servo_angle;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.wes_n = wes_n;
+    packet.wes_e = wes_e;
+    packet.battery_voltage = battery_voltage;
+    packet.cam_battery_voltage = cam_battery_voltage;
+    packet.temperature = temperature;
+    packet.gps_fix = gps_fix;
+    packet.fmm_state = fmm_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM, (const char *)&packet, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a payload_flight_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_payload_flight_tm_send_struct(mavlink_channel_t chan, const mavlink_payload_flight_tm_t* payload_flight_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_payload_flight_tm_send(chan, payload_flight_tm->timestamp, payload_flight_tm->pressure_digi, payload_flight_tm->pressure_static, payload_flight_tm->pressure_dynamic, payload_flight_tm->airspeed_pitot, payload_flight_tm->altitude_agl, payload_flight_tm->acc_x, payload_flight_tm->acc_y, payload_flight_tm->acc_z, payload_flight_tm->gyro_x, payload_flight_tm->gyro_y, payload_flight_tm->gyro_z, payload_flight_tm->mag_x, payload_flight_tm->mag_y, payload_flight_tm->mag_z, payload_flight_tm->gps_fix, payload_flight_tm->gps_lat, payload_flight_tm->gps_lon, payload_flight_tm->gps_alt, payload_flight_tm->fmm_state, payload_flight_tm->left_servo_angle, payload_flight_tm->right_servo_angle, payload_flight_tm->nas_n, payload_flight_tm->nas_e, payload_flight_tm->nas_d, payload_flight_tm->nas_vn, payload_flight_tm->nas_ve, payload_flight_tm->nas_vd, payload_flight_tm->nas_qx, payload_flight_tm->nas_qy, payload_flight_tm->nas_qz, payload_flight_tm->nas_qw, payload_flight_tm->nas_bias_x, payload_flight_tm->nas_bias_y, payload_flight_tm->nas_bias_z, payload_flight_tm->wes_n, payload_flight_tm->wes_e, payload_flight_tm->battery_voltage, payload_flight_tm->cam_battery_voltage, payload_flight_tm->temperature);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM, (const char *)payload_flight_tm, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_payload_flight_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, float pressure_digi, float pressure_static, float pressure_dynamic, float airspeed_pitot, float altitude_agl, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z, uint8_t gps_fix, float gps_lat, float gps_lon, float gps_alt, uint8_t fmm_state, float left_servo_angle, float right_servo_angle, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float wes_n, float wes_e, float battery_voltage, float cam_battery_voltage, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure_digi);
+    _mav_put_float(buf, 12, pressure_static);
+    _mav_put_float(buf, 16, pressure_dynamic);
+    _mav_put_float(buf, 20, airspeed_pitot);
+    _mav_put_float(buf, 24, altitude_agl);
+    _mav_put_float(buf, 28, acc_x);
+    _mav_put_float(buf, 32, acc_y);
+    _mav_put_float(buf, 36, acc_z);
+    _mav_put_float(buf, 40, gyro_x);
+    _mav_put_float(buf, 44, gyro_y);
+    _mav_put_float(buf, 48, gyro_z);
+    _mav_put_float(buf, 52, mag_x);
+    _mav_put_float(buf, 56, mag_y);
+    _mav_put_float(buf, 60, mag_z);
+    _mav_put_float(buf, 64, gps_lat);
+    _mav_put_float(buf, 68, gps_lon);
+    _mav_put_float(buf, 72, gps_alt);
+    _mav_put_float(buf, 76, left_servo_angle);
+    _mav_put_float(buf, 80, right_servo_angle);
+    _mav_put_float(buf, 84, nas_n);
+    _mav_put_float(buf, 88, nas_e);
+    _mav_put_float(buf, 92, nas_d);
+    _mav_put_float(buf, 96, nas_vn);
+    _mav_put_float(buf, 100, nas_ve);
+    _mav_put_float(buf, 104, nas_vd);
+    _mav_put_float(buf, 108, nas_qx);
+    _mav_put_float(buf, 112, nas_qy);
+    _mav_put_float(buf, 116, nas_qz);
+    _mav_put_float(buf, 120, nas_qw);
+    _mav_put_float(buf, 124, nas_bias_x);
+    _mav_put_float(buf, 128, nas_bias_y);
+    _mav_put_float(buf, 132, nas_bias_z);
+    _mav_put_float(buf, 136, wes_n);
+    _mav_put_float(buf, 140, wes_e);
+    _mav_put_float(buf, 144, battery_voltage);
+    _mav_put_float(buf, 148, cam_battery_voltage);
+    _mav_put_float(buf, 152, temperature);
+    _mav_put_uint8_t(buf, 156, gps_fix);
+    _mav_put_uint8_t(buf, 157, fmm_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM, buf, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_CRC);
+#else
+    mavlink_payload_flight_tm_t *packet = (mavlink_payload_flight_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->pressure_digi = pressure_digi;
+    packet->pressure_static = pressure_static;
+    packet->pressure_dynamic = pressure_dynamic;
+    packet->airspeed_pitot = airspeed_pitot;
+    packet->altitude_agl = altitude_agl;
+    packet->acc_x = acc_x;
+    packet->acc_y = acc_y;
+    packet->acc_z = acc_z;
+    packet->gyro_x = gyro_x;
+    packet->gyro_y = gyro_y;
+    packet->gyro_z = gyro_z;
+    packet->mag_x = mag_x;
+    packet->mag_y = mag_y;
+    packet->mag_z = mag_z;
+    packet->gps_lat = gps_lat;
+    packet->gps_lon = gps_lon;
+    packet->gps_alt = gps_alt;
+    packet->left_servo_angle = left_servo_angle;
+    packet->right_servo_angle = right_servo_angle;
+    packet->nas_n = nas_n;
+    packet->nas_e = nas_e;
+    packet->nas_d = nas_d;
+    packet->nas_vn = nas_vn;
+    packet->nas_ve = nas_ve;
+    packet->nas_vd = nas_vd;
+    packet->nas_qx = nas_qx;
+    packet->nas_qy = nas_qy;
+    packet->nas_qz = nas_qz;
+    packet->nas_qw = nas_qw;
+    packet->nas_bias_x = nas_bias_x;
+    packet->nas_bias_y = nas_bias_y;
+    packet->nas_bias_z = nas_bias_z;
+    packet->wes_n = wes_n;
+    packet->wes_e = wes_e;
+    packet->battery_voltage = battery_voltage;
+    packet->cam_battery_voltage = cam_battery_voltage;
+    packet->temperature = temperature;
+    packet->gps_fix = gps_fix;
+    packet->fmm_state = fmm_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM, (const char *)packet, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE PAYLOAD_FLIGHT_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from payload_flight_tm message
+ *
+ * @return [us] Timestamp in microseconds
+ */
+static inline uint64_t mavlink_msg_payload_flight_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field pressure_digi from payload_flight_tm message
+ *
+ * @return [Pa] Pressure from digital sensor
+ */
+static inline float mavlink_msg_payload_flight_tm_get_pressure_digi(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field pressure_static from payload_flight_tm message
+ *
+ * @return [Pa] Pressure from static port
+ */
+static inline float mavlink_msg_payload_flight_tm_get_pressure_static(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field pressure_dynamic from payload_flight_tm message
+ *
+ * @return [Pa] Pressure from dynamic port
+ */
+static inline float mavlink_msg_payload_flight_tm_get_pressure_dynamic(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field airspeed_pitot from payload_flight_tm message
+ *
+ * @return [m/s] Pitot airspeed
+ */
+static inline float mavlink_msg_payload_flight_tm_get_airspeed_pitot(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field altitude_agl from payload_flight_tm message
+ *
+ * @return [m] Altitude above ground level
+ */
+static inline float mavlink_msg_payload_flight_tm_get_altitude_agl(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field acc_x from payload_flight_tm message
+ *
+ * @return [m/s^2] Acceleration on X axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_acc_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field acc_y from payload_flight_tm message
+ *
+ * @return [m/s^2] Acceleration on Y axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_acc_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field acc_z from payload_flight_tm message
+ *
+ * @return [m/s^2] Acceleration on Z axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_acc_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field gyro_x from payload_flight_tm message
+ *
+ * @return [rad/s] Angular speed on X axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_gyro_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Get field gyro_y from payload_flight_tm message
+ *
+ * @return [rad/s] Angular speed on Y axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_gyro_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  44);
+}
+
+/**
+ * @brief Get field gyro_z from payload_flight_tm message
+ *
+ * @return [rad/s] Angular speed on Z axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_gyro_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  48);
+}
+
+/**
+ * @brief Get field mag_x from payload_flight_tm message
+ *
+ * @return [uT] Magnetic field on X axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_mag_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  52);
+}
+
+/**
+ * @brief Get field mag_y from payload_flight_tm message
+ *
+ * @return [uT] Magnetic field on Y axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_mag_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  56);
+}
+
+/**
+ * @brief Get field mag_z from payload_flight_tm message
+ *
+ * @return [uT] Magnetic field on Z axis (body)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_mag_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  60);
+}
+
+/**
+ * @brief Get field gps_fix from payload_flight_tm message
+ *
+ * @return  Wether the GPS has a FIX
+ */
+static inline uint8_t mavlink_msg_payload_flight_tm_get_gps_fix(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  156);
+}
+
+/**
+ * @brief Get field gps_lat from payload_flight_tm message
+ *
+ * @return [deg] Latitude
+ */
+static inline float mavlink_msg_payload_flight_tm_get_gps_lat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  64);
+}
+
+/**
+ * @brief Get field gps_lon from payload_flight_tm message
+ *
+ * @return [deg] Longitude
+ */
+static inline float mavlink_msg_payload_flight_tm_get_gps_lon(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  68);
+}
+
+/**
+ * @brief Get field gps_alt from payload_flight_tm message
+ *
+ * @return [m] GPS Altitude
+ */
+static inline float mavlink_msg_payload_flight_tm_get_gps_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  72);
+}
+
+/**
+ * @brief Get field fmm_state from payload_flight_tm message
+ *
+ * @return  Flight Mode Manager State
+ */
+static inline uint8_t mavlink_msg_payload_flight_tm_get_fmm_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  157);
+}
+
+/**
+ * @brief Get field left_servo_angle from payload_flight_tm message
+ *
+ * @return [deg] Left servo motor angle
+ */
+static inline float mavlink_msg_payload_flight_tm_get_left_servo_angle(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  76);
+}
+
+/**
+ * @brief Get field right_servo_angle from payload_flight_tm message
+ *
+ * @return [deg] Right servo motor angle
+ */
+static inline float mavlink_msg_payload_flight_tm_get_right_servo_angle(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  80);
+}
+
+/**
+ * @brief Get field nas_n from payload_flight_tm message
+ *
+ * @return [deg] NAS estimated noth position
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_n(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  84);
+}
+
+/**
+ * @brief Get field nas_e from payload_flight_tm message
+ *
+ * @return [deg] NAS estimated east position
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_e(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  88);
+}
+
+/**
+ * @brief Get field nas_d from payload_flight_tm message
+ *
+ * @return [m] NAS estimated down position
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_d(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  92);
+}
+
+/**
+ * @brief Get field nas_vn from payload_flight_tm message
+ *
+ * @return [m/s] NAS estimated north velocity
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_vn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  96);
+}
+
+/**
+ * @brief Get field nas_ve from payload_flight_tm message
+ *
+ * @return [m/s] NAS estimated east velocity
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_ve(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  100);
+}
+
+/**
+ * @brief Get field nas_vd from payload_flight_tm message
+ *
+ * @return [m/s] NAS estimated down velocity
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_vd(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  104);
+}
+
+/**
+ * @brief Get field nas_qx from payload_flight_tm message
+ *
+ * @return  NAS estimated attitude (qx)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_qx(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  108);
+}
+
+/**
+ * @brief Get field nas_qy from payload_flight_tm message
+ *
+ * @return  NAS estimated attitude (qy)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_qy(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  112);
+}
+
+/**
+ * @brief Get field nas_qz from payload_flight_tm message
+ *
+ * @return  NAS estimated attitude (qz)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_qz(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  116);
+}
+
+/**
+ * @brief Get field nas_qw from payload_flight_tm message
+ *
+ * @return  NAS estimated attitude (qw)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_qw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  120);
+}
+
+/**
+ * @brief Get field nas_bias_x from payload_flight_tm message
+ *
+ * @return  NAS gyroscope bias on x axis
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_bias_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  124);
+}
+
+/**
+ * @brief Get field nas_bias_y from payload_flight_tm message
+ *
+ * @return  NAS gyroscope bias on y axis
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_bias_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  128);
+}
+
+/**
+ * @brief Get field nas_bias_z from payload_flight_tm message
+ *
+ * @return  NAS gyroscope bias on z axis
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_bias_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  132);
+}
+
+/**
+ * @brief Get field wes_n from payload_flight_tm message
+ *
+ * @return [m/s] Wind estimated north velocity
+ */
+static inline float mavlink_msg_payload_flight_tm_get_wes_n(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  136);
+}
+
+/**
+ * @brief Get field wes_e from payload_flight_tm message
+ *
+ * @return [m/s] Wind estimated east velocity
+ */
+static inline float mavlink_msg_payload_flight_tm_get_wes_e(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  140);
+}
+
+/**
+ * @brief Get field battery_voltage from payload_flight_tm message
+ *
+ * @return [V] Battery voltage
+ */
+static inline float mavlink_msg_payload_flight_tm_get_battery_voltage(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  144);
+}
+
+/**
+ * @brief Get field cam_battery_voltage from payload_flight_tm message
+ *
+ * @return [V] Camera battery voltage
+ */
+static inline float mavlink_msg_payload_flight_tm_get_cam_battery_voltage(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  148);
+}
+
+/**
+ * @brief Get field temperature from payload_flight_tm message
+ *
+ * @return [degC] Temperature
+ */
+static inline float mavlink_msg_payload_flight_tm_get_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  152);
+}
+
+/**
+ * @brief Decode a payload_flight_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param payload_flight_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_payload_flight_tm_decode(const mavlink_message_t* msg, mavlink_payload_flight_tm_t* payload_flight_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    payload_flight_tm->timestamp = mavlink_msg_payload_flight_tm_get_timestamp(msg);
+    payload_flight_tm->pressure_digi = mavlink_msg_payload_flight_tm_get_pressure_digi(msg);
+    payload_flight_tm->pressure_static = mavlink_msg_payload_flight_tm_get_pressure_static(msg);
+    payload_flight_tm->pressure_dynamic = mavlink_msg_payload_flight_tm_get_pressure_dynamic(msg);
+    payload_flight_tm->airspeed_pitot = mavlink_msg_payload_flight_tm_get_airspeed_pitot(msg);
+    payload_flight_tm->altitude_agl = mavlink_msg_payload_flight_tm_get_altitude_agl(msg);
+    payload_flight_tm->acc_x = mavlink_msg_payload_flight_tm_get_acc_x(msg);
+    payload_flight_tm->acc_y = mavlink_msg_payload_flight_tm_get_acc_y(msg);
+    payload_flight_tm->acc_z = mavlink_msg_payload_flight_tm_get_acc_z(msg);
+    payload_flight_tm->gyro_x = mavlink_msg_payload_flight_tm_get_gyro_x(msg);
+    payload_flight_tm->gyro_y = mavlink_msg_payload_flight_tm_get_gyro_y(msg);
+    payload_flight_tm->gyro_z = mavlink_msg_payload_flight_tm_get_gyro_z(msg);
+    payload_flight_tm->mag_x = mavlink_msg_payload_flight_tm_get_mag_x(msg);
+    payload_flight_tm->mag_y = mavlink_msg_payload_flight_tm_get_mag_y(msg);
+    payload_flight_tm->mag_z = mavlink_msg_payload_flight_tm_get_mag_z(msg);
+    payload_flight_tm->gps_lat = mavlink_msg_payload_flight_tm_get_gps_lat(msg);
+    payload_flight_tm->gps_lon = mavlink_msg_payload_flight_tm_get_gps_lon(msg);
+    payload_flight_tm->gps_alt = mavlink_msg_payload_flight_tm_get_gps_alt(msg);
+    payload_flight_tm->left_servo_angle = mavlink_msg_payload_flight_tm_get_left_servo_angle(msg);
+    payload_flight_tm->right_servo_angle = mavlink_msg_payload_flight_tm_get_right_servo_angle(msg);
+    payload_flight_tm->nas_n = mavlink_msg_payload_flight_tm_get_nas_n(msg);
+    payload_flight_tm->nas_e = mavlink_msg_payload_flight_tm_get_nas_e(msg);
+    payload_flight_tm->nas_d = mavlink_msg_payload_flight_tm_get_nas_d(msg);
+    payload_flight_tm->nas_vn = mavlink_msg_payload_flight_tm_get_nas_vn(msg);
+    payload_flight_tm->nas_ve = mavlink_msg_payload_flight_tm_get_nas_ve(msg);
+    payload_flight_tm->nas_vd = mavlink_msg_payload_flight_tm_get_nas_vd(msg);
+    payload_flight_tm->nas_qx = mavlink_msg_payload_flight_tm_get_nas_qx(msg);
+    payload_flight_tm->nas_qy = mavlink_msg_payload_flight_tm_get_nas_qy(msg);
+    payload_flight_tm->nas_qz = mavlink_msg_payload_flight_tm_get_nas_qz(msg);
+    payload_flight_tm->nas_qw = mavlink_msg_payload_flight_tm_get_nas_qw(msg);
+    payload_flight_tm->nas_bias_x = mavlink_msg_payload_flight_tm_get_nas_bias_x(msg);
+    payload_flight_tm->nas_bias_y = mavlink_msg_payload_flight_tm_get_nas_bias_y(msg);
+    payload_flight_tm->nas_bias_z = mavlink_msg_payload_flight_tm_get_nas_bias_z(msg);
+    payload_flight_tm->wes_n = mavlink_msg_payload_flight_tm_get_wes_n(msg);
+    payload_flight_tm->wes_e = mavlink_msg_payload_flight_tm_get_wes_e(msg);
+    payload_flight_tm->battery_voltage = mavlink_msg_payload_flight_tm_get_battery_voltage(msg);
+    payload_flight_tm->cam_battery_voltage = mavlink_msg_payload_flight_tm_get_cam_battery_voltage(msg);
+    payload_flight_tm->temperature = mavlink_msg_payload_flight_tm_get_temperature(msg);
+    payload_flight_tm->gps_fix = mavlink_msg_payload_flight_tm_get_gps_fix(msg);
+    payload_flight_tm->fmm_state = mavlink_msg_payload_flight_tm_get_fmm_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN? msg->len : MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN;
+        memset(payload_flight_tm, 0, MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_LEN);
+    memcpy(payload_flight_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_payload_stats_tm.h b/mavlink_lib/orion/mavlink_msg_payload_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..becea83e0541d181c273cd9d4b5f34a79cc9bdc2
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_payload_stats_tm.h
@@ -0,0 +1,1263 @@
+#pragma once
+// MESSAGE PAYLOAD_STATS_TM PACKING
+
+#define MAVLINK_MSG_ID_PAYLOAD_STATS_TM 211
+
+
+typedef struct __mavlink_payload_stats_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp in microseconds*/
+ uint64_t liftoff_ts; /*< [us] System clock at liftoff*/
+ uint64_t liftoff_max_acc_ts; /*< [us] System clock at the maximum liftoff acceleration*/
+ uint64_t max_speed_ts; /*< [us] System clock at max speed*/
+ uint64_t max_mach_ts; /*<  System clock at maximum measured mach*/
+ uint64_t apogee_ts; /*< [us] System clock at apogee*/
+ uint64_t apogee_max_acc_ts; /*< [us] System clock at max acceleration after apogee*/
+ uint64_t dpl_ts; /*< [us] System clock at main deployment*/
+ uint64_t dpl_max_acc_ts; /*< [us] System clock at max acceleration during main deployment*/
+ float liftoff_max_acc; /*< [m/s2] Maximum liftoff acceleration*/
+ float max_speed; /*< [m/s] Max measured speed*/
+ float max_speed_altitude; /*< [m] Altitude at max speed*/
+ float max_mach; /*<  Maximum measured mach*/
+ float apogee_lat; /*< [deg] Apogee latitude*/
+ float apogee_lon; /*< [deg] Apogee longitude*/
+ float apogee_alt; /*< [m] Apogee altitude*/
+ float apogee_max_acc; /*< [m/s2] Max acceleration after apogee*/
+ float wing_target_lat; /*< [deg] Wing target latitude*/
+ float wing_target_lon; /*< [deg] Wing target longitude*/
+ float wing_active_target_n; /*< [m] Wing active target N*/
+ float wing_active_target_e; /*< [m] Wing active target E*/
+ float dpl_alt; /*< [m] Deployment altitude*/
+ float dpl_max_acc; /*< [m/s2] Max acceleration during main deployment*/
+ float ref_lat; /*< [deg] Reference altitude*/
+ float ref_lon; /*< [deg] Reference longitude*/
+ float ref_alt; /*< [m] Reference altitude*/
+ float min_pressure; /*< [Pa] Apogee pressure - Digital barometer*/
+ float cpu_load; /*<  CPU load in percentage*/
+ uint32_t free_heap; /*<  Amount of available heap in memory*/
+ int32_t log_good; /*<  0 if log failed, 1 otherwise*/
+ int16_t log_number; /*<  Currently active log file, -1 if the logger is inactive*/
+ uint8_t wing_algorithm; /*<  Wing selected algorithm*/
+ uint8_t nas_state; /*<  NAS FSM State*/
+ uint8_t wnc_state; /*<  Wing Controller State*/
+ uint8_t pin_launch; /*<  Launch pin status (1 = connected, 0 = disconnected)*/
+ uint8_t pin_nosecone; /*<  Nosecone pin status (1 = connected, 0 = disconnected)*/
+ uint8_t cutter_presence; /*<  Cutter presence status (1 = present, 0 = missing)*/
+ uint8_t main_board_state; /*<  Main board fmm state*/
+ uint8_t motor_board_state; /*<  Motor board fmm state*/
+ uint8_t main_can_status; /*<  Main CAN status*/
+ uint8_t motor_can_status; /*<  Motor CAN status*/
+ uint8_t rig_can_status; /*<  RIG CAN status*/
+ uint8_t hil_state; /*<  1 if the board is currently in HIL mode*/
+} mavlink_payload_stats_tm_t;
+
+#define MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN 170
+#define MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN 170
+#define MAVLINK_MSG_ID_211_LEN 170
+#define MAVLINK_MSG_ID_211_MIN_LEN 170
+
+#define MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC 99
+#define MAVLINK_MSG_ID_211_CRC 99
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PAYLOAD_STATS_TM { \
+    211, \
+    "PAYLOAD_STATS_TM", \
+    43, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_payload_stats_tm_t, timestamp) }, \
+         { "liftoff_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_payload_stats_tm_t, liftoff_ts) }, \
+         { "liftoff_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_payload_stats_tm_t, liftoff_max_acc_ts) }, \
+         { "liftoff_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_payload_stats_tm_t, liftoff_max_acc) }, \
+         { "max_speed_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 24, offsetof(mavlink_payload_stats_tm_t, max_speed_ts) }, \
+         { "max_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_payload_stats_tm_t, max_speed) }, \
+         { "max_speed_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_payload_stats_tm_t, max_speed_altitude) }, \
+         { "max_mach_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 32, offsetof(mavlink_payload_stats_tm_t, max_mach_ts) }, \
+         { "max_mach", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_payload_stats_tm_t, max_mach) }, \
+         { "apogee_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 40, offsetof(mavlink_payload_stats_tm_t, apogee_ts) }, \
+         { "apogee_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_payload_stats_tm_t, apogee_lat) }, \
+         { "apogee_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_payload_stats_tm_t, apogee_lon) }, \
+         { "apogee_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_payload_stats_tm_t, apogee_alt) }, \
+         { "apogee_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 48, offsetof(mavlink_payload_stats_tm_t, apogee_max_acc_ts) }, \
+         { "apogee_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_payload_stats_tm_t, apogee_max_acc) }, \
+         { "wing_target_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_payload_stats_tm_t, wing_target_lat) }, \
+         { "wing_target_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_payload_stats_tm_t, wing_target_lon) }, \
+         { "wing_active_target_n", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_payload_stats_tm_t, wing_active_target_n) }, \
+         { "wing_active_target_e", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_payload_stats_tm_t, wing_active_target_e) }, \
+         { "wing_algorithm", NULL, MAVLINK_TYPE_UINT8_T, 0, 158, offsetof(mavlink_payload_stats_tm_t, wing_algorithm) }, \
+         { "dpl_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 56, offsetof(mavlink_payload_stats_tm_t, dpl_ts) }, \
+         { "dpl_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_payload_stats_tm_t, dpl_alt) }, \
+         { "dpl_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 64, offsetof(mavlink_payload_stats_tm_t, dpl_max_acc_ts) }, \
+         { "dpl_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_payload_stats_tm_t, dpl_max_acc) }, \
+         { "ref_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_payload_stats_tm_t, ref_lat) }, \
+         { "ref_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_payload_stats_tm_t, ref_lon) }, \
+         { "ref_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_payload_stats_tm_t, ref_alt) }, \
+         { "min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_payload_stats_tm_t, min_pressure) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_payload_stats_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 148, offsetof(mavlink_payload_stats_tm_t, free_heap) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 159, offsetof(mavlink_payload_stats_tm_t, nas_state) }, \
+         { "wnc_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 160, offsetof(mavlink_payload_stats_tm_t, wnc_state) }, \
+         { "pin_launch", NULL, MAVLINK_TYPE_UINT8_T, 0, 161, offsetof(mavlink_payload_stats_tm_t, pin_launch) }, \
+         { "pin_nosecone", NULL, MAVLINK_TYPE_UINT8_T, 0, 162, offsetof(mavlink_payload_stats_tm_t, pin_nosecone) }, \
+         { "cutter_presence", NULL, MAVLINK_TYPE_UINT8_T, 0, 163, offsetof(mavlink_payload_stats_tm_t, cutter_presence) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 156, offsetof(mavlink_payload_stats_tm_t, log_number) }, \
+         { "log_good", NULL, MAVLINK_TYPE_INT32_T, 0, 152, offsetof(mavlink_payload_stats_tm_t, log_good) }, \
+         { "main_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 164, offsetof(mavlink_payload_stats_tm_t, main_board_state) }, \
+         { "motor_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 165, offsetof(mavlink_payload_stats_tm_t, motor_board_state) }, \
+         { "main_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 166, offsetof(mavlink_payload_stats_tm_t, main_can_status) }, \
+         { "motor_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 167, offsetof(mavlink_payload_stats_tm_t, motor_can_status) }, \
+         { "rig_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 168, offsetof(mavlink_payload_stats_tm_t, rig_can_status) }, \
+         { "hil_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 169, offsetof(mavlink_payload_stats_tm_t, hil_state) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_PAYLOAD_STATS_TM { \
+    "PAYLOAD_STATS_TM", \
+    43, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_payload_stats_tm_t, timestamp) }, \
+         { "liftoff_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_payload_stats_tm_t, liftoff_ts) }, \
+         { "liftoff_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_payload_stats_tm_t, liftoff_max_acc_ts) }, \
+         { "liftoff_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_payload_stats_tm_t, liftoff_max_acc) }, \
+         { "max_speed_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 24, offsetof(mavlink_payload_stats_tm_t, max_speed_ts) }, \
+         { "max_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_payload_stats_tm_t, max_speed) }, \
+         { "max_speed_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_payload_stats_tm_t, max_speed_altitude) }, \
+         { "max_mach_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 32, offsetof(mavlink_payload_stats_tm_t, max_mach_ts) }, \
+         { "max_mach", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_payload_stats_tm_t, max_mach) }, \
+         { "apogee_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 40, offsetof(mavlink_payload_stats_tm_t, apogee_ts) }, \
+         { "apogee_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_payload_stats_tm_t, apogee_lat) }, \
+         { "apogee_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_payload_stats_tm_t, apogee_lon) }, \
+         { "apogee_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_payload_stats_tm_t, apogee_alt) }, \
+         { "apogee_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 48, offsetof(mavlink_payload_stats_tm_t, apogee_max_acc_ts) }, \
+         { "apogee_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_payload_stats_tm_t, apogee_max_acc) }, \
+         { "wing_target_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_payload_stats_tm_t, wing_target_lat) }, \
+         { "wing_target_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_payload_stats_tm_t, wing_target_lon) }, \
+         { "wing_active_target_n", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_payload_stats_tm_t, wing_active_target_n) }, \
+         { "wing_active_target_e", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_payload_stats_tm_t, wing_active_target_e) }, \
+         { "wing_algorithm", NULL, MAVLINK_TYPE_UINT8_T, 0, 158, offsetof(mavlink_payload_stats_tm_t, wing_algorithm) }, \
+         { "dpl_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 56, offsetof(mavlink_payload_stats_tm_t, dpl_ts) }, \
+         { "dpl_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_payload_stats_tm_t, dpl_alt) }, \
+         { "dpl_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 64, offsetof(mavlink_payload_stats_tm_t, dpl_max_acc_ts) }, \
+         { "dpl_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_payload_stats_tm_t, dpl_max_acc) }, \
+         { "ref_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_payload_stats_tm_t, ref_lat) }, \
+         { "ref_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_payload_stats_tm_t, ref_lon) }, \
+         { "ref_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_payload_stats_tm_t, ref_alt) }, \
+         { "min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_payload_stats_tm_t, min_pressure) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_payload_stats_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 148, offsetof(mavlink_payload_stats_tm_t, free_heap) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 159, offsetof(mavlink_payload_stats_tm_t, nas_state) }, \
+         { "wnc_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 160, offsetof(mavlink_payload_stats_tm_t, wnc_state) }, \
+         { "pin_launch", NULL, MAVLINK_TYPE_UINT8_T, 0, 161, offsetof(mavlink_payload_stats_tm_t, pin_launch) }, \
+         { "pin_nosecone", NULL, MAVLINK_TYPE_UINT8_T, 0, 162, offsetof(mavlink_payload_stats_tm_t, pin_nosecone) }, \
+         { "cutter_presence", NULL, MAVLINK_TYPE_UINT8_T, 0, 163, offsetof(mavlink_payload_stats_tm_t, cutter_presence) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 156, offsetof(mavlink_payload_stats_tm_t, log_number) }, \
+         { "log_good", NULL, MAVLINK_TYPE_INT32_T, 0, 152, offsetof(mavlink_payload_stats_tm_t, log_good) }, \
+         { "main_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 164, offsetof(mavlink_payload_stats_tm_t, main_board_state) }, \
+         { "motor_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 165, offsetof(mavlink_payload_stats_tm_t, motor_board_state) }, \
+         { "main_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 166, offsetof(mavlink_payload_stats_tm_t, main_can_status) }, \
+         { "motor_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 167, offsetof(mavlink_payload_stats_tm_t, motor_can_status) }, \
+         { "rig_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 168, offsetof(mavlink_payload_stats_tm_t, rig_can_status) }, \
+         { "hil_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 169, offsetof(mavlink_payload_stats_tm_t, hil_state) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a payload_stats_tm 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 timestamp [us] Timestamp in microseconds
+ * @param liftoff_ts [us] System clock at liftoff
+ * @param liftoff_max_acc_ts [us] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_speed_ts [us] System clock at max speed
+ * @param max_speed [m/s] Max measured speed
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param max_mach_ts  System clock at maximum measured mach
+ * @param max_mach  Maximum measured mach
+ * @param apogee_ts [us] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param apogee_alt [m] Apogee altitude
+ * @param apogee_max_acc_ts [us] System clock at max acceleration after apogee
+ * @param apogee_max_acc [m/s2] Max acceleration after apogee
+ * @param wing_target_lat [deg] Wing target latitude
+ * @param wing_target_lon [deg] Wing target longitude
+ * @param wing_active_target_n [m] Wing active target N
+ * @param wing_active_target_e [m] Wing active target E
+ * @param wing_algorithm  Wing selected algorithm
+ * @param dpl_ts [us] System clock at main deployment
+ * @param dpl_alt [m] Deployment altitude
+ * @param dpl_max_acc_ts [us] System clock at max acceleration during main deployment
+ * @param dpl_max_acc [m/s2] Max acceleration during main deployment
+ * @param ref_lat [deg] Reference altitude
+ * @param ref_lon [deg] Reference longitude
+ * @param ref_alt [m] Reference altitude
+ * @param min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param nas_state  NAS FSM State
+ * @param wnc_state  Wing Controller State
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param cutter_presence  Cutter presence status (1 = present, 0 = missing)
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param main_board_state  Main board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param main_can_status  Main CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param rig_can_status  RIG CAN status
+ * @param hil_state  1 if the board is currently in HIL mode
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_payload_stats_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint64_t liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_speed_ts, float max_speed, float max_speed_altitude, uint64_t max_mach_ts, float max_mach, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float apogee_alt, uint64_t apogee_max_acc_ts, float apogee_max_acc, float wing_target_lat, float wing_target_lon, float wing_active_target_n, float wing_active_target_e, uint8_t wing_algorithm, uint64_t dpl_ts, float dpl_alt, uint64_t dpl_max_acc_ts, float dpl_max_acc, float ref_lat, float ref_lon, float ref_alt, float min_pressure, float cpu_load, uint32_t free_heap, uint8_t nas_state, uint8_t wnc_state, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t cutter_presence, int16_t log_number, int32_t log_good, uint8_t main_board_state, uint8_t motor_board_state, uint8_t main_can_status, uint8_t motor_can_status, uint8_t rig_can_status, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, liftoff_ts);
+    _mav_put_uint64_t(buf, 16, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 24, max_speed_ts);
+    _mav_put_uint64_t(buf, 32, max_mach_ts);
+    _mav_put_uint64_t(buf, 40, apogee_ts);
+    _mav_put_uint64_t(buf, 48, apogee_max_acc_ts);
+    _mav_put_uint64_t(buf, 56, dpl_ts);
+    _mav_put_uint64_t(buf, 64, dpl_max_acc_ts);
+    _mav_put_float(buf, 72, liftoff_max_acc);
+    _mav_put_float(buf, 76, max_speed);
+    _mav_put_float(buf, 80, max_speed_altitude);
+    _mav_put_float(buf, 84, max_mach);
+    _mav_put_float(buf, 88, apogee_lat);
+    _mav_put_float(buf, 92, apogee_lon);
+    _mav_put_float(buf, 96, apogee_alt);
+    _mav_put_float(buf, 100, apogee_max_acc);
+    _mav_put_float(buf, 104, wing_target_lat);
+    _mav_put_float(buf, 108, wing_target_lon);
+    _mav_put_float(buf, 112, wing_active_target_n);
+    _mav_put_float(buf, 116, wing_active_target_e);
+    _mav_put_float(buf, 120, dpl_alt);
+    _mav_put_float(buf, 124, dpl_max_acc);
+    _mav_put_float(buf, 128, ref_lat);
+    _mav_put_float(buf, 132, ref_lon);
+    _mav_put_float(buf, 136, ref_alt);
+    _mav_put_float(buf, 140, min_pressure);
+    _mav_put_float(buf, 144, cpu_load);
+    _mav_put_uint32_t(buf, 148, free_heap);
+    _mav_put_int32_t(buf, 152, log_good);
+    _mav_put_int16_t(buf, 156, log_number);
+    _mav_put_uint8_t(buf, 158, wing_algorithm);
+    _mav_put_uint8_t(buf, 159, nas_state);
+    _mav_put_uint8_t(buf, 160, wnc_state);
+    _mav_put_uint8_t(buf, 161, pin_launch);
+    _mav_put_uint8_t(buf, 162, pin_nosecone);
+    _mav_put_uint8_t(buf, 163, cutter_presence);
+    _mav_put_uint8_t(buf, 164, main_board_state);
+    _mav_put_uint8_t(buf, 165, motor_board_state);
+    _mav_put_uint8_t(buf, 166, main_can_status);
+    _mav_put_uint8_t(buf, 167, motor_can_status);
+    _mav_put_uint8_t(buf, 168, rig_can_status);
+    _mav_put_uint8_t(buf, 169, hil_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN);
+#else
+    mavlink_payload_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_speed_ts = max_speed_ts;
+    packet.max_mach_ts = max_mach_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.apogee_max_acc_ts = apogee_max_acc_ts;
+    packet.dpl_ts = dpl_ts;
+    packet.dpl_max_acc_ts = dpl_max_acc_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_speed = max_speed;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.max_mach = max_mach;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.apogee_alt = apogee_alt;
+    packet.apogee_max_acc = apogee_max_acc;
+    packet.wing_target_lat = wing_target_lat;
+    packet.wing_target_lon = wing_target_lon;
+    packet.wing_active_target_n = wing_active_target_n;
+    packet.wing_active_target_e = wing_active_target_e;
+    packet.dpl_alt = dpl_alt;
+    packet.dpl_max_acc = dpl_max_acc;
+    packet.ref_lat = ref_lat;
+    packet.ref_lon = ref_lon;
+    packet.ref_alt = ref_alt;
+    packet.min_pressure = min_pressure;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.wing_algorithm = wing_algorithm;
+    packet.nas_state = nas_state;
+    packet.wnc_state = wnc_state;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.cutter_presence = cutter_presence;
+    packet.main_board_state = main_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.main_can_status = main_can_status;
+    packet.motor_can_status = motor_can_status;
+    packet.rig_can_status = rig_can_status;
+    packet.hil_state = hil_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PAYLOAD_STATS_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC);
+}
+
+/**
+ * @brief Pack a payload_stats_tm 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 timestamp [us] Timestamp in microseconds
+ * @param liftoff_ts [us] System clock at liftoff
+ * @param liftoff_max_acc_ts [us] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_speed_ts [us] System clock at max speed
+ * @param max_speed [m/s] Max measured speed
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param max_mach_ts  System clock at maximum measured mach
+ * @param max_mach  Maximum measured mach
+ * @param apogee_ts [us] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param apogee_alt [m] Apogee altitude
+ * @param apogee_max_acc_ts [us] System clock at max acceleration after apogee
+ * @param apogee_max_acc [m/s2] Max acceleration after apogee
+ * @param wing_target_lat [deg] Wing target latitude
+ * @param wing_target_lon [deg] Wing target longitude
+ * @param wing_active_target_n [m] Wing active target N
+ * @param wing_active_target_e [m] Wing active target E
+ * @param wing_algorithm  Wing selected algorithm
+ * @param dpl_ts [us] System clock at main deployment
+ * @param dpl_alt [m] Deployment altitude
+ * @param dpl_max_acc_ts [us] System clock at max acceleration during main deployment
+ * @param dpl_max_acc [m/s2] Max acceleration during main deployment
+ * @param ref_lat [deg] Reference altitude
+ * @param ref_lon [deg] Reference longitude
+ * @param ref_alt [m] Reference altitude
+ * @param min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param nas_state  NAS FSM State
+ * @param wnc_state  Wing Controller State
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param cutter_presence  Cutter presence status (1 = present, 0 = missing)
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param main_board_state  Main board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param main_can_status  Main CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param rig_can_status  RIG CAN status
+ * @param hil_state  1 if the board is currently in HIL mode
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_payload_stats_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint64_t liftoff_ts,uint64_t liftoff_max_acc_ts,float liftoff_max_acc,uint64_t max_speed_ts,float max_speed,float max_speed_altitude,uint64_t max_mach_ts,float max_mach,uint64_t apogee_ts,float apogee_lat,float apogee_lon,float apogee_alt,uint64_t apogee_max_acc_ts,float apogee_max_acc,float wing_target_lat,float wing_target_lon,float wing_active_target_n,float wing_active_target_e,uint8_t wing_algorithm,uint64_t dpl_ts,float dpl_alt,uint64_t dpl_max_acc_ts,float dpl_max_acc,float ref_lat,float ref_lon,float ref_alt,float min_pressure,float cpu_load,uint32_t free_heap,uint8_t nas_state,uint8_t wnc_state,uint8_t pin_launch,uint8_t pin_nosecone,uint8_t cutter_presence,int16_t log_number,int32_t log_good,uint8_t main_board_state,uint8_t motor_board_state,uint8_t main_can_status,uint8_t motor_can_status,uint8_t rig_can_status,uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, liftoff_ts);
+    _mav_put_uint64_t(buf, 16, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 24, max_speed_ts);
+    _mav_put_uint64_t(buf, 32, max_mach_ts);
+    _mav_put_uint64_t(buf, 40, apogee_ts);
+    _mav_put_uint64_t(buf, 48, apogee_max_acc_ts);
+    _mav_put_uint64_t(buf, 56, dpl_ts);
+    _mav_put_uint64_t(buf, 64, dpl_max_acc_ts);
+    _mav_put_float(buf, 72, liftoff_max_acc);
+    _mav_put_float(buf, 76, max_speed);
+    _mav_put_float(buf, 80, max_speed_altitude);
+    _mav_put_float(buf, 84, max_mach);
+    _mav_put_float(buf, 88, apogee_lat);
+    _mav_put_float(buf, 92, apogee_lon);
+    _mav_put_float(buf, 96, apogee_alt);
+    _mav_put_float(buf, 100, apogee_max_acc);
+    _mav_put_float(buf, 104, wing_target_lat);
+    _mav_put_float(buf, 108, wing_target_lon);
+    _mav_put_float(buf, 112, wing_active_target_n);
+    _mav_put_float(buf, 116, wing_active_target_e);
+    _mav_put_float(buf, 120, dpl_alt);
+    _mav_put_float(buf, 124, dpl_max_acc);
+    _mav_put_float(buf, 128, ref_lat);
+    _mav_put_float(buf, 132, ref_lon);
+    _mav_put_float(buf, 136, ref_alt);
+    _mav_put_float(buf, 140, min_pressure);
+    _mav_put_float(buf, 144, cpu_load);
+    _mav_put_uint32_t(buf, 148, free_heap);
+    _mav_put_int32_t(buf, 152, log_good);
+    _mav_put_int16_t(buf, 156, log_number);
+    _mav_put_uint8_t(buf, 158, wing_algorithm);
+    _mav_put_uint8_t(buf, 159, nas_state);
+    _mav_put_uint8_t(buf, 160, wnc_state);
+    _mav_put_uint8_t(buf, 161, pin_launch);
+    _mav_put_uint8_t(buf, 162, pin_nosecone);
+    _mav_put_uint8_t(buf, 163, cutter_presence);
+    _mav_put_uint8_t(buf, 164, main_board_state);
+    _mav_put_uint8_t(buf, 165, motor_board_state);
+    _mav_put_uint8_t(buf, 166, main_can_status);
+    _mav_put_uint8_t(buf, 167, motor_can_status);
+    _mav_put_uint8_t(buf, 168, rig_can_status);
+    _mav_put_uint8_t(buf, 169, hil_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN);
+#else
+    mavlink_payload_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_speed_ts = max_speed_ts;
+    packet.max_mach_ts = max_mach_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.apogee_max_acc_ts = apogee_max_acc_ts;
+    packet.dpl_ts = dpl_ts;
+    packet.dpl_max_acc_ts = dpl_max_acc_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_speed = max_speed;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.max_mach = max_mach;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.apogee_alt = apogee_alt;
+    packet.apogee_max_acc = apogee_max_acc;
+    packet.wing_target_lat = wing_target_lat;
+    packet.wing_target_lon = wing_target_lon;
+    packet.wing_active_target_n = wing_active_target_n;
+    packet.wing_active_target_e = wing_active_target_e;
+    packet.dpl_alt = dpl_alt;
+    packet.dpl_max_acc = dpl_max_acc;
+    packet.ref_lat = ref_lat;
+    packet.ref_lon = ref_lon;
+    packet.ref_alt = ref_alt;
+    packet.min_pressure = min_pressure;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.wing_algorithm = wing_algorithm;
+    packet.nas_state = nas_state;
+    packet.wnc_state = wnc_state;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.cutter_presence = cutter_presence;
+    packet.main_board_state = main_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.main_can_status = main_can_status;
+    packet.motor_can_status = motor_can_status;
+    packet.rig_can_status = rig_can_status;
+    packet.hil_state = hil_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PAYLOAD_STATS_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC);
+}
+
+/**
+ * @brief Encode a payload_stats_tm 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 payload_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_payload_stats_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_payload_stats_tm_t* payload_stats_tm)
+{
+    return mavlink_msg_payload_stats_tm_pack(system_id, component_id, msg, payload_stats_tm->timestamp, payload_stats_tm->liftoff_ts, payload_stats_tm->liftoff_max_acc_ts, payload_stats_tm->liftoff_max_acc, payload_stats_tm->max_speed_ts, payload_stats_tm->max_speed, payload_stats_tm->max_speed_altitude, payload_stats_tm->max_mach_ts, payload_stats_tm->max_mach, payload_stats_tm->apogee_ts, payload_stats_tm->apogee_lat, payload_stats_tm->apogee_lon, payload_stats_tm->apogee_alt, payload_stats_tm->apogee_max_acc_ts, payload_stats_tm->apogee_max_acc, payload_stats_tm->wing_target_lat, payload_stats_tm->wing_target_lon, payload_stats_tm->wing_active_target_n, payload_stats_tm->wing_active_target_e, payload_stats_tm->wing_algorithm, payload_stats_tm->dpl_ts, payload_stats_tm->dpl_alt, payload_stats_tm->dpl_max_acc_ts, payload_stats_tm->dpl_max_acc, payload_stats_tm->ref_lat, payload_stats_tm->ref_lon, payload_stats_tm->ref_alt, payload_stats_tm->min_pressure, payload_stats_tm->cpu_load, payload_stats_tm->free_heap, payload_stats_tm->nas_state, payload_stats_tm->wnc_state, payload_stats_tm->pin_launch, payload_stats_tm->pin_nosecone, payload_stats_tm->cutter_presence, payload_stats_tm->log_number, payload_stats_tm->log_good, payload_stats_tm->main_board_state, payload_stats_tm->motor_board_state, payload_stats_tm->main_can_status, payload_stats_tm->motor_can_status, payload_stats_tm->rig_can_status, payload_stats_tm->hil_state);
+}
+
+/**
+ * @brief Encode a payload_stats_tm 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 payload_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_payload_stats_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_payload_stats_tm_t* payload_stats_tm)
+{
+    return mavlink_msg_payload_stats_tm_pack_chan(system_id, component_id, chan, msg, payload_stats_tm->timestamp, payload_stats_tm->liftoff_ts, payload_stats_tm->liftoff_max_acc_ts, payload_stats_tm->liftoff_max_acc, payload_stats_tm->max_speed_ts, payload_stats_tm->max_speed, payload_stats_tm->max_speed_altitude, payload_stats_tm->max_mach_ts, payload_stats_tm->max_mach, payload_stats_tm->apogee_ts, payload_stats_tm->apogee_lat, payload_stats_tm->apogee_lon, payload_stats_tm->apogee_alt, payload_stats_tm->apogee_max_acc_ts, payload_stats_tm->apogee_max_acc, payload_stats_tm->wing_target_lat, payload_stats_tm->wing_target_lon, payload_stats_tm->wing_active_target_n, payload_stats_tm->wing_active_target_e, payload_stats_tm->wing_algorithm, payload_stats_tm->dpl_ts, payload_stats_tm->dpl_alt, payload_stats_tm->dpl_max_acc_ts, payload_stats_tm->dpl_max_acc, payload_stats_tm->ref_lat, payload_stats_tm->ref_lon, payload_stats_tm->ref_alt, payload_stats_tm->min_pressure, payload_stats_tm->cpu_load, payload_stats_tm->free_heap, payload_stats_tm->nas_state, payload_stats_tm->wnc_state, payload_stats_tm->pin_launch, payload_stats_tm->pin_nosecone, payload_stats_tm->cutter_presence, payload_stats_tm->log_number, payload_stats_tm->log_good, payload_stats_tm->main_board_state, payload_stats_tm->motor_board_state, payload_stats_tm->main_can_status, payload_stats_tm->motor_can_status, payload_stats_tm->rig_can_status, payload_stats_tm->hil_state);
+}
+
+/**
+ * @brief Send a payload_stats_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp in microseconds
+ * @param liftoff_ts [us] System clock at liftoff
+ * @param liftoff_max_acc_ts [us] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_speed_ts [us] System clock at max speed
+ * @param max_speed [m/s] Max measured speed
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param max_mach_ts  System clock at maximum measured mach
+ * @param max_mach  Maximum measured mach
+ * @param apogee_ts [us] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param apogee_alt [m] Apogee altitude
+ * @param apogee_max_acc_ts [us] System clock at max acceleration after apogee
+ * @param apogee_max_acc [m/s2] Max acceleration after apogee
+ * @param wing_target_lat [deg] Wing target latitude
+ * @param wing_target_lon [deg] Wing target longitude
+ * @param wing_active_target_n [m] Wing active target N
+ * @param wing_active_target_e [m] Wing active target E
+ * @param wing_algorithm  Wing selected algorithm
+ * @param dpl_ts [us] System clock at main deployment
+ * @param dpl_alt [m] Deployment altitude
+ * @param dpl_max_acc_ts [us] System clock at max acceleration during main deployment
+ * @param dpl_max_acc [m/s2] Max acceleration during main deployment
+ * @param ref_lat [deg] Reference altitude
+ * @param ref_lon [deg] Reference longitude
+ * @param ref_alt [m] Reference altitude
+ * @param min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param nas_state  NAS FSM State
+ * @param wnc_state  Wing Controller State
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param cutter_presence  Cutter presence status (1 = present, 0 = missing)
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param main_board_state  Main board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param main_can_status  Main CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param rig_can_status  RIG CAN status
+ * @param hil_state  1 if the board is currently in HIL mode
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_payload_stats_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint64_t liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_speed_ts, float max_speed, float max_speed_altitude, uint64_t max_mach_ts, float max_mach, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float apogee_alt, uint64_t apogee_max_acc_ts, float apogee_max_acc, float wing_target_lat, float wing_target_lon, float wing_active_target_n, float wing_active_target_e, uint8_t wing_algorithm, uint64_t dpl_ts, float dpl_alt, uint64_t dpl_max_acc_ts, float dpl_max_acc, float ref_lat, float ref_lon, float ref_alt, float min_pressure, float cpu_load, uint32_t free_heap, uint8_t nas_state, uint8_t wnc_state, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t cutter_presence, int16_t log_number, int32_t log_good, uint8_t main_board_state, uint8_t motor_board_state, uint8_t main_can_status, uint8_t motor_can_status, uint8_t rig_can_status, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, liftoff_ts);
+    _mav_put_uint64_t(buf, 16, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 24, max_speed_ts);
+    _mav_put_uint64_t(buf, 32, max_mach_ts);
+    _mav_put_uint64_t(buf, 40, apogee_ts);
+    _mav_put_uint64_t(buf, 48, apogee_max_acc_ts);
+    _mav_put_uint64_t(buf, 56, dpl_ts);
+    _mav_put_uint64_t(buf, 64, dpl_max_acc_ts);
+    _mav_put_float(buf, 72, liftoff_max_acc);
+    _mav_put_float(buf, 76, max_speed);
+    _mav_put_float(buf, 80, max_speed_altitude);
+    _mav_put_float(buf, 84, max_mach);
+    _mav_put_float(buf, 88, apogee_lat);
+    _mav_put_float(buf, 92, apogee_lon);
+    _mav_put_float(buf, 96, apogee_alt);
+    _mav_put_float(buf, 100, apogee_max_acc);
+    _mav_put_float(buf, 104, wing_target_lat);
+    _mav_put_float(buf, 108, wing_target_lon);
+    _mav_put_float(buf, 112, wing_active_target_n);
+    _mav_put_float(buf, 116, wing_active_target_e);
+    _mav_put_float(buf, 120, dpl_alt);
+    _mav_put_float(buf, 124, dpl_max_acc);
+    _mav_put_float(buf, 128, ref_lat);
+    _mav_put_float(buf, 132, ref_lon);
+    _mav_put_float(buf, 136, ref_alt);
+    _mav_put_float(buf, 140, min_pressure);
+    _mav_put_float(buf, 144, cpu_load);
+    _mav_put_uint32_t(buf, 148, free_heap);
+    _mav_put_int32_t(buf, 152, log_good);
+    _mav_put_int16_t(buf, 156, log_number);
+    _mav_put_uint8_t(buf, 158, wing_algorithm);
+    _mav_put_uint8_t(buf, 159, nas_state);
+    _mav_put_uint8_t(buf, 160, wnc_state);
+    _mav_put_uint8_t(buf, 161, pin_launch);
+    _mav_put_uint8_t(buf, 162, pin_nosecone);
+    _mav_put_uint8_t(buf, 163, cutter_presence);
+    _mav_put_uint8_t(buf, 164, main_board_state);
+    _mav_put_uint8_t(buf, 165, motor_board_state);
+    _mav_put_uint8_t(buf, 166, main_can_status);
+    _mav_put_uint8_t(buf, 167, motor_can_status);
+    _mav_put_uint8_t(buf, 168, rig_can_status);
+    _mav_put_uint8_t(buf, 169, hil_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_STATS_TM, buf, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC);
+#else
+    mavlink_payload_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_speed_ts = max_speed_ts;
+    packet.max_mach_ts = max_mach_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.apogee_max_acc_ts = apogee_max_acc_ts;
+    packet.dpl_ts = dpl_ts;
+    packet.dpl_max_acc_ts = dpl_max_acc_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_speed = max_speed;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.max_mach = max_mach;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.apogee_alt = apogee_alt;
+    packet.apogee_max_acc = apogee_max_acc;
+    packet.wing_target_lat = wing_target_lat;
+    packet.wing_target_lon = wing_target_lon;
+    packet.wing_active_target_n = wing_active_target_n;
+    packet.wing_active_target_e = wing_active_target_e;
+    packet.dpl_alt = dpl_alt;
+    packet.dpl_max_acc = dpl_max_acc;
+    packet.ref_lat = ref_lat;
+    packet.ref_lon = ref_lon;
+    packet.ref_alt = ref_alt;
+    packet.min_pressure = min_pressure;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.wing_algorithm = wing_algorithm;
+    packet.nas_state = nas_state;
+    packet.wnc_state = wnc_state;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.cutter_presence = cutter_presence;
+    packet.main_board_state = main_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.main_can_status = main_can_status;
+    packet.motor_can_status = motor_can_status;
+    packet.rig_can_status = rig_can_status;
+    packet.hil_state = hil_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_STATS_TM, (const char *)&packet, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a payload_stats_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_payload_stats_tm_send_struct(mavlink_channel_t chan, const mavlink_payload_stats_tm_t* payload_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_payload_stats_tm_send(chan, payload_stats_tm->timestamp, payload_stats_tm->liftoff_ts, payload_stats_tm->liftoff_max_acc_ts, payload_stats_tm->liftoff_max_acc, payload_stats_tm->max_speed_ts, payload_stats_tm->max_speed, payload_stats_tm->max_speed_altitude, payload_stats_tm->max_mach_ts, payload_stats_tm->max_mach, payload_stats_tm->apogee_ts, payload_stats_tm->apogee_lat, payload_stats_tm->apogee_lon, payload_stats_tm->apogee_alt, payload_stats_tm->apogee_max_acc_ts, payload_stats_tm->apogee_max_acc, payload_stats_tm->wing_target_lat, payload_stats_tm->wing_target_lon, payload_stats_tm->wing_active_target_n, payload_stats_tm->wing_active_target_e, payload_stats_tm->wing_algorithm, payload_stats_tm->dpl_ts, payload_stats_tm->dpl_alt, payload_stats_tm->dpl_max_acc_ts, payload_stats_tm->dpl_max_acc, payload_stats_tm->ref_lat, payload_stats_tm->ref_lon, payload_stats_tm->ref_alt, payload_stats_tm->min_pressure, payload_stats_tm->cpu_load, payload_stats_tm->free_heap, payload_stats_tm->nas_state, payload_stats_tm->wnc_state, payload_stats_tm->pin_launch, payload_stats_tm->pin_nosecone, payload_stats_tm->cutter_presence, payload_stats_tm->log_number, payload_stats_tm->log_good, payload_stats_tm->main_board_state, payload_stats_tm->motor_board_state, payload_stats_tm->main_can_status, payload_stats_tm->motor_can_status, payload_stats_tm->rig_can_status, payload_stats_tm->hil_state);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_STATS_TM, (const char *)payload_stats_tm, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_payload_stats_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint64_t liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_speed_ts, float max_speed, float max_speed_altitude, uint64_t max_mach_ts, float max_mach, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float apogee_alt, uint64_t apogee_max_acc_ts, float apogee_max_acc, float wing_target_lat, float wing_target_lon, float wing_active_target_n, float wing_active_target_e, uint8_t wing_algorithm, uint64_t dpl_ts, float dpl_alt, uint64_t dpl_max_acc_ts, float dpl_max_acc, float ref_lat, float ref_lon, float ref_alt, float min_pressure, float cpu_load, uint32_t free_heap, uint8_t nas_state, uint8_t wnc_state, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t cutter_presence, int16_t log_number, int32_t log_good, uint8_t main_board_state, uint8_t motor_board_state, uint8_t main_can_status, uint8_t motor_can_status, uint8_t rig_can_status, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, liftoff_ts);
+    _mav_put_uint64_t(buf, 16, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 24, max_speed_ts);
+    _mav_put_uint64_t(buf, 32, max_mach_ts);
+    _mav_put_uint64_t(buf, 40, apogee_ts);
+    _mav_put_uint64_t(buf, 48, apogee_max_acc_ts);
+    _mav_put_uint64_t(buf, 56, dpl_ts);
+    _mav_put_uint64_t(buf, 64, dpl_max_acc_ts);
+    _mav_put_float(buf, 72, liftoff_max_acc);
+    _mav_put_float(buf, 76, max_speed);
+    _mav_put_float(buf, 80, max_speed_altitude);
+    _mav_put_float(buf, 84, max_mach);
+    _mav_put_float(buf, 88, apogee_lat);
+    _mav_put_float(buf, 92, apogee_lon);
+    _mav_put_float(buf, 96, apogee_alt);
+    _mav_put_float(buf, 100, apogee_max_acc);
+    _mav_put_float(buf, 104, wing_target_lat);
+    _mav_put_float(buf, 108, wing_target_lon);
+    _mav_put_float(buf, 112, wing_active_target_n);
+    _mav_put_float(buf, 116, wing_active_target_e);
+    _mav_put_float(buf, 120, dpl_alt);
+    _mav_put_float(buf, 124, dpl_max_acc);
+    _mav_put_float(buf, 128, ref_lat);
+    _mav_put_float(buf, 132, ref_lon);
+    _mav_put_float(buf, 136, ref_alt);
+    _mav_put_float(buf, 140, min_pressure);
+    _mav_put_float(buf, 144, cpu_load);
+    _mav_put_uint32_t(buf, 148, free_heap);
+    _mav_put_int32_t(buf, 152, log_good);
+    _mav_put_int16_t(buf, 156, log_number);
+    _mav_put_uint8_t(buf, 158, wing_algorithm);
+    _mav_put_uint8_t(buf, 159, nas_state);
+    _mav_put_uint8_t(buf, 160, wnc_state);
+    _mav_put_uint8_t(buf, 161, pin_launch);
+    _mav_put_uint8_t(buf, 162, pin_nosecone);
+    _mav_put_uint8_t(buf, 163, cutter_presence);
+    _mav_put_uint8_t(buf, 164, main_board_state);
+    _mav_put_uint8_t(buf, 165, motor_board_state);
+    _mav_put_uint8_t(buf, 166, main_can_status);
+    _mav_put_uint8_t(buf, 167, motor_can_status);
+    _mav_put_uint8_t(buf, 168, rig_can_status);
+    _mav_put_uint8_t(buf, 169, hil_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_STATS_TM, buf, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC);
+#else
+    mavlink_payload_stats_tm_t *packet = (mavlink_payload_stats_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->liftoff_ts = liftoff_ts;
+    packet->liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet->max_speed_ts = max_speed_ts;
+    packet->max_mach_ts = max_mach_ts;
+    packet->apogee_ts = apogee_ts;
+    packet->apogee_max_acc_ts = apogee_max_acc_ts;
+    packet->dpl_ts = dpl_ts;
+    packet->dpl_max_acc_ts = dpl_max_acc_ts;
+    packet->liftoff_max_acc = liftoff_max_acc;
+    packet->max_speed = max_speed;
+    packet->max_speed_altitude = max_speed_altitude;
+    packet->max_mach = max_mach;
+    packet->apogee_lat = apogee_lat;
+    packet->apogee_lon = apogee_lon;
+    packet->apogee_alt = apogee_alt;
+    packet->apogee_max_acc = apogee_max_acc;
+    packet->wing_target_lat = wing_target_lat;
+    packet->wing_target_lon = wing_target_lon;
+    packet->wing_active_target_n = wing_active_target_n;
+    packet->wing_active_target_e = wing_active_target_e;
+    packet->dpl_alt = dpl_alt;
+    packet->dpl_max_acc = dpl_max_acc;
+    packet->ref_lat = ref_lat;
+    packet->ref_lon = ref_lon;
+    packet->ref_alt = ref_alt;
+    packet->min_pressure = min_pressure;
+    packet->cpu_load = cpu_load;
+    packet->free_heap = free_heap;
+    packet->log_good = log_good;
+    packet->log_number = log_number;
+    packet->wing_algorithm = wing_algorithm;
+    packet->nas_state = nas_state;
+    packet->wnc_state = wnc_state;
+    packet->pin_launch = pin_launch;
+    packet->pin_nosecone = pin_nosecone;
+    packet->cutter_presence = cutter_presence;
+    packet->main_board_state = main_board_state;
+    packet->motor_board_state = motor_board_state;
+    packet->main_can_status = main_can_status;
+    packet->motor_can_status = motor_can_status;
+    packet->rig_can_status = rig_can_status;
+    packet->hil_state = hil_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PAYLOAD_STATS_TM, (const char *)packet, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE PAYLOAD_STATS_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from payload_stats_tm message
+ *
+ * @return [us] Timestamp in microseconds
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field liftoff_ts from payload_stats_tm message
+ *
+ * @return [us] System clock at liftoff
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_liftoff_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  8);
+}
+
+/**
+ * @brief Get field liftoff_max_acc_ts from payload_stats_tm message
+ *
+ * @return [us] System clock at the maximum liftoff acceleration
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_liftoff_max_acc_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  16);
+}
+
+/**
+ * @brief Get field liftoff_max_acc from payload_stats_tm message
+ *
+ * @return [m/s2] Maximum liftoff acceleration
+ */
+static inline float mavlink_msg_payload_stats_tm_get_liftoff_max_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  72);
+}
+
+/**
+ * @brief Get field max_speed_ts from payload_stats_tm message
+ *
+ * @return [us] System clock at max speed
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_max_speed_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  24);
+}
+
+/**
+ * @brief Get field max_speed from payload_stats_tm message
+ *
+ * @return [m/s] Max measured speed
+ */
+static inline float mavlink_msg_payload_stats_tm_get_max_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  76);
+}
+
+/**
+ * @brief Get field max_speed_altitude from payload_stats_tm message
+ *
+ * @return [m] Altitude at max speed
+ */
+static inline float mavlink_msg_payload_stats_tm_get_max_speed_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  80);
+}
+
+/**
+ * @brief Get field max_mach_ts from payload_stats_tm message
+ *
+ * @return  System clock at maximum measured mach
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_max_mach_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  32);
+}
+
+/**
+ * @brief Get field max_mach from payload_stats_tm message
+ *
+ * @return  Maximum measured mach
+ */
+static inline float mavlink_msg_payload_stats_tm_get_max_mach(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  84);
+}
+
+/**
+ * @brief Get field apogee_ts from payload_stats_tm message
+ *
+ * @return [us] System clock at apogee
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_apogee_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  40);
+}
+
+/**
+ * @brief Get field apogee_lat from payload_stats_tm message
+ *
+ * @return [deg] Apogee latitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_apogee_lat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  88);
+}
+
+/**
+ * @brief Get field apogee_lon from payload_stats_tm message
+ *
+ * @return [deg] Apogee longitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_apogee_lon(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  92);
+}
+
+/**
+ * @brief Get field apogee_alt from payload_stats_tm message
+ *
+ * @return [m] Apogee altitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_apogee_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  96);
+}
+
+/**
+ * @brief Get field apogee_max_acc_ts from payload_stats_tm message
+ *
+ * @return [us] System clock at max acceleration after apogee
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_apogee_max_acc_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  48);
+}
+
+/**
+ * @brief Get field apogee_max_acc from payload_stats_tm message
+ *
+ * @return [m/s2] Max acceleration after apogee
+ */
+static inline float mavlink_msg_payload_stats_tm_get_apogee_max_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  100);
+}
+
+/**
+ * @brief Get field wing_target_lat from payload_stats_tm message
+ *
+ * @return [deg] Wing target latitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_wing_target_lat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  104);
+}
+
+/**
+ * @brief Get field wing_target_lon from payload_stats_tm message
+ *
+ * @return [deg] Wing target longitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_wing_target_lon(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  108);
+}
+
+/**
+ * @brief Get field wing_active_target_n from payload_stats_tm message
+ *
+ * @return [m] Wing active target N
+ */
+static inline float mavlink_msg_payload_stats_tm_get_wing_active_target_n(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  112);
+}
+
+/**
+ * @brief Get field wing_active_target_e from payload_stats_tm message
+ *
+ * @return [m] Wing active target E
+ */
+static inline float mavlink_msg_payload_stats_tm_get_wing_active_target_e(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  116);
+}
+
+/**
+ * @brief Get field wing_algorithm from payload_stats_tm message
+ *
+ * @return  Wing selected algorithm
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_wing_algorithm(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  158);
+}
+
+/**
+ * @brief Get field dpl_ts from payload_stats_tm message
+ *
+ * @return [us] System clock at main deployment
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_dpl_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  56);
+}
+
+/**
+ * @brief Get field dpl_alt from payload_stats_tm message
+ *
+ * @return [m] Deployment altitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_dpl_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  120);
+}
+
+/**
+ * @brief Get field dpl_max_acc_ts from payload_stats_tm message
+ *
+ * @return [us] System clock at max acceleration during main deployment
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_dpl_max_acc_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  64);
+}
+
+/**
+ * @brief Get field dpl_max_acc from payload_stats_tm message
+ *
+ * @return [m/s2] Max acceleration during main deployment
+ */
+static inline float mavlink_msg_payload_stats_tm_get_dpl_max_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  124);
+}
+
+/**
+ * @brief Get field ref_lat from payload_stats_tm message
+ *
+ * @return [deg] Reference altitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_ref_lat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  128);
+}
+
+/**
+ * @brief Get field ref_lon from payload_stats_tm message
+ *
+ * @return [deg] Reference longitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_ref_lon(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  132);
+}
+
+/**
+ * @brief Get field ref_alt from payload_stats_tm message
+ *
+ * @return [m] Reference altitude
+ */
+static inline float mavlink_msg_payload_stats_tm_get_ref_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  136);
+}
+
+/**
+ * @brief Get field min_pressure from payload_stats_tm message
+ *
+ * @return [Pa] Apogee pressure - Digital barometer
+ */
+static inline float mavlink_msg_payload_stats_tm_get_min_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  140);
+}
+
+/**
+ * @brief Get field cpu_load from payload_stats_tm message
+ *
+ * @return  CPU load in percentage
+ */
+static inline float mavlink_msg_payload_stats_tm_get_cpu_load(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  144);
+}
+
+/**
+ * @brief Get field free_heap from payload_stats_tm message
+ *
+ * @return  Amount of available heap in memory
+ */
+static inline uint32_t mavlink_msg_payload_stats_tm_get_free_heap(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  148);
+}
+
+/**
+ * @brief Get field nas_state from payload_stats_tm message
+ *
+ * @return  NAS FSM State
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_nas_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  159);
+}
+
+/**
+ * @brief Get field wnc_state from payload_stats_tm message
+ *
+ * @return  Wing Controller State
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_wnc_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  160);
+}
+
+/**
+ * @brief Get field pin_launch from payload_stats_tm message
+ *
+ * @return  Launch pin status (1 = connected, 0 = disconnected)
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_pin_launch(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  161);
+}
+
+/**
+ * @brief Get field pin_nosecone from payload_stats_tm message
+ *
+ * @return  Nosecone pin status (1 = connected, 0 = disconnected)
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_pin_nosecone(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  162);
+}
+
+/**
+ * @brief Get field cutter_presence from payload_stats_tm message
+ *
+ * @return  Cutter presence status (1 = present, 0 = missing)
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_cutter_presence(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  163);
+}
+
+/**
+ * @brief Get field log_number from payload_stats_tm message
+ *
+ * @return  Currently active log file, -1 if the logger is inactive
+ */
+static inline int16_t mavlink_msg_payload_stats_tm_get_log_number(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int16_t(msg,  156);
+}
+
+/**
+ * @brief Get field log_good from payload_stats_tm message
+ *
+ * @return  0 if log failed, 1 otherwise
+ */
+static inline int32_t mavlink_msg_payload_stats_tm_get_log_good(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  152);
+}
+
+/**
+ * @brief Get field main_board_state from payload_stats_tm message
+ *
+ * @return  Main board fmm state
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_main_board_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  164);
+}
+
+/**
+ * @brief Get field motor_board_state from payload_stats_tm message
+ *
+ * @return  Motor board fmm state
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_motor_board_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  165);
+}
+
+/**
+ * @brief Get field main_can_status from payload_stats_tm message
+ *
+ * @return  Main CAN status
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_main_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  166);
+}
+
+/**
+ * @brief Get field motor_can_status from payload_stats_tm message
+ *
+ * @return  Motor CAN status
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_motor_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  167);
+}
+
+/**
+ * @brief Get field rig_can_status from payload_stats_tm message
+ *
+ * @return  RIG CAN status
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_rig_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  168);
+}
+
+/**
+ * @brief Get field hil_state from payload_stats_tm message
+ *
+ * @return  1 if the board is currently in HIL mode
+ */
+static inline uint8_t mavlink_msg_payload_stats_tm_get_hil_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  169);
+}
+
+/**
+ * @brief Decode a payload_stats_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param payload_stats_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_payload_stats_tm_decode(const mavlink_message_t* msg, mavlink_payload_stats_tm_t* payload_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    payload_stats_tm->timestamp = mavlink_msg_payload_stats_tm_get_timestamp(msg);
+    payload_stats_tm->liftoff_ts = mavlink_msg_payload_stats_tm_get_liftoff_ts(msg);
+    payload_stats_tm->liftoff_max_acc_ts = mavlink_msg_payload_stats_tm_get_liftoff_max_acc_ts(msg);
+    payload_stats_tm->max_speed_ts = mavlink_msg_payload_stats_tm_get_max_speed_ts(msg);
+    payload_stats_tm->max_mach_ts = mavlink_msg_payload_stats_tm_get_max_mach_ts(msg);
+    payload_stats_tm->apogee_ts = mavlink_msg_payload_stats_tm_get_apogee_ts(msg);
+    payload_stats_tm->apogee_max_acc_ts = mavlink_msg_payload_stats_tm_get_apogee_max_acc_ts(msg);
+    payload_stats_tm->dpl_ts = mavlink_msg_payload_stats_tm_get_dpl_ts(msg);
+    payload_stats_tm->dpl_max_acc_ts = mavlink_msg_payload_stats_tm_get_dpl_max_acc_ts(msg);
+    payload_stats_tm->liftoff_max_acc = mavlink_msg_payload_stats_tm_get_liftoff_max_acc(msg);
+    payload_stats_tm->max_speed = mavlink_msg_payload_stats_tm_get_max_speed(msg);
+    payload_stats_tm->max_speed_altitude = mavlink_msg_payload_stats_tm_get_max_speed_altitude(msg);
+    payload_stats_tm->max_mach = mavlink_msg_payload_stats_tm_get_max_mach(msg);
+    payload_stats_tm->apogee_lat = mavlink_msg_payload_stats_tm_get_apogee_lat(msg);
+    payload_stats_tm->apogee_lon = mavlink_msg_payload_stats_tm_get_apogee_lon(msg);
+    payload_stats_tm->apogee_alt = mavlink_msg_payload_stats_tm_get_apogee_alt(msg);
+    payload_stats_tm->apogee_max_acc = mavlink_msg_payload_stats_tm_get_apogee_max_acc(msg);
+    payload_stats_tm->wing_target_lat = mavlink_msg_payload_stats_tm_get_wing_target_lat(msg);
+    payload_stats_tm->wing_target_lon = mavlink_msg_payload_stats_tm_get_wing_target_lon(msg);
+    payload_stats_tm->wing_active_target_n = mavlink_msg_payload_stats_tm_get_wing_active_target_n(msg);
+    payload_stats_tm->wing_active_target_e = mavlink_msg_payload_stats_tm_get_wing_active_target_e(msg);
+    payload_stats_tm->dpl_alt = mavlink_msg_payload_stats_tm_get_dpl_alt(msg);
+    payload_stats_tm->dpl_max_acc = mavlink_msg_payload_stats_tm_get_dpl_max_acc(msg);
+    payload_stats_tm->ref_lat = mavlink_msg_payload_stats_tm_get_ref_lat(msg);
+    payload_stats_tm->ref_lon = mavlink_msg_payload_stats_tm_get_ref_lon(msg);
+    payload_stats_tm->ref_alt = mavlink_msg_payload_stats_tm_get_ref_alt(msg);
+    payload_stats_tm->min_pressure = mavlink_msg_payload_stats_tm_get_min_pressure(msg);
+    payload_stats_tm->cpu_load = mavlink_msg_payload_stats_tm_get_cpu_load(msg);
+    payload_stats_tm->free_heap = mavlink_msg_payload_stats_tm_get_free_heap(msg);
+    payload_stats_tm->log_good = mavlink_msg_payload_stats_tm_get_log_good(msg);
+    payload_stats_tm->log_number = mavlink_msg_payload_stats_tm_get_log_number(msg);
+    payload_stats_tm->wing_algorithm = mavlink_msg_payload_stats_tm_get_wing_algorithm(msg);
+    payload_stats_tm->nas_state = mavlink_msg_payload_stats_tm_get_nas_state(msg);
+    payload_stats_tm->wnc_state = mavlink_msg_payload_stats_tm_get_wnc_state(msg);
+    payload_stats_tm->pin_launch = mavlink_msg_payload_stats_tm_get_pin_launch(msg);
+    payload_stats_tm->pin_nosecone = mavlink_msg_payload_stats_tm_get_pin_nosecone(msg);
+    payload_stats_tm->cutter_presence = mavlink_msg_payload_stats_tm_get_cutter_presence(msg);
+    payload_stats_tm->main_board_state = mavlink_msg_payload_stats_tm_get_main_board_state(msg);
+    payload_stats_tm->motor_board_state = mavlink_msg_payload_stats_tm_get_motor_board_state(msg);
+    payload_stats_tm->main_can_status = mavlink_msg_payload_stats_tm_get_main_can_status(msg);
+    payload_stats_tm->motor_can_status = mavlink_msg_payload_stats_tm_get_motor_can_status(msg);
+    payload_stats_tm->rig_can_status = mavlink_msg_payload_stats_tm_get_rig_can_status(msg);
+    payload_stats_tm->hil_state = mavlink_msg_payload_stats_tm_get_hil_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN? msg->len : MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN;
+        memset(payload_stats_tm, 0, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN);
+    memcpy(payload_stats_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_pin_tm.h b/mavlink_lib/orion/mavlink_msg_pin_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..7664139b91883710113db1c6e2f79d879b1634c8
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_pin_tm.h
@@ -0,0 +1,313 @@
+#pragma once
+// MESSAGE PIN_TM PACKING
+
+#define MAVLINK_MSG_ID_PIN_TM 114
+
+
+typedef struct __mavlink_pin_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp*/
+ uint64_t last_change_timestamp; /*<  Last change timestamp of pin*/
+ uint8_t pin_id; /*<  A member of the PinsList enum*/
+ uint8_t changes_counter; /*<  Number of changes of pin*/
+ uint8_t current_state; /*<  Current state of pin*/
+} mavlink_pin_tm_t;
+
+#define MAVLINK_MSG_ID_PIN_TM_LEN 19
+#define MAVLINK_MSG_ID_PIN_TM_MIN_LEN 19
+#define MAVLINK_MSG_ID_114_LEN 19
+#define MAVLINK_MSG_ID_114_MIN_LEN 19
+
+#define MAVLINK_MSG_ID_PIN_TM_CRC 255
+#define MAVLINK_MSG_ID_114_CRC 255
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PIN_TM { \
+    114, \
+    "PIN_TM", \
+    5, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_pin_tm_t, timestamp) }, \
+         { "pin_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 16, offsetof(mavlink_pin_tm_t, pin_id) }, \
+         { "last_change_timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_pin_tm_t, last_change_timestamp) }, \
+         { "changes_counter", NULL, MAVLINK_TYPE_UINT8_T, 0, 17, offsetof(mavlink_pin_tm_t, changes_counter) }, \
+         { "current_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 18, offsetof(mavlink_pin_tm_t, current_state) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_PIN_TM { \
+    "PIN_TM", \
+    5, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_pin_tm_t, timestamp) }, \
+         { "pin_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 16, offsetof(mavlink_pin_tm_t, pin_id) }, \
+         { "last_change_timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_pin_tm_t, last_change_timestamp) }, \
+         { "changes_counter", NULL, MAVLINK_TYPE_UINT8_T, 0, 17, offsetof(mavlink_pin_tm_t, changes_counter) }, \
+         { "current_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 18, offsetof(mavlink_pin_tm_t, current_state) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a pin_tm 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 timestamp [us] Timestamp
+ * @param pin_id  A member of the PinsList enum
+ * @param last_change_timestamp  Last change timestamp of pin
+ * @param changes_counter  Number of changes of pin
+ * @param current_state  Current state of pin
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_pin_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint8_t pin_id, uint64_t last_change_timestamp, uint8_t changes_counter, uint8_t current_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PIN_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, last_change_timestamp);
+    _mav_put_uint8_t(buf, 16, pin_id);
+    _mav_put_uint8_t(buf, 17, changes_counter);
+    _mav_put_uint8_t(buf, 18, current_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PIN_TM_LEN);
+#else
+    mavlink_pin_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.last_change_timestamp = last_change_timestamp;
+    packet.pin_id = pin_id;
+    packet.changes_counter = changes_counter;
+    packet.current_state = current_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PIN_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PIN_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_PIN_TM_MIN_LEN, MAVLINK_MSG_ID_PIN_TM_LEN, MAVLINK_MSG_ID_PIN_TM_CRC);
+}
+
+/**
+ * @brief Pack a pin_tm 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 timestamp [us] Timestamp
+ * @param pin_id  A member of the PinsList enum
+ * @param last_change_timestamp  Last change timestamp of pin
+ * @param changes_counter  Number of changes of pin
+ * @param current_state  Current state of pin
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_pin_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint8_t pin_id,uint64_t last_change_timestamp,uint8_t changes_counter,uint8_t current_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PIN_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, last_change_timestamp);
+    _mav_put_uint8_t(buf, 16, pin_id);
+    _mav_put_uint8_t(buf, 17, changes_counter);
+    _mav_put_uint8_t(buf, 18, current_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PIN_TM_LEN);
+#else
+    mavlink_pin_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.last_change_timestamp = last_change_timestamp;
+    packet.pin_id = pin_id;
+    packet.changes_counter = changes_counter;
+    packet.current_state = current_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PIN_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PIN_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_PIN_TM_MIN_LEN, MAVLINK_MSG_ID_PIN_TM_LEN, MAVLINK_MSG_ID_PIN_TM_CRC);
+}
+
+/**
+ * @brief Encode a pin_tm 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 pin_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_pin_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_pin_tm_t* pin_tm)
+{
+    return mavlink_msg_pin_tm_pack(system_id, component_id, msg, pin_tm->timestamp, pin_tm->pin_id, pin_tm->last_change_timestamp, pin_tm->changes_counter, pin_tm->current_state);
+}
+
+/**
+ * @brief Encode a pin_tm 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 pin_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_pin_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_pin_tm_t* pin_tm)
+{
+    return mavlink_msg_pin_tm_pack_chan(system_id, component_id, chan, msg, pin_tm->timestamp, pin_tm->pin_id, pin_tm->last_change_timestamp, pin_tm->changes_counter, pin_tm->current_state);
+}
+
+/**
+ * @brief Send a pin_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp
+ * @param pin_id  A member of the PinsList enum
+ * @param last_change_timestamp  Last change timestamp of pin
+ * @param changes_counter  Number of changes of pin
+ * @param current_state  Current state of pin
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_pin_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t pin_id, uint64_t last_change_timestamp, uint8_t changes_counter, uint8_t current_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PIN_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, last_change_timestamp);
+    _mav_put_uint8_t(buf, 16, pin_id);
+    _mav_put_uint8_t(buf, 17, changes_counter);
+    _mav_put_uint8_t(buf, 18, current_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PIN_TM, buf, MAVLINK_MSG_ID_PIN_TM_MIN_LEN, MAVLINK_MSG_ID_PIN_TM_LEN, MAVLINK_MSG_ID_PIN_TM_CRC);
+#else
+    mavlink_pin_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.last_change_timestamp = last_change_timestamp;
+    packet.pin_id = pin_id;
+    packet.changes_counter = changes_counter;
+    packet.current_state = current_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PIN_TM, (const char *)&packet, MAVLINK_MSG_ID_PIN_TM_MIN_LEN, MAVLINK_MSG_ID_PIN_TM_LEN, MAVLINK_MSG_ID_PIN_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a pin_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_pin_tm_send_struct(mavlink_channel_t chan, const mavlink_pin_tm_t* pin_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_pin_tm_send(chan, pin_tm->timestamp, pin_tm->pin_id, pin_tm->last_change_timestamp, pin_tm->changes_counter, pin_tm->current_state);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PIN_TM, (const char *)pin_tm, MAVLINK_MSG_ID_PIN_TM_MIN_LEN, MAVLINK_MSG_ID_PIN_TM_LEN, MAVLINK_MSG_ID_PIN_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_PIN_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_pin_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint8_t pin_id, uint64_t last_change_timestamp, uint8_t changes_counter, uint8_t current_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, last_change_timestamp);
+    _mav_put_uint8_t(buf, 16, pin_id);
+    _mav_put_uint8_t(buf, 17, changes_counter);
+    _mav_put_uint8_t(buf, 18, current_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PIN_TM, buf, MAVLINK_MSG_ID_PIN_TM_MIN_LEN, MAVLINK_MSG_ID_PIN_TM_LEN, MAVLINK_MSG_ID_PIN_TM_CRC);
+#else
+    mavlink_pin_tm_t *packet = (mavlink_pin_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->last_change_timestamp = last_change_timestamp;
+    packet->pin_id = pin_id;
+    packet->changes_counter = changes_counter;
+    packet->current_state = current_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PIN_TM, (const char *)packet, MAVLINK_MSG_ID_PIN_TM_MIN_LEN, MAVLINK_MSG_ID_PIN_TM_LEN, MAVLINK_MSG_ID_PIN_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE PIN_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from pin_tm message
+ *
+ * @return [us] Timestamp
+ */
+static inline uint64_t mavlink_msg_pin_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field pin_id from pin_tm message
+ *
+ * @return  A member of the PinsList enum
+ */
+static inline uint8_t mavlink_msg_pin_tm_get_pin_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  16);
+}
+
+/**
+ * @brief Get field last_change_timestamp from pin_tm message
+ *
+ * @return  Last change timestamp of pin
+ */
+static inline uint64_t mavlink_msg_pin_tm_get_last_change_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  8);
+}
+
+/**
+ * @brief Get field changes_counter from pin_tm message
+ *
+ * @return  Number of changes of pin
+ */
+static inline uint8_t mavlink_msg_pin_tm_get_changes_counter(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  17);
+}
+
+/**
+ * @brief Get field current_state from pin_tm message
+ *
+ * @return  Current state of pin
+ */
+static inline uint8_t mavlink_msg_pin_tm_get_current_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  18);
+}
+
+/**
+ * @brief Decode a pin_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param pin_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_pin_tm_decode(const mavlink_message_t* msg, mavlink_pin_tm_t* pin_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    pin_tm->timestamp = mavlink_msg_pin_tm_get_timestamp(msg);
+    pin_tm->last_change_timestamp = mavlink_msg_pin_tm_get_last_change_timestamp(msg);
+    pin_tm->pin_id = mavlink_msg_pin_tm_get_pin_id(msg);
+    pin_tm->changes_counter = mavlink_msg_pin_tm_get_changes_counter(msg);
+    pin_tm->current_state = mavlink_msg_pin_tm_get_current_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_PIN_TM_LEN? msg->len : MAVLINK_MSG_ID_PIN_TM_LEN;
+        memset(pin_tm, 0, MAVLINK_MSG_ID_PIN_TM_LEN);
+    memcpy(pin_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_ping_tc.h b/mavlink_lib/orion/mavlink_msg_ping_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..99a2895f9933675f201a98a080067ebf3b33bb66
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_ping_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE PING_TC PACKING
+
+#define MAVLINK_MSG_ID_PING_TC 1
+
+
+typedef struct __mavlink_ping_tc_t {
+ uint64_t timestamp; /*<  Timestamp to identify when it was sent*/
+} mavlink_ping_tc_t;
+
+#define MAVLINK_MSG_ID_PING_TC_LEN 8
+#define MAVLINK_MSG_ID_PING_TC_MIN_LEN 8
+#define MAVLINK_MSG_ID_1_LEN 8
+#define MAVLINK_MSG_ID_1_MIN_LEN 8
+
+#define MAVLINK_MSG_ID_PING_TC_CRC 136
+#define MAVLINK_MSG_ID_1_CRC 136
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PING_TC { \
+    1, \
+    "PING_TC", \
+    1, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_ping_tc_t, timestamp) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_PING_TC { \
+    "PING_TC", \
+    1, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_ping_tc_t, timestamp) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a ping_tc 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 timestamp  Timestamp to identify when it was sent
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_ping_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PING_TC_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PING_TC_LEN);
+#else
+    mavlink_ping_tc_t packet;
+    packet.timestamp = timestamp;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PING_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PING_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_PING_TC_MIN_LEN, MAVLINK_MSG_ID_PING_TC_LEN, MAVLINK_MSG_ID_PING_TC_CRC);
+}
+
+/**
+ * @brief Pack a ping_tc 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 timestamp  Timestamp to identify when it was sent
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_ping_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PING_TC_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PING_TC_LEN);
+#else
+    mavlink_ping_tc_t packet;
+    packet.timestamp = timestamp;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PING_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PING_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_PING_TC_MIN_LEN, MAVLINK_MSG_ID_PING_TC_LEN, MAVLINK_MSG_ID_PING_TC_CRC);
+}
+
+/**
+ * @brief Encode a ping_tc 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 ping_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_ping_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_ping_tc_t* ping_tc)
+{
+    return mavlink_msg_ping_tc_pack(system_id, component_id, msg, ping_tc->timestamp);
+}
+
+/**
+ * @brief Encode a ping_tc 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 ping_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_ping_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_ping_tc_t* ping_tc)
+{
+    return mavlink_msg_ping_tc_pack_chan(system_id, component_id, chan, msg, ping_tc->timestamp);
+}
+
+/**
+ * @brief Send a ping_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp  Timestamp to identify when it was sent
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_ping_tc_send(mavlink_channel_t chan, uint64_t timestamp)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PING_TC_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PING_TC, buf, MAVLINK_MSG_ID_PING_TC_MIN_LEN, MAVLINK_MSG_ID_PING_TC_LEN, MAVLINK_MSG_ID_PING_TC_CRC);
+#else
+    mavlink_ping_tc_t packet;
+    packet.timestamp = timestamp;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PING_TC, (const char *)&packet, MAVLINK_MSG_ID_PING_TC_MIN_LEN, MAVLINK_MSG_ID_PING_TC_LEN, MAVLINK_MSG_ID_PING_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a ping_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_ping_tc_send_struct(mavlink_channel_t chan, const mavlink_ping_tc_t* ping_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_ping_tc_send(chan, ping_tc->timestamp);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PING_TC, (const char *)ping_tc, MAVLINK_MSG_ID_PING_TC_MIN_LEN, MAVLINK_MSG_ID_PING_TC_LEN, MAVLINK_MSG_ID_PING_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_PING_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_ping_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PING_TC, buf, MAVLINK_MSG_ID_PING_TC_MIN_LEN, MAVLINK_MSG_ID_PING_TC_LEN, MAVLINK_MSG_ID_PING_TC_CRC);
+#else
+    mavlink_ping_tc_t *packet = (mavlink_ping_tc_t *)msgbuf;
+    packet->timestamp = timestamp;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PING_TC, (const char *)packet, MAVLINK_MSG_ID_PING_TC_MIN_LEN, MAVLINK_MSG_ID_PING_TC_LEN, MAVLINK_MSG_ID_PING_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE PING_TC UNPACKING
+
+
+/**
+ * @brief Get field timestamp from ping_tc message
+ *
+ * @return  Timestamp to identify when it was sent
+ */
+static inline uint64_t mavlink_msg_ping_tc_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Decode a ping_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param ping_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_ping_tc_decode(const mavlink_message_t* msg, mavlink_ping_tc_t* ping_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    ping_tc->timestamp = mavlink_msg_ping_tc_get_timestamp(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_PING_TC_LEN? msg->len : MAVLINK_MSG_ID_PING_TC_LEN;
+        memset(ping_tc, 0, MAVLINK_MSG_ID_PING_TC_LEN);
+    memcpy(ping_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_pressure_tm.h b/mavlink_lib/orion/mavlink_msg_pressure_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..11381c5195df40006134a28fbeb17c224bd760ef
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_pressure_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE PRESSURE_TM PACKING
+
+#define MAVLINK_MSG_ID_PRESSURE_TM 105
+
+
+typedef struct __mavlink_pressure_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float pressure; /*< [Pa] Pressure of the digital barometer*/
+ char sensor_name[20]; /*<  Sensor name*/
+} mavlink_pressure_tm_t;
+
+#define MAVLINK_MSG_ID_PRESSURE_TM_LEN 32
+#define MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN 32
+#define MAVLINK_MSG_ID_105_LEN 32
+#define MAVLINK_MSG_ID_105_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_PRESSURE_TM_CRC 87
+#define MAVLINK_MSG_ID_105_CRC 87
+
+#define MAVLINK_MSG_PRESSURE_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PRESSURE_TM { \
+    105, \
+    "PRESSURE_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_pressure_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_pressure_tm_t, sensor_name) }, \
+         { "pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_pressure_tm_t, pressure) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_PRESSURE_TM { \
+    "PRESSURE_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_pressure_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_pressure_tm_t, sensor_name) }, \
+         { "pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_pressure_tm_t, pressure) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a pressure_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param pressure [Pa] Pressure of the digital barometer
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_pressure_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, float pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PRESSURE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PRESSURE_TM_LEN);
+#else
+    mavlink_pressure_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure = pressure;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PRESSURE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PRESSURE_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN, MAVLINK_MSG_ID_PRESSURE_TM_LEN, MAVLINK_MSG_ID_PRESSURE_TM_CRC);
+}
+
+/**
+ * @brief Pack a pressure_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param pressure [Pa] Pressure of the digital barometer
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_pressure_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,float pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PRESSURE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PRESSURE_TM_LEN);
+#else
+    mavlink_pressure_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure = pressure;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_PRESSURE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_PRESSURE_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN, MAVLINK_MSG_ID_PRESSURE_TM_LEN, MAVLINK_MSG_ID_PRESSURE_TM_CRC);
+}
+
+/**
+ * @brief Encode a pressure_tm 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 pressure_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_pressure_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_pressure_tm_t* pressure_tm)
+{
+    return mavlink_msg_pressure_tm_pack(system_id, component_id, msg, pressure_tm->timestamp, pressure_tm->sensor_name, pressure_tm->pressure);
+}
+
+/**
+ * @brief Encode a pressure_tm 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 pressure_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_pressure_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_pressure_tm_t* pressure_tm)
+{
+    return mavlink_msg_pressure_tm_pack_chan(system_id, component_id, chan, msg, pressure_tm->timestamp, pressure_tm->sensor_name, pressure_tm->pressure);
+}
+
+/**
+ * @brief Send a pressure_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param pressure [Pa] Pressure of the digital barometer
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_pressure_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, float pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PRESSURE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PRESSURE_TM, buf, MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN, MAVLINK_MSG_ID_PRESSURE_TM_LEN, MAVLINK_MSG_ID_PRESSURE_TM_CRC);
+#else
+    mavlink_pressure_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure = pressure;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PRESSURE_TM, (const char *)&packet, MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN, MAVLINK_MSG_ID_PRESSURE_TM_LEN, MAVLINK_MSG_ID_PRESSURE_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a pressure_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_pressure_tm_send_struct(mavlink_channel_t chan, const mavlink_pressure_tm_t* pressure_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_pressure_tm_send(chan, pressure_tm->timestamp, pressure_tm->sensor_name, pressure_tm->pressure);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PRESSURE_TM, (const char *)pressure_tm, MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN, MAVLINK_MSG_ID_PRESSURE_TM_LEN, MAVLINK_MSG_ID_PRESSURE_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_PRESSURE_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_pressure_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, float pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PRESSURE_TM, buf, MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN, MAVLINK_MSG_ID_PRESSURE_TM_LEN, MAVLINK_MSG_ID_PRESSURE_TM_CRC);
+#else
+    mavlink_pressure_tm_t *packet = (mavlink_pressure_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->pressure = pressure;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_PRESSURE_TM, (const char *)packet, MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN, MAVLINK_MSG_ID_PRESSURE_TM_LEN, MAVLINK_MSG_ID_PRESSURE_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE PRESSURE_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from pressure_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_pressure_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from pressure_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_pressure_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  12);
+}
+
+/**
+ * @brief Get field pressure from pressure_tm message
+ *
+ * @return [Pa] Pressure of the digital barometer
+ */
+static inline float mavlink_msg_pressure_tm_get_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Decode a pressure_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param pressure_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_pressure_tm_decode(const mavlink_message_t* msg, mavlink_pressure_tm_t* pressure_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    pressure_tm->timestamp = mavlink_msg_pressure_tm_get_timestamp(msg);
+    pressure_tm->pressure = mavlink_msg_pressure_tm_get_pressure(msg);
+    mavlink_msg_pressure_tm_get_sensor_name(msg, pressure_tm->sensor_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_PRESSURE_TM_LEN? msg->len : MAVLINK_MSG_ID_PRESSURE_TM_LEN;
+        memset(pressure_tm, 0, MAVLINK_MSG_ID_PRESSURE_TM_LEN);
+    memcpy(pressure_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_raw_event_tc.h b/mavlink_lib/orion/mavlink_msg_raw_event_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..f08048e75040f7d058e4e538f4f9763b08daf7e3
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_raw_event_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE RAW_EVENT_TC PACKING
+
+#define MAVLINK_MSG_ID_RAW_EVENT_TC 14
+
+
+typedef struct __mavlink_raw_event_tc_t {
+ uint8_t topic_id; /*<  Id of the topic to which the event should be posted*/
+ uint8_t event_id; /*<  Id of the event to be posted*/
+} mavlink_raw_event_tc_t;
+
+#define MAVLINK_MSG_ID_RAW_EVENT_TC_LEN 2
+#define MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN 2
+#define MAVLINK_MSG_ID_14_LEN 2
+#define MAVLINK_MSG_ID_14_MIN_LEN 2
+
+#define MAVLINK_MSG_ID_RAW_EVENT_TC_CRC 218
+#define MAVLINK_MSG_ID_14_CRC 218
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_RAW_EVENT_TC { \
+    14, \
+    "RAW_EVENT_TC", \
+    2, \
+    {  { "topic_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_raw_event_tc_t, topic_id) }, \
+         { "event_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 1, offsetof(mavlink_raw_event_tc_t, event_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_RAW_EVENT_TC { \
+    "RAW_EVENT_TC", \
+    2, \
+    {  { "topic_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_raw_event_tc_t, topic_id) }, \
+         { "event_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 1, offsetof(mavlink_raw_event_tc_t, event_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a raw_event_tc 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 topic_id  Id of the topic to which the event should be posted
+ * @param event_id  Id of the event to be posted
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_raw_event_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t topic_id, uint8_t event_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_RAW_EVENT_TC_LEN];
+    _mav_put_uint8_t(buf, 0, topic_id);
+    _mav_put_uint8_t(buf, 1, event_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN);
+#else
+    mavlink_raw_event_tc_t packet;
+    packet.topic_id = topic_id;
+    packet.event_id = event_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_RAW_EVENT_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_CRC);
+}
+
+/**
+ * @brief Pack a raw_event_tc 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 topic_id  Id of the topic to which the event should be posted
+ * @param event_id  Id of the event to be posted
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_raw_event_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t topic_id,uint8_t event_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_RAW_EVENT_TC_LEN];
+    _mav_put_uint8_t(buf, 0, topic_id);
+    _mav_put_uint8_t(buf, 1, event_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN);
+#else
+    mavlink_raw_event_tc_t packet;
+    packet.topic_id = topic_id;
+    packet.event_id = event_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_RAW_EVENT_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_CRC);
+}
+
+/**
+ * @brief Encode a raw_event_tc 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 raw_event_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_raw_event_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_raw_event_tc_t* raw_event_tc)
+{
+    return mavlink_msg_raw_event_tc_pack(system_id, component_id, msg, raw_event_tc->topic_id, raw_event_tc->event_id);
+}
+
+/**
+ * @brief Encode a raw_event_tc 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 raw_event_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_raw_event_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_raw_event_tc_t* raw_event_tc)
+{
+    return mavlink_msg_raw_event_tc_pack_chan(system_id, component_id, chan, msg, raw_event_tc->topic_id, raw_event_tc->event_id);
+}
+
+/**
+ * @brief Send a raw_event_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param topic_id  Id of the topic to which the event should be posted
+ * @param event_id  Id of the event to be posted
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_raw_event_tc_send(mavlink_channel_t chan, uint8_t topic_id, uint8_t event_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_RAW_EVENT_TC_LEN];
+    _mav_put_uint8_t(buf, 0, topic_id);
+    _mav_put_uint8_t(buf, 1, event_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RAW_EVENT_TC, buf, MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_CRC);
+#else
+    mavlink_raw_event_tc_t packet;
+    packet.topic_id = topic_id;
+    packet.event_id = event_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RAW_EVENT_TC, (const char *)&packet, MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a raw_event_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_raw_event_tc_send_struct(mavlink_channel_t chan, const mavlink_raw_event_tc_t* raw_event_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_raw_event_tc_send(chan, raw_event_tc->topic_id, raw_event_tc->event_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RAW_EVENT_TC, (const char *)raw_event_tc, MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_RAW_EVENT_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_raw_event_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t topic_id, uint8_t event_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, topic_id);
+    _mav_put_uint8_t(buf, 1, event_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RAW_EVENT_TC, buf, MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_CRC);
+#else
+    mavlink_raw_event_tc_t *packet = (mavlink_raw_event_tc_t *)msgbuf;
+    packet->topic_id = topic_id;
+    packet->event_id = event_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RAW_EVENT_TC, (const char *)packet, MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN, MAVLINK_MSG_ID_RAW_EVENT_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE RAW_EVENT_TC UNPACKING
+
+
+/**
+ * @brief Get field topic_id from raw_event_tc message
+ *
+ * @return  Id of the topic to which the event should be posted
+ */
+static inline uint8_t mavlink_msg_raw_event_tc_get_topic_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Get field event_id from raw_event_tc message
+ *
+ * @return  Id of the event to be posted
+ */
+static inline uint8_t mavlink_msg_raw_event_tc_get_event_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  1);
+}
+
+/**
+ * @brief Decode a raw_event_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param raw_event_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_raw_event_tc_decode(const mavlink_message_t* msg, mavlink_raw_event_tc_t* raw_event_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    raw_event_tc->topic_id = mavlink_msg_raw_event_tc_get_topic_id(msg);
+    raw_event_tc->event_id = mavlink_msg_raw_event_tc_get_event_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_RAW_EVENT_TC_LEN? msg->len : MAVLINK_MSG_ID_RAW_EVENT_TC_LEN;
+        memset(raw_event_tc, 0, MAVLINK_MSG_ID_RAW_EVENT_TC_LEN);
+    memcpy(raw_event_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_reference_tm.h b/mavlink_lib/orion/mavlink_msg_reference_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..4eff3a384094f82edbf8313e815031f45c974600
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_reference_tm.h
@@ -0,0 +1,388 @@
+#pragma once
+// MESSAGE REFERENCE_TM PACKING
+
+#define MAVLINK_MSG_ID_REFERENCE_TM 115
+
+
+typedef struct __mavlink_reference_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp*/
+ float ref_altitude; /*< [m] Reference altitude*/
+ float ref_pressure; /*< [Pa] Reference atmospheric pressure*/
+ float ref_temperature; /*< [degC] Reference temperature*/
+ float ref_latitude; /*< [deg] Reference latitude*/
+ float ref_longitude; /*< [deg] Reference longitude*/
+ float msl_pressure; /*< [Pa] Mean sea level atmospheric pressure*/
+ float msl_temperature; /*< [degC] Mean sea level temperature*/
+} mavlink_reference_tm_t;
+
+#define MAVLINK_MSG_ID_REFERENCE_TM_LEN 36
+#define MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN 36
+#define MAVLINK_MSG_ID_115_LEN 36
+#define MAVLINK_MSG_ID_115_MIN_LEN 36
+
+#define MAVLINK_MSG_ID_REFERENCE_TM_CRC 103
+#define MAVLINK_MSG_ID_115_CRC 103
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_REFERENCE_TM { \
+    115, \
+    "REFERENCE_TM", \
+    8, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_reference_tm_t, timestamp) }, \
+         { "ref_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_reference_tm_t, ref_altitude) }, \
+         { "ref_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_reference_tm_t, ref_pressure) }, \
+         { "ref_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_reference_tm_t, ref_temperature) }, \
+         { "ref_latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_reference_tm_t, ref_latitude) }, \
+         { "ref_longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_reference_tm_t, ref_longitude) }, \
+         { "msl_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_reference_tm_t, msl_pressure) }, \
+         { "msl_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_reference_tm_t, msl_temperature) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_REFERENCE_TM { \
+    "REFERENCE_TM", \
+    8, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_reference_tm_t, timestamp) }, \
+         { "ref_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_reference_tm_t, ref_altitude) }, \
+         { "ref_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_reference_tm_t, ref_pressure) }, \
+         { "ref_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_reference_tm_t, ref_temperature) }, \
+         { "ref_latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_reference_tm_t, ref_latitude) }, \
+         { "ref_longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_reference_tm_t, ref_longitude) }, \
+         { "msl_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_reference_tm_t, msl_pressure) }, \
+         { "msl_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_reference_tm_t, msl_temperature) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a reference_tm 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 timestamp [us] Timestamp
+ * @param ref_altitude [m] Reference altitude
+ * @param ref_pressure [Pa] Reference atmospheric pressure
+ * @param ref_temperature [degC] Reference temperature
+ * @param ref_latitude [deg] Reference latitude
+ * @param ref_longitude [deg] Reference longitude
+ * @param msl_pressure [Pa] Mean sea level atmospheric pressure
+ * @param msl_temperature [degC] Mean sea level temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_reference_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, float ref_altitude, float ref_pressure, float ref_temperature, float ref_latitude, float ref_longitude, float msl_pressure, float msl_temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REFERENCE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, ref_altitude);
+    _mav_put_float(buf, 12, ref_pressure);
+    _mav_put_float(buf, 16, ref_temperature);
+    _mav_put_float(buf, 20, ref_latitude);
+    _mav_put_float(buf, 24, ref_longitude);
+    _mav_put_float(buf, 28, msl_pressure);
+    _mav_put_float(buf, 32, msl_temperature);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_REFERENCE_TM_LEN);
+#else
+    mavlink_reference_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.ref_altitude = ref_altitude;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_temperature = ref_temperature;
+    packet.ref_latitude = ref_latitude;
+    packet.ref_longitude = ref_longitude;
+    packet.msl_pressure = msl_pressure;
+    packet.msl_temperature = msl_temperature;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_REFERENCE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_REFERENCE_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN, MAVLINK_MSG_ID_REFERENCE_TM_LEN, MAVLINK_MSG_ID_REFERENCE_TM_CRC);
+}
+
+/**
+ * @brief Pack a reference_tm 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 timestamp [us] Timestamp
+ * @param ref_altitude [m] Reference altitude
+ * @param ref_pressure [Pa] Reference atmospheric pressure
+ * @param ref_temperature [degC] Reference temperature
+ * @param ref_latitude [deg] Reference latitude
+ * @param ref_longitude [deg] Reference longitude
+ * @param msl_pressure [Pa] Mean sea level atmospheric pressure
+ * @param msl_temperature [degC] Mean sea level temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_reference_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,float ref_altitude,float ref_pressure,float ref_temperature,float ref_latitude,float ref_longitude,float msl_pressure,float msl_temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REFERENCE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, ref_altitude);
+    _mav_put_float(buf, 12, ref_pressure);
+    _mav_put_float(buf, 16, ref_temperature);
+    _mav_put_float(buf, 20, ref_latitude);
+    _mav_put_float(buf, 24, ref_longitude);
+    _mav_put_float(buf, 28, msl_pressure);
+    _mav_put_float(buf, 32, msl_temperature);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_REFERENCE_TM_LEN);
+#else
+    mavlink_reference_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.ref_altitude = ref_altitude;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_temperature = ref_temperature;
+    packet.ref_latitude = ref_latitude;
+    packet.ref_longitude = ref_longitude;
+    packet.msl_pressure = msl_pressure;
+    packet.msl_temperature = msl_temperature;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_REFERENCE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_REFERENCE_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN, MAVLINK_MSG_ID_REFERENCE_TM_LEN, MAVLINK_MSG_ID_REFERENCE_TM_CRC);
+}
+
+/**
+ * @brief Encode a reference_tm 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 reference_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_reference_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_reference_tm_t* reference_tm)
+{
+    return mavlink_msg_reference_tm_pack(system_id, component_id, msg, reference_tm->timestamp, reference_tm->ref_altitude, reference_tm->ref_pressure, reference_tm->ref_temperature, reference_tm->ref_latitude, reference_tm->ref_longitude, reference_tm->msl_pressure, reference_tm->msl_temperature);
+}
+
+/**
+ * @brief Encode a reference_tm 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 reference_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_reference_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_reference_tm_t* reference_tm)
+{
+    return mavlink_msg_reference_tm_pack_chan(system_id, component_id, chan, msg, reference_tm->timestamp, reference_tm->ref_altitude, reference_tm->ref_pressure, reference_tm->ref_temperature, reference_tm->ref_latitude, reference_tm->ref_longitude, reference_tm->msl_pressure, reference_tm->msl_temperature);
+}
+
+/**
+ * @brief Send a reference_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp
+ * @param ref_altitude [m] Reference altitude
+ * @param ref_pressure [Pa] Reference atmospheric pressure
+ * @param ref_temperature [degC] Reference temperature
+ * @param ref_latitude [deg] Reference latitude
+ * @param ref_longitude [deg] Reference longitude
+ * @param msl_pressure [Pa] Mean sea level atmospheric pressure
+ * @param msl_temperature [degC] Mean sea level temperature
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_reference_tm_send(mavlink_channel_t chan, uint64_t timestamp, float ref_altitude, float ref_pressure, float ref_temperature, float ref_latitude, float ref_longitude, float msl_pressure, float msl_temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REFERENCE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, ref_altitude);
+    _mav_put_float(buf, 12, ref_pressure);
+    _mav_put_float(buf, 16, ref_temperature);
+    _mav_put_float(buf, 20, ref_latitude);
+    _mav_put_float(buf, 24, ref_longitude);
+    _mav_put_float(buf, 28, msl_pressure);
+    _mav_put_float(buf, 32, msl_temperature);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REFERENCE_TM, buf, MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN, MAVLINK_MSG_ID_REFERENCE_TM_LEN, MAVLINK_MSG_ID_REFERENCE_TM_CRC);
+#else
+    mavlink_reference_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.ref_altitude = ref_altitude;
+    packet.ref_pressure = ref_pressure;
+    packet.ref_temperature = ref_temperature;
+    packet.ref_latitude = ref_latitude;
+    packet.ref_longitude = ref_longitude;
+    packet.msl_pressure = msl_pressure;
+    packet.msl_temperature = msl_temperature;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REFERENCE_TM, (const char *)&packet, MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN, MAVLINK_MSG_ID_REFERENCE_TM_LEN, MAVLINK_MSG_ID_REFERENCE_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a reference_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_reference_tm_send_struct(mavlink_channel_t chan, const mavlink_reference_tm_t* reference_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_reference_tm_send(chan, reference_tm->timestamp, reference_tm->ref_altitude, reference_tm->ref_pressure, reference_tm->ref_temperature, reference_tm->ref_latitude, reference_tm->ref_longitude, reference_tm->msl_pressure, reference_tm->msl_temperature);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REFERENCE_TM, (const char *)reference_tm, MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN, MAVLINK_MSG_ID_REFERENCE_TM_LEN, MAVLINK_MSG_ID_REFERENCE_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_REFERENCE_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_reference_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, float ref_altitude, float ref_pressure, float ref_temperature, float ref_latitude, float ref_longitude, float msl_pressure, float msl_temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, ref_altitude);
+    _mav_put_float(buf, 12, ref_pressure);
+    _mav_put_float(buf, 16, ref_temperature);
+    _mav_put_float(buf, 20, ref_latitude);
+    _mav_put_float(buf, 24, ref_longitude);
+    _mav_put_float(buf, 28, msl_pressure);
+    _mav_put_float(buf, 32, msl_temperature);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REFERENCE_TM, buf, MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN, MAVLINK_MSG_ID_REFERENCE_TM_LEN, MAVLINK_MSG_ID_REFERENCE_TM_CRC);
+#else
+    mavlink_reference_tm_t *packet = (mavlink_reference_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->ref_altitude = ref_altitude;
+    packet->ref_pressure = ref_pressure;
+    packet->ref_temperature = ref_temperature;
+    packet->ref_latitude = ref_latitude;
+    packet->ref_longitude = ref_longitude;
+    packet->msl_pressure = msl_pressure;
+    packet->msl_temperature = msl_temperature;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REFERENCE_TM, (const char *)packet, MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN, MAVLINK_MSG_ID_REFERENCE_TM_LEN, MAVLINK_MSG_ID_REFERENCE_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE REFERENCE_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from reference_tm message
+ *
+ * @return [us] Timestamp
+ */
+static inline uint64_t mavlink_msg_reference_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field ref_altitude from reference_tm message
+ *
+ * @return [m] Reference altitude
+ */
+static inline float mavlink_msg_reference_tm_get_ref_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field ref_pressure from reference_tm message
+ *
+ * @return [Pa] Reference atmospheric pressure
+ */
+static inline float mavlink_msg_reference_tm_get_ref_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field ref_temperature from reference_tm message
+ *
+ * @return [degC] Reference temperature
+ */
+static inline float mavlink_msg_reference_tm_get_ref_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field ref_latitude from reference_tm message
+ *
+ * @return [deg] Reference latitude
+ */
+static inline float mavlink_msg_reference_tm_get_ref_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field ref_longitude from reference_tm message
+ *
+ * @return [deg] Reference longitude
+ */
+static inline float mavlink_msg_reference_tm_get_ref_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field msl_pressure from reference_tm message
+ *
+ * @return [Pa] Mean sea level atmospheric pressure
+ */
+static inline float mavlink_msg_reference_tm_get_msl_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field msl_temperature from reference_tm message
+ *
+ * @return [degC] Mean sea level temperature
+ */
+static inline float mavlink_msg_reference_tm_get_msl_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Decode a reference_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param reference_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_reference_tm_decode(const mavlink_message_t* msg, mavlink_reference_tm_t* reference_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    reference_tm->timestamp = mavlink_msg_reference_tm_get_timestamp(msg);
+    reference_tm->ref_altitude = mavlink_msg_reference_tm_get_ref_altitude(msg);
+    reference_tm->ref_pressure = mavlink_msg_reference_tm_get_ref_pressure(msg);
+    reference_tm->ref_temperature = mavlink_msg_reference_tm_get_ref_temperature(msg);
+    reference_tm->ref_latitude = mavlink_msg_reference_tm_get_ref_latitude(msg);
+    reference_tm->ref_longitude = mavlink_msg_reference_tm_get_ref_longitude(msg);
+    reference_tm->msl_pressure = mavlink_msg_reference_tm_get_msl_pressure(msg);
+    reference_tm->msl_temperature = mavlink_msg_reference_tm_get_msl_temperature(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_REFERENCE_TM_LEN? msg->len : MAVLINK_MSG_ID_REFERENCE_TM_LEN;
+        memset(reference_tm, 0, MAVLINK_MSG_ID_REFERENCE_TM_LEN);
+    memcpy(reference_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_registry_coord_tm.h b/mavlink_lib/orion/mavlink_msg_registry_coord_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..ff8114cbce84f7dbf3af8fd56d8f80a115406b7e
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_registry_coord_tm.h
@@ -0,0 +1,305 @@
+#pragma once
+// MESSAGE REGISTRY_COORD_TM PACKING
+
+#define MAVLINK_MSG_ID_REGISTRY_COORD_TM 118
+
+
+typedef struct __mavlink_registry_coord_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp*/
+ uint32_t key_id; /*<  Id of this configuration entry*/
+ float latitude; /*< [deg] Latitude in this configuration*/
+ float longitude; /*< [deg] Latitude in this configuration*/
+ char key_name[20]; /*<  Name of this configuration entry*/
+} mavlink_registry_coord_tm_t;
+
+#define MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN 40
+#define MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN 40
+#define MAVLINK_MSG_ID_118_LEN 40
+#define MAVLINK_MSG_ID_118_MIN_LEN 40
+
+#define MAVLINK_MSG_ID_REGISTRY_COORD_TM_CRC 234
+#define MAVLINK_MSG_ID_118_CRC 234
+
+#define MAVLINK_MSG_REGISTRY_COORD_TM_FIELD_KEY_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_REGISTRY_COORD_TM { \
+    118, \
+    "REGISTRY_COORD_TM", \
+    5, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_registry_coord_tm_t, timestamp) }, \
+         { "key_id", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_registry_coord_tm_t, key_id) }, \
+         { "key_name", NULL, MAVLINK_TYPE_CHAR, 20, 20, offsetof(mavlink_registry_coord_tm_t, key_name) }, \
+         { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_registry_coord_tm_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_registry_coord_tm_t, longitude) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_REGISTRY_COORD_TM { \
+    "REGISTRY_COORD_TM", \
+    5, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_registry_coord_tm_t, timestamp) }, \
+         { "key_id", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_registry_coord_tm_t, key_id) }, \
+         { "key_name", NULL, MAVLINK_TYPE_CHAR, 20, 20, offsetof(mavlink_registry_coord_tm_t, key_name) }, \
+         { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_registry_coord_tm_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_registry_coord_tm_t, longitude) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a registry_coord_tm 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 timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param latitude [deg] Latitude in this configuration
+ * @param longitude [deg] Latitude in this configuration
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_registry_coord_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint32_t key_id, const char *key_name, float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_float(buf, 12, latitude);
+    _mav_put_float(buf, 16, longitude);
+    _mav_put_char_array(buf, 20, key_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN);
+#else
+    mavlink_registry_coord_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_REGISTRY_COORD_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_CRC);
+}
+
+/**
+ * @brief Pack a registry_coord_tm 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 timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param latitude [deg] Latitude in this configuration
+ * @param longitude [deg] Latitude in this configuration
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_registry_coord_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint32_t key_id,const char *key_name,float latitude,float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_float(buf, 12, latitude);
+    _mav_put_float(buf, 16, longitude);
+    _mav_put_char_array(buf, 20, key_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN);
+#else
+    mavlink_registry_coord_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_REGISTRY_COORD_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_CRC);
+}
+
+/**
+ * @brief Encode a registry_coord_tm 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 registry_coord_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_registry_coord_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_registry_coord_tm_t* registry_coord_tm)
+{
+    return mavlink_msg_registry_coord_tm_pack(system_id, component_id, msg, registry_coord_tm->timestamp, registry_coord_tm->key_id, registry_coord_tm->key_name, registry_coord_tm->latitude, registry_coord_tm->longitude);
+}
+
+/**
+ * @brief Encode a registry_coord_tm 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 registry_coord_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_registry_coord_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_registry_coord_tm_t* registry_coord_tm)
+{
+    return mavlink_msg_registry_coord_tm_pack_chan(system_id, component_id, chan, msg, registry_coord_tm->timestamp, registry_coord_tm->key_id, registry_coord_tm->key_name, registry_coord_tm->latitude, registry_coord_tm->longitude);
+}
+
+/**
+ * @brief Send a registry_coord_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param latitude [deg] Latitude in this configuration
+ * @param longitude [deg] Latitude in this configuration
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_registry_coord_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint32_t key_id, const char *key_name, float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_float(buf, 12, latitude);
+    _mav_put_float(buf, 16, longitude);
+    _mav_put_char_array(buf, 20, key_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_COORD_TM, buf, MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_CRC);
+#else
+    mavlink_registry_coord_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_COORD_TM, (const char *)&packet, MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a registry_coord_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_registry_coord_tm_send_struct(mavlink_channel_t chan, const mavlink_registry_coord_tm_t* registry_coord_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_registry_coord_tm_send(chan, registry_coord_tm->timestamp, registry_coord_tm->key_id, registry_coord_tm->key_name, registry_coord_tm->latitude, registry_coord_tm->longitude);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_COORD_TM, (const char *)registry_coord_tm, MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_registry_coord_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint32_t key_id, const char *key_name, float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_float(buf, 12, latitude);
+    _mav_put_float(buf, 16, longitude);
+    _mav_put_char_array(buf, 20, key_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_COORD_TM, buf, MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_CRC);
+#else
+    mavlink_registry_coord_tm_t *packet = (mavlink_registry_coord_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->key_id = key_id;
+    packet->latitude = latitude;
+    packet->longitude = longitude;
+    mav_array_memcpy(packet->key_name, key_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_COORD_TM, (const char *)packet, MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN, MAVLINK_MSG_ID_REGISTRY_COORD_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE REGISTRY_COORD_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from registry_coord_tm message
+ *
+ * @return [us] Timestamp
+ */
+static inline uint64_t mavlink_msg_registry_coord_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field key_id from registry_coord_tm message
+ *
+ * @return  Id of this configuration entry
+ */
+static inline uint32_t mavlink_msg_registry_coord_tm_get_key_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  8);
+}
+
+/**
+ * @brief Get field key_name from registry_coord_tm message
+ *
+ * @return  Name of this configuration entry
+ */
+static inline uint16_t mavlink_msg_registry_coord_tm_get_key_name(const mavlink_message_t* msg, char *key_name)
+{
+    return _MAV_RETURN_char_array(msg, key_name, 20,  20);
+}
+
+/**
+ * @brief Get field latitude from registry_coord_tm message
+ *
+ * @return [deg] Latitude in this configuration
+ */
+static inline float mavlink_msg_registry_coord_tm_get_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field longitude from registry_coord_tm message
+ *
+ * @return [deg] Latitude in this configuration
+ */
+static inline float mavlink_msg_registry_coord_tm_get_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Decode a registry_coord_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param registry_coord_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_registry_coord_tm_decode(const mavlink_message_t* msg, mavlink_registry_coord_tm_t* registry_coord_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    registry_coord_tm->timestamp = mavlink_msg_registry_coord_tm_get_timestamp(msg);
+    registry_coord_tm->key_id = mavlink_msg_registry_coord_tm_get_key_id(msg);
+    registry_coord_tm->latitude = mavlink_msg_registry_coord_tm_get_latitude(msg);
+    registry_coord_tm->longitude = mavlink_msg_registry_coord_tm_get_longitude(msg);
+    mavlink_msg_registry_coord_tm_get_key_name(msg, registry_coord_tm->key_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN? msg->len : MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN;
+        memset(registry_coord_tm, 0, MAVLINK_MSG_ID_REGISTRY_COORD_TM_LEN);
+    memcpy(registry_coord_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_registry_float_tm.h b/mavlink_lib/orion/mavlink_msg_registry_float_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..8b59864aefde08d3748053f6937fc0f3aae8c72a
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_registry_float_tm.h
@@ -0,0 +1,280 @@
+#pragma once
+// MESSAGE REGISTRY_FLOAT_TM PACKING
+
+#define MAVLINK_MSG_ID_REGISTRY_FLOAT_TM 116
+
+
+typedef struct __mavlink_registry_float_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp*/
+ uint32_t key_id; /*<  Id of this configuration entry*/
+ float value; /*<  Value of this configuration*/
+ char key_name[20]; /*<  Name of this configuration entry*/
+} mavlink_registry_float_tm_t;
+
+#define MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN 36
+#define MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN 36
+#define MAVLINK_MSG_ID_116_LEN 36
+#define MAVLINK_MSG_ID_116_MIN_LEN 36
+
+#define MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_CRC 9
+#define MAVLINK_MSG_ID_116_CRC 9
+
+#define MAVLINK_MSG_REGISTRY_FLOAT_TM_FIELD_KEY_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_REGISTRY_FLOAT_TM { \
+    116, \
+    "REGISTRY_FLOAT_TM", \
+    4, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_registry_float_tm_t, timestamp) }, \
+         { "key_id", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_registry_float_tm_t, key_id) }, \
+         { "key_name", NULL, MAVLINK_TYPE_CHAR, 20, 16, offsetof(mavlink_registry_float_tm_t, key_name) }, \
+         { "value", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_registry_float_tm_t, value) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_REGISTRY_FLOAT_TM { \
+    "REGISTRY_FLOAT_TM", \
+    4, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_registry_float_tm_t, timestamp) }, \
+         { "key_id", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_registry_float_tm_t, key_id) }, \
+         { "key_name", NULL, MAVLINK_TYPE_CHAR, 20, 16, offsetof(mavlink_registry_float_tm_t, key_name) }, \
+         { "value", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_registry_float_tm_t, value) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a registry_float_tm 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 timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param value  Value of this configuration
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_registry_float_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint32_t key_id, const char *key_name, float value)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_float(buf, 12, value);
+    _mav_put_char_array(buf, 16, key_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN);
+#else
+    mavlink_registry_float_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.value = value;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_REGISTRY_FLOAT_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_CRC);
+}
+
+/**
+ * @brief Pack a registry_float_tm 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 timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param value  Value of this configuration
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_registry_float_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint32_t key_id,const char *key_name,float value)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_float(buf, 12, value);
+    _mav_put_char_array(buf, 16, key_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN);
+#else
+    mavlink_registry_float_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.value = value;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_REGISTRY_FLOAT_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_CRC);
+}
+
+/**
+ * @brief Encode a registry_float_tm 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 registry_float_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_registry_float_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_registry_float_tm_t* registry_float_tm)
+{
+    return mavlink_msg_registry_float_tm_pack(system_id, component_id, msg, registry_float_tm->timestamp, registry_float_tm->key_id, registry_float_tm->key_name, registry_float_tm->value);
+}
+
+/**
+ * @brief Encode a registry_float_tm 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 registry_float_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_registry_float_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_registry_float_tm_t* registry_float_tm)
+{
+    return mavlink_msg_registry_float_tm_pack_chan(system_id, component_id, chan, msg, registry_float_tm->timestamp, registry_float_tm->key_id, registry_float_tm->key_name, registry_float_tm->value);
+}
+
+/**
+ * @brief Send a registry_float_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param value  Value of this configuration
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_registry_float_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint32_t key_id, const char *key_name, float value)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_float(buf, 12, value);
+    _mav_put_char_array(buf, 16, key_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM, buf, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_CRC);
+#else
+    mavlink_registry_float_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.value = value;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM, (const char *)&packet, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a registry_float_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_registry_float_tm_send_struct(mavlink_channel_t chan, const mavlink_registry_float_tm_t* registry_float_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_registry_float_tm_send(chan, registry_float_tm->timestamp, registry_float_tm->key_id, registry_float_tm->key_name, registry_float_tm->value);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM, (const char *)registry_float_tm, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_registry_float_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint32_t key_id, const char *key_name, float value)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_float(buf, 12, value);
+    _mav_put_char_array(buf, 16, key_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM, buf, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_CRC);
+#else
+    mavlink_registry_float_tm_t *packet = (mavlink_registry_float_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->key_id = key_id;
+    packet->value = value;
+    mav_array_memcpy(packet->key_name, key_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM, (const char *)packet, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE REGISTRY_FLOAT_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from registry_float_tm message
+ *
+ * @return [us] Timestamp
+ */
+static inline uint64_t mavlink_msg_registry_float_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field key_id from registry_float_tm message
+ *
+ * @return  Id of this configuration entry
+ */
+static inline uint32_t mavlink_msg_registry_float_tm_get_key_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  8);
+}
+
+/**
+ * @brief Get field key_name from registry_float_tm message
+ *
+ * @return  Name of this configuration entry
+ */
+static inline uint16_t mavlink_msg_registry_float_tm_get_key_name(const mavlink_message_t* msg, char *key_name)
+{
+    return _MAV_RETURN_char_array(msg, key_name, 20,  16);
+}
+
+/**
+ * @brief Get field value from registry_float_tm message
+ *
+ * @return  Value of this configuration
+ */
+static inline float mavlink_msg_registry_float_tm_get_value(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Decode a registry_float_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param registry_float_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_registry_float_tm_decode(const mavlink_message_t* msg, mavlink_registry_float_tm_t* registry_float_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    registry_float_tm->timestamp = mavlink_msg_registry_float_tm_get_timestamp(msg);
+    registry_float_tm->key_id = mavlink_msg_registry_float_tm_get_key_id(msg);
+    registry_float_tm->value = mavlink_msg_registry_float_tm_get_value(msg);
+    mavlink_msg_registry_float_tm_get_key_name(msg, registry_float_tm->key_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN? msg->len : MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN;
+        memset(registry_float_tm, 0, MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_LEN);
+    memcpy(registry_float_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_registry_int_tm.h b/mavlink_lib/orion/mavlink_msg_registry_int_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..c731a1ce222ef62760b995b33fc0fb0f1a33e329
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_registry_int_tm.h
@@ -0,0 +1,280 @@
+#pragma once
+// MESSAGE REGISTRY_INT_TM PACKING
+
+#define MAVLINK_MSG_ID_REGISTRY_INT_TM 117
+
+
+typedef struct __mavlink_registry_int_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp*/
+ uint32_t key_id; /*<  Id of this configuration entry*/
+ uint32_t value; /*<  Value of this configuration*/
+ char key_name[20]; /*<  Name of this configuration entry*/
+} mavlink_registry_int_tm_t;
+
+#define MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN 36
+#define MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN 36
+#define MAVLINK_MSG_ID_117_LEN 36
+#define MAVLINK_MSG_ID_117_MIN_LEN 36
+
+#define MAVLINK_MSG_ID_REGISTRY_INT_TM_CRC 68
+#define MAVLINK_MSG_ID_117_CRC 68
+
+#define MAVLINK_MSG_REGISTRY_INT_TM_FIELD_KEY_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_REGISTRY_INT_TM { \
+    117, \
+    "REGISTRY_INT_TM", \
+    4, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_registry_int_tm_t, timestamp) }, \
+         { "key_id", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_registry_int_tm_t, key_id) }, \
+         { "key_name", NULL, MAVLINK_TYPE_CHAR, 20, 16, offsetof(mavlink_registry_int_tm_t, key_name) }, \
+         { "value", NULL, MAVLINK_TYPE_UINT32_T, 0, 12, offsetof(mavlink_registry_int_tm_t, value) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_REGISTRY_INT_TM { \
+    "REGISTRY_INT_TM", \
+    4, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_registry_int_tm_t, timestamp) }, \
+         { "key_id", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_registry_int_tm_t, key_id) }, \
+         { "key_name", NULL, MAVLINK_TYPE_CHAR, 20, 16, offsetof(mavlink_registry_int_tm_t, key_name) }, \
+         { "value", NULL, MAVLINK_TYPE_UINT32_T, 0, 12, offsetof(mavlink_registry_int_tm_t, value) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a registry_int_tm 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 timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param value  Value of this configuration
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_registry_int_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint32_t key_id, const char *key_name, uint32_t value)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_uint32_t(buf, 12, value);
+    _mav_put_char_array(buf, 16, key_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN);
+#else
+    mavlink_registry_int_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.value = value;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_REGISTRY_INT_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_CRC);
+}
+
+/**
+ * @brief Pack a registry_int_tm 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 timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param value  Value of this configuration
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_registry_int_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint32_t key_id,const char *key_name,uint32_t value)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_uint32_t(buf, 12, value);
+    _mav_put_char_array(buf, 16, key_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN);
+#else
+    mavlink_registry_int_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.value = value;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_REGISTRY_INT_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_CRC);
+}
+
+/**
+ * @brief Encode a registry_int_tm 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 registry_int_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_registry_int_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_registry_int_tm_t* registry_int_tm)
+{
+    return mavlink_msg_registry_int_tm_pack(system_id, component_id, msg, registry_int_tm->timestamp, registry_int_tm->key_id, registry_int_tm->key_name, registry_int_tm->value);
+}
+
+/**
+ * @brief Encode a registry_int_tm 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 registry_int_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_registry_int_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_registry_int_tm_t* registry_int_tm)
+{
+    return mavlink_msg_registry_int_tm_pack_chan(system_id, component_id, chan, msg, registry_int_tm->timestamp, registry_int_tm->key_id, registry_int_tm->key_name, registry_int_tm->value);
+}
+
+/**
+ * @brief Send a registry_int_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp
+ * @param key_id  Id of this configuration entry
+ * @param key_name  Name of this configuration entry
+ * @param value  Value of this configuration
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_registry_int_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint32_t key_id, const char *key_name, uint32_t value)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_uint32_t(buf, 12, value);
+    _mav_put_char_array(buf, 16, key_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_INT_TM, buf, MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_CRC);
+#else
+    mavlink_registry_int_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.key_id = key_id;
+    packet.value = value;
+    mav_array_memcpy(packet.key_name, key_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_INT_TM, (const char *)&packet, MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a registry_int_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_registry_int_tm_send_struct(mavlink_channel_t chan, const mavlink_registry_int_tm_t* registry_int_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_registry_int_tm_send(chan, registry_int_tm->timestamp, registry_int_tm->key_id, registry_int_tm->key_name, registry_int_tm->value);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_INT_TM, (const char *)registry_int_tm, MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_registry_int_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint32_t key_id, const char *key_name, uint32_t value)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, key_id);
+    _mav_put_uint32_t(buf, 12, value);
+    _mav_put_char_array(buf, 16, key_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_INT_TM, buf, MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_CRC);
+#else
+    mavlink_registry_int_tm_t *packet = (mavlink_registry_int_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->key_id = key_id;
+    packet->value = value;
+    mav_array_memcpy(packet->key_name, key_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_REGISTRY_INT_TM, (const char *)packet, MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN, MAVLINK_MSG_ID_REGISTRY_INT_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE REGISTRY_INT_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from registry_int_tm message
+ *
+ * @return [us] Timestamp
+ */
+static inline uint64_t mavlink_msg_registry_int_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field key_id from registry_int_tm message
+ *
+ * @return  Id of this configuration entry
+ */
+static inline uint32_t mavlink_msg_registry_int_tm_get_key_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  8);
+}
+
+/**
+ * @brief Get field key_name from registry_int_tm message
+ *
+ * @return  Name of this configuration entry
+ */
+static inline uint16_t mavlink_msg_registry_int_tm_get_key_name(const mavlink_message_t* msg, char *key_name)
+{
+    return _MAV_RETURN_char_array(msg, key_name, 20,  16);
+}
+
+/**
+ * @brief Get field value from registry_int_tm message
+ *
+ * @return  Value of this configuration
+ */
+static inline uint32_t mavlink_msg_registry_int_tm_get_value(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  12);
+}
+
+/**
+ * @brief Decode a registry_int_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param registry_int_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_registry_int_tm_decode(const mavlink_message_t* msg, mavlink_registry_int_tm_t* registry_int_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    registry_int_tm->timestamp = mavlink_msg_registry_int_tm_get_timestamp(msg);
+    registry_int_tm->key_id = mavlink_msg_registry_int_tm_get_key_id(msg);
+    registry_int_tm->value = mavlink_msg_registry_int_tm_get_value(msg);
+    mavlink_msg_registry_int_tm_get_key_name(msg, registry_int_tm->key_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN? msg->len : MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN;
+        memset(registry_int_tm, 0, MAVLINK_MSG_ID_REGISTRY_INT_TM_LEN);
+    memcpy(registry_int_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_reset_servo_tc.h b/mavlink_lib/orion/mavlink_msg_reset_servo_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..6a7c1b4e39eafbfb3c316260de23a6716df10888
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_reset_servo_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE RESET_SERVO_TC PACKING
+
+#define MAVLINK_MSG_ID_RESET_SERVO_TC 7
+
+
+typedef struct __mavlink_reset_servo_tc_t {
+ uint8_t servo_id; /*<  A member of the ServosList enum*/
+} mavlink_reset_servo_tc_t;
+
+#define MAVLINK_MSG_ID_RESET_SERVO_TC_LEN 1
+#define MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN 1
+#define MAVLINK_MSG_ID_7_LEN 1
+#define MAVLINK_MSG_ID_7_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_RESET_SERVO_TC_CRC 226
+#define MAVLINK_MSG_ID_7_CRC 226
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_RESET_SERVO_TC { \
+    7, \
+    "RESET_SERVO_TC", \
+    1, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_reset_servo_tc_t, servo_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_RESET_SERVO_TC { \
+    "RESET_SERVO_TC", \
+    1, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_reset_servo_tc_t, servo_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a reset_servo_tc 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 servo_id  A member of the ServosList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_reset_servo_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_RESET_SERVO_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN);
+#else
+    mavlink_reset_servo_tc_t packet;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_RESET_SERVO_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_CRC);
+}
+
+/**
+ * @brief Pack a reset_servo_tc 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 servo_id  A member of the ServosList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_reset_servo_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_RESET_SERVO_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN);
+#else
+    mavlink_reset_servo_tc_t packet;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_RESET_SERVO_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_CRC);
+}
+
+/**
+ * @brief Encode a reset_servo_tc 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 reset_servo_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_reset_servo_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_reset_servo_tc_t* reset_servo_tc)
+{
+    return mavlink_msg_reset_servo_tc_pack(system_id, component_id, msg, reset_servo_tc->servo_id);
+}
+
+/**
+ * @brief Encode a reset_servo_tc 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 reset_servo_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_reset_servo_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_reset_servo_tc_t* reset_servo_tc)
+{
+    return mavlink_msg_reset_servo_tc_pack_chan(system_id, component_id, chan, msg, reset_servo_tc->servo_id);
+}
+
+/**
+ * @brief Send a reset_servo_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param servo_id  A member of the ServosList enum
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_reset_servo_tc_send(mavlink_channel_t chan, uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_RESET_SERVO_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RESET_SERVO_TC, buf, MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_CRC);
+#else
+    mavlink_reset_servo_tc_t packet;
+    packet.servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RESET_SERVO_TC, (const char *)&packet, MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a reset_servo_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_reset_servo_tc_send_struct(mavlink_channel_t chan, const mavlink_reset_servo_tc_t* reset_servo_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_reset_servo_tc_send(chan, reset_servo_tc->servo_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RESET_SERVO_TC, (const char *)reset_servo_tc, MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_RESET_SERVO_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_reset_servo_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RESET_SERVO_TC, buf, MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_CRC);
+#else
+    mavlink_reset_servo_tc_t *packet = (mavlink_reset_servo_tc_t *)msgbuf;
+    packet->servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RESET_SERVO_TC, (const char *)packet, MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN, MAVLINK_MSG_ID_RESET_SERVO_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE RESET_SERVO_TC UNPACKING
+
+
+/**
+ * @brief Get field servo_id from reset_servo_tc message
+ *
+ * @return  A member of the ServosList enum
+ */
+static inline uint8_t mavlink_msg_reset_servo_tc_get_servo_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Decode a reset_servo_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param reset_servo_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_reset_servo_tc_decode(const mavlink_message_t* msg, mavlink_reset_servo_tc_t* reset_servo_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    reset_servo_tc->servo_id = mavlink_msg_reset_servo_tc_get_servo_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_RESET_SERVO_TC_LEN? msg->len : MAVLINK_MSG_ID_RESET_SERVO_TC_LEN;
+        memset(reset_servo_tc, 0, MAVLINK_MSG_ID_RESET_SERVO_TC_LEN);
+    memcpy(reset_servo_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_rocket_flight_tm.h b/mavlink_lib/orion/mavlink_msg_rocket_flight_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..86ad5b4e22180b95afc42dc5d53169a6813e3368
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_rocket_flight_tm.h
@@ -0,0 +1,1313 @@
+#pragma once
+// MESSAGE ROCKET_FLIGHT_TM PACKING
+
+#define MAVLINK_MSG_ID_ROCKET_FLIGHT_TM 208
+
+
+typedef struct __mavlink_rocket_flight_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp in microseconds*/
+ float pressure_ada; /*< [Pa] Atmospheric pressure estimated by ADA*/
+ float pressure_digi; /*< [Pa] Pressure from digital sensor*/
+ float pressure_static; /*< [Pa] Pressure from static port*/
+ float pressure_dpl; /*< [Pa] Pressure from deployment vane sensor*/
+ float airspeed_pitot; /*< [m/s] Pitot airspeed*/
+ float altitude_agl; /*< [m] Altitude above ground level*/
+ float ada_vert_speed; /*< [m/s] Vertical speed estimated by ADA*/
+ float mea_mass; /*< [kg] Mass estimated by MEA*/
+ float mea_apogee; /*< [m] MEA estimated apogee*/
+ float acc_x; /*< [m/s^2] Acceleration on X axis (body)*/
+ float acc_y; /*< [m/s^2] Acceleration on Y axis (body)*/
+ float acc_z; /*< [m/s^2] Acceleration on Z axis (body)*/
+ float gyro_x; /*< [rad/s] Angular speed on X axis (body)*/
+ float gyro_y; /*< [rad/s] Angular speed on Y axis (body)*/
+ float gyro_z; /*< [rad/s] Angular speed on Z axis (body)*/
+ float mag_x; /*< [uT] Magnetic field on X axis (body)*/
+ float mag_y; /*< [uT] Magnetic field on Y axis (body)*/
+ float mag_z; /*< [uT] Magnetic field on Z axis (body)*/
+ float vn100_qx; /*<  VN100 estimated attitude (qx)*/
+ float vn100_qy; /*<  VN100 estimated attitude (qy)*/
+ float vn100_qz; /*<  VN100 estimated attitude (qz)*/
+ float vn100_qw; /*<  VN100 estimated attitude (qw)*/
+ float gps_lat; /*< [deg] Latitude*/
+ float gps_lon; /*< [deg] Longitude*/
+ float gps_alt; /*< [m] GPS Altitude*/
+ float abk_angle; /*<  Air Brakes angle*/
+ float nas_n; /*< [deg] NAS estimated noth position*/
+ float nas_e; /*< [deg] NAS estimated east position*/
+ float nas_d; /*< [m] NAS estimated down position*/
+ float nas_vn; /*< [m/s] NAS estimated north velocity*/
+ float nas_ve; /*< [m/s] NAS estimated east velocity*/
+ float nas_vd; /*< [m/s] NAS estimated down velocity*/
+ float nas_qx; /*<  NAS estimated attitude (qx)*/
+ float nas_qy; /*<  NAS estimated attitude (qy)*/
+ float nas_qz; /*<  NAS estimated attitude (qz)*/
+ float nas_qw; /*<  NAS estimated attitude (qw)*/
+ float nas_bias_x; /*<  NAS gyroscope bias on x axis*/
+ float nas_bias_y; /*<  NAS gyroscope bias on y axis*/
+ float nas_bias_z; /*<  NAS gyroscope bias on z axis*/
+ float battery_voltage; /*< [V] Battery voltage*/
+ float cam_battery_voltage; /*< [V] Camera battery voltage*/
+ float temperature; /*< [degC] Temperature*/
+ uint8_t gps_fix; /*<  Wether the GPS has a FIX*/
+ uint8_t fmm_state; /*<  Flight Mode Manager State*/
+} mavlink_rocket_flight_tm_t;
+
+#define MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN 178
+#define MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN 178
+#define MAVLINK_MSG_ID_208_LEN 178
+#define MAVLINK_MSG_ID_208_MIN_LEN 178
+
+#define MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC 235
+#define MAVLINK_MSG_ID_208_CRC 235
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ROCKET_FLIGHT_TM { \
+    208, \
+    "ROCKET_FLIGHT_TM", \
+    45, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_rocket_flight_tm_t, timestamp) }, \
+         { "pressure_ada", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_rocket_flight_tm_t, pressure_ada) }, \
+         { "pressure_digi", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_rocket_flight_tm_t, pressure_digi) }, \
+         { "pressure_static", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_rocket_flight_tm_t, pressure_static) }, \
+         { "pressure_dpl", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_rocket_flight_tm_t, pressure_dpl) }, \
+         { "airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_rocket_flight_tm_t, airspeed_pitot) }, \
+         { "altitude_agl", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_rocket_flight_tm_t, altitude_agl) }, \
+         { "ada_vert_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_rocket_flight_tm_t, ada_vert_speed) }, \
+         { "mea_mass", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_rocket_flight_tm_t, mea_mass) }, \
+         { "mea_apogee", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_rocket_flight_tm_t, mea_apogee) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_rocket_flight_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_rocket_flight_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_rocket_flight_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_rocket_flight_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_rocket_flight_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_rocket_flight_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_rocket_flight_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_rocket_flight_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_rocket_flight_tm_t, mag_z) }, \
+         { "vn100_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_rocket_flight_tm_t, vn100_qx) }, \
+         { "vn100_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_rocket_flight_tm_t, vn100_qy) }, \
+         { "vn100_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_rocket_flight_tm_t, vn100_qz) }, \
+         { "vn100_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_rocket_flight_tm_t, vn100_qw) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 176, offsetof(mavlink_rocket_flight_tm_t, gps_fix) }, \
+         { "gps_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_rocket_flight_tm_t, gps_lat) }, \
+         { "gps_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_rocket_flight_tm_t, gps_lon) }, \
+         { "gps_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_rocket_flight_tm_t, gps_alt) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 177, offsetof(mavlink_rocket_flight_tm_t, fmm_state) }, \
+         { "abk_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_rocket_flight_tm_t, abk_angle) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_rocket_flight_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_rocket_flight_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_rocket_flight_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_rocket_flight_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_rocket_flight_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_rocket_flight_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_rocket_flight_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_rocket_flight_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_rocket_flight_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_rocket_flight_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 152, offsetof(mavlink_rocket_flight_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 156, offsetof(mavlink_rocket_flight_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 160, offsetof(mavlink_rocket_flight_tm_t, nas_bias_z) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 164, offsetof(mavlink_rocket_flight_tm_t, battery_voltage) }, \
+         { "cam_battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 168, offsetof(mavlink_rocket_flight_tm_t, cam_battery_voltage) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 172, offsetof(mavlink_rocket_flight_tm_t, temperature) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ROCKET_FLIGHT_TM { \
+    "ROCKET_FLIGHT_TM", \
+    45, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_rocket_flight_tm_t, timestamp) }, \
+         { "pressure_ada", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_rocket_flight_tm_t, pressure_ada) }, \
+         { "pressure_digi", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_rocket_flight_tm_t, pressure_digi) }, \
+         { "pressure_static", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_rocket_flight_tm_t, pressure_static) }, \
+         { "pressure_dpl", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_rocket_flight_tm_t, pressure_dpl) }, \
+         { "airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_rocket_flight_tm_t, airspeed_pitot) }, \
+         { "altitude_agl", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_rocket_flight_tm_t, altitude_agl) }, \
+         { "ada_vert_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_rocket_flight_tm_t, ada_vert_speed) }, \
+         { "mea_mass", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_rocket_flight_tm_t, mea_mass) }, \
+         { "mea_apogee", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_rocket_flight_tm_t, mea_apogee) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_rocket_flight_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_rocket_flight_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_rocket_flight_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_rocket_flight_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_rocket_flight_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_rocket_flight_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_rocket_flight_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_rocket_flight_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_rocket_flight_tm_t, mag_z) }, \
+         { "vn100_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_rocket_flight_tm_t, vn100_qx) }, \
+         { "vn100_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_rocket_flight_tm_t, vn100_qy) }, \
+         { "vn100_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_rocket_flight_tm_t, vn100_qz) }, \
+         { "vn100_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_rocket_flight_tm_t, vn100_qw) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 176, offsetof(mavlink_rocket_flight_tm_t, gps_fix) }, \
+         { "gps_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_rocket_flight_tm_t, gps_lat) }, \
+         { "gps_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_rocket_flight_tm_t, gps_lon) }, \
+         { "gps_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_rocket_flight_tm_t, gps_alt) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 177, offsetof(mavlink_rocket_flight_tm_t, fmm_state) }, \
+         { "abk_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_rocket_flight_tm_t, abk_angle) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_rocket_flight_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_rocket_flight_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_rocket_flight_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_rocket_flight_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_rocket_flight_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_rocket_flight_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_rocket_flight_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_rocket_flight_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_rocket_flight_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_rocket_flight_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 152, offsetof(mavlink_rocket_flight_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 156, offsetof(mavlink_rocket_flight_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 160, offsetof(mavlink_rocket_flight_tm_t, nas_bias_z) }, \
+         { "battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 164, offsetof(mavlink_rocket_flight_tm_t, battery_voltage) }, \
+         { "cam_battery_voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 168, offsetof(mavlink_rocket_flight_tm_t, cam_battery_voltage) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 172, offsetof(mavlink_rocket_flight_tm_t, temperature) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a rocket_flight_tm 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 timestamp [us] Timestamp in microseconds
+ * @param pressure_ada [Pa] Atmospheric pressure estimated by ADA
+ * @param pressure_digi [Pa] Pressure from digital sensor
+ * @param pressure_static [Pa] Pressure from static port
+ * @param pressure_dpl [Pa] Pressure from deployment vane sensor
+ * @param airspeed_pitot [m/s] Pitot airspeed
+ * @param altitude_agl [m] Altitude above ground level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param mea_mass [kg] Mass estimated by MEA
+ * @param mea_apogee [m] MEA estimated apogee
+ * @param acc_x [m/s^2] Acceleration on X axis (body)
+ * @param acc_y [m/s^2] Acceleration on Y axis (body)
+ * @param acc_z [m/s^2] Acceleration on Z axis (body)
+ * @param gyro_x [rad/s] Angular speed on X axis (body)
+ * @param gyro_y [rad/s] Angular speed on Y axis (body)
+ * @param gyro_z [rad/s] Angular speed on Z axis (body)
+ * @param mag_x [uT] Magnetic field on X axis (body)
+ * @param mag_y [uT] Magnetic field on Y axis (body)
+ * @param mag_z [uT] Magnetic field on Z axis (body)
+ * @param vn100_qx  VN100 estimated attitude (qx)
+ * @param vn100_qy  VN100 estimated attitude (qy)
+ * @param vn100_qz  VN100 estimated attitude (qz)
+ * @param vn100_qw  VN100 estimated attitude (qw)
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param fmm_state  Flight Mode Manager State
+ * @param abk_angle  Air Brakes angle
+ * @param nas_n [deg] NAS estimated noth position
+ * @param nas_e [deg] NAS estimated east position
+ * @param nas_d [m] NAS estimated down position
+ * @param nas_vn [m/s] NAS estimated north velocity
+ * @param nas_ve [m/s] NAS estimated east velocity
+ * @param nas_vd [m/s] NAS estimated down velocity
+ * @param nas_qx  NAS estimated attitude (qx)
+ * @param nas_qy  NAS estimated attitude (qy)
+ * @param nas_qz  NAS estimated attitude (qz)
+ * @param nas_qw  NAS estimated attitude (qw)
+ * @param nas_bias_x  NAS gyroscope bias on x axis
+ * @param nas_bias_y  NAS gyroscope bias on y axis
+ * @param nas_bias_z  NAS gyroscope bias on z axis
+ * @param battery_voltage [V] Battery voltage
+ * @param cam_battery_voltage [V] Camera battery voltage
+ * @param temperature [degC] Temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_rocket_flight_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float altitude_agl, float ada_vert_speed, float mea_mass, float mea_apogee, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z, float vn100_qx, float vn100_qy, float vn100_qz, float vn100_qw, uint8_t gps_fix, float gps_lat, float gps_lon, float gps_alt, uint8_t fmm_state, float abk_angle, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float battery_voltage, float cam_battery_voltage, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure_ada);
+    _mav_put_float(buf, 12, pressure_digi);
+    _mav_put_float(buf, 16, pressure_static);
+    _mav_put_float(buf, 20, pressure_dpl);
+    _mav_put_float(buf, 24, airspeed_pitot);
+    _mav_put_float(buf, 28, altitude_agl);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, mea_mass);
+    _mav_put_float(buf, 40, mea_apogee);
+    _mav_put_float(buf, 44, acc_x);
+    _mav_put_float(buf, 48, acc_y);
+    _mav_put_float(buf, 52, acc_z);
+    _mav_put_float(buf, 56, gyro_x);
+    _mav_put_float(buf, 60, gyro_y);
+    _mav_put_float(buf, 64, gyro_z);
+    _mav_put_float(buf, 68, mag_x);
+    _mav_put_float(buf, 72, mag_y);
+    _mav_put_float(buf, 76, mag_z);
+    _mav_put_float(buf, 80, vn100_qx);
+    _mav_put_float(buf, 84, vn100_qy);
+    _mav_put_float(buf, 88, vn100_qz);
+    _mav_put_float(buf, 92, vn100_qw);
+    _mav_put_float(buf, 96, gps_lat);
+    _mav_put_float(buf, 100, gps_lon);
+    _mav_put_float(buf, 104, gps_alt);
+    _mav_put_float(buf, 108, abk_angle);
+    _mav_put_float(buf, 112, nas_n);
+    _mav_put_float(buf, 116, nas_e);
+    _mav_put_float(buf, 120, nas_d);
+    _mav_put_float(buf, 124, nas_vn);
+    _mav_put_float(buf, 128, nas_ve);
+    _mav_put_float(buf, 132, nas_vd);
+    _mav_put_float(buf, 136, nas_qx);
+    _mav_put_float(buf, 140, nas_qy);
+    _mav_put_float(buf, 144, nas_qz);
+    _mav_put_float(buf, 148, nas_qw);
+    _mav_put_float(buf, 152, nas_bias_x);
+    _mav_put_float(buf, 156, nas_bias_y);
+    _mav_put_float(buf, 160, nas_bias_z);
+    _mav_put_float(buf, 164, battery_voltage);
+    _mav_put_float(buf, 168, cam_battery_voltage);
+    _mav_put_float(buf, 172, temperature);
+    _mav_put_uint8_t(buf, 176, gps_fix);
+    _mav_put_uint8_t(buf, 177, fmm_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN);
+#else
+    mavlink_rocket_flight_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure_ada = pressure_ada;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dpl = pressure_dpl;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.altitude_agl = altitude_agl;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.mea_mass = mea_mass;
+    packet.mea_apogee = mea_apogee;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    packet.vn100_qx = vn100_qx;
+    packet.vn100_qy = vn100_qy;
+    packet.vn100_qz = vn100_qz;
+    packet.vn100_qw = vn100_qw;
+    packet.gps_lat = gps_lat;
+    packet.gps_lon = gps_lon;
+    packet.gps_alt = gps_alt;
+    packet.abk_angle = abk_angle;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.battery_voltage = battery_voltage;
+    packet.cam_battery_voltage = cam_battery_voltage;
+    packet.temperature = temperature;
+    packet.gps_fix = gps_fix;
+    packet.fmm_state = fmm_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ROCKET_FLIGHT_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC);
+}
+
+/**
+ * @brief Pack a rocket_flight_tm 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 timestamp [us] Timestamp in microseconds
+ * @param pressure_ada [Pa] Atmospheric pressure estimated by ADA
+ * @param pressure_digi [Pa] Pressure from digital sensor
+ * @param pressure_static [Pa] Pressure from static port
+ * @param pressure_dpl [Pa] Pressure from deployment vane sensor
+ * @param airspeed_pitot [m/s] Pitot airspeed
+ * @param altitude_agl [m] Altitude above ground level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param mea_mass [kg] Mass estimated by MEA
+ * @param mea_apogee [m] MEA estimated apogee
+ * @param acc_x [m/s^2] Acceleration on X axis (body)
+ * @param acc_y [m/s^2] Acceleration on Y axis (body)
+ * @param acc_z [m/s^2] Acceleration on Z axis (body)
+ * @param gyro_x [rad/s] Angular speed on X axis (body)
+ * @param gyro_y [rad/s] Angular speed on Y axis (body)
+ * @param gyro_z [rad/s] Angular speed on Z axis (body)
+ * @param mag_x [uT] Magnetic field on X axis (body)
+ * @param mag_y [uT] Magnetic field on Y axis (body)
+ * @param mag_z [uT] Magnetic field on Z axis (body)
+ * @param vn100_qx  VN100 estimated attitude (qx)
+ * @param vn100_qy  VN100 estimated attitude (qy)
+ * @param vn100_qz  VN100 estimated attitude (qz)
+ * @param vn100_qw  VN100 estimated attitude (qw)
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param fmm_state  Flight Mode Manager State
+ * @param abk_angle  Air Brakes angle
+ * @param nas_n [deg] NAS estimated noth position
+ * @param nas_e [deg] NAS estimated east position
+ * @param nas_d [m] NAS estimated down position
+ * @param nas_vn [m/s] NAS estimated north velocity
+ * @param nas_ve [m/s] NAS estimated east velocity
+ * @param nas_vd [m/s] NAS estimated down velocity
+ * @param nas_qx  NAS estimated attitude (qx)
+ * @param nas_qy  NAS estimated attitude (qy)
+ * @param nas_qz  NAS estimated attitude (qz)
+ * @param nas_qw  NAS estimated attitude (qw)
+ * @param nas_bias_x  NAS gyroscope bias on x axis
+ * @param nas_bias_y  NAS gyroscope bias on y axis
+ * @param nas_bias_z  NAS gyroscope bias on z axis
+ * @param battery_voltage [V] Battery voltage
+ * @param cam_battery_voltage [V] Camera battery voltage
+ * @param temperature [degC] Temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_rocket_flight_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,float pressure_ada,float pressure_digi,float pressure_static,float pressure_dpl,float airspeed_pitot,float altitude_agl,float ada_vert_speed,float mea_mass,float mea_apogee,float acc_x,float acc_y,float acc_z,float gyro_x,float gyro_y,float gyro_z,float mag_x,float mag_y,float mag_z,float vn100_qx,float vn100_qy,float vn100_qz,float vn100_qw,uint8_t gps_fix,float gps_lat,float gps_lon,float gps_alt,uint8_t fmm_state,float abk_angle,float nas_n,float nas_e,float nas_d,float nas_vn,float nas_ve,float nas_vd,float nas_qx,float nas_qy,float nas_qz,float nas_qw,float nas_bias_x,float nas_bias_y,float nas_bias_z,float battery_voltage,float cam_battery_voltage,float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure_ada);
+    _mav_put_float(buf, 12, pressure_digi);
+    _mav_put_float(buf, 16, pressure_static);
+    _mav_put_float(buf, 20, pressure_dpl);
+    _mav_put_float(buf, 24, airspeed_pitot);
+    _mav_put_float(buf, 28, altitude_agl);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, mea_mass);
+    _mav_put_float(buf, 40, mea_apogee);
+    _mav_put_float(buf, 44, acc_x);
+    _mav_put_float(buf, 48, acc_y);
+    _mav_put_float(buf, 52, acc_z);
+    _mav_put_float(buf, 56, gyro_x);
+    _mav_put_float(buf, 60, gyro_y);
+    _mav_put_float(buf, 64, gyro_z);
+    _mav_put_float(buf, 68, mag_x);
+    _mav_put_float(buf, 72, mag_y);
+    _mav_put_float(buf, 76, mag_z);
+    _mav_put_float(buf, 80, vn100_qx);
+    _mav_put_float(buf, 84, vn100_qy);
+    _mav_put_float(buf, 88, vn100_qz);
+    _mav_put_float(buf, 92, vn100_qw);
+    _mav_put_float(buf, 96, gps_lat);
+    _mav_put_float(buf, 100, gps_lon);
+    _mav_put_float(buf, 104, gps_alt);
+    _mav_put_float(buf, 108, abk_angle);
+    _mav_put_float(buf, 112, nas_n);
+    _mav_put_float(buf, 116, nas_e);
+    _mav_put_float(buf, 120, nas_d);
+    _mav_put_float(buf, 124, nas_vn);
+    _mav_put_float(buf, 128, nas_ve);
+    _mav_put_float(buf, 132, nas_vd);
+    _mav_put_float(buf, 136, nas_qx);
+    _mav_put_float(buf, 140, nas_qy);
+    _mav_put_float(buf, 144, nas_qz);
+    _mav_put_float(buf, 148, nas_qw);
+    _mav_put_float(buf, 152, nas_bias_x);
+    _mav_put_float(buf, 156, nas_bias_y);
+    _mav_put_float(buf, 160, nas_bias_z);
+    _mav_put_float(buf, 164, battery_voltage);
+    _mav_put_float(buf, 168, cam_battery_voltage);
+    _mav_put_float(buf, 172, temperature);
+    _mav_put_uint8_t(buf, 176, gps_fix);
+    _mav_put_uint8_t(buf, 177, fmm_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN);
+#else
+    mavlink_rocket_flight_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure_ada = pressure_ada;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dpl = pressure_dpl;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.altitude_agl = altitude_agl;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.mea_mass = mea_mass;
+    packet.mea_apogee = mea_apogee;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    packet.vn100_qx = vn100_qx;
+    packet.vn100_qy = vn100_qy;
+    packet.vn100_qz = vn100_qz;
+    packet.vn100_qw = vn100_qw;
+    packet.gps_lat = gps_lat;
+    packet.gps_lon = gps_lon;
+    packet.gps_alt = gps_alt;
+    packet.abk_angle = abk_angle;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.battery_voltage = battery_voltage;
+    packet.cam_battery_voltage = cam_battery_voltage;
+    packet.temperature = temperature;
+    packet.gps_fix = gps_fix;
+    packet.fmm_state = fmm_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ROCKET_FLIGHT_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC);
+}
+
+/**
+ * @brief Encode a rocket_flight_tm 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 rocket_flight_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_rocket_flight_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_rocket_flight_tm_t* rocket_flight_tm)
+{
+    return mavlink_msg_rocket_flight_tm_pack(system_id, component_id, msg, rocket_flight_tm->timestamp, rocket_flight_tm->pressure_ada, rocket_flight_tm->pressure_digi, rocket_flight_tm->pressure_static, rocket_flight_tm->pressure_dpl, rocket_flight_tm->airspeed_pitot, rocket_flight_tm->altitude_agl, rocket_flight_tm->ada_vert_speed, rocket_flight_tm->mea_mass, rocket_flight_tm->mea_apogee, rocket_flight_tm->acc_x, rocket_flight_tm->acc_y, rocket_flight_tm->acc_z, rocket_flight_tm->gyro_x, rocket_flight_tm->gyro_y, rocket_flight_tm->gyro_z, rocket_flight_tm->mag_x, rocket_flight_tm->mag_y, rocket_flight_tm->mag_z, rocket_flight_tm->vn100_qx, rocket_flight_tm->vn100_qy, rocket_flight_tm->vn100_qz, rocket_flight_tm->vn100_qw, rocket_flight_tm->gps_fix, rocket_flight_tm->gps_lat, rocket_flight_tm->gps_lon, rocket_flight_tm->gps_alt, rocket_flight_tm->fmm_state, rocket_flight_tm->abk_angle, rocket_flight_tm->nas_n, rocket_flight_tm->nas_e, rocket_flight_tm->nas_d, rocket_flight_tm->nas_vn, rocket_flight_tm->nas_ve, rocket_flight_tm->nas_vd, rocket_flight_tm->nas_qx, rocket_flight_tm->nas_qy, rocket_flight_tm->nas_qz, rocket_flight_tm->nas_qw, rocket_flight_tm->nas_bias_x, rocket_flight_tm->nas_bias_y, rocket_flight_tm->nas_bias_z, rocket_flight_tm->battery_voltage, rocket_flight_tm->cam_battery_voltage, rocket_flight_tm->temperature);
+}
+
+/**
+ * @brief Encode a rocket_flight_tm 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 rocket_flight_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_rocket_flight_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_rocket_flight_tm_t* rocket_flight_tm)
+{
+    return mavlink_msg_rocket_flight_tm_pack_chan(system_id, component_id, chan, msg, rocket_flight_tm->timestamp, rocket_flight_tm->pressure_ada, rocket_flight_tm->pressure_digi, rocket_flight_tm->pressure_static, rocket_flight_tm->pressure_dpl, rocket_flight_tm->airspeed_pitot, rocket_flight_tm->altitude_agl, rocket_flight_tm->ada_vert_speed, rocket_flight_tm->mea_mass, rocket_flight_tm->mea_apogee, rocket_flight_tm->acc_x, rocket_flight_tm->acc_y, rocket_flight_tm->acc_z, rocket_flight_tm->gyro_x, rocket_flight_tm->gyro_y, rocket_flight_tm->gyro_z, rocket_flight_tm->mag_x, rocket_flight_tm->mag_y, rocket_flight_tm->mag_z, rocket_flight_tm->vn100_qx, rocket_flight_tm->vn100_qy, rocket_flight_tm->vn100_qz, rocket_flight_tm->vn100_qw, rocket_flight_tm->gps_fix, rocket_flight_tm->gps_lat, rocket_flight_tm->gps_lon, rocket_flight_tm->gps_alt, rocket_flight_tm->fmm_state, rocket_flight_tm->abk_angle, rocket_flight_tm->nas_n, rocket_flight_tm->nas_e, rocket_flight_tm->nas_d, rocket_flight_tm->nas_vn, rocket_flight_tm->nas_ve, rocket_flight_tm->nas_vd, rocket_flight_tm->nas_qx, rocket_flight_tm->nas_qy, rocket_flight_tm->nas_qz, rocket_flight_tm->nas_qw, rocket_flight_tm->nas_bias_x, rocket_flight_tm->nas_bias_y, rocket_flight_tm->nas_bias_z, rocket_flight_tm->battery_voltage, rocket_flight_tm->cam_battery_voltage, rocket_flight_tm->temperature);
+}
+
+/**
+ * @brief Send a rocket_flight_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp in microseconds
+ * @param pressure_ada [Pa] Atmospheric pressure estimated by ADA
+ * @param pressure_digi [Pa] Pressure from digital sensor
+ * @param pressure_static [Pa] Pressure from static port
+ * @param pressure_dpl [Pa] Pressure from deployment vane sensor
+ * @param airspeed_pitot [m/s] Pitot airspeed
+ * @param altitude_agl [m] Altitude above ground level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param mea_mass [kg] Mass estimated by MEA
+ * @param mea_apogee [m] MEA estimated apogee
+ * @param acc_x [m/s^2] Acceleration on X axis (body)
+ * @param acc_y [m/s^2] Acceleration on Y axis (body)
+ * @param acc_z [m/s^2] Acceleration on Z axis (body)
+ * @param gyro_x [rad/s] Angular speed on X axis (body)
+ * @param gyro_y [rad/s] Angular speed on Y axis (body)
+ * @param gyro_z [rad/s] Angular speed on Z axis (body)
+ * @param mag_x [uT] Magnetic field on X axis (body)
+ * @param mag_y [uT] Magnetic field on Y axis (body)
+ * @param mag_z [uT] Magnetic field on Z axis (body)
+ * @param vn100_qx  VN100 estimated attitude (qx)
+ * @param vn100_qy  VN100 estimated attitude (qy)
+ * @param vn100_qz  VN100 estimated attitude (qz)
+ * @param vn100_qw  VN100 estimated attitude (qw)
+ * @param gps_fix  Wether the GPS has a FIX
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param fmm_state  Flight Mode Manager State
+ * @param abk_angle  Air Brakes angle
+ * @param nas_n [deg] NAS estimated noth position
+ * @param nas_e [deg] NAS estimated east position
+ * @param nas_d [m] NAS estimated down position
+ * @param nas_vn [m/s] NAS estimated north velocity
+ * @param nas_ve [m/s] NAS estimated east velocity
+ * @param nas_vd [m/s] NAS estimated down velocity
+ * @param nas_qx  NAS estimated attitude (qx)
+ * @param nas_qy  NAS estimated attitude (qy)
+ * @param nas_qz  NAS estimated attitude (qz)
+ * @param nas_qw  NAS estimated attitude (qw)
+ * @param nas_bias_x  NAS gyroscope bias on x axis
+ * @param nas_bias_y  NAS gyroscope bias on y axis
+ * @param nas_bias_z  NAS gyroscope bias on z axis
+ * @param battery_voltage [V] Battery voltage
+ * @param cam_battery_voltage [V] Camera battery voltage
+ * @param temperature [degC] Temperature
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_rocket_flight_tm_send(mavlink_channel_t chan, uint64_t timestamp, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float altitude_agl, float ada_vert_speed, float mea_mass, float mea_apogee, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z, float vn100_qx, float vn100_qy, float vn100_qz, float vn100_qw, uint8_t gps_fix, float gps_lat, float gps_lon, float gps_alt, uint8_t fmm_state, float abk_angle, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float battery_voltage, float cam_battery_voltage, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure_ada);
+    _mav_put_float(buf, 12, pressure_digi);
+    _mav_put_float(buf, 16, pressure_static);
+    _mav_put_float(buf, 20, pressure_dpl);
+    _mav_put_float(buf, 24, airspeed_pitot);
+    _mav_put_float(buf, 28, altitude_agl);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, mea_mass);
+    _mav_put_float(buf, 40, mea_apogee);
+    _mav_put_float(buf, 44, acc_x);
+    _mav_put_float(buf, 48, acc_y);
+    _mav_put_float(buf, 52, acc_z);
+    _mav_put_float(buf, 56, gyro_x);
+    _mav_put_float(buf, 60, gyro_y);
+    _mav_put_float(buf, 64, gyro_z);
+    _mav_put_float(buf, 68, mag_x);
+    _mav_put_float(buf, 72, mag_y);
+    _mav_put_float(buf, 76, mag_z);
+    _mav_put_float(buf, 80, vn100_qx);
+    _mav_put_float(buf, 84, vn100_qy);
+    _mav_put_float(buf, 88, vn100_qz);
+    _mav_put_float(buf, 92, vn100_qw);
+    _mav_put_float(buf, 96, gps_lat);
+    _mav_put_float(buf, 100, gps_lon);
+    _mav_put_float(buf, 104, gps_alt);
+    _mav_put_float(buf, 108, abk_angle);
+    _mav_put_float(buf, 112, nas_n);
+    _mav_put_float(buf, 116, nas_e);
+    _mav_put_float(buf, 120, nas_d);
+    _mav_put_float(buf, 124, nas_vn);
+    _mav_put_float(buf, 128, nas_ve);
+    _mav_put_float(buf, 132, nas_vd);
+    _mav_put_float(buf, 136, nas_qx);
+    _mav_put_float(buf, 140, nas_qy);
+    _mav_put_float(buf, 144, nas_qz);
+    _mav_put_float(buf, 148, nas_qw);
+    _mav_put_float(buf, 152, nas_bias_x);
+    _mav_put_float(buf, 156, nas_bias_y);
+    _mav_put_float(buf, 160, nas_bias_z);
+    _mav_put_float(buf, 164, battery_voltage);
+    _mav_put_float(buf, 168, cam_battery_voltage);
+    _mav_put_float(buf, 172, temperature);
+    _mav_put_uint8_t(buf, 176, gps_fix);
+    _mav_put_uint8_t(buf, 177, fmm_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM, buf, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC);
+#else
+    mavlink_rocket_flight_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.pressure_ada = pressure_ada;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dpl = pressure_dpl;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.altitude_agl = altitude_agl;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.mea_mass = mea_mass;
+    packet.mea_apogee = mea_apogee;
+    packet.acc_x = acc_x;
+    packet.acc_y = acc_y;
+    packet.acc_z = acc_z;
+    packet.gyro_x = gyro_x;
+    packet.gyro_y = gyro_y;
+    packet.gyro_z = gyro_z;
+    packet.mag_x = mag_x;
+    packet.mag_y = mag_y;
+    packet.mag_z = mag_z;
+    packet.vn100_qx = vn100_qx;
+    packet.vn100_qy = vn100_qy;
+    packet.vn100_qz = vn100_qz;
+    packet.vn100_qw = vn100_qw;
+    packet.gps_lat = gps_lat;
+    packet.gps_lon = gps_lon;
+    packet.gps_alt = gps_alt;
+    packet.abk_angle = abk_angle;
+    packet.nas_n = nas_n;
+    packet.nas_e = nas_e;
+    packet.nas_d = nas_d;
+    packet.nas_vn = nas_vn;
+    packet.nas_ve = nas_ve;
+    packet.nas_vd = nas_vd;
+    packet.nas_qx = nas_qx;
+    packet.nas_qy = nas_qy;
+    packet.nas_qz = nas_qz;
+    packet.nas_qw = nas_qw;
+    packet.nas_bias_x = nas_bias_x;
+    packet.nas_bias_y = nas_bias_y;
+    packet.nas_bias_z = nas_bias_z;
+    packet.battery_voltage = battery_voltage;
+    packet.cam_battery_voltage = cam_battery_voltage;
+    packet.temperature = temperature;
+    packet.gps_fix = gps_fix;
+    packet.fmm_state = fmm_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM, (const char *)&packet, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a rocket_flight_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_rocket_flight_tm_send_struct(mavlink_channel_t chan, const mavlink_rocket_flight_tm_t* rocket_flight_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_rocket_flight_tm_send(chan, rocket_flight_tm->timestamp, rocket_flight_tm->pressure_ada, rocket_flight_tm->pressure_digi, rocket_flight_tm->pressure_static, rocket_flight_tm->pressure_dpl, rocket_flight_tm->airspeed_pitot, rocket_flight_tm->altitude_agl, rocket_flight_tm->ada_vert_speed, rocket_flight_tm->mea_mass, rocket_flight_tm->mea_apogee, rocket_flight_tm->acc_x, rocket_flight_tm->acc_y, rocket_flight_tm->acc_z, rocket_flight_tm->gyro_x, rocket_flight_tm->gyro_y, rocket_flight_tm->gyro_z, rocket_flight_tm->mag_x, rocket_flight_tm->mag_y, rocket_flight_tm->mag_z, rocket_flight_tm->vn100_qx, rocket_flight_tm->vn100_qy, rocket_flight_tm->vn100_qz, rocket_flight_tm->vn100_qw, rocket_flight_tm->gps_fix, rocket_flight_tm->gps_lat, rocket_flight_tm->gps_lon, rocket_flight_tm->gps_alt, rocket_flight_tm->fmm_state, rocket_flight_tm->abk_angle, rocket_flight_tm->nas_n, rocket_flight_tm->nas_e, rocket_flight_tm->nas_d, rocket_flight_tm->nas_vn, rocket_flight_tm->nas_ve, rocket_flight_tm->nas_vd, rocket_flight_tm->nas_qx, rocket_flight_tm->nas_qy, rocket_flight_tm->nas_qz, rocket_flight_tm->nas_qw, rocket_flight_tm->nas_bias_x, rocket_flight_tm->nas_bias_y, rocket_flight_tm->nas_bias_z, rocket_flight_tm->battery_voltage, rocket_flight_tm->cam_battery_voltage, rocket_flight_tm->temperature);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM, (const char *)rocket_flight_tm, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_rocket_flight_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float altitude_agl, float ada_vert_speed, float mea_mass, float mea_apogee, float acc_x, float acc_y, float acc_z, float gyro_x, float gyro_y, float gyro_z, float mag_x, float mag_y, float mag_z, float vn100_qx, float vn100_qy, float vn100_qz, float vn100_qw, uint8_t gps_fix, float gps_lat, float gps_lon, float gps_alt, uint8_t fmm_state, float abk_angle, float nas_n, float nas_e, float nas_d, float nas_vn, float nas_ve, float nas_vd, float nas_qx, float nas_qy, float nas_qz, float nas_qw, float nas_bias_x, float nas_bias_y, float nas_bias_z, float battery_voltage, float cam_battery_voltage, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, pressure_ada);
+    _mav_put_float(buf, 12, pressure_digi);
+    _mav_put_float(buf, 16, pressure_static);
+    _mav_put_float(buf, 20, pressure_dpl);
+    _mav_put_float(buf, 24, airspeed_pitot);
+    _mav_put_float(buf, 28, altitude_agl);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, mea_mass);
+    _mav_put_float(buf, 40, mea_apogee);
+    _mav_put_float(buf, 44, acc_x);
+    _mav_put_float(buf, 48, acc_y);
+    _mav_put_float(buf, 52, acc_z);
+    _mav_put_float(buf, 56, gyro_x);
+    _mav_put_float(buf, 60, gyro_y);
+    _mav_put_float(buf, 64, gyro_z);
+    _mav_put_float(buf, 68, mag_x);
+    _mav_put_float(buf, 72, mag_y);
+    _mav_put_float(buf, 76, mag_z);
+    _mav_put_float(buf, 80, vn100_qx);
+    _mav_put_float(buf, 84, vn100_qy);
+    _mav_put_float(buf, 88, vn100_qz);
+    _mav_put_float(buf, 92, vn100_qw);
+    _mav_put_float(buf, 96, gps_lat);
+    _mav_put_float(buf, 100, gps_lon);
+    _mav_put_float(buf, 104, gps_alt);
+    _mav_put_float(buf, 108, abk_angle);
+    _mav_put_float(buf, 112, nas_n);
+    _mav_put_float(buf, 116, nas_e);
+    _mav_put_float(buf, 120, nas_d);
+    _mav_put_float(buf, 124, nas_vn);
+    _mav_put_float(buf, 128, nas_ve);
+    _mav_put_float(buf, 132, nas_vd);
+    _mav_put_float(buf, 136, nas_qx);
+    _mav_put_float(buf, 140, nas_qy);
+    _mav_put_float(buf, 144, nas_qz);
+    _mav_put_float(buf, 148, nas_qw);
+    _mav_put_float(buf, 152, nas_bias_x);
+    _mav_put_float(buf, 156, nas_bias_y);
+    _mav_put_float(buf, 160, nas_bias_z);
+    _mav_put_float(buf, 164, battery_voltage);
+    _mav_put_float(buf, 168, cam_battery_voltage);
+    _mav_put_float(buf, 172, temperature);
+    _mav_put_uint8_t(buf, 176, gps_fix);
+    _mav_put_uint8_t(buf, 177, fmm_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM, buf, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC);
+#else
+    mavlink_rocket_flight_tm_t *packet = (mavlink_rocket_flight_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->pressure_ada = pressure_ada;
+    packet->pressure_digi = pressure_digi;
+    packet->pressure_static = pressure_static;
+    packet->pressure_dpl = pressure_dpl;
+    packet->airspeed_pitot = airspeed_pitot;
+    packet->altitude_agl = altitude_agl;
+    packet->ada_vert_speed = ada_vert_speed;
+    packet->mea_mass = mea_mass;
+    packet->mea_apogee = mea_apogee;
+    packet->acc_x = acc_x;
+    packet->acc_y = acc_y;
+    packet->acc_z = acc_z;
+    packet->gyro_x = gyro_x;
+    packet->gyro_y = gyro_y;
+    packet->gyro_z = gyro_z;
+    packet->mag_x = mag_x;
+    packet->mag_y = mag_y;
+    packet->mag_z = mag_z;
+    packet->vn100_qx = vn100_qx;
+    packet->vn100_qy = vn100_qy;
+    packet->vn100_qz = vn100_qz;
+    packet->vn100_qw = vn100_qw;
+    packet->gps_lat = gps_lat;
+    packet->gps_lon = gps_lon;
+    packet->gps_alt = gps_alt;
+    packet->abk_angle = abk_angle;
+    packet->nas_n = nas_n;
+    packet->nas_e = nas_e;
+    packet->nas_d = nas_d;
+    packet->nas_vn = nas_vn;
+    packet->nas_ve = nas_ve;
+    packet->nas_vd = nas_vd;
+    packet->nas_qx = nas_qx;
+    packet->nas_qy = nas_qy;
+    packet->nas_qz = nas_qz;
+    packet->nas_qw = nas_qw;
+    packet->nas_bias_x = nas_bias_x;
+    packet->nas_bias_y = nas_bias_y;
+    packet->nas_bias_z = nas_bias_z;
+    packet->battery_voltage = battery_voltage;
+    packet->cam_battery_voltage = cam_battery_voltage;
+    packet->temperature = temperature;
+    packet->gps_fix = gps_fix;
+    packet->fmm_state = fmm_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM, (const char *)packet, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ROCKET_FLIGHT_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from rocket_flight_tm message
+ *
+ * @return [us] Timestamp in microseconds
+ */
+static inline uint64_t mavlink_msg_rocket_flight_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field pressure_ada from rocket_flight_tm message
+ *
+ * @return [Pa] Atmospheric pressure estimated by ADA
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_pressure_ada(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field pressure_digi from rocket_flight_tm message
+ *
+ * @return [Pa] Pressure from digital sensor
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_pressure_digi(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field pressure_static from rocket_flight_tm message
+ *
+ * @return [Pa] Pressure from static port
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_pressure_static(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field pressure_dpl from rocket_flight_tm message
+ *
+ * @return [Pa] Pressure from deployment vane sensor
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_pressure_dpl(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field airspeed_pitot from rocket_flight_tm message
+ *
+ * @return [m/s] Pitot airspeed
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_airspeed_pitot(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field altitude_agl from rocket_flight_tm message
+ *
+ * @return [m] Altitude above ground level
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_altitude_agl(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field ada_vert_speed from rocket_flight_tm message
+ *
+ * @return [m/s] Vertical speed estimated by ADA
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_ada_vert_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field mea_mass from rocket_flight_tm message
+ *
+ * @return [kg] Mass estimated by MEA
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_mea_mass(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Get field mea_apogee from rocket_flight_tm message
+ *
+ * @return [m] MEA estimated apogee
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_mea_apogee(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  40);
+}
+
+/**
+ * @brief Get field acc_x from rocket_flight_tm message
+ *
+ * @return [m/s^2] Acceleration on X axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_acc_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  44);
+}
+
+/**
+ * @brief Get field acc_y from rocket_flight_tm message
+ *
+ * @return [m/s^2] Acceleration on Y axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_acc_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  48);
+}
+
+/**
+ * @brief Get field acc_z from rocket_flight_tm message
+ *
+ * @return [m/s^2] Acceleration on Z axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_acc_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  52);
+}
+
+/**
+ * @brief Get field gyro_x from rocket_flight_tm message
+ *
+ * @return [rad/s] Angular speed on X axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_gyro_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  56);
+}
+
+/**
+ * @brief Get field gyro_y from rocket_flight_tm message
+ *
+ * @return [rad/s] Angular speed on Y axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_gyro_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  60);
+}
+
+/**
+ * @brief Get field gyro_z from rocket_flight_tm message
+ *
+ * @return [rad/s] Angular speed on Z axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_gyro_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  64);
+}
+
+/**
+ * @brief Get field mag_x from rocket_flight_tm message
+ *
+ * @return [uT] Magnetic field on X axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_mag_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  68);
+}
+
+/**
+ * @brief Get field mag_y from rocket_flight_tm message
+ *
+ * @return [uT] Magnetic field on Y axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_mag_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  72);
+}
+
+/**
+ * @brief Get field mag_z from rocket_flight_tm message
+ *
+ * @return [uT] Magnetic field on Z axis (body)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_mag_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  76);
+}
+
+/**
+ * @brief Get field vn100_qx from rocket_flight_tm message
+ *
+ * @return  VN100 estimated attitude (qx)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_vn100_qx(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  80);
+}
+
+/**
+ * @brief Get field vn100_qy from rocket_flight_tm message
+ *
+ * @return  VN100 estimated attitude (qy)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_vn100_qy(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  84);
+}
+
+/**
+ * @brief Get field vn100_qz from rocket_flight_tm message
+ *
+ * @return  VN100 estimated attitude (qz)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_vn100_qz(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  88);
+}
+
+/**
+ * @brief Get field vn100_qw from rocket_flight_tm message
+ *
+ * @return  VN100 estimated attitude (qw)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_vn100_qw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  92);
+}
+
+/**
+ * @brief Get field gps_fix from rocket_flight_tm message
+ *
+ * @return  Wether the GPS has a FIX
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_gps_fix(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  176);
+}
+
+/**
+ * @brief Get field gps_lat from rocket_flight_tm message
+ *
+ * @return [deg] Latitude
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_gps_lat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  96);
+}
+
+/**
+ * @brief Get field gps_lon from rocket_flight_tm message
+ *
+ * @return [deg] Longitude
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_gps_lon(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  100);
+}
+
+/**
+ * @brief Get field gps_alt from rocket_flight_tm message
+ *
+ * @return [m] GPS Altitude
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_gps_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  104);
+}
+
+/**
+ * @brief Get field fmm_state from rocket_flight_tm message
+ *
+ * @return  Flight Mode Manager State
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_fmm_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  177);
+}
+
+/**
+ * @brief Get field abk_angle from rocket_flight_tm message
+ *
+ * @return  Air Brakes angle
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_abk_angle(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  108);
+}
+
+/**
+ * @brief Get field nas_n from rocket_flight_tm message
+ *
+ * @return [deg] NAS estimated noth position
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_n(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  112);
+}
+
+/**
+ * @brief Get field nas_e from rocket_flight_tm message
+ *
+ * @return [deg] NAS estimated east position
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_e(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  116);
+}
+
+/**
+ * @brief Get field nas_d from rocket_flight_tm message
+ *
+ * @return [m] NAS estimated down position
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_d(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  120);
+}
+
+/**
+ * @brief Get field nas_vn from rocket_flight_tm message
+ *
+ * @return [m/s] NAS estimated north velocity
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_vn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  124);
+}
+
+/**
+ * @brief Get field nas_ve from rocket_flight_tm message
+ *
+ * @return [m/s] NAS estimated east velocity
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_ve(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  128);
+}
+
+/**
+ * @brief Get field nas_vd from rocket_flight_tm message
+ *
+ * @return [m/s] NAS estimated down velocity
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_vd(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  132);
+}
+
+/**
+ * @brief Get field nas_qx from rocket_flight_tm message
+ *
+ * @return  NAS estimated attitude (qx)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_qx(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  136);
+}
+
+/**
+ * @brief Get field nas_qy from rocket_flight_tm message
+ *
+ * @return  NAS estimated attitude (qy)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_qy(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  140);
+}
+
+/**
+ * @brief Get field nas_qz from rocket_flight_tm message
+ *
+ * @return  NAS estimated attitude (qz)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_qz(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  144);
+}
+
+/**
+ * @brief Get field nas_qw from rocket_flight_tm message
+ *
+ * @return  NAS estimated attitude (qw)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_qw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  148);
+}
+
+/**
+ * @brief Get field nas_bias_x from rocket_flight_tm message
+ *
+ * @return  NAS gyroscope bias on x axis
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_bias_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  152);
+}
+
+/**
+ * @brief Get field nas_bias_y from rocket_flight_tm message
+ *
+ * @return  NAS gyroscope bias on y axis
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_bias_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  156);
+}
+
+/**
+ * @brief Get field nas_bias_z from rocket_flight_tm message
+ *
+ * @return  NAS gyroscope bias on z axis
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_bias_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  160);
+}
+
+/**
+ * @brief Get field battery_voltage from rocket_flight_tm message
+ *
+ * @return [V] Battery voltage
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_battery_voltage(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  164);
+}
+
+/**
+ * @brief Get field cam_battery_voltage from rocket_flight_tm message
+ *
+ * @return [V] Camera battery voltage
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_cam_battery_voltage(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  168);
+}
+
+/**
+ * @brief Get field temperature from rocket_flight_tm message
+ *
+ * @return [degC] Temperature
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  172);
+}
+
+/**
+ * @brief Decode a rocket_flight_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param rocket_flight_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_rocket_flight_tm_decode(const mavlink_message_t* msg, mavlink_rocket_flight_tm_t* rocket_flight_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    rocket_flight_tm->timestamp = mavlink_msg_rocket_flight_tm_get_timestamp(msg);
+    rocket_flight_tm->pressure_ada = mavlink_msg_rocket_flight_tm_get_pressure_ada(msg);
+    rocket_flight_tm->pressure_digi = mavlink_msg_rocket_flight_tm_get_pressure_digi(msg);
+    rocket_flight_tm->pressure_static = mavlink_msg_rocket_flight_tm_get_pressure_static(msg);
+    rocket_flight_tm->pressure_dpl = mavlink_msg_rocket_flight_tm_get_pressure_dpl(msg);
+    rocket_flight_tm->airspeed_pitot = mavlink_msg_rocket_flight_tm_get_airspeed_pitot(msg);
+    rocket_flight_tm->altitude_agl = mavlink_msg_rocket_flight_tm_get_altitude_agl(msg);
+    rocket_flight_tm->ada_vert_speed = mavlink_msg_rocket_flight_tm_get_ada_vert_speed(msg);
+    rocket_flight_tm->mea_mass = mavlink_msg_rocket_flight_tm_get_mea_mass(msg);
+    rocket_flight_tm->mea_apogee = mavlink_msg_rocket_flight_tm_get_mea_apogee(msg);
+    rocket_flight_tm->acc_x = mavlink_msg_rocket_flight_tm_get_acc_x(msg);
+    rocket_flight_tm->acc_y = mavlink_msg_rocket_flight_tm_get_acc_y(msg);
+    rocket_flight_tm->acc_z = mavlink_msg_rocket_flight_tm_get_acc_z(msg);
+    rocket_flight_tm->gyro_x = mavlink_msg_rocket_flight_tm_get_gyro_x(msg);
+    rocket_flight_tm->gyro_y = mavlink_msg_rocket_flight_tm_get_gyro_y(msg);
+    rocket_flight_tm->gyro_z = mavlink_msg_rocket_flight_tm_get_gyro_z(msg);
+    rocket_flight_tm->mag_x = mavlink_msg_rocket_flight_tm_get_mag_x(msg);
+    rocket_flight_tm->mag_y = mavlink_msg_rocket_flight_tm_get_mag_y(msg);
+    rocket_flight_tm->mag_z = mavlink_msg_rocket_flight_tm_get_mag_z(msg);
+    rocket_flight_tm->vn100_qx = mavlink_msg_rocket_flight_tm_get_vn100_qx(msg);
+    rocket_flight_tm->vn100_qy = mavlink_msg_rocket_flight_tm_get_vn100_qy(msg);
+    rocket_flight_tm->vn100_qz = mavlink_msg_rocket_flight_tm_get_vn100_qz(msg);
+    rocket_flight_tm->vn100_qw = mavlink_msg_rocket_flight_tm_get_vn100_qw(msg);
+    rocket_flight_tm->gps_lat = mavlink_msg_rocket_flight_tm_get_gps_lat(msg);
+    rocket_flight_tm->gps_lon = mavlink_msg_rocket_flight_tm_get_gps_lon(msg);
+    rocket_flight_tm->gps_alt = mavlink_msg_rocket_flight_tm_get_gps_alt(msg);
+    rocket_flight_tm->abk_angle = mavlink_msg_rocket_flight_tm_get_abk_angle(msg);
+    rocket_flight_tm->nas_n = mavlink_msg_rocket_flight_tm_get_nas_n(msg);
+    rocket_flight_tm->nas_e = mavlink_msg_rocket_flight_tm_get_nas_e(msg);
+    rocket_flight_tm->nas_d = mavlink_msg_rocket_flight_tm_get_nas_d(msg);
+    rocket_flight_tm->nas_vn = mavlink_msg_rocket_flight_tm_get_nas_vn(msg);
+    rocket_flight_tm->nas_ve = mavlink_msg_rocket_flight_tm_get_nas_ve(msg);
+    rocket_flight_tm->nas_vd = mavlink_msg_rocket_flight_tm_get_nas_vd(msg);
+    rocket_flight_tm->nas_qx = mavlink_msg_rocket_flight_tm_get_nas_qx(msg);
+    rocket_flight_tm->nas_qy = mavlink_msg_rocket_flight_tm_get_nas_qy(msg);
+    rocket_flight_tm->nas_qz = mavlink_msg_rocket_flight_tm_get_nas_qz(msg);
+    rocket_flight_tm->nas_qw = mavlink_msg_rocket_flight_tm_get_nas_qw(msg);
+    rocket_flight_tm->nas_bias_x = mavlink_msg_rocket_flight_tm_get_nas_bias_x(msg);
+    rocket_flight_tm->nas_bias_y = mavlink_msg_rocket_flight_tm_get_nas_bias_y(msg);
+    rocket_flight_tm->nas_bias_z = mavlink_msg_rocket_flight_tm_get_nas_bias_z(msg);
+    rocket_flight_tm->battery_voltage = mavlink_msg_rocket_flight_tm_get_battery_voltage(msg);
+    rocket_flight_tm->cam_battery_voltage = mavlink_msg_rocket_flight_tm_get_cam_battery_voltage(msg);
+    rocket_flight_tm->temperature = mavlink_msg_rocket_flight_tm_get_temperature(msg);
+    rocket_flight_tm->gps_fix = mavlink_msg_rocket_flight_tm_get_gps_fix(msg);
+    rocket_flight_tm->fmm_state = mavlink_msg_rocket_flight_tm_get_fmm_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN? msg->len : MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN;
+        memset(rocket_flight_tm, 0, MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN);
+    memcpy(rocket_flight_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_rocket_stats_tm.h b/mavlink_lib/orion/mavlink_msg_rocket_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..a80c315fc9880a1ead77f8d828b38bed87bc6d41
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_rocket_stats_tm.h
@@ -0,0 +1,1313 @@
+#pragma once
+// MESSAGE ROCKET_STATS_TM PACKING
+
+#define MAVLINK_MSG_ID_ROCKET_STATS_TM 210
+
+
+typedef struct __mavlink_rocket_stats_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp in microseconds*/
+ uint64_t liftoff_ts; /*< [us] System clock at liftoff*/
+ uint64_t liftoff_max_acc_ts; /*< [us] System clock at the maximum liftoff acceleration*/
+ uint64_t max_speed_ts; /*< [us] System clock at max speed*/
+ uint64_t max_mach_ts; /*<  System clock at maximum measured mach*/
+ uint64_t shutdown_ts; /*<  System clock at shutdown*/
+ uint64_t apogee_ts; /*< [us] System clock at apogee*/
+ uint64_t apogee_max_acc_ts; /*< [us] System clock at max acceleration after apogee*/
+ uint64_t dpl_ts; /*< [us] System clock at main deployment*/
+ uint64_t dpl_max_acc_ts; /*< [us] System clock at max acceleration during main deployment*/
+ uint64_t dpl_bay_max_pressure_ts; /*< [us] System clock at max pressure in the deployment bay during drogue deployment*/
+ float liftoff_max_acc; /*< [m/s2] Maximum liftoff acceleration*/
+ float max_speed; /*< [m/s] Max measured speed*/
+ float max_speed_altitude; /*< [m] Altitude at max speed*/
+ float max_mach; /*<  Maximum measured mach*/
+ float shutdown_alt; /*<  Altitude at shutdown*/
+ float apogee_lat; /*< [deg] Apogee latitude*/
+ float apogee_lon; /*< [deg] Apogee longitude*/
+ float apogee_alt; /*< [m] Apogee altitude*/
+ float apogee_max_acc; /*< [m/s2] Max acceleration after apogee*/
+ float dpl_alt; /*< [m] Deployment altitude*/
+ float dpl_max_acc; /*< [m/s2] Max acceleration during main deployment*/
+ float dpl_bay_max_pressure; /*< [Pa] Max pressure in the deployment bay during drogue deployment*/
+ float ref_lat; /*< [deg] Reference altitude*/
+ float ref_lon; /*< [deg] Reference longitude*/
+ float ref_alt; /*< [m] Reference altitude*/
+ float cpu_load; /*<  CPU load in percentage*/
+ uint32_t free_heap; /*<  Amount of available heap in memory*/
+ float exp_angle; /*<  Expulsion servo angle*/
+ int32_t log_good; /*<  0 if log failed, 1 otherwise*/
+ int16_t log_number; /*<  Currently active log file, -1 if the logger is inactive*/
+ uint8_t ada_state; /*<  ADA Controller State*/
+ uint8_t abk_state; /*<  Airbrake FSM state*/
+ uint8_t nas_state; /*<  NAS FSM State*/
+ uint8_t mea_state; /*<  MEA Controller State*/
+ uint8_t pin_launch; /*<  Launch pin status (1 = connected, 0 = disconnected)*/
+ uint8_t pin_nosecone; /*<  Nosecone pin status (1 = connected, 0 = disconnected)*/
+ uint8_t pin_expulsion; /*<  Servo sensor status (1 = actuated, 0 = idle)*/
+ uint8_t cutter_presence; /*<  Cutter presence status (1 = present, 0 = missing)*/
+ uint8_t payload_board_state; /*<  Main board fmm state*/
+ uint8_t motor_board_state; /*<  Motor board fmm state*/
+ uint8_t payload_can_status; /*<  Main CAN status*/
+ uint8_t motor_can_status; /*<  Motor CAN status*/
+ uint8_t rig_can_status; /*<  RIG CAN status*/
+ uint8_t hil_state; /*<  1 if the board is currently in HIL mode*/
+} mavlink_rocket_stats_tm_t;
+
+#define MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN 180
+#define MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN 180
+#define MAVLINK_MSG_ID_210_LEN 180
+#define MAVLINK_MSG_ID_210_MIN_LEN 180
+
+#define MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC 195
+#define MAVLINK_MSG_ID_210_CRC 195
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ROCKET_STATS_TM { \
+    210, \
+    "ROCKET_STATS_TM", \
+    45, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_rocket_stats_tm_t, timestamp) }, \
+         { "liftoff_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_rocket_stats_tm_t, liftoff_ts) }, \
+         { "liftoff_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_rocket_stats_tm_t, liftoff_max_acc_ts) }, \
+         { "liftoff_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_rocket_stats_tm_t, liftoff_max_acc) }, \
+         { "max_speed_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 24, offsetof(mavlink_rocket_stats_tm_t, max_speed_ts) }, \
+         { "max_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_rocket_stats_tm_t, max_speed) }, \
+         { "max_speed_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_rocket_stats_tm_t, max_speed_altitude) }, \
+         { "max_mach_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 32, offsetof(mavlink_rocket_stats_tm_t, max_mach_ts) }, \
+         { "max_mach", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_rocket_stats_tm_t, max_mach) }, \
+         { "shutdown_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 40, offsetof(mavlink_rocket_stats_tm_t, shutdown_ts) }, \
+         { "shutdown_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_rocket_stats_tm_t, shutdown_alt) }, \
+         { "apogee_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 48, offsetof(mavlink_rocket_stats_tm_t, apogee_ts) }, \
+         { "apogee_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_rocket_stats_tm_t, apogee_lat) }, \
+         { "apogee_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_rocket_stats_tm_t, apogee_lon) }, \
+         { "apogee_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_rocket_stats_tm_t, apogee_alt) }, \
+         { "apogee_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 56, offsetof(mavlink_rocket_stats_tm_t, apogee_max_acc_ts) }, \
+         { "apogee_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_rocket_stats_tm_t, apogee_max_acc) }, \
+         { "dpl_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 64, offsetof(mavlink_rocket_stats_tm_t, dpl_ts) }, \
+         { "dpl_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_rocket_stats_tm_t, dpl_alt) }, \
+         { "dpl_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 72, offsetof(mavlink_rocket_stats_tm_t, dpl_max_acc_ts) }, \
+         { "dpl_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_rocket_stats_tm_t, dpl_max_acc) }, \
+         { "dpl_bay_max_pressure_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 80, offsetof(mavlink_rocket_stats_tm_t, dpl_bay_max_pressure_ts) }, \
+         { "dpl_bay_max_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_rocket_stats_tm_t, dpl_bay_max_pressure) }, \
+         { "ref_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_rocket_stats_tm_t, ref_lat) }, \
+         { "ref_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_rocket_stats_tm_t, ref_lon) }, \
+         { "ref_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_rocket_stats_tm_t, ref_alt) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_rocket_stats_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 152, offsetof(mavlink_rocket_stats_tm_t, free_heap) }, \
+         { "ada_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 166, offsetof(mavlink_rocket_stats_tm_t, ada_state) }, \
+         { "abk_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 167, offsetof(mavlink_rocket_stats_tm_t, abk_state) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 168, offsetof(mavlink_rocket_stats_tm_t, nas_state) }, \
+         { "mea_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 169, offsetof(mavlink_rocket_stats_tm_t, mea_state) }, \
+         { "exp_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 156, offsetof(mavlink_rocket_stats_tm_t, exp_angle) }, \
+         { "pin_launch", NULL, MAVLINK_TYPE_UINT8_T, 0, 170, offsetof(mavlink_rocket_stats_tm_t, pin_launch) }, \
+         { "pin_nosecone", NULL, MAVLINK_TYPE_UINT8_T, 0, 171, offsetof(mavlink_rocket_stats_tm_t, pin_nosecone) }, \
+         { "pin_expulsion", NULL, MAVLINK_TYPE_UINT8_T, 0, 172, offsetof(mavlink_rocket_stats_tm_t, pin_expulsion) }, \
+         { "cutter_presence", NULL, MAVLINK_TYPE_UINT8_T, 0, 173, offsetof(mavlink_rocket_stats_tm_t, cutter_presence) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 164, offsetof(mavlink_rocket_stats_tm_t, log_number) }, \
+         { "log_good", NULL, MAVLINK_TYPE_INT32_T, 0, 160, offsetof(mavlink_rocket_stats_tm_t, log_good) }, \
+         { "payload_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 174, offsetof(mavlink_rocket_stats_tm_t, payload_board_state) }, \
+         { "motor_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 175, offsetof(mavlink_rocket_stats_tm_t, motor_board_state) }, \
+         { "payload_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 176, offsetof(mavlink_rocket_stats_tm_t, payload_can_status) }, \
+         { "motor_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 177, offsetof(mavlink_rocket_stats_tm_t, motor_can_status) }, \
+         { "rig_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 178, offsetof(mavlink_rocket_stats_tm_t, rig_can_status) }, \
+         { "hil_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 179, offsetof(mavlink_rocket_stats_tm_t, hil_state) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ROCKET_STATS_TM { \
+    "ROCKET_STATS_TM", \
+    45, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_rocket_stats_tm_t, timestamp) }, \
+         { "liftoff_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_rocket_stats_tm_t, liftoff_ts) }, \
+         { "liftoff_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_rocket_stats_tm_t, liftoff_max_acc_ts) }, \
+         { "liftoff_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_rocket_stats_tm_t, liftoff_max_acc) }, \
+         { "max_speed_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 24, offsetof(mavlink_rocket_stats_tm_t, max_speed_ts) }, \
+         { "max_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_rocket_stats_tm_t, max_speed) }, \
+         { "max_speed_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_rocket_stats_tm_t, max_speed_altitude) }, \
+         { "max_mach_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 32, offsetof(mavlink_rocket_stats_tm_t, max_mach_ts) }, \
+         { "max_mach", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_rocket_stats_tm_t, max_mach) }, \
+         { "shutdown_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 40, offsetof(mavlink_rocket_stats_tm_t, shutdown_ts) }, \
+         { "shutdown_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_rocket_stats_tm_t, shutdown_alt) }, \
+         { "apogee_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 48, offsetof(mavlink_rocket_stats_tm_t, apogee_ts) }, \
+         { "apogee_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_rocket_stats_tm_t, apogee_lat) }, \
+         { "apogee_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_rocket_stats_tm_t, apogee_lon) }, \
+         { "apogee_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_rocket_stats_tm_t, apogee_alt) }, \
+         { "apogee_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 56, offsetof(mavlink_rocket_stats_tm_t, apogee_max_acc_ts) }, \
+         { "apogee_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_rocket_stats_tm_t, apogee_max_acc) }, \
+         { "dpl_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 64, offsetof(mavlink_rocket_stats_tm_t, dpl_ts) }, \
+         { "dpl_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_rocket_stats_tm_t, dpl_alt) }, \
+         { "dpl_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 72, offsetof(mavlink_rocket_stats_tm_t, dpl_max_acc_ts) }, \
+         { "dpl_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_rocket_stats_tm_t, dpl_max_acc) }, \
+         { "dpl_bay_max_pressure_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 80, offsetof(mavlink_rocket_stats_tm_t, dpl_bay_max_pressure_ts) }, \
+         { "dpl_bay_max_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_rocket_stats_tm_t, dpl_bay_max_pressure) }, \
+         { "ref_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_rocket_stats_tm_t, ref_lat) }, \
+         { "ref_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_rocket_stats_tm_t, ref_lon) }, \
+         { "ref_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_rocket_stats_tm_t, ref_alt) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_rocket_stats_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 152, offsetof(mavlink_rocket_stats_tm_t, free_heap) }, \
+         { "ada_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 166, offsetof(mavlink_rocket_stats_tm_t, ada_state) }, \
+         { "abk_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 167, offsetof(mavlink_rocket_stats_tm_t, abk_state) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 168, offsetof(mavlink_rocket_stats_tm_t, nas_state) }, \
+         { "mea_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 169, offsetof(mavlink_rocket_stats_tm_t, mea_state) }, \
+         { "exp_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 156, offsetof(mavlink_rocket_stats_tm_t, exp_angle) }, \
+         { "pin_launch", NULL, MAVLINK_TYPE_UINT8_T, 0, 170, offsetof(mavlink_rocket_stats_tm_t, pin_launch) }, \
+         { "pin_nosecone", NULL, MAVLINK_TYPE_UINT8_T, 0, 171, offsetof(mavlink_rocket_stats_tm_t, pin_nosecone) }, \
+         { "pin_expulsion", NULL, MAVLINK_TYPE_UINT8_T, 0, 172, offsetof(mavlink_rocket_stats_tm_t, pin_expulsion) }, \
+         { "cutter_presence", NULL, MAVLINK_TYPE_UINT8_T, 0, 173, offsetof(mavlink_rocket_stats_tm_t, cutter_presence) }, \
+         { "log_number", NULL, MAVLINK_TYPE_INT16_T, 0, 164, offsetof(mavlink_rocket_stats_tm_t, log_number) }, \
+         { "log_good", NULL, MAVLINK_TYPE_INT32_T, 0, 160, offsetof(mavlink_rocket_stats_tm_t, log_good) }, \
+         { "payload_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 174, offsetof(mavlink_rocket_stats_tm_t, payload_board_state) }, \
+         { "motor_board_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 175, offsetof(mavlink_rocket_stats_tm_t, motor_board_state) }, \
+         { "payload_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 176, offsetof(mavlink_rocket_stats_tm_t, payload_can_status) }, \
+         { "motor_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 177, offsetof(mavlink_rocket_stats_tm_t, motor_can_status) }, \
+         { "rig_can_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 178, offsetof(mavlink_rocket_stats_tm_t, rig_can_status) }, \
+         { "hil_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 179, offsetof(mavlink_rocket_stats_tm_t, hil_state) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a rocket_stats_tm 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 timestamp [us] Timestamp in microseconds
+ * @param liftoff_ts [us] System clock at liftoff
+ * @param liftoff_max_acc_ts [us] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_speed_ts [us] System clock at max speed
+ * @param max_speed [m/s] Max measured speed
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param max_mach_ts  System clock at maximum measured mach
+ * @param max_mach  Maximum measured mach
+ * @param shutdown_ts  System clock at shutdown
+ * @param shutdown_alt  Altitude at shutdown
+ * @param apogee_ts [us] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param apogee_alt [m] Apogee altitude
+ * @param apogee_max_acc_ts [us] System clock at max acceleration after apogee
+ * @param apogee_max_acc [m/s2] Max acceleration after apogee
+ * @param dpl_ts [us] System clock at main deployment
+ * @param dpl_alt [m] Deployment altitude
+ * @param dpl_max_acc_ts [us] System clock at max acceleration during main deployment
+ * @param dpl_max_acc [m/s2] Max acceleration during main deployment
+ * @param dpl_bay_max_pressure_ts [us] System clock at max pressure in the deployment bay during drogue deployment
+ * @param dpl_bay_max_pressure [Pa] Max pressure in the deployment bay during drogue deployment
+ * @param ref_lat [deg] Reference altitude
+ * @param ref_lon [deg] Reference longitude
+ * @param ref_alt [m] Reference altitude
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param ada_state  ADA Controller State
+ * @param abk_state  Airbrake FSM state
+ * @param nas_state  NAS FSM State
+ * @param mea_state  MEA Controller State
+ * @param exp_angle  Expulsion servo angle
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param pin_expulsion  Servo sensor status (1 = actuated, 0 = idle)
+ * @param cutter_presence  Cutter presence status (1 = present, 0 = missing)
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param payload_board_state  Main board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param payload_can_status  Main CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param rig_can_status  RIG CAN status
+ * @param hil_state  1 if the board is currently in HIL mode
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_rocket_stats_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint64_t liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_speed_ts, float max_speed, float max_speed_altitude, uint64_t max_mach_ts, float max_mach, uint64_t shutdown_ts, float shutdown_alt, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float apogee_alt, uint64_t apogee_max_acc_ts, float apogee_max_acc, uint64_t dpl_ts, float dpl_alt, uint64_t dpl_max_acc_ts, float dpl_max_acc, uint64_t dpl_bay_max_pressure_ts, float dpl_bay_max_pressure, float ref_lat, float ref_lon, float ref_alt, float cpu_load, uint32_t free_heap, uint8_t ada_state, uint8_t abk_state, uint8_t nas_state, uint8_t mea_state, float exp_angle, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t pin_expulsion, uint8_t cutter_presence, int16_t log_number, int32_t log_good, uint8_t payload_board_state, uint8_t motor_board_state, uint8_t payload_can_status, uint8_t motor_can_status, uint8_t rig_can_status, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, liftoff_ts);
+    _mav_put_uint64_t(buf, 16, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 24, max_speed_ts);
+    _mav_put_uint64_t(buf, 32, max_mach_ts);
+    _mav_put_uint64_t(buf, 40, shutdown_ts);
+    _mav_put_uint64_t(buf, 48, apogee_ts);
+    _mav_put_uint64_t(buf, 56, apogee_max_acc_ts);
+    _mav_put_uint64_t(buf, 64, dpl_ts);
+    _mav_put_uint64_t(buf, 72, dpl_max_acc_ts);
+    _mav_put_uint64_t(buf, 80, dpl_bay_max_pressure_ts);
+    _mav_put_float(buf, 88, liftoff_max_acc);
+    _mav_put_float(buf, 92, max_speed);
+    _mav_put_float(buf, 96, max_speed_altitude);
+    _mav_put_float(buf, 100, max_mach);
+    _mav_put_float(buf, 104, shutdown_alt);
+    _mav_put_float(buf, 108, apogee_lat);
+    _mav_put_float(buf, 112, apogee_lon);
+    _mav_put_float(buf, 116, apogee_alt);
+    _mav_put_float(buf, 120, apogee_max_acc);
+    _mav_put_float(buf, 124, dpl_alt);
+    _mav_put_float(buf, 128, dpl_max_acc);
+    _mav_put_float(buf, 132, dpl_bay_max_pressure);
+    _mav_put_float(buf, 136, ref_lat);
+    _mav_put_float(buf, 140, ref_lon);
+    _mav_put_float(buf, 144, ref_alt);
+    _mav_put_float(buf, 148, cpu_load);
+    _mav_put_uint32_t(buf, 152, free_heap);
+    _mav_put_float(buf, 156, exp_angle);
+    _mav_put_int32_t(buf, 160, log_good);
+    _mav_put_int16_t(buf, 164, log_number);
+    _mav_put_uint8_t(buf, 166, ada_state);
+    _mav_put_uint8_t(buf, 167, abk_state);
+    _mav_put_uint8_t(buf, 168, nas_state);
+    _mav_put_uint8_t(buf, 169, mea_state);
+    _mav_put_uint8_t(buf, 170, pin_launch);
+    _mav_put_uint8_t(buf, 171, pin_nosecone);
+    _mav_put_uint8_t(buf, 172, pin_expulsion);
+    _mav_put_uint8_t(buf, 173, cutter_presence);
+    _mav_put_uint8_t(buf, 174, payload_board_state);
+    _mav_put_uint8_t(buf, 175, motor_board_state);
+    _mav_put_uint8_t(buf, 176, payload_can_status);
+    _mav_put_uint8_t(buf, 177, motor_can_status);
+    _mav_put_uint8_t(buf, 178, rig_can_status);
+    _mav_put_uint8_t(buf, 179, hil_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN);
+#else
+    mavlink_rocket_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_speed_ts = max_speed_ts;
+    packet.max_mach_ts = max_mach_ts;
+    packet.shutdown_ts = shutdown_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.apogee_max_acc_ts = apogee_max_acc_ts;
+    packet.dpl_ts = dpl_ts;
+    packet.dpl_max_acc_ts = dpl_max_acc_ts;
+    packet.dpl_bay_max_pressure_ts = dpl_bay_max_pressure_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_speed = max_speed;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.max_mach = max_mach;
+    packet.shutdown_alt = shutdown_alt;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.apogee_alt = apogee_alt;
+    packet.apogee_max_acc = apogee_max_acc;
+    packet.dpl_alt = dpl_alt;
+    packet.dpl_max_acc = dpl_max_acc;
+    packet.dpl_bay_max_pressure = dpl_bay_max_pressure;
+    packet.ref_lat = ref_lat;
+    packet.ref_lon = ref_lon;
+    packet.ref_alt = ref_alt;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.exp_angle = exp_angle;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.ada_state = ada_state;
+    packet.abk_state = abk_state;
+    packet.nas_state = nas_state;
+    packet.mea_state = mea_state;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.pin_expulsion = pin_expulsion;
+    packet.cutter_presence = cutter_presence;
+    packet.payload_board_state = payload_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.payload_can_status = payload_can_status;
+    packet.motor_can_status = motor_can_status;
+    packet.rig_can_status = rig_can_status;
+    packet.hil_state = hil_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ROCKET_STATS_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC);
+}
+
+/**
+ * @brief Pack a rocket_stats_tm 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 timestamp [us] Timestamp in microseconds
+ * @param liftoff_ts [us] System clock at liftoff
+ * @param liftoff_max_acc_ts [us] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_speed_ts [us] System clock at max speed
+ * @param max_speed [m/s] Max measured speed
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param max_mach_ts  System clock at maximum measured mach
+ * @param max_mach  Maximum measured mach
+ * @param shutdown_ts  System clock at shutdown
+ * @param shutdown_alt  Altitude at shutdown
+ * @param apogee_ts [us] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param apogee_alt [m] Apogee altitude
+ * @param apogee_max_acc_ts [us] System clock at max acceleration after apogee
+ * @param apogee_max_acc [m/s2] Max acceleration after apogee
+ * @param dpl_ts [us] System clock at main deployment
+ * @param dpl_alt [m] Deployment altitude
+ * @param dpl_max_acc_ts [us] System clock at max acceleration during main deployment
+ * @param dpl_max_acc [m/s2] Max acceleration during main deployment
+ * @param dpl_bay_max_pressure_ts [us] System clock at max pressure in the deployment bay during drogue deployment
+ * @param dpl_bay_max_pressure [Pa] Max pressure in the deployment bay during drogue deployment
+ * @param ref_lat [deg] Reference altitude
+ * @param ref_lon [deg] Reference longitude
+ * @param ref_alt [m] Reference altitude
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param ada_state  ADA Controller State
+ * @param abk_state  Airbrake FSM state
+ * @param nas_state  NAS FSM State
+ * @param mea_state  MEA Controller State
+ * @param exp_angle  Expulsion servo angle
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param pin_expulsion  Servo sensor status (1 = actuated, 0 = idle)
+ * @param cutter_presence  Cutter presence status (1 = present, 0 = missing)
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param payload_board_state  Main board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param payload_can_status  Main CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param rig_can_status  RIG CAN status
+ * @param hil_state  1 if the board is currently in HIL mode
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_rocket_stats_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint64_t liftoff_ts,uint64_t liftoff_max_acc_ts,float liftoff_max_acc,uint64_t max_speed_ts,float max_speed,float max_speed_altitude,uint64_t max_mach_ts,float max_mach,uint64_t shutdown_ts,float shutdown_alt,uint64_t apogee_ts,float apogee_lat,float apogee_lon,float apogee_alt,uint64_t apogee_max_acc_ts,float apogee_max_acc,uint64_t dpl_ts,float dpl_alt,uint64_t dpl_max_acc_ts,float dpl_max_acc,uint64_t dpl_bay_max_pressure_ts,float dpl_bay_max_pressure,float ref_lat,float ref_lon,float ref_alt,float cpu_load,uint32_t free_heap,uint8_t ada_state,uint8_t abk_state,uint8_t nas_state,uint8_t mea_state,float exp_angle,uint8_t pin_launch,uint8_t pin_nosecone,uint8_t pin_expulsion,uint8_t cutter_presence,int16_t log_number,int32_t log_good,uint8_t payload_board_state,uint8_t motor_board_state,uint8_t payload_can_status,uint8_t motor_can_status,uint8_t rig_can_status,uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, liftoff_ts);
+    _mav_put_uint64_t(buf, 16, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 24, max_speed_ts);
+    _mav_put_uint64_t(buf, 32, max_mach_ts);
+    _mav_put_uint64_t(buf, 40, shutdown_ts);
+    _mav_put_uint64_t(buf, 48, apogee_ts);
+    _mav_put_uint64_t(buf, 56, apogee_max_acc_ts);
+    _mav_put_uint64_t(buf, 64, dpl_ts);
+    _mav_put_uint64_t(buf, 72, dpl_max_acc_ts);
+    _mav_put_uint64_t(buf, 80, dpl_bay_max_pressure_ts);
+    _mav_put_float(buf, 88, liftoff_max_acc);
+    _mav_put_float(buf, 92, max_speed);
+    _mav_put_float(buf, 96, max_speed_altitude);
+    _mav_put_float(buf, 100, max_mach);
+    _mav_put_float(buf, 104, shutdown_alt);
+    _mav_put_float(buf, 108, apogee_lat);
+    _mav_put_float(buf, 112, apogee_lon);
+    _mav_put_float(buf, 116, apogee_alt);
+    _mav_put_float(buf, 120, apogee_max_acc);
+    _mav_put_float(buf, 124, dpl_alt);
+    _mav_put_float(buf, 128, dpl_max_acc);
+    _mav_put_float(buf, 132, dpl_bay_max_pressure);
+    _mav_put_float(buf, 136, ref_lat);
+    _mav_put_float(buf, 140, ref_lon);
+    _mav_put_float(buf, 144, ref_alt);
+    _mav_put_float(buf, 148, cpu_load);
+    _mav_put_uint32_t(buf, 152, free_heap);
+    _mav_put_float(buf, 156, exp_angle);
+    _mav_put_int32_t(buf, 160, log_good);
+    _mav_put_int16_t(buf, 164, log_number);
+    _mav_put_uint8_t(buf, 166, ada_state);
+    _mav_put_uint8_t(buf, 167, abk_state);
+    _mav_put_uint8_t(buf, 168, nas_state);
+    _mav_put_uint8_t(buf, 169, mea_state);
+    _mav_put_uint8_t(buf, 170, pin_launch);
+    _mav_put_uint8_t(buf, 171, pin_nosecone);
+    _mav_put_uint8_t(buf, 172, pin_expulsion);
+    _mav_put_uint8_t(buf, 173, cutter_presence);
+    _mav_put_uint8_t(buf, 174, payload_board_state);
+    _mav_put_uint8_t(buf, 175, motor_board_state);
+    _mav_put_uint8_t(buf, 176, payload_can_status);
+    _mav_put_uint8_t(buf, 177, motor_can_status);
+    _mav_put_uint8_t(buf, 178, rig_can_status);
+    _mav_put_uint8_t(buf, 179, hil_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN);
+#else
+    mavlink_rocket_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_speed_ts = max_speed_ts;
+    packet.max_mach_ts = max_mach_ts;
+    packet.shutdown_ts = shutdown_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.apogee_max_acc_ts = apogee_max_acc_ts;
+    packet.dpl_ts = dpl_ts;
+    packet.dpl_max_acc_ts = dpl_max_acc_ts;
+    packet.dpl_bay_max_pressure_ts = dpl_bay_max_pressure_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_speed = max_speed;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.max_mach = max_mach;
+    packet.shutdown_alt = shutdown_alt;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.apogee_alt = apogee_alt;
+    packet.apogee_max_acc = apogee_max_acc;
+    packet.dpl_alt = dpl_alt;
+    packet.dpl_max_acc = dpl_max_acc;
+    packet.dpl_bay_max_pressure = dpl_bay_max_pressure;
+    packet.ref_lat = ref_lat;
+    packet.ref_lon = ref_lon;
+    packet.ref_alt = ref_alt;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.exp_angle = exp_angle;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.ada_state = ada_state;
+    packet.abk_state = abk_state;
+    packet.nas_state = nas_state;
+    packet.mea_state = mea_state;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.pin_expulsion = pin_expulsion;
+    packet.cutter_presence = cutter_presence;
+    packet.payload_board_state = payload_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.payload_can_status = payload_can_status;
+    packet.motor_can_status = motor_can_status;
+    packet.rig_can_status = rig_can_status;
+    packet.hil_state = hil_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_ROCKET_STATS_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC);
+}
+
+/**
+ * @brief Encode a rocket_stats_tm 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 rocket_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_rocket_stats_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_rocket_stats_tm_t* rocket_stats_tm)
+{
+    return mavlink_msg_rocket_stats_tm_pack(system_id, component_id, msg, rocket_stats_tm->timestamp, rocket_stats_tm->liftoff_ts, rocket_stats_tm->liftoff_max_acc_ts, rocket_stats_tm->liftoff_max_acc, rocket_stats_tm->max_speed_ts, rocket_stats_tm->max_speed, rocket_stats_tm->max_speed_altitude, rocket_stats_tm->max_mach_ts, rocket_stats_tm->max_mach, rocket_stats_tm->shutdown_ts, rocket_stats_tm->shutdown_alt, rocket_stats_tm->apogee_ts, rocket_stats_tm->apogee_lat, rocket_stats_tm->apogee_lon, rocket_stats_tm->apogee_alt, rocket_stats_tm->apogee_max_acc_ts, rocket_stats_tm->apogee_max_acc, rocket_stats_tm->dpl_ts, rocket_stats_tm->dpl_alt, rocket_stats_tm->dpl_max_acc_ts, rocket_stats_tm->dpl_max_acc, rocket_stats_tm->dpl_bay_max_pressure_ts, rocket_stats_tm->dpl_bay_max_pressure, rocket_stats_tm->ref_lat, rocket_stats_tm->ref_lon, rocket_stats_tm->ref_alt, rocket_stats_tm->cpu_load, rocket_stats_tm->free_heap, rocket_stats_tm->ada_state, rocket_stats_tm->abk_state, rocket_stats_tm->nas_state, rocket_stats_tm->mea_state, rocket_stats_tm->exp_angle, rocket_stats_tm->pin_launch, rocket_stats_tm->pin_nosecone, rocket_stats_tm->pin_expulsion, rocket_stats_tm->cutter_presence, rocket_stats_tm->log_number, rocket_stats_tm->log_good, rocket_stats_tm->payload_board_state, rocket_stats_tm->motor_board_state, rocket_stats_tm->payload_can_status, rocket_stats_tm->motor_can_status, rocket_stats_tm->rig_can_status, rocket_stats_tm->hil_state);
+}
+
+/**
+ * @brief Encode a rocket_stats_tm 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 rocket_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_rocket_stats_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_rocket_stats_tm_t* rocket_stats_tm)
+{
+    return mavlink_msg_rocket_stats_tm_pack_chan(system_id, component_id, chan, msg, rocket_stats_tm->timestamp, rocket_stats_tm->liftoff_ts, rocket_stats_tm->liftoff_max_acc_ts, rocket_stats_tm->liftoff_max_acc, rocket_stats_tm->max_speed_ts, rocket_stats_tm->max_speed, rocket_stats_tm->max_speed_altitude, rocket_stats_tm->max_mach_ts, rocket_stats_tm->max_mach, rocket_stats_tm->shutdown_ts, rocket_stats_tm->shutdown_alt, rocket_stats_tm->apogee_ts, rocket_stats_tm->apogee_lat, rocket_stats_tm->apogee_lon, rocket_stats_tm->apogee_alt, rocket_stats_tm->apogee_max_acc_ts, rocket_stats_tm->apogee_max_acc, rocket_stats_tm->dpl_ts, rocket_stats_tm->dpl_alt, rocket_stats_tm->dpl_max_acc_ts, rocket_stats_tm->dpl_max_acc, rocket_stats_tm->dpl_bay_max_pressure_ts, rocket_stats_tm->dpl_bay_max_pressure, rocket_stats_tm->ref_lat, rocket_stats_tm->ref_lon, rocket_stats_tm->ref_alt, rocket_stats_tm->cpu_load, rocket_stats_tm->free_heap, rocket_stats_tm->ada_state, rocket_stats_tm->abk_state, rocket_stats_tm->nas_state, rocket_stats_tm->mea_state, rocket_stats_tm->exp_angle, rocket_stats_tm->pin_launch, rocket_stats_tm->pin_nosecone, rocket_stats_tm->pin_expulsion, rocket_stats_tm->cutter_presence, rocket_stats_tm->log_number, rocket_stats_tm->log_good, rocket_stats_tm->payload_board_state, rocket_stats_tm->motor_board_state, rocket_stats_tm->payload_can_status, rocket_stats_tm->motor_can_status, rocket_stats_tm->rig_can_status, rocket_stats_tm->hil_state);
+}
+
+/**
+ * @brief Send a rocket_stats_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp in microseconds
+ * @param liftoff_ts [us] System clock at liftoff
+ * @param liftoff_max_acc_ts [us] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_speed_ts [us] System clock at max speed
+ * @param max_speed [m/s] Max measured speed
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param max_mach_ts  System clock at maximum measured mach
+ * @param max_mach  Maximum measured mach
+ * @param shutdown_ts  System clock at shutdown
+ * @param shutdown_alt  Altitude at shutdown
+ * @param apogee_ts [us] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param apogee_alt [m] Apogee altitude
+ * @param apogee_max_acc_ts [us] System clock at max acceleration after apogee
+ * @param apogee_max_acc [m/s2] Max acceleration after apogee
+ * @param dpl_ts [us] System clock at main deployment
+ * @param dpl_alt [m] Deployment altitude
+ * @param dpl_max_acc_ts [us] System clock at max acceleration during main deployment
+ * @param dpl_max_acc [m/s2] Max acceleration during main deployment
+ * @param dpl_bay_max_pressure_ts [us] System clock at max pressure in the deployment bay during drogue deployment
+ * @param dpl_bay_max_pressure [Pa] Max pressure in the deployment bay during drogue deployment
+ * @param ref_lat [deg] Reference altitude
+ * @param ref_lon [deg] Reference longitude
+ * @param ref_alt [m] Reference altitude
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @param ada_state  ADA Controller State
+ * @param abk_state  Airbrake FSM state
+ * @param nas_state  NAS FSM State
+ * @param mea_state  MEA Controller State
+ * @param exp_angle  Expulsion servo angle
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param pin_expulsion  Servo sensor status (1 = actuated, 0 = idle)
+ * @param cutter_presence  Cutter presence status (1 = present, 0 = missing)
+ * @param log_number  Currently active log file, -1 if the logger is inactive
+ * @param log_good  0 if log failed, 1 otherwise
+ * @param payload_board_state  Main board fmm state
+ * @param motor_board_state  Motor board fmm state
+ * @param payload_can_status  Main CAN status
+ * @param motor_can_status  Motor CAN status
+ * @param rig_can_status  RIG CAN status
+ * @param hil_state  1 if the board is currently in HIL mode
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_rocket_stats_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint64_t liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_speed_ts, float max_speed, float max_speed_altitude, uint64_t max_mach_ts, float max_mach, uint64_t shutdown_ts, float shutdown_alt, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float apogee_alt, uint64_t apogee_max_acc_ts, float apogee_max_acc, uint64_t dpl_ts, float dpl_alt, uint64_t dpl_max_acc_ts, float dpl_max_acc, uint64_t dpl_bay_max_pressure_ts, float dpl_bay_max_pressure, float ref_lat, float ref_lon, float ref_alt, float cpu_load, uint32_t free_heap, uint8_t ada_state, uint8_t abk_state, uint8_t nas_state, uint8_t mea_state, float exp_angle, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t pin_expulsion, uint8_t cutter_presence, int16_t log_number, int32_t log_good, uint8_t payload_board_state, uint8_t motor_board_state, uint8_t payload_can_status, uint8_t motor_can_status, uint8_t rig_can_status, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, liftoff_ts);
+    _mav_put_uint64_t(buf, 16, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 24, max_speed_ts);
+    _mav_put_uint64_t(buf, 32, max_mach_ts);
+    _mav_put_uint64_t(buf, 40, shutdown_ts);
+    _mav_put_uint64_t(buf, 48, apogee_ts);
+    _mav_put_uint64_t(buf, 56, apogee_max_acc_ts);
+    _mav_put_uint64_t(buf, 64, dpl_ts);
+    _mav_put_uint64_t(buf, 72, dpl_max_acc_ts);
+    _mav_put_uint64_t(buf, 80, dpl_bay_max_pressure_ts);
+    _mav_put_float(buf, 88, liftoff_max_acc);
+    _mav_put_float(buf, 92, max_speed);
+    _mav_put_float(buf, 96, max_speed_altitude);
+    _mav_put_float(buf, 100, max_mach);
+    _mav_put_float(buf, 104, shutdown_alt);
+    _mav_put_float(buf, 108, apogee_lat);
+    _mav_put_float(buf, 112, apogee_lon);
+    _mav_put_float(buf, 116, apogee_alt);
+    _mav_put_float(buf, 120, apogee_max_acc);
+    _mav_put_float(buf, 124, dpl_alt);
+    _mav_put_float(buf, 128, dpl_max_acc);
+    _mav_put_float(buf, 132, dpl_bay_max_pressure);
+    _mav_put_float(buf, 136, ref_lat);
+    _mav_put_float(buf, 140, ref_lon);
+    _mav_put_float(buf, 144, ref_alt);
+    _mav_put_float(buf, 148, cpu_load);
+    _mav_put_uint32_t(buf, 152, free_heap);
+    _mav_put_float(buf, 156, exp_angle);
+    _mav_put_int32_t(buf, 160, log_good);
+    _mav_put_int16_t(buf, 164, log_number);
+    _mav_put_uint8_t(buf, 166, ada_state);
+    _mav_put_uint8_t(buf, 167, abk_state);
+    _mav_put_uint8_t(buf, 168, nas_state);
+    _mav_put_uint8_t(buf, 169, mea_state);
+    _mav_put_uint8_t(buf, 170, pin_launch);
+    _mav_put_uint8_t(buf, 171, pin_nosecone);
+    _mav_put_uint8_t(buf, 172, pin_expulsion);
+    _mav_put_uint8_t(buf, 173, cutter_presence);
+    _mav_put_uint8_t(buf, 174, payload_board_state);
+    _mav_put_uint8_t(buf, 175, motor_board_state);
+    _mav_put_uint8_t(buf, 176, payload_can_status);
+    _mav_put_uint8_t(buf, 177, motor_can_status);
+    _mav_put_uint8_t(buf, 178, rig_can_status);
+    _mav_put_uint8_t(buf, 179, hil_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_STATS_TM, buf, MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC);
+#else
+    mavlink_rocket_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_speed_ts = max_speed_ts;
+    packet.max_mach_ts = max_mach_ts;
+    packet.shutdown_ts = shutdown_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.apogee_max_acc_ts = apogee_max_acc_ts;
+    packet.dpl_ts = dpl_ts;
+    packet.dpl_max_acc_ts = dpl_max_acc_ts;
+    packet.dpl_bay_max_pressure_ts = dpl_bay_max_pressure_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_speed = max_speed;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.max_mach = max_mach;
+    packet.shutdown_alt = shutdown_alt;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.apogee_alt = apogee_alt;
+    packet.apogee_max_acc = apogee_max_acc;
+    packet.dpl_alt = dpl_alt;
+    packet.dpl_max_acc = dpl_max_acc;
+    packet.dpl_bay_max_pressure = dpl_bay_max_pressure;
+    packet.ref_lat = ref_lat;
+    packet.ref_lon = ref_lon;
+    packet.ref_alt = ref_alt;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+    packet.exp_angle = exp_angle;
+    packet.log_good = log_good;
+    packet.log_number = log_number;
+    packet.ada_state = ada_state;
+    packet.abk_state = abk_state;
+    packet.nas_state = nas_state;
+    packet.mea_state = mea_state;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.pin_expulsion = pin_expulsion;
+    packet.cutter_presence = cutter_presence;
+    packet.payload_board_state = payload_board_state;
+    packet.motor_board_state = motor_board_state;
+    packet.payload_can_status = payload_can_status;
+    packet.motor_can_status = motor_can_status;
+    packet.rig_can_status = rig_can_status;
+    packet.hil_state = hil_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_STATS_TM, (const char *)&packet, MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a rocket_stats_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_rocket_stats_tm_send_struct(mavlink_channel_t chan, const mavlink_rocket_stats_tm_t* rocket_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_rocket_stats_tm_send(chan, rocket_stats_tm->timestamp, rocket_stats_tm->liftoff_ts, rocket_stats_tm->liftoff_max_acc_ts, rocket_stats_tm->liftoff_max_acc, rocket_stats_tm->max_speed_ts, rocket_stats_tm->max_speed, rocket_stats_tm->max_speed_altitude, rocket_stats_tm->max_mach_ts, rocket_stats_tm->max_mach, rocket_stats_tm->shutdown_ts, rocket_stats_tm->shutdown_alt, rocket_stats_tm->apogee_ts, rocket_stats_tm->apogee_lat, rocket_stats_tm->apogee_lon, rocket_stats_tm->apogee_alt, rocket_stats_tm->apogee_max_acc_ts, rocket_stats_tm->apogee_max_acc, rocket_stats_tm->dpl_ts, rocket_stats_tm->dpl_alt, rocket_stats_tm->dpl_max_acc_ts, rocket_stats_tm->dpl_max_acc, rocket_stats_tm->dpl_bay_max_pressure_ts, rocket_stats_tm->dpl_bay_max_pressure, rocket_stats_tm->ref_lat, rocket_stats_tm->ref_lon, rocket_stats_tm->ref_alt, rocket_stats_tm->cpu_load, rocket_stats_tm->free_heap, rocket_stats_tm->ada_state, rocket_stats_tm->abk_state, rocket_stats_tm->nas_state, rocket_stats_tm->mea_state, rocket_stats_tm->exp_angle, rocket_stats_tm->pin_launch, rocket_stats_tm->pin_nosecone, rocket_stats_tm->pin_expulsion, rocket_stats_tm->cutter_presence, rocket_stats_tm->log_number, rocket_stats_tm->log_good, rocket_stats_tm->payload_board_state, rocket_stats_tm->motor_board_state, rocket_stats_tm->payload_can_status, rocket_stats_tm->motor_can_status, rocket_stats_tm->rig_can_status, rocket_stats_tm->hil_state);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_STATS_TM, (const char *)rocket_stats_tm, MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_rocket_stats_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint64_t liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_speed_ts, float max_speed, float max_speed_altitude, uint64_t max_mach_ts, float max_mach, uint64_t shutdown_ts, float shutdown_alt, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float apogee_alt, uint64_t apogee_max_acc_ts, float apogee_max_acc, uint64_t dpl_ts, float dpl_alt, uint64_t dpl_max_acc_ts, float dpl_max_acc, uint64_t dpl_bay_max_pressure_ts, float dpl_bay_max_pressure, float ref_lat, float ref_lon, float ref_alt, float cpu_load, uint32_t free_heap, uint8_t ada_state, uint8_t abk_state, uint8_t nas_state, uint8_t mea_state, float exp_angle, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t pin_expulsion, uint8_t cutter_presence, int16_t log_number, int32_t log_good, uint8_t payload_board_state, uint8_t motor_board_state, uint8_t payload_can_status, uint8_t motor_can_status, uint8_t rig_can_status, uint8_t hil_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, liftoff_ts);
+    _mav_put_uint64_t(buf, 16, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 24, max_speed_ts);
+    _mav_put_uint64_t(buf, 32, max_mach_ts);
+    _mav_put_uint64_t(buf, 40, shutdown_ts);
+    _mav_put_uint64_t(buf, 48, apogee_ts);
+    _mav_put_uint64_t(buf, 56, apogee_max_acc_ts);
+    _mav_put_uint64_t(buf, 64, dpl_ts);
+    _mav_put_uint64_t(buf, 72, dpl_max_acc_ts);
+    _mav_put_uint64_t(buf, 80, dpl_bay_max_pressure_ts);
+    _mav_put_float(buf, 88, liftoff_max_acc);
+    _mav_put_float(buf, 92, max_speed);
+    _mav_put_float(buf, 96, max_speed_altitude);
+    _mav_put_float(buf, 100, max_mach);
+    _mav_put_float(buf, 104, shutdown_alt);
+    _mav_put_float(buf, 108, apogee_lat);
+    _mav_put_float(buf, 112, apogee_lon);
+    _mav_put_float(buf, 116, apogee_alt);
+    _mav_put_float(buf, 120, apogee_max_acc);
+    _mav_put_float(buf, 124, dpl_alt);
+    _mav_put_float(buf, 128, dpl_max_acc);
+    _mav_put_float(buf, 132, dpl_bay_max_pressure);
+    _mav_put_float(buf, 136, ref_lat);
+    _mav_put_float(buf, 140, ref_lon);
+    _mav_put_float(buf, 144, ref_alt);
+    _mav_put_float(buf, 148, cpu_load);
+    _mav_put_uint32_t(buf, 152, free_heap);
+    _mav_put_float(buf, 156, exp_angle);
+    _mav_put_int32_t(buf, 160, log_good);
+    _mav_put_int16_t(buf, 164, log_number);
+    _mav_put_uint8_t(buf, 166, ada_state);
+    _mav_put_uint8_t(buf, 167, abk_state);
+    _mav_put_uint8_t(buf, 168, nas_state);
+    _mav_put_uint8_t(buf, 169, mea_state);
+    _mav_put_uint8_t(buf, 170, pin_launch);
+    _mav_put_uint8_t(buf, 171, pin_nosecone);
+    _mav_put_uint8_t(buf, 172, pin_expulsion);
+    _mav_put_uint8_t(buf, 173, cutter_presence);
+    _mav_put_uint8_t(buf, 174, payload_board_state);
+    _mav_put_uint8_t(buf, 175, motor_board_state);
+    _mav_put_uint8_t(buf, 176, payload_can_status);
+    _mav_put_uint8_t(buf, 177, motor_can_status);
+    _mav_put_uint8_t(buf, 178, rig_can_status);
+    _mav_put_uint8_t(buf, 179, hil_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_STATS_TM, buf, MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC);
+#else
+    mavlink_rocket_stats_tm_t *packet = (mavlink_rocket_stats_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->liftoff_ts = liftoff_ts;
+    packet->liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet->max_speed_ts = max_speed_ts;
+    packet->max_mach_ts = max_mach_ts;
+    packet->shutdown_ts = shutdown_ts;
+    packet->apogee_ts = apogee_ts;
+    packet->apogee_max_acc_ts = apogee_max_acc_ts;
+    packet->dpl_ts = dpl_ts;
+    packet->dpl_max_acc_ts = dpl_max_acc_ts;
+    packet->dpl_bay_max_pressure_ts = dpl_bay_max_pressure_ts;
+    packet->liftoff_max_acc = liftoff_max_acc;
+    packet->max_speed = max_speed;
+    packet->max_speed_altitude = max_speed_altitude;
+    packet->max_mach = max_mach;
+    packet->shutdown_alt = shutdown_alt;
+    packet->apogee_lat = apogee_lat;
+    packet->apogee_lon = apogee_lon;
+    packet->apogee_alt = apogee_alt;
+    packet->apogee_max_acc = apogee_max_acc;
+    packet->dpl_alt = dpl_alt;
+    packet->dpl_max_acc = dpl_max_acc;
+    packet->dpl_bay_max_pressure = dpl_bay_max_pressure;
+    packet->ref_lat = ref_lat;
+    packet->ref_lon = ref_lon;
+    packet->ref_alt = ref_alt;
+    packet->cpu_load = cpu_load;
+    packet->free_heap = free_heap;
+    packet->exp_angle = exp_angle;
+    packet->log_good = log_good;
+    packet->log_number = log_number;
+    packet->ada_state = ada_state;
+    packet->abk_state = abk_state;
+    packet->nas_state = nas_state;
+    packet->mea_state = mea_state;
+    packet->pin_launch = pin_launch;
+    packet->pin_nosecone = pin_nosecone;
+    packet->pin_expulsion = pin_expulsion;
+    packet->cutter_presence = cutter_presence;
+    packet->payload_board_state = payload_board_state;
+    packet->motor_board_state = motor_board_state;
+    packet->payload_can_status = payload_can_status;
+    packet->motor_can_status = motor_can_status;
+    packet->rig_can_status = rig_can_status;
+    packet->hil_state = hil_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_ROCKET_STATS_TM, (const char *)packet, MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN, MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ROCKET_STATS_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from rocket_stats_tm message
+ *
+ * @return [us] Timestamp in microseconds
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field liftoff_ts from rocket_stats_tm message
+ *
+ * @return [us] System clock at liftoff
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_liftoff_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  8);
+}
+
+/**
+ * @brief Get field liftoff_max_acc_ts from rocket_stats_tm message
+ *
+ * @return [us] System clock at the maximum liftoff acceleration
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_liftoff_max_acc_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  16);
+}
+
+/**
+ * @brief Get field liftoff_max_acc from rocket_stats_tm message
+ *
+ * @return [m/s2] Maximum liftoff acceleration
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_liftoff_max_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  88);
+}
+
+/**
+ * @brief Get field max_speed_ts from rocket_stats_tm message
+ *
+ * @return [us] System clock at max speed
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_max_speed_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  24);
+}
+
+/**
+ * @brief Get field max_speed from rocket_stats_tm message
+ *
+ * @return [m/s] Max measured speed
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_max_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  92);
+}
+
+/**
+ * @brief Get field max_speed_altitude from rocket_stats_tm message
+ *
+ * @return [m] Altitude at max speed
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_max_speed_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  96);
+}
+
+/**
+ * @brief Get field max_mach_ts from rocket_stats_tm message
+ *
+ * @return  System clock at maximum measured mach
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_max_mach_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  32);
+}
+
+/**
+ * @brief Get field max_mach from rocket_stats_tm message
+ *
+ * @return  Maximum measured mach
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_max_mach(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  100);
+}
+
+/**
+ * @brief Get field shutdown_ts from rocket_stats_tm message
+ *
+ * @return  System clock at shutdown
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_shutdown_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  40);
+}
+
+/**
+ * @brief Get field shutdown_alt from rocket_stats_tm message
+ *
+ * @return  Altitude at shutdown
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_shutdown_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  104);
+}
+
+/**
+ * @brief Get field apogee_ts from rocket_stats_tm message
+ *
+ * @return [us] System clock at apogee
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_apogee_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  48);
+}
+
+/**
+ * @brief Get field apogee_lat from rocket_stats_tm message
+ *
+ * @return [deg] Apogee latitude
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_apogee_lat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  108);
+}
+
+/**
+ * @brief Get field apogee_lon from rocket_stats_tm message
+ *
+ * @return [deg] Apogee longitude
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_apogee_lon(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  112);
+}
+
+/**
+ * @brief Get field apogee_alt from rocket_stats_tm message
+ *
+ * @return [m] Apogee altitude
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_apogee_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  116);
+}
+
+/**
+ * @brief Get field apogee_max_acc_ts from rocket_stats_tm message
+ *
+ * @return [us] System clock at max acceleration after apogee
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_apogee_max_acc_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  56);
+}
+
+/**
+ * @brief Get field apogee_max_acc from rocket_stats_tm message
+ *
+ * @return [m/s2] Max acceleration after apogee
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_apogee_max_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  120);
+}
+
+/**
+ * @brief Get field dpl_ts from rocket_stats_tm message
+ *
+ * @return [us] System clock at main deployment
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_dpl_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  64);
+}
+
+/**
+ * @brief Get field dpl_alt from rocket_stats_tm message
+ *
+ * @return [m] Deployment altitude
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_dpl_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  124);
+}
+
+/**
+ * @brief Get field dpl_max_acc_ts from rocket_stats_tm message
+ *
+ * @return [us] System clock at max acceleration during main deployment
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_dpl_max_acc_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  72);
+}
+
+/**
+ * @brief Get field dpl_max_acc from rocket_stats_tm message
+ *
+ * @return [m/s2] Max acceleration during main deployment
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_dpl_max_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  128);
+}
+
+/**
+ * @brief Get field dpl_bay_max_pressure_ts from rocket_stats_tm message
+ *
+ * @return [us] System clock at max pressure in the deployment bay during drogue deployment
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_dpl_bay_max_pressure_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  80);
+}
+
+/**
+ * @brief Get field dpl_bay_max_pressure from rocket_stats_tm message
+ *
+ * @return [Pa] Max pressure in the deployment bay during drogue deployment
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_dpl_bay_max_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  132);
+}
+
+/**
+ * @brief Get field ref_lat from rocket_stats_tm message
+ *
+ * @return [deg] Reference altitude
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_ref_lat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  136);
+}
+
+/**
+ * @brief Get field ref_lon from rocket_stats_tm message
+ *
+ * @return [deg] Reference longitude
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_ref_lon(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  140);
+}
+
+/**
+ * @brief Get field ref_alt from rocket_stats_tm message
+ *
+ * @return [m] Reference altitude
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_ref_alt(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  144);
+}
+
+/**
+ * @brief Get field cpu_load from rocket_stats_tm message
+ *
+ * @return  CPU load in percentage
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_cpu_load(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  148);
+}
+
+/**
+ * @brief Get field free_heap from rocket_stats_tm message
+ *
+ * @return  Amount of available heap in memory
+ */
+static inline uint32_t mavlink_msg_rocket_stats_tm_get_free_heap(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  152);
+}
+
+/**
+ * @brief Get field ada_state from rocket_stats_tm message
+ *
+ * @return  ADA Controller State
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_ada_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  166);
+}
+
+/**
+ * @brief Get field abk_state from rocket_stats_tm message
+ *
+ * @return  Airbrake FSM state
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_abk_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  167);
+}
+
+/**
+ * @brief Get field nas_state from rocket_stats_tm message
+ *
+ * @return  NAS FSM State
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_nas_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  168);
+}
+
+/**
+ * @brief Get field mea_state from rocket_stats_tm message
+ *
+ * @return  MEA Controller State
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_mea_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  169);
+}
+
+/**
+ * @brief Get field exp_angle from rocket_stats_tm message
+ *
+ * @return  Expulsion servo angle
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_exp_angle(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  156);
+}
+
+/**
+ * @brief Get field pin_launch from rocket_stats_tm message
+ *
+ * @return  Launch pin status (1 = connected, 0 = disconnected)
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_pin_launch(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  170);
+}
+
+/**
+ * @brief Get field pin_nosecone from rocket_stats_tm message
+ *
+ * @return  Nosecone pin status (1 = connected, 0 = disconnected)
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_pin_nosecone(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  171);
+}
+
+/**
+ * @brief Get field pin_expulsion from rocket_stats_tm message
+ *
+ * @return  Servo sensor status (1 = actuated, 0 = idle)
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_pin_expulsion(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  172);
+}
+
+/**
+ * @brief Get field cutter_presence from rocket_stats_tm message
+ *
+ * @return  Cutter presence status (1 = present, 0 = missing)
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_cutter_presence(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  173);
+}
+
+/**
+ * @brief Get field log_number from rocket_stats_tm message
+ *
+ * @return  Currently active log file, -1 if the logger is inactive
+ */
+static inline int16_t mavlink_msg_rocket_stats_tm_get_log_number(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int16_t(msg,  164);
+}
+
+/**
+ * @brief Get field log_good from rocket_stats_tm message
+ *
+ * @return  0 if log failed, 1 otherwise
+ */
+static inline int32_t mavlink_msg_rocket_stats_tm_get_log_good(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int32_t(msg,  160);
+}
+
+/**
+ * @brief Get field payload_board_state from rocket_stats_tm message
+ *
+ * @return  Main board fmm state
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_payload_board_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  174);
+}
+
+/**
+ * @brief Get field motor_board_state from rocket_stats_tm message
+ *
+ * @return  Motor board fmm state
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_motor_board_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  175);
+}
+
+/**
+ * @brief Get field payload_can_status from rocket_stats_tm message
+ *
+ * @return  Main CAN status
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_payload_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  176);
+}
+
+/**
+ * @brief Get field motor_can_status from rocket_stats_tm message
+ *
+ * @return  Motor CAN status
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_motor_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  177);
+}
+
+/**
+ * @brief Get field rig_can_status from rocket_stats_tm message
+ *
+ * @return  RIG CAN status
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_rig_can_status(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  178);
+}
+
+/**
+ * @brief Get field hil_state from rocket_stats_tm message
+ *
+ * @return  1 if the board is currently in HIL mode
+ */
+static inline uint8_t mavlink_msg_rocket_stats_tm_get_hil_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  179);
+}
+
+/**
+ * @brief Decode a rocket_stats_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param rocket_stats_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_rocket_stats_tm_decode(const mavlink_message_t* msg, mavlink_rocket_stats_tm_t* rocket_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    rocket_stats_tm->timestamp = mavlink_msg_rocket_stats_tm_get_timestamp(msg);
+    rocket_stats_tm->liftoff_ts = mavlink_msg_rocket_stats_tm_get_liftoff_ts(msg);
+    rocket_stats_tm->liftoff_max_acc_ts = mavlink_msg_rocket_stats_tm_get_liftoff_max_acc_ts(msg);
+    rocket_stats_tm->max_speed_ts = mavlink_msg_rocket_stats_tm_get_max_speed_ts(msg);
+    rocket_stats_tm->max_mach_ts = mavlink_msg_rocket_stats_tm_get_max_mach_ts(msg);
+    rocket_stats_tm->shutdown_ts = mavlink_msg_rocket_stats_tm_get_shutdown_ts(msg);
+    rocket_stats_tm->apogee_ts = mavlink_msg_rocket_stats_tm_get_apogee_ts(msg);
+    rocket_stats_tm->apogee_max_acc_ts = mavlink_msg_rocket_stats_tm_get_apogee_max_acc_ts(msg);
+    rocket_stats_tm->dpl_ts = mavlink_msg_rocket_stats_tm_get_dpl_ts(msg);
+    rocket_stats_tm->dpl_max_acc_ts = mavlink_msg_rocket_stats_tm_get_dpl_max_acc_ts(msg);
+    rocket_stats_tm->dpl_bay_max_pressure_ts = mavlink_msg_rocket_stats_tm_get_dpl_bay_max_pressure_ts(msg);
+    rocket_stats_tm->liftoff_max_acc = mavlink_msg_rocket_stats_tm_get_liftoff_max_acc(msg);
+    rocket_stats_tm->max_speed = mavlink_msg_rocket_stats_tm_get_max_speed(msg);
+    rocket_stats_tm->max_speed_altitude = mavlink_msg_rocket_stats_tm_get_max_speed_altitude(msg);
+    rocket_stats_tm->max_mach = mavlink_msg_rocket_stats_tm_get_max_mach(msg);
+    rocket_stats_tm->shutdown_alt = mavlink_msg_rocket_stats_tm_get_shutdown_alt(msg);
+    rocket_stats_tm->apogee_lat = mavlink_msg_rocket_stats_tm_get_apogee_lat(msg);
+    rocket_stats_tm->apogee_lon = mavlink_msg_rocket_stats_tm_get_apogee_lon(msg);
+    rocket_stats_tm->apogee_alt = mavlink_msg_rocket_stats_tm_get_apogee_alt(msg);
+    rocket_stats_tm->apogee_max_acc = mavlink_msg_rocket_stats_tm_get_apogee_max_acc(msg);
+    rocket_stats_tm->dpl_alt = mavlink_msg_rocket_stats_tm_get_dpl_alt(msg);
+    rocket_stats_tm->dpl_max_acc = mavlink_msg_rocket_stats_tm_get_dpl_max_acc(msg);
+    rocket_stats_tm->dpl_bay_max_pressure = mavlink_msg_rocket_stats_tm_get_dpl_bay_max_pressure(msg);
+    rocket_stats_tm->ref_lat = mavlink_msg_rocket_stats_tm_get_ref_lat(msg);
+    rocket_stats_tm->ref_lon = mavlink_msg_rocket_stats_tm_get_ref_lon(msg);
+    rocket_stats_tm->ref_alt = mavlink_msg_rocket_stats_tm_get_ref_alt(msg);
+    rocket_stats_tm->cpu_load = mavlink_msg_rocket_stats_tm_get_cpu_load(msg);
+    rocket_stats_tm->free_heap = mavlink_msg_rocket_stats_tm_get_free_heap(msg);
+    rocket_stats_tm->exp_angle = mavlink_msg_rocket_stats_tm_get_exp_angle(msg);
+    rocket_stats_tm->log_good = mavlink_msg_rocket_stats_tm_get_log_good(msg);
+    rocket_stats_tm->log_number = mavlink_msg_rocket_stats_tm_get_log_number(msg);
+    rocket_stats_tm->ada_state = mavlink_msg_rocket_stats_tm_get_ada_state(msg);
+    rocket_stats_tm->abk_state = mavlink_msg_rocket_stats_tm_get_abk_state(msg);
+    rocket_stats_tm->nas_state = mavlink_msg_rocket_stats_tm_get_nas_state(msg);
+    rocket_stats_tm->mea_state = mavlink_msg_rocket_stats_tm_get_mea_state(msg);
+    rocket_stats_tm->pin_launch = mavlink_msg_rocket_stats_tm_get_pin_launch(msg);
+    rocket_stats_tm->pin_nosecone = mavlink_msg_rocket_stats_tm_get_pin_nosecone(msg);
+    rocket_stats_tm->pin_expulsion = mavlink_msg_rocket_stats_tm_get_pin_expulsion(msg);
+    rocket_stats_tm->cutter_presence = mavlink_msg_rocket_stats_tm_get_cutter_presence(msg);
+    rocket_stats_tm->payload_board_state = mavlink_msg_rocket_stats_tm_get_payload_board_state(msg);
+    rocket_stats_tm->motor_board_state = mavlink_msg_rocket_stats_tm_get_motor_board_state(msg);
+    rocket_stats_tm->payload_can_status = mavlink_msg_rocket_stats_tm_get_payload_can_status(msg);
+    rocket_stats_tm->motor_can_status = mavlink_msg_rocket_stats_tm_get_motor_can_status(msg);
+    rocket_stats_tm->rig_can_status = mavlink_msg_rocket_stats_tm_get_rig_can_status(msg);
+    rocket_stats_tm->hil_state = mavlink_msg_rocket_stats_tm_get_hil_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN? msg->len : MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN;
+        memset(rocket_stats_tm, 0, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN);
+    memcpy(rocket_stats_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_sensor_state_tm.h b/mavlink_lib/orion/mavlink_msg_sensor_state_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..f07dc0ac404bcf0e9a9cd927f836da2b935dbaf2
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_sensor_state_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE SENSOR_STATE_TM PACKING
+
+#define MAVLINK_MSG_ID_SENSOR_STATE_TM 112
+
+
+typedef struct __mavlink_sensor_state_tm_t {
+ char sensor_name[20]; /*<  Sensor name*/
+ uint8_t initialized; /*<  Boolean that represents the init state*/
+ uint8_t enabled; /*<  Boolean that represents the enabled state*/
+} mavlink_sensor_state_tm_t;
+
+#define MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN 22
+#define MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN 22
+#define MAVLINK_MSG_ID_112_LEN 22
+#define MAVLINK_MSG_ID_112_MIN_LEN 22
+
+#define MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC 165
+#define MAVLINK_MSG_ID_112_CRC 165
+
+#define MAVLINK_MSG_SENSOR_STATE_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SENSOR_STATE_TM { \
+    112, \
+    "SENSOR_STATE_TM", \
+    3, \
+    {  { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 0, offsetof(mavlink_sensor_state_tm_t, sensor_name) }, \
+         { "initialized", NULL, MAVLINK_TYPE_UINT8_T, 0, 20, offsetof(mavlink_sensor_state_tm_t, initialized) }, \
+         { "enabled", NULL, MAVLINK_TYPE_UINT8_T, 0, 21, offsetof(mavlink_sensor_state_tm_t, enabled) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SENSOR_STATE_TM { \
+    "SENSOR_STATE_TM", \
+    3, \
+    {  { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 0, offsetof(mavlink_sensor_state_tm_t, sensor_name) }, \
+         { "initialized", NULL, MAVLINK_TYPE_UINT8_T, 0, 20, offsetof(mavlink_sensor_state_tm_t, initialized) }, \
+         { "enabled", NULL, MAVLINK_TYPE_UINT8_T, 0, 21, offsetof(mavlink_sensor_state_tm_t, enabled) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a sensor_state_tm 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 sensor_name  Sensor name
+ * @param initialized  Boolean that represents the init state
+ * @param enabled  Boolean that represents the enabled state
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_sensor_state_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               const char *sensor_name, uint8_t initialized, uint8_t enabled)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN];
+    _mav_put_uint8_t(buf, 20, initialized);
+    _mav_put_uint8_t(buf, 21, enabled);
+    _mav_put_char_array(buf, 0, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN);
+#else
+    mavlink_sensor_state_tm_t packet;
+    packet.initialized = initialized;
+    packet.enabled = enabled;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SENSOR_STATE_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC);
+}
+
+/**
+ * @brief Pack a sensor_state_tm 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 sensor_name  Sensor name
+ * @param initialized  Boolean that represents the init state
+ * @param enabled  Boolean that represents the enabled state
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_sensor_state_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   const char *sensor_name,uint8_t initialized,uint8_t enabled)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN];
+    _mav_put_uint8_t(buf, 20, initialized);
+    _mav_put_uint8_t(buf, 21, enabled);
+    _mav_put_char_array(buf, 0, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN);
+#else
+    mavlink_sensor_state_tm_t packet;
+    packet.initialized = initialized;
+    packet.enabled = enabled;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SENSOR_STATE_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC);
+}
+
+/**
+ * @brief Encode a sensor_state_tm 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 sensor_state_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_sensor_state_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_sensor_state_tm_t* sensor_state_tm)
+{
+    return mavlink_msg_sensor_state_tm_pack(system_id, component_id, msg, sensor_state_tm->sensor_name, sensor_state_tm->initialized, sensor_state_tm->enabled);
+}
+
+/**
+ * @brief Encode a sensor_state_tm 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 sensor_state_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_sensor_state_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_sensor_state_tm_t* sensor_state_tm)
+{
+    return mavlink_msg_sensor_state_tm_pack_chan(system_id, component_id, chan, msg, sensor_state_tm->sensor_name, sensor_state_tm->initialized, sensor_state_tm->enabled);
+}
+
+/**
+ * @brief Send a sensor_state_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param sensor_name  Sensor name
+ * @param initialized  Boolean that represents the init state
+ * @param enabled  Boolean that represents the enabled state
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_sensor_state_tm_send(mavlink_channel_t chan, const char *sensor_name, uint8_t initialized, uint8_t enabled)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN];
+    _mav_put_uint8_t(buf, 20, initialized);
+    _mav_put_uint8_t(buf, 21, enabled);
+    _mav_put_char_array(buf, 0, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_STATE_TM, buf, MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC);
+#else
+    mavlink_sensor_state_tm_t packet;
+    packet.initialized = initialized;
+    packet.enabled = enabled;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_STATE_TM, (const char *)&packet, MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a sensor_state_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_sensor_state_tm_send_struct(mavlink_channel_t chan, const mavlink_sensor_state_tm_t* sensor_state_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_sensor_state_tm_send(chan, sensor_state_tm->sensor_name, sensor_state_tm->initialized, sensor_state_tm->enabled);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_STATE_TM, (const char *)sensor_state_tm, MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_sensor_state_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  const char *sensor_name, uint8_t initialized, uint8_t enabled)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 20, initialized);
+    _mav_put_uint8_t(buf, 21, enabled);
+    _mav_put_char_array(buf, 0, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_STATE_TM, buf, MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC);
+#else
+    mavlink_sensor_state_tm_t *packet = (mavlink_sensor_state_tm_t *)msgbuf;
+    packet->initialized = initialized;
+    packet->enabled = enabled;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_STATE_TM, (const char *)packet, MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN, MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SENSOR_STATE_TM UNPACKING
+
+
+/**
+ * @brief Get field sensor_name from sensor_state_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_sensor_state_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  0);
+}
+
+/**
+ * @brief Get field initialized from sensor_state_tm message
+ *
+ * @return  Boolean that represents the init state
+ */
+static inline uint8_t mavlink_msg_sensor_state_tm_get_initialized(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  20);
+}
+
+/**
+ * @brief Get field enabled from sensor_state_tm message
+ *
+ * @return  Boolean that represents the enabled state
+ */
+static inline uint8_t mavlink_msg_sensor_state_tm_get_enabled(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  21);
+}
+
+/**
+ * @brief Decode a sensor_state_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param sensor_state_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_sensor_state_tm_decode(const mavlink_message_t* msg, mavlink_sensor_state_tm_t* sensor_state_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_sensor_state_tm_get_sensor_name(msg, sensor_state_tm->sensor_name);
+    sensor_state_tm->initialized = mavlink_msg_sensor_state_tm_get_initialized(msg);
+    sensor_state_tm->enabled = mavlink_msg_sensor_state_tm_get_enabled(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN? msg->len : MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN;
+        memset(sensor_state_tm, 0, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN);
+    memcpy(sensor_state_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_sensor_tm_request_tc.h b/mavlink_lib/orion/mavlink_msg_sensor_tm_request_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..bdf4a43617f74e9ba284ef8613ba5f01e808b707
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_sensor_tm_request_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SENSOR_TM_REQUEST_TC PACKING
+
+#define MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC 4
+
+
+typedef struct __mavlink_sensor_tm_request_tc_t {
+ uint8_t sensor_name; /*<  A member of the SensorTMList enum*/
+} mavlink_sensor_tm_request_tc_t;
+
+#define MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN 1
+#define MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN 1
+#define MAVLINK_MSG_ID_4_LEN 1
+#define MAVLINK_MSG_ID_4_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_CRC 248
+#define MAVLINK_MSG_ID_4_CRC 248
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SENSOR_TM_REQUEST_TC { \
+    4, \
+    "SENSOR_TM_REQUEST_TC", \
+    1, \
+    {  { "sensor_name", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_sensor_tm_request_tc_t, sensor_name) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SENSOR_TM_REQUEST_TC { \
+    "SENSOR_TM_REQUEST_TC", \
+    1, \
+    {  { "sensor_name", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_sensor_tm_request_tc_t, sensor_name) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a sensor_tm_request_tc 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 sensor_name  A member of the SensorTMList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_sensor_tm_request_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t sensor_name)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, sensor_name);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN);
+#else
+    mavlink_sensor_tm_request_tc_t packet;
+    packet.sensor_name = sensor_name;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_CRC);
+}
+
+/**
+ * @brief Pack a sensor_tm_request_tc 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 sensor_name  A member of the SensorTMList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_sensor_tm_request_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t sensor_name)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, sensor_name);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN);
+#else
+    mavlink_sensor_tm_request_tc_t packet;
+    packet.sensor_name = sensor_name;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_CRC);
+}
+
+/**
+ * @brief Encode a sensor_tm_request_tc 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 sensor_tm_request_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_sensor_tm_request_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_sensor_tm_request_tc_t* sensor_tm_request_tc)
+{
+    return mavlink_msg_sensor_tm_request_tc_pack(system_id, component_id, msg, sensor_tm_request_tc->sensor_name);
+}
+
+/**
+ * @brief Encode a sensor_tm_request_tc 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 sensor_tm_request_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_sensor_tm_request_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_sensor_tm_request_tc_t* sensor_tm_request_tc)
+{
+    return mavlink_msg_sensor_tm_request_tc_pack_chan(system_id, component_id, chan, msg, sensor_tm_request_tc->sensor_name);
+}
+
+/**
+ * @brief Send a sensor_tm_request_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param sensor_name  A member of the SensorTMList enum
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_sensor_tm_request_tc_send(mavlink_channel_t chan, uint8_t sensor_name)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, sensor_name);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC, buf, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_CRC);
+#else
+    mavlink_sensor_tm_request_tc_t packet;
+    packet.sensor_name = sensor_name;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC, (const char *)&packet, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a sensor_tm_request_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_sensor_tm_request_tc_send_struct(mavlink_channel_t chan, const mavlink_sensor_tm_request_tc_t* sensor_tm_request_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_sensor_tm_request_tc_send(chan, sensor_tm_request_tc->sensor_name);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC, (const char *)sensor_tm_request_tc, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_sensor_tm_request_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t sensor_name)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, sensor_name);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC, buf, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_CRC);
+#else
+    mavlink_sensor_tm_request_tc_t *packet = (mavlink_sensor_tm_request_tc_t *)msgbuf;
+    packet->sensor_name = sensor_name;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC, (const char *)packet, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SENSOR_TM_REQUEST_TC UNPACKING
+
+
+/**
+ * @brief Get field sensor_name from sensor_tm_request_tc message
+ *
+ * @return  A member of the SensorTMList enum
+ */
+static inline uint8_t mavlink_msg_sensor_tm_request_tc_get_sensor_name(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Decode a sensor_tm_request_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param sensor_tm_request_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_sensor_tm_request_tc_decode(const mavlink_message_t* msg, mavlink_sensor_tm_request_tc_t* sensor_tm_request_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    sensor_tm_request_tc->sensor_name = mavlink_msg_sensor_tm_request_tc_get_sensor_name(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN? msg->len : MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN;
+        memset(sensor_tm_request_tc, 0, MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_LEN);
+    memcpy(sensor_tm_request_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_servo_tm.h b/mavlink_lib/orion/mavlink_msg_servo_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..22851b9302ca7a4c1d75e87c98afb65a54fd33c9
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_servo_tm.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SERVO_TM PACKING
+
+#define MAVLINK_MSG_ID_SERVO_TM 113
+
+
+typedef struct __mavlink_servo_tm_t {
+ float servo_position; /*<  Position of the servo [0-1]*/
+ uint8_t servo_id; /*<  A member of the ServosList enum*/
+} mavlink_servo_tm_t;
+
+#define MAVLINK_MSG_ID_SERVO_TM_LEN 5
+#define MAVLINK_MSG_ID_SERVO_TM_MIN_LEN 5
+#define MAVLINK_MSG_ID_113_LEN 5
+#define MAVLINK_MSG_ID_113_MIN_LEN 5
+
+#define MAVLINK_MSG_ID_SERVO_TM_CRC 87
+#define MAVLINK_MSG_ID_113_CRC 87
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SERVO_TM { \
+    113, \
+    "SERVO_TM", \
+    2, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_servo_tm_t, servo_id) }, \
+         { "servo_position", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_servo_tm_t, servo_position) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SERVO_TM { \
+    "SERVO_TM", \
+    2, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_servo_tm_t, servo_id) }, \
+         { "servo_position", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_servo_tm_t, servo_position) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a servo_tm 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 servo_id  A member of the ServosList enum
+ * @param servo_position  Position of the servo [0-1]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_servo_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t servo_id, float servo_position)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SERVO_TM_LEN];
+    _mav_put_float(buf, 0, servo_position);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SERVO_TM_LEN);
+#else
+    mavlink_servo_tm_t packet;
+    packet.servo_position = servo_position;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SERVO_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SERVO_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SERVO_TM_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_LEN, MAVLINK_MSG_ID_SERVO_TM_CRC);
+}
+
+/**
+ * @brief Pack a servo_tm 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 servo_id  A member of the ServosList enum
+ * @param servo_position  Position of the servo [0-1]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_servo_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t servo_id,float servo_position)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SERVO_TM_LEN];
+    _mav_put_float(buf, 0, servo_position);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SERVO_TM_LEN);
+#else
+    mavlink_servo_tm_t packet;
+    packet.servo_position = servo_position;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SERVO_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SERVO_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SERVO_TM_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_LEN, MAVLINK_MSG_ID_SERVO_TM_CRC);
+}
+
+/**
+ * @brief Encode a servo_tm 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 servo_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_servo_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_servo_tm_t* servo_tm)
+{
+    return mavlink_msg_servo_tm_pack(system_id, component_id, msg, servo_tm->servo_id, servo_tm->servo_position);
+}
+
+/**
+ * @brief Encode a servo_tm 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 servo_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_servo_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_servo_tm_t* servo_tm)
+{
+    return mavlink_msg_servo_tm_pack_chan(system_id, component_id, chan, msg, servo_tm->servo_id, servo_tm->servo_position);
+}
+
+/**
+ * @brief Send a servo_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param servo_id  A member of the ServosList enum
+ * @param servo_position  Position of the servo [0-1]
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_servo_tm_send(mavlink_channel_t chan, uint8_t servo_id, float servo_position)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SERVO_TM_LEN];
+    _mav_put_float(buf, 0, servo_position);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM, buf, MAVLINK_MSG_ID_SERVO_TM_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_LEN, MAVLINK_MSG_ID_SERVO_TM_CRC);
+#else
+    mavlink_servo_tm_t packet;
+    packet.servo_position = servo_position;
+    packet.servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM, (const char *)&packet, MAVLINK_MSG_ID_SERVO_TM_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_LEN, MAVLINK_MSG_ID_SERVO_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a servo_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_servo_tm_send_struct(mavlink_channel_t chan, const mavlink_servo_tm_t* servo_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_servo_tm_send(chan, servo_tm->servo_id, servo_tm->servo_position);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM, (const char *)servo_tm, MAVLINK_MSG_ID_SERVO_TM_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_LEN, MAVLINK_MSG_ID_SERVO_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SERVO_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_servo_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t servo_id, float servo_position)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, servo_position);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM, buf, MAVLINK_MSG_ID_SERVO_TM_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_LEN, MAVLINK_MSG_ID_SERVO_TM_CRC);
+#else
+    mavlink_servo_tm_t *packet = (mavlink_servo_tm_t *)msgbuf;
+    packet->servo_position = servo_position;
+    packet->servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM, (const char *)packet, MAVLINK_MSG_ID_SERVO_TM_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_LEN, MAVLINK_MSG_ID_SERVO_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SERVO_TM UNPACKING
+
+
+/**
+ * @brief Get field servo_id from servo_tm message
+ *
+ * @return  A member of the ServosList enum
+ */
+static inline uint8_t mavlink_msg_servo_tm_get_servo_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  4);
+}
+
+/**
+ * @brief Get field servo_position from servo_tm message
+ *
+ * @return  Position of the servo [0-1]
+ */
+static inline float mavlink_msg_servo_tm_get_servo_position(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a servo_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param servo_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_servo_tm_decode(const mavlink_message_t* msg, mavlink_servo_tm_t* servo_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    servo_tm->servo_position = mavlink_msg_servo_tm_get_servo_position(msg);
+    servo_tm->servo_id = mavlink_msg_servo_tm_get_servo_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SERVO_TM_LEN? msg->len : MAVLINK_MSG_ID_SERVO_TM_LEN;
+        memset(servo_tm, 0, MAVLINK_MSG_ID_SERVO_TM_LEN);
+    memcpy(servo_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_servo_tm_request_tc.h b/mavlink_lib/orion/mavlink_msg_servo_tm_request_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..6ac27824c3a9ac7df9d8bf0a0983c552f689cb71
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_servo_tm_request_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SERVO_TM_REQUEST_TC PACKING
+
+#define MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC 5
+
+
+typedef struct __mavlink_servo_tm_request_tc_t {
+ uint8_t servo_id; /*<  A member of the ServosList enum*/
+} mavlink_servo_tm_request_tc_t;
+
+#define MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN 1
+#define MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN 1
+#define MAVLINK_MSG_ID_5_LEN 1
+#define MAVLINK_MSG_ID_5_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_CRC 184
+#define MAVLINK_MSG_ID_5_CRC 184
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SERVO_TM_REQUEST_TC { \
+    5, \
+    "SERVO_TM_REQUEST_TC", \
+    1, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_servo_tm_request_tc_t, servo_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SERVO_TM_REQUEST_TC { \
+    "SERVO_TM_REQUEST_TC", \
+    1, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_servo_tm_request_tc_t, servo_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a servo_tm_request_tc 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 servo_id  A member of the ServosList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_servo_tm_request_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN);
+#else
+    mavlink_servo_tm_request_tc_t packet;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_CRC);
+}
+
+/**
+ * @brief Pack a servo_tm_request_tc 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 servo_id  A member of the ServosList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_servo_tm_request_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN);
+#else
+    mavlink_servo_tm_request_tc_t packet;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_CRC);
+}
+
+/**
+ * @brief Encode a servo_tm_request_tc 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 servo_tm_request_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_servo_tm_request_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_servo_tm_request_tc_t* servo_tm_request_tc)
+{
+    return mavlink_msg_servo_tm_request_tc_pack(system_id, component_id, msg, servo_tm_request_tc->servo_id);
+}
+
+/**
+ * @brief Encode a servo_tm_request_tc 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 servo_tm_request_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_servo_tm_request_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_servo_tm_request_tc_t* servo_tm_request_tc)
+{
+    return mavlink_msg_servo_tm_request_tc_pack_chan(system_id, component_id, chan, msg, servo_tm_request_tc->servo_id);
+}
+
+/**
+ * @brief Send a servo_tm_request_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param servo_id  A member of the ServosList enum
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_servo_tm_request_tc_send(mavlink_channel_t chan, uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC, buf, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_CRC);
+#else
+    mavlink_servo_tm_request_tc_t packet;
+    packet.servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC, (const char *)&packet, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a servo_tm_request_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_servo_tm_request_tc_send_struct(mavlink_channel_t chan, const mavlink_servo_tm_request_tc_t* servo_tm_request_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_servo_tm_request_tc_send(chan, servo_tm_request_tc->servo_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC, (const char *)servo_tm_request_tc, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_servo_tm_request_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC, buf, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_CRC);
+#else
+    mavlink_servo_tm_request_tc_t *packet = (mavlink_servo_tm_request_tc_t *)msgbuf;
+    packet->servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC, (const char *)packet, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SERVO_TM_REQUEST_TC UNPACKING
+
+
+/**
+ * @brief Get field servo_id from servo_tm_request_tc message
+ *
+ * @return  A member of the ServosList enum
+ */
+static inline uint8_t mavlink_msg_servo_tm_request_tc_get_servo_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Decode a servo_tm_request_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param servo_tm_request_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_servo_tm_request_tc_decode(const mavlink_message_t* msg, mavlink_servo_tm_request_tc_t* servo_tm_request_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    servo_tm_request_tc->servo_id = mavlink_msg_servo_tm_request_tc_get_servo_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN? msg->len : MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN;
+        memset(servo_tm_request_tc, 0, MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_LEN);
+    memcpy(servo_tm_request_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_algorithm_tc.h b/mavlink_lib/orion/mavlink_msg_set_algorithm_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..b9cbbdbd3e049a5339ed0a495302e266af2a2e88
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_algorithm_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_ALGORITHM_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_ALGORITHM_TC 17
+
+
+typedef struct __mavlink_set_algorithm_tc_t {
+ uint8_t algorithm_number; /*<  Algorithm number*/
+} mavlink_set_algorithm_tc_t;
+
+#define MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN 1
+#define MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN 1
+#define MAVLINK_MSG_ID_17_LEN 1
+#define MAVLINK_MSG_ID_17_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC 181
+#define MAVLINK_MSG_ID_17_CRC 181
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_ALGORITHM_TC { \
+    17, \
+    "SET_ALGORITHM_TC", \
+    1, \
+    {  { "algorithm_number", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_set_algorithm_tc_t, algorithm_number) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_ALGORITHM_TC { \
+    "SET_ALGORITHM_TC", \
+    1, \
+    {  { "algorithm_number", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_set_algorithm_tc_t, algorithm_number) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_algorithm_tc 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 algorithm_number  Algorithm number
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_algorithm_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t algorithm_number)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN];
+    _mav_put_uint8_t(buf, 0, algorithm_number);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN);
+#else
+    mavlink_set_algorithm_tc_t packet;
+    packet.algorithm_number = algorithm_number;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ALGORITHM_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_algorithm_tc 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 algorithm_number  Algorithm number
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_algorithm_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t algorithm_number)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN];
+    _mav_put_uint8_t(buf, 0, algorithm_number);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN);
+#else
+    mavlink_set_algorithm_tc_t packet;
+    packet.algorithm_number = algorithm_number;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ALGORITHM_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_algorithm_tc 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 set_algorithm_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_algorithm_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_algorithm_tc_t* set_algorithm_tc)
+{
+    return mavlink_msg_set_algorithm_tc_pack(system_id, component_id, msg, set_algorithm_tc->algorithm_number);
+}
+
+/**
+ * @brief Encode a set_algorithm_tc 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 set_algorithm_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_algorithm_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_algorithm_tc_t* set_algorithm_tc)
+{
+    return mavlink_msg_set_algorithm_tc_pack_chan(system_id, component_id, chan, msg, set_algorithm_tc->algorithm_number);
+}
+
+/**
+ * @brief Send a set_algorithm_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param algorithm_number  Algorithm number
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_algorithm_tc_send(mavlink_channel_t chan, uint8_t algorithm_number)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN];
+    _mav_put_uint8_t(buf, 0, algorithm_number);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ALGORITHM_TC, buf, MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC);
+#else
+    mavlink_set_algorithm_tc_t packet;
+    packet.algorithm_number = algorithm_number;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ALGORITHM_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_algorithm_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_algorithm_tc_send_struct(mavlink_channel_t chan, const mavlink_set_algorithm_tc_t* set_algorithm_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_algorithm_tc_send(chan, set_algorithm_tc->algorithm_number);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ALGORITHM_TC, (const char *)set_algorithm_tc, MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_algorithm_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t algorithm_number)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, algorithm_number);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ALGORITHM_TC, buf, MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC);
+#else
+    mavlink_set_algorithm_tc_t *packet = (mavlink_set_algorithm_tc_t *)msgbuf;
+    packet->algorithm_number = algorithm_number;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ALGORITHM_TC, (const char *)packet, MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN, MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_ALGORITHM_TC UNPACKING
+
+
+/**
+ * @brief Get field algorithm_number from set_algorithm_tc message
+ *
+ * @return  Algorithm number
+ */
+static inline uint8_t mavlink_msg_set_algorithm_tc_get_algorithm_number(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Decode a set_algorithm_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_algorithm_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_algorithm_tc_decode(const mavlink_message_t* msg, mavlink_set_algorithm_tc_t* set_algorithm_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_algorithm_tc->algorithm_number = mavlink_msg_set_algorithm_tc_get_algorithm_number(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN;
+        memset(set_algorithm_tc, 0, MAVLINK_MSG_ID_SET_ALGORITHM_TC_LEN);
+    memcpy(set_algorithm_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_antenna_coordinates_arp_tc.h b/mavlink_lib/orion/mavlink_msg_set_antenna_coordinates_arp_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..27891ad4020ccd2da9d52c04adfe0a64af0a89c0
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_antenna_coordinates_arp_tc.h
@@ -0,0 +1,263 @@
+#pragma once
+// MESSAGE SET_ANTENNA_COORDINATES_ARP_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC 63
+
+
+typedef struct __mavlink_set_antenna_coordinates_arp_tc_t {
+ float latitude; /*< [deg] Latitude*/
+ float longitude; /*< [deg] Longitude*/
+ float height; /*< [m] Height*/
+} mavlink_set_antenna_coordinates_arp_tc_t;
+
+#define MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN 12
+#define MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN 12
+#define MAVLINK_MSG_ID_63_LEN 12
+#define MAVLINK_MSG_ID_63_MIN_LEN 12
+
+#define MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_CRC 183
+#define MAVLINK_MSG_ID_63_CRC 183
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_ANTENNA_COORDINATES_ARP_TC { \
+    63, \
+    "SET_ANTENNA_COORDINATES_ARP_TC", \
+    3, \
+    {  { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_antenna_coordinates_arp_tc_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_antenna_coordinates_arp_tc_t, longitude) }, \
+         { "height", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_set_antenna_coordinates_arp_tc_t, height) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_ANTENNA_COORDINATES_ARP_TC { \
+    "SET_ANTENNA_COORDINATES_ARP_TC", \
+    3, \
+    {  { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_antenna_coordinates_arp_tc_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_antenna_coordinates_arp_tc_t, longitude) }, \
+         { "height", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_set_antenna_coordinates_arp_tc_t, height) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_antenna_coordinates_arp_tc 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 latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Height
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_antenna_coordinates_arp_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float latitude, float longitude, float height)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+    _mav_put_float(buf, 8, height);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN);
+#else
+    mavlink_set_antenna_coordinates_arp_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_antenna_coordinates_arp_tc 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 latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Height
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_antenna_coordinates_arp_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float latitude,float longitude,float height)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+    _mav_put_float(buf, 8, height);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN);
+#else
+    mavlink_set_antenna_coordinates_arp_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_antenna_coordinates_arp_tc 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 set_antenna_coordinates_arp_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_antenna_coordinates_arp_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_antenna_coordinates_arp_tc_t* set_antenna_coordinates_arp_tc)
+{
+    return mavlink_msg_set_antenna_coordinates_arp_tc_pack(system_id, component_id, msg, set_antenna_coordinates_arp_tc->latitude, set_antenna_coordinates_arp_tc->longitude, set_antenna_coordinates_arp_tc->height);
+}
+
+/**
+ * @brief Encode a set_antenna_coordinates_arp_tc 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 set_antenna_coordinates_arp_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_antenna_coordinates_arp_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_antenna_coordinates_arp_tc_t* set_antenna_coordinates_arp_tc)
+{
+    return mavlink_msg_set_antenna_coordinates_arp_tc_pack_chan(system_id, component_id, chan, msg, set_antenna_coordinates_arp_tc->latitude, set_antenna_coordinates_arp_tc->longitude, set_antenna_coordinates_arp_tc->height);
+}
+
+/**
+ * @brief Send a set_antenna_coordinates_arp_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Height
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_antenna_coordinates_arp_tc_send(mavlink_channel_t chan, float latitude, float longitude, float height)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+    _mav_put_float(buf, 8, height);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC, buf, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_CRC);
+#else
+    mavlink_set_antenna_coordinates_arp_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_antenna_coordinates_arp_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_antenna_coordinates_arp_tc_send_struct(mavlink_channel_t chan, const mavlink_set_antenna_coordinates_arp_tc_t* set_antenna_coordinates_arp_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_antenna_coordinates_arp_tc_send(chan, set_antenna_coordinates_arp_tc->latitude, set_antenna_coordinates_arp_tc->longitude, set_antenna_coordinates_arp_tc->height);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC, (const char *)set_antenna_coordinates_arp_tc, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_antenna_coordinates_arp_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float latitude, float longitude, float height)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+    _mav_put_float(buf, 8, height);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC, buf, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_CRC);
+#else
+    mavlink_set_antenna_coordinates_arp_tc_t *packet = (mavlink_set_antenna_coordinates_arp_tc_t *)msgbuf;
+    packet->latitude = latitude;
+    packet->longitude = longitude;
+    packet->height = height;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC, (const char *)packet, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_ANTENNA_COORDINATES_ARP_TC UNPACKING
+
+
+/**
+ * @brief Get field latitude from set_antenna_coordinates_arp_tc message
+ *
+ * @return [deg] Latitude
+ */
+static inline float mavlink_msg_set_antenna_coordinates_arp_tc_get_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Get field longitude from set_antenna_coordinates_arp_tc message
+ *
+ * @return [deg] Longitude
+ */
+static inline float mavlink_msg_set_antenna_coordinates_arp_tc_get_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  4);
+}
+
+/**
+ * @brief Get field height from set_antenna_coordinates_arp_tc message
+ *
+ * @return [m] Height
+ */
+static inline float mavlink_msg_set_antenna_coordinates_arp_tc_get_height(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Decode a set_antenna_coordinates_arp_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_antenna_coordinates_arp_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_antenna_coordinates_arp_tc_decode(const mavlink_message_t* msg, mavlink_set_antenna_coordinates_arp_tc_t* set_antenna_coordinates_arp_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_antenna_coordinates_arp_tc->latitude = mavlink_msg_set_antenna_coordinates_arp_tc_get_latitude(msg);
+    set_antenna_coordinates_arp_tc->longitude = mavlink_msg_set_antenna_coordinates_arp_tc_get_longitude(msg);
+    set_antenna_coordinates_arp_tc->height = mavlink_msg_set_antenna_coordinates_arp_tc_get_height(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN;
+        memset(set_antenna_coordinates_arp_tc, 0, MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_LEN);
+    memcpy(set_antenna_coordinates_arp_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_atomic_valve_timing_tc.h b/mavlink_lib/orion/mavlink_msg_set_atomic_valve_timing_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..c43a37eaf41e0d36febf5349e3461b43720d51f5
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_atomic_valve_timing_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_ATOMIC_VALVE_TIMING_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC 30
+
+
+typedef struct __mavlink_set_atomic_valve_timing_tc_t {
+ uint32_t maximum_timing; /*< [ms] Maximum timing in [ms]*/
+ uint8_t servo_id; /*<  A member of the ServosList enum*/
+} mavlink_set_atomic_valve_timing_tc_t;
+
+#define MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN 5
+#define MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN 5
+#define MAVLINK_MSG_ID_30_LEN 5
+#define MAVLINK_MSG_ID_30_MIN_LEN 5
+
+#define MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_CRC 110
+#define MAVLINK_MSG_ID_30_CRC 110
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_ATOMIC_VALVE_TIMING_TC { \
+    30, \
+    "SET_ATOMIC_VALVE_TIMING_TC", \
+    2, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_atomic_valve_timing_tc_t, servo_id) }, \
+         { "maximum_timing", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_set_atomic_valve_timing_tc_t, maximum_timing) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_ATOMIC_VALVE_TIMING_TC { \
+    "SET_ATOMIC_VALVE_TIMING_TC", \
+    2, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_atomic_valve_timing_tc_t, servo_id) }, \
+         { "maximum_timing", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_set_atomic_valve_timing_tc_t, maximum_timing) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_atomic_valve_timing_tc 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 servo_id  A member of the ServosList enum
+ * @param maximum_timing [ms] Maximum timing in [ms]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_atomic_valve_timing_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t servo_id, uint32_t maximum_timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN];
+    _mav_put_uint32_t(buf, 0, maximum_timing);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN);
+#else
+    mavlink_set_atomic_valve_timing_tc_t packet;
+    packet.maximum_timing = maximum_timing;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_atomic_valve_timing_tc 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 servo_id  A member of the ServosList enum
+ * @param maximum_timing [ms] Maximum timing in [ms]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_atomic_valve_timing_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t servo_id,uint32_t maximum_timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN];
+    _mav_put_uint32_t(buf, 0, maximum_timing);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN);
+#else
+    mavlink_set_atomic_valve_timing_tc_t packet;
+    packet.maximum_timing = maximum_timing;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_atomic_valve_timing_tc 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 set_atomic_valve_timing_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_atomic_valve_timing_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_atomic_valve_timing_tc_t* set_atomic_valve_timing_tc)
+{
+    return mavlink_msg_set_atomic_valve_timing_tc_pack(system_id, component_id, msg, set_atomic_valve_timing_tc->servo_id, set_atomic_valve_timing_tc->maximum_timing);
+}
+
+/**
+ * @brief Encode a set_atomic_valve_timing_tc 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 set_atomic_valve_timing_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_atomic_valve_timing_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_atomic_valve_timing_tc_t* set_atomic_valve_timing_tc)
+{
+    return mavlink_msg_set_atomic_valve_timing_tc_pack_chan(system_id, component_id, chan, msg, set_atomic_valve_timing_tc->servo_id, set_atomic_valve_timing_tc->maximum_timing);
+}
+
+/**
+ * @brief Send a set_atomic_valve_timing_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param servo_id  A member of the ServosList enum
+ * @param maximum_timing [ms] Maximum timing in [ms]
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_atomic_valve_timing_tc_send(mavlink_channel_t chan, uint8_t servo_id, uint32_t maximum_timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN];
+    _mav_put_uint32_t(buf, 0, maximum_timing);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC, buf, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_CRC);
+#else
+    mavlink_set_atomic_valve_timing_tc_t packet;
+    packet.maximum_timing = maximum_timing;
+    packet.servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_atomic_valve_timing_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_atomic_valve_timing_tc_send_struct(mavlink_channel_t chan, const mavlink_set_atomic_valve_timing_tc_t* set_atomic_valve_timing_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_atomic_valve_timing_tc_send(chan, set_atomic_valve_timing_tc->servo_id, set_atomic_valve_timing_tc->maximum_timing);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC, (const char *)set_atomic_valve_timing_tc, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_atomic_valve_timing_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t servo_id, uint32_t maximum_timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint32_t(buf, 0, maximum_timing);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC, buf, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_CRC);
+#else
+    mavlink_set_atomic_valve_timing_tc_t *packet = (mavlink_set_atomic_valve_timing_tc_t *)msgbuf;
+    packet->maximum_timing = maximum_timing;
+    packet->servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC, (const char *)packet, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_ATOMIC_VALVE_TIMING_TC UNPACKING
+
+
+/**
+ * @brief Get field servo_id from set_atomic_valve_timing_tc message
+ *
+ * @return  A member of the ServosList enum
+ */
+static inline uint8_t mavlink_msg_set_atomic_valve_timing_tc_get_servo_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  4);
+}
+
+/**
+ * @brief Get field maximum_timing from set_atomic_valve_timing_tc message
+ *
+ * @return [ms] Maximum timing in [ms]
+ */
+static inline uint32_t mavlink_msg_set_atomic_valve_timing_tc_get_maximum_timing(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  0);
+}
+
+/**
+ * @brief Decode a set_atomic_valve_timing_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_atomic_valve_timing_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_atomic_valve_timing_tc_decode(const mavlink_message_t* msg, mavlink_set_atomic_valve_timing_tc_t* set_atomic_valve_timing_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_atomic_valve_timing_tc->maximum_timing = mavlink_msg_set_atomic_valve_timing_tc_get_maximum_timing(msg);
+    set_atomic_valve_timing_tc->servo_id = mavlink_msg_set_atomic_valve_timing_tc_get_servo_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN;
+        memset(set_atomic_valve_timing_tc, 0, MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_LEN);
+    memcpy(set_atomic_valve_timing_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_calibration_pressure_tc.h b/mavlink_lib/orion/mavlink_msg_set_calibration_pressure_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..439fbb69824388a60cbb56a4849970d034169c87
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_calibration_pressure_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_CALIBRATION_PRESSURE_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC 18
+
+
+typedef struct __mavlink_set_calibration_pressure_tc_t {
+ float pressure; /*< [Pa] Pressure*/
+} mavlink_set_calibration_pressure_tc_t;
+
+#define MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN 4
+#define MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN 4
+#define MAVLINK_MSG_ID_18_LEN 4
+#define MAVLINK_MSG_ID_18_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_CRC 199
+#define MAVLINK_MSG_ID_18_CRC 199
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_CALIBRATION_PRESSURE_TC { \
+    18, \
+    "SET_CALIBRATION_PRESSURE_TC", \
+    1, \
+    {  { "pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_calibration_pressure_tc_t, pressure) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_CALIBRATION_PRESSURE_TC { \
+    "SET_CALIBRATION_PRESSURE_TC", \
+    1, \
+    {  { "pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_calibration_pressure_tc_t, pressure) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_calibration_pressure_tc 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 pressure [Pa] Pressure
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_calibration_pressure_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN];
+    _mav_put_float(buf, 0, pressure);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN);
+#else
+    mavlink_set_calibration_pressure_tc_t packet;
+    packet.pressure = pressure;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_calibration_pressure_tc 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 pressure [Pa] Pressure
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_calibration_pressure_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN];
+    _mav_put_float(buf, 0, pressure);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN);
+#else
+    mavlink_set_calibration_pressure_tc_t packet;
+    packet.pressure = pressure;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_calibration_pressure_tc 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 set_calibration_pressure_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_calibration_pressure_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_calibration_pressure_tc_t* set_calibration_pressure_tc)
+{
+    return mavlink_msg_set_calibration_pressure_tc_pack(system_id, component_id, msg, set_calibration_pressure_tc->pressure);
+}
+
+/**
+ * @brief Encode a set_calibration_pressure_tc 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 set_calibration_pressure_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_calibration_pressure_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_calibration_pressure_tc_t* set_calibration_pressure_tc)
+{
+    return mavlink_msg_set_calibration_pressure_tc_pack_chan(system_id, component_id, chan, msg, set_calibration_pressure_tc->pressure);
+}
+
+/**
+ * @brief Send a set_calibration_pressure_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param pressure [Pa] Pressure
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_calibration_pressure_tc_send(mavlink_channel_t chan, float pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN];
+    _mav_put_float(buf, 0, pressure);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC, buf, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_CRC);
+#else
+    mavlink_set_calibration_pressure_tc_t packet;
+    packet.pressure = pressure;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_calibration_pressure_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_calibration_pressure_tc_send_struct(mavlink_channel_t chan, const mavlink_set_calibration_pressure_tc_t* set_calibration_pressure_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_calibration_pressure_tc_send(chan, set_calibration_pressure_tc->pressure);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC, (const char *)set_calibration_pressure_tc, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_calibration_pressure_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float pressure)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, pressure);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC, buf, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_CRC);
+#else
+    mavlink_set_calibration_pressure_tc_t *packet = (mavlink_set_calibration_pressure_tc_t *)msgbuf;
+    packet->pressure = pressure;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC, (const char *)packet, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_CALIBRATION_PRESSURE_TC UNPACKING
+
+
+/**
+ * @brief Get field pressure from set_calibration_pressure_tc message
+ *
+ * @return [Pa] Pressure
+ */
+static inline float mavlink_msg_set_calibration_pressure_tc_get_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_calibration_pressure_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_calibration_pressure_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_calibration_pressure_tc_decode(const mavlink_message_t* msg, mavlink_set_calibration_pressure_tc_t* set_calibration_pressure_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_calibration_pressure_tc->pressure = mavlink_msg_set_calibration_pressure_tc_get_pressure(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN;
+        memset(set_calibration_pressure_tc, 0, MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_LEN);
+    memcpy(set_calibration_pressure_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_cooling_time_tc.h b/mavlink_lib/orion/mavlink_msg_set_cooling_time_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..ca49e31c787b7af30cfeed5d599e610a27acc00a
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_cooling_time_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_COOLING_TIME_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_COOLING_TIME_TC 35
+
+
+typedef struct __mavlink_set_cooling_time_tc_t {
+ uint32_t timing; /*< [ms] Timing in [ms]*/
+} mavlink_set_cooling_time_tc_t;
+
+#define MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN 4
+#define MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN 4
+#define MAVLINK_MSG_ID_35_LEN 4
+#define MAVLINK_MSG_ID_35_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_COOLING_TIME_TC_CRC 84
+#define MAVLINK_MSG_ID_35_CRC 84
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_COOLING_TIME_TC { \
+    35, \
+    "SET_COOLING_TIME_TC", \
+    1, \
+    {  { "timing", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_set_cooling_time_tc_t, timing) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_COOLING_TIME_TC { \
+    "SET_COOLING_TIME_TC", \
+    1, \
+    {  { "timing", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_set_cooling_time_tc_t, timing) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_cooling_time_tc 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 timing [ms] Timing in [ms]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_cooling_time_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN);
+#else
+    mavlink_set_cooling_time_tc_t packet;
+    packet.timing = timing;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_COOLING_TIME_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_cooling_time_tc 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 timing [ms] Timing in [ms]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_cooling_time_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN);
+#else
+    mavlink_set_cooling_time_tc_t packet;
+    packet.timing = timing;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_COOLING_TIME_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_cooling_time_tc 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 set_cooling_time_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_cooling_time_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_cooling_time_tc_t* set_cooling_time_tc)
+{
+    return mavlink_msg_set_cooling_time_tc_pack(system_id, component_id, msg, set_cooling_time_tc->timing);
+}
+
+/**
+ * @brief Encode a set_cooling_time_tc 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 set_cooling_time_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_cooling_time_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_cooling_time_tc_t* set_cooling_time_tc)
+{
+    return mavlink_msg_set_cooling_time_tc_pack_chan(system_id, component_id, chan, msg, set_cooling_time_tc->timing);
+}
+
+/**
+ * @brief Send a set_cooling_time_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timing [ms] Timing in [ms]
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_cooling_time_tc_send(mavlink_channel_t chan, uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COOLING_TIME_TC, buf, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_CRC);
+#else
+    mavlink_set_cooling_time_tc_t packet;
+    packet.timing = timing;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COOLING_TIME_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_cooling_time_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_cooling_time_tc_send_struct(mavlink_channel_t chan, const mavlink_set_cooling_time_tc_t* set_cooling_time_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_cooling_time_tc_send(chan, set_cooling_time_tc->timing);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COOLING_TIME_TC, (const char *)set_cooling_time_tc, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_cooling_time_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint32_t(buf, 0, timing);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COOLING_TIME_TC, buf, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_CRC);
+#else
+    mavlink_set_cooling_time_tc_t *packet = (mavlink_set_cooling_time_tc_t *)msgbuf;
+    packet->timing = timing;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COOLING_TIME_TC, (const char *)packet, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_COOLING_TIME_TC UNPACKING
+
+
+/**
+ * @brief Get field timing from set_cooling_time_tc message
+ *
+ * @return [ms] Timing in [ms]
+ */
+static inline uint32_t mavlink_msg_set_cooling_time_tc_get_timing(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  0);
+}
+
+/**
+ * @brief Decode a set_cooling_time_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_cooling_time_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_cooling_time_tc_decode(const mavlink_message_t* msg, mavlink_set_cooling_time_tc_t* set_cooling_time_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_cooling_time_tc->timing = mavlink_msg_set_cooling_time_tc_get_timing(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN;
+        memset(set_cooling_time_tc, 0, MAVLINK_MSG_ID_SET_COOLING_TIME_TC_LEN);
+    memcpy(set_cooling_time_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_coordinates_tc.h b/mavlink_lib/orion/mavlink_msg_set_coordinates_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..dd9f914ee780beca86428061f55fa1835510b840
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_coordinates_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_COORDINATES_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_COORDINATES_TC 13
+
+
+typedef struct __mavlink_set_coordinates_tc_t {
+ float latitude; /*< [deg] Latitude*/
+ float longitude; /*< [deg] Longitude*/
+} mavlink_set_coordinates_tc_t;
+
+#define MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN 8
+#define MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN 8
+#define MAVLINK_MSG_ID_13_LEN 8
+#define MAVLINK_MSG_ID_13_MIN_LEN 8
+
+#define MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC 67
+#define MAVLINK_MSG_ID_13_CRC 67
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_COORDINATES_TC { \
+    13, \
+    "SET_COORDINATES_TC", \
+    2, \
+    {  { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_coordinates_tc_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_coordinates_tc_t, longitude) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_COORDINATES_TC { \
+    "SET_COORDINATES_TC", \
+    2, \
+    {  { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_coordinates_tc_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_coordinates_tc_t, longitude) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_coordinates_tc 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 latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_coordinates_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN);
+#else
+    mavlink_set_coordinates_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_COORDINATES_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_coordinates_tc 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 latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_coordinates_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float latitude,float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN);
+#else
+    mavlink_set_coordinates_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_COORDINATES_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_coordinates_tc 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 set_coordinates_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_coordinates_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_coordinates_tc_t* set_coordinates_tc)
+{
+    return mavlink_msg_set_coordinates_tc_pack(system_id, component_id, msg, set_coordinates_tc->latitude, set_coordinates_tc->longitude);
+}
+
+/**
+ * @brief Encode a set_coordinates_tc 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 set_coordinates_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_coordinates_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_coordinates_tc_t* set_coordinates_tc)
+{
+    return mavlink_msg_set_coordinates_tc_pack_chan(system_id, component_id, chan, msg, set_coordinates_tc->latitude, set_coordinates_tc->longitude);
+}
+
+/**
+ * @brief Send a set_coordinates_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_coordinates_tc_send(mavlink_channel_t chan, float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COORDINATES_TC, buf, MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC);
+#else
+    mavlink_set_coordinates_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COORDINATES_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_coordinates_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_coordinates_tc_send_struct(mavlink_channel_t chan, const mavlink_set_coordinates_tc_t* set_coordinates_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_coordinates_tc_send(chan, set_coordinates_tc->latitude, set_coordinates_tc->longitude);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COORDINATES_TC, (const char *)set_coordinates_tc, MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_coordinates_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COORDINATES_TC, buf, MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC);
+#else
+    mavlink_set_coordinates_tc_t *packet = (mavlink_set_coordinates_tc_t *)msgbuf;
+    packet->latitude = latitude;
+    packet->longitude = longitude;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_COORDINATES_TC, (const char *)packet, MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_COORDINATES_TC UNPACKING
+
+
+/**
+ * @brief Get field latitude from set_coordinates_tc message
+ *
+ * @return [deg] Latitude
+ */
+static inline float mavlink_msg_set_coordinates_tc_get_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Get field longitude from set_coordinates_tc message
+ *
+ * @return [deg] Longitude
+ */
+static inline float mavlink_msg_set_coordinates_tc_get_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  4);
+}
+
+/**
+ * @brief Decode a set_coordinates_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_coordinates_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_coordinates_tc_decode(const mavlink_message_t* msg, mavlink_set_coordinates_tc_t* set_coordinates_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_coordinates_tc->latitude = mavlink_msg_set_coordinates_tc_get_latitude(msg);
+    set_coordinates_tc->longitude = mavlink_msg_set_coordinates_tc_get_longitude(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN;
+        memset(set_coordinates_tc, 0, MAVLINK_MSG_ID_SET_COORDINATES_TC_LEN);
+    memcpy(set_coordinates_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_deployment_altitude_tc.h b/mavlink_lib/orion/mavlink_msg_set_deployment_altitude_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..c8ab791c2fcc1eae10513251650426b28c7756c6
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_deployment_altitude_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_DEPLOYMENT_ALTITUDE_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC 15
+
+
+typedef struct __mavlink_set_deployment_altitude_tc_t {
+ float dpl_altitude; /*< [m] Deployment altitude*/
+} mavlink_set_deployment_altitude_tc_t;
+
+#define MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN 4
+#define MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN 4
+#define MAVLINK_MSG_ID_15_LEN 4
+#define MAVLINK_MSG_ID_15_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC 44
+#define MAVLINK_MSG_ID_15_CRC 44
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_DEPLOYMENT_ALTITUDE_TC { \
+    15, \
+    "SET_DEPLOYMENT_ALTITUDE_TC", \
+    1, \
+    {  { "dpl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_deployment_altitude_tc_t, dpl_altitude) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_DEPLOYMENT_ALTITUDE_TC { \
+    "SET_DEPLOYMENT_ALTITUDE_TC", \
+    1, \
+    {  { "dpl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_deployment_altitude_tc_t, dpl_altitude) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_deployment_altitude_tc 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 dpl_altitude [m] Deployment altitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_deployment_altitude_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float dpl_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN];
+    _mav_put_float(buf, 0, dpl_altitude);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN);
+#else
+    mavlink_set_deployment_altitude_tc_t packet;
+    packet.dpl_altitude = dpl_altitude;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_deployment_altitude_tc 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 dpl_altitude [m] Deployment altitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_deployment_altitude_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float dpl_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN];
+    _mav_put_float(buf, 0, dpl_altitude);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN);
+#else
+    mavlink_set_deployment_altitude_tc_t packet;
+    packet.dpl_altitude = dpl_altitude;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_deployment_altitude_tc 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 set_deployment_altitude_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_deployment_altitude_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_deployment_altitude_tc_t* set_deployment_altitude_tc)
+{
+    return mavlink_msg_set_deployment_altitude_tc_pack(system_id, component_id, msg, set_deployment_altitude_tc->dpl_altitude);
+}
+
+/**
+ * @brief Encode a set_deployment_altitude_tc 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 set_deployment_altitude_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_deployment_altitude_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_deployment_altitude_tc_t* set_deployment_altitude_tc)
+{
+    return mavlink_msg_set_deployment_altitude_tc_pack_chan(system_id, component_id, chan, msg, set_deployment_altitude_tc->dpl_altitude);
+}
+
+/**
+ * @brief Send a set_deployment_altitude_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param dpl_altitude [m] Deployment altitude
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_deployment_altitude_tc_send(mavlink_channel_t chan, float dpl_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN];
+    _mav_put_float(buf, 0, dpl_altitude);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC, buf, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC);
+#else
+    mavlink_set_deployment_altitude_tc_t packet;
+    packet.dpl_altitude = dpl_altitude;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_deployment_altitude_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_deployment_altitude_tc_send_struct(mavlink_channel_t chan, const mavlink_set_deployment_altitude_tc_t* set_deployment_altitude_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_deployment_altitude_tc_send(chan, set_deployment_altitude_tc->dpl_altitude);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC, (const char *)set_deployment_altitude_tc, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_deployment_altitude_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float dpl_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, dpl_altitude);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC, buf, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC);
+#else
+    mavlink_set_deployment_altitude_tc_t *packet = (mavlink_set_deployment_altitude_tc_t *)msgbuf;
+    packet->dpl_altitude = dpl_altitude;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC, (const char *)packet, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_DEPLOYMENT_ALTITUDE_TC UNPACKING
+
+
+/**
+ * @brief Get field dpl_altitude from set_deployment_altitude_tc message
+ *
+ * @return [m] Deployment altitude
+ */
+static inline float mavlink_msg_set_deployment_altitude_tc_get_dpl_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_deployment_altitude_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_deployment_altitude_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_deployment_altitude_tc_decode(const mavlink_message_t* msg, mavlink_set_deployment_altitude_tc_t* set_deployment_altitude_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_deployment_altitude_tc->dpl_altitude = mavlink_msg_set_deployment_altitude_tc_get_dpl_altitude(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN;
+        memset(set_deployment_altitude_tc, 0, MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_LEN);
+    memcpy(set_deployment_altitude_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_ignition_time_tc.h b/mavlink_lib/orion/mavlink_msg_set_ignition_time_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..43354ed53ff5e0cc6a19f2f26d4c9937b89d7fed
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_ignition_time_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_IGNITION_TIME_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_IGNITION_TIME_TC 33
+
+
+typedef struct __mavlink_set_ignition_time_tc_t {
+ uint32_t timing; /*< [ms] Timing in [ms]*/
+} mavlink_set_ignition_time_tc_t;
+
+#define MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN 4
+#define MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN 4
+#define MAVLINK_MSG_ID_33_LEN 4
+#define MAVLINK_MSG_ID_33_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_CRC 79
+#define MAVLINK_MSG_ID_33_CRC 79
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_IGNITION_TIME_TC { \
+    33, \
+    "SET_IGNITION_TIME_TC", \
+    1, \
+    {  { "timing", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_set_ignition_time_tc_t, timing) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_IGNITION_TIME_TC { \
+    "SET_IGNITION_TIME_TC", \
+    1, \
+    {  { "timing", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_set_ignition_time_tc_t, timing) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_ignition_time_tc 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 timing [ms] Timing in [ms]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_ignition_time_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN);
+#else
+    mavlink_set_ignition_time_tc_t packet;
+    packet.timing = timing;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_IGNITION_TIME_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_ignition_time_tc 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 timing [ms] Timing in [ms]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_ignition_time_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN);
+#else
+    mavlink_set_ignition_time_tc_t packet;
+    packet.timing = timing;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_IGNITION_TIME_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_ignition_time_tc 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 set_ignition_time_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_ignition_time_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_ignition_time_tc_t* set_ignition_time_tc)
+{
+    return mavlink_msg_set_ignition_time_tc_pack(system_id, component_id, msg, set_ignition_time_tc->timing);
+}
+
+/**
+ * @brief Encode a set_ignition_time_tc 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 set_ignition_time_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_ignition_time_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_ignition_time_tc_t* set_ignition_time_tc)
+{
+    return mavlink_msg_set_ignition_time_tc_pack_chan(system_id, component_id, chan, msg, set_ignition_time_tc->timing);
+}
+
+/**
+ * @brief Send a set_ignition_time_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timing [ms] Timing in [ms]
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_ignition_time_tc_send(mavlink_channel_t chan, uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC, buf, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_CRC);
+#else
+    mavlink_set_ignition_time_tc_t packet;
+    packet.timing = timing;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_ignition_time_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_ignition_time_tc_send_struct(mavlink_channel_t chan, const mavlink_set_ignition_time_tc_t* set_ignition_time_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_ignition_time_tc_send(chan, set_ignition_time_tc->timing);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC, (const char *)set_ignition_time_tc, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_ignition_time_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint32_t(buf, 0, timing);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC, buf, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_CRC);
+#else
+    mavlink_set_ignition_time_tc_t *packet = (mavlink_set_ignition_time_tc_t *)msgbuf;
+    packet->timing = timing;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC, (const char *)packet, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_IGNITION_TIME_TC UNPACKING
+
+
+/**
+ * @brief Get field timing from set_ignition_time_tc message
+ *
+ * @return [ms] Timing in [ms]
+ */
+static inline uint32_t mavlink_msg_set_ignition_time_tc_get_timing(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  0);
+}
+
+/**
+ * @brief Decode a set_ignition_time_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_ignition_time_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_ignition_time_tc_decode(const mavlink_message_t* msg, mavlink_set_ignition_time_tc_t* set_ignition_time_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_ignition_time_tc->timing = mavlink_msg_set_ignition_time_tc_get_timing(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN;
+        memset(set_ignition_time_tc, 0, MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_LEN);
+    memcpy(set_ignition_time_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_initial_mea_mass_tc.h b/mavlink_lib/orion/mavlink_msg_set_initial_mea_mass_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..7875d2021eb480c6dad24627ceaab73c5d24f336
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_initial_mea_mass_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_INITIAL_MEA_MASS_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC 19
+
+
+typedef struct __mavlink_set_initial_mea_mass_tc_t {
+ float mass; /*< [kg] Mass*/
+} mavlink_set_initial_mea_mass_tc_t;
+
+#define MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN 4
+#define MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN 4
+#define MAVLINK_MSG_ID_19_LEN 4
+#define MAVLINK_MSG_ID_19_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_CRC 221
+#define MAVLINK_MSG_ID_19_CRC 221
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_INITIAL_MEA_MASS_TC { \
+    19, \
+    "SET_INITIAL_MEA_MASS_TC", \
+    1, \
+    {  { "mass", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_initial_mea_mass_tc_t, mass) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_INITIAL_MEA_MASS_TC { \
+    "SET_INITIAL_MEA_MASS_TC", \
+    1, \
+    {  { "mass", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_initial_mea_mass_tc_t, mass) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_initial_mea_mass_tc 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 mass [kg] Mass
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_initial_mea_mass_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float mass)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN];
+    _mav_put_float(buf, 0, mass);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN);
+#else
+    mavlink_set_initial_mea_mass_tc_t packet;
+    packet.mass = mass;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_initial_mea_mass_tc 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 mass [kg] Mass
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_initial_mea_mass_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float mass)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN];
+    _mav_put_float(buf, 0, mass);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN);
+#else
+    mavlink_set_initial_mea_mass_tc_t packet;
+    packet.mass = mass;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_initial_mea_mass_tc 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 set_initial_mea_mass_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_initial_mea_mass_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_initial_mea_mass_tc_t* set_initial_mea_mass_tc)
+{
+    return mavlink_msg_set_initial_mea_mass_tc_pack(system_id, component_id, msg, set_initial_mea_mass_tc->mass);
+}
+
+/**
+ * @brief Encode a set_initial_mea_mass_tc 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 set_initial_mea_mass_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_initial_mea_mass_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_initial_mea_mass_tc_t* set_initial_mea_mass_tc)
+{
+    return mavlink_msg_set_initial_mea_mass_tc_pack_chan(system_id, component_id, chan, msg, set_initial_mea_mass_tc->mass);
+}
+
+/**
+ * @brief Send a set_initial_mea_mass_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param mass [kg] Mass
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_initial_mea_mass_tc_send(mavlink_channel_t chan, float mass)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN];
+    _mav_put_float(buf, 0, mass);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC, buf, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_CRC);
+#else
+    mavlink_set_initial_mea_mass_tc_t packet;
+    packet.mass = mass;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_initial_mea_mass_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_initial_mea_mass_tc_send_struct(mavlink_channel_t chan, const mavlink_set_initial_mea_mass_tc_t* set_initial_mea_mass_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_initial_mea_mass_tc_send(chan, set_initial_mea_mass_tc->mass);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC, (const char *)set_initial_mea_mass_tc, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_initial_mea_mass_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float mass)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, mass);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC, buf, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_CRC);
+#else
+    mavlink_set_initial_mea_mass_tc_t *packet = (mavlink_set_initial_mea_mass_tc_t *)msgbuf;
+    packet->mass = mass;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC, (const char *)packet, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_INITIAL_MEA_MASS_TC UNPACKING
+
+
+/**
+ * @brief Get field mass from set_initial_mea_mass_tc message
+ *
+ * @return [kg] Mass
+ */
+static inline float mavlink_msg_set_initial_mea_mass_tc_get_mass(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_initial_mea_mass_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_initial_mea_mass_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_initial_mea_mass_tc_decode(const mavlink_message_t* msg, mavlink_set_initial_mea_mass_tc_t* set_initial_mea_mass_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_initial_mea_mass_tc->mass = mavlink_msg_set_initial_mea_mass_tc_get_mass(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN;
+        memset(set_initial_mea_mass_tc, 0, MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_LEN);
+    memcpy(set_initial_mea_mass_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_nitrogen_time_tc.h b/mavlink_lib/orion/mavlink_msg_set_nitrogen_time_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..49ed042bde281bd1d8828abcf237a66197c7eb7d
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_nitrogen_time_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_NITROGEN_TIME_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC 34
+
+
+typedef struct __mavlink_set_nitrogen_time_tc_t {
+ uint32_t timing; /*< [ms] Timing in [ms]*/
+} mavlink_set_nitrogen_time_tc_t;
+
+#define MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN 4
+#define MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN 4
+#define MAVLINK_MSG_ID_34_LEN 4
+#define MAVLINK_MSG_ID_34_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_CRC 167
+#define MAVLINK_MSG_ID_34_CRC 167
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_NITROGEN_TIME_TC { \
+    34, \
+    "SET_NITROGEN_TIME_TC", \
+    1, \
+    {  { "timing", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_set_nitrogen_time_tc_t, timing) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_NITROGEN_TIME_TC { \
+    "SET_NITROGEN_TIME_TC", \
+    1, \
+    {  { "timing", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_set_nitrogen_time_tc_t, timing) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_nitrogen_time_tc 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 timing [ms] Timing in [ms]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_nitrogen_time_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN);
+#else
+    mavlink_set_nitrogen_time_tc_t packet;
+    packet.timing = timing;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_nitrogen_time_tc 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 timing [ms] Timing in [ms]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_nitrogen_time_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN);
+#else
+    mavlink_set_nitrogen_time_tc_t packet;
+    packet.timing = timing;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_nitrogen_time_tc 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 set_nitrogen_time_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_nitrogen_time_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_nitrogen_time_tc_t* set_nitrogen_time_tc)
+{
+    return mavlink_msg_set_nitrogen_time_tc_pack(system_id, component_id, msg, set_nitrogen_time_tc->timing);
+}
+
+/**
+ * @brief Encode a set_nitrogen_time_tc 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 set_nitrogen_time_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_nitrogen_time_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_nitrogen_time_tc_t* set_nitrogen_time_tc)
+{
+    return mavlink_msg_set_nitrogen_time_tc_pack_chan(system_id, component_id, chan, msg, set_nitrogen_time_tc->timing);
+}
+
+/**
+ * @brief Send a set_nitrogen_time_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timing [ms] Timing in [ms]
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_nitrogen_time_tc_send(mavlink_channel_t chan, uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN];
+    _mav_put_uint32_t(buf, 0, timing);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC, buf, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_CRC);
+#else
+    mavlink_set_nitrogen_time_tc_t packet;
+    packet.timing = timing;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_nitrogen_time_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_nitrogen_time_tc_send_struct(mavlink_channel_t chan, const mavlink_set_nitrogen_time_tc_t* set_nitrogen_time_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_nitrogen_time_tc_send(chan, set_nitrogen_time_tc->timing);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC, (const char *)set_nitrogen_time_tc, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_nitrogen_time_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint32_t timing)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint32_t(buf, 0, timing);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC, buf, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_CRC);
+#else
+    mavlink_set_nitrogen_time_tc_t *packet = (mavlink_set_nitrogen_time_tc_t *)msgbuf;
+    packet->timing = timing;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC, (const char *)packet, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_NITROGEN_TIME_TC UNPACKING
+
+
+/**
+ * @brief Get field timing from set_nitrogen_time_tc message
+ *
+ * @return [ms] Timing in [ms]
+ */
+static inline uint32_t mavlink_msg_set_nitrogen_time_tc_get_timing(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  0);
+}
+
+/**
+ * @brief Decode a set_nitrogen_time_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_nitrogen_time_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_nitrogen_time_tc_decode(const mavlink_message_t* msg, mavlink_set_nitrogen_time_tc_t* set_nitrogen_time_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_nitrogen_time_tc->timing = mavlink_msg_set_nitrogen_time_tc_get_timing(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN;
+        memset(set_nitrogen_time_tc, 0, MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_LEN);
+    memcpy(set_nitrogen_time_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_orientation_quat_tc.h b/mavlink_lib/orion/mavlink_msg_set_orientation_quat_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..fefd5c712166669dfaca1a1ff45aa1581da5ee59
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_orientation_quat_tc.h
@@ -0,0 +1,288 @@
+#pragma once
+// MESSAGE SET_ORIENTATION_QUAT_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC 12
+
+
+typedef struct __mavlink_set_orientation_quat_tc_t {
+ float quat_x; /*<  Quaternion x component*/
+ float quat_y; /*<  Quaternion y component*/
+ float quat_z; /*<  Quaternion z component*/
+ float quat_w; /*<  Quaternion w component*/
+} mavlink_set_orientation_quat_tc_t;
+
+#define MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN 16
+#define MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN 16
+#define MAVLINK_MSG_ID_12_LEN 16
+#define MAVLINK_MSG_ID_12_MIN_LEN 16
+
+#define MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_CRC 168
+#define MAVLINK_MSG_ID_12_CRC 168
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_ORIENTATION_QUAT_TC { \
+    12, \
+    "SET_ORIENTATION_QUAT_TC", \
+    4, \
+    {  { "quat_x", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_orientation_quat_tc_t, quat_x) }, \
+         { "quat_y", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_orientation_quat_tc_t, quat_y) }, \
+         { "quat_z", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_set_orientation_quat_tc_t, quat_z) }, \
+         { "quat_w", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_set_orientation_quat_tc_t, quat_w) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_ORIENTATION_QUAT_TC { \
+    "SET_ORIENTATION_QUAT_TC", \
+    4, \
+    {  { "quat_x", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_orientation_quat_tc_t, quat_x) }, \
+         { "quat_y", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_orientation_quat_tc_t, quat_y) }, \
+         { "quat_z", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_set_orientation_quat_tc_t, quat_z) }, \
+         { "quat_w", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_set_orientation_quat_tc_t, quat_w) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_orientation_quat_tc 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 quat_x  Quaternion x component
+ * @param quat_y  Quaternion y component
+ * @param quat_z  Quaternion z component
+ * @param quat_w  Quaternion w component
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_orientation_quat_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float quat_x, float quat_y, float quat_z, float quat_w)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN];
+    _mav_put_float(buf, 0, quat_x);
+    _mav_put_float(buf, 4, quat_y);
+    _mav_put_float(buf, 8, quat_z);
+    _mav_put_float(buf, 12, quat_w);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN);
+#else
+    mavlink_set_orientation_quat_tc_t packet;
+    packet.quat_x = quat_x;
+    packet.quat_y = quat_y;
+    packet.quat_z = quat_z;
+    packet.quat_w = quat_w;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_orientation_quat_tc 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 quat_x  Quaternion x component
+ * @param quat_y  Quaternion y component
+ * @param quat_z  Quaternion z component
+ * @param quat_w  Quaternion w component
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_orientation_quat_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float quat_x,float quat_y,float quat_z,float quat_w)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN];
+    _mav_put_float(buf, 0, quat_x);
+    _mav_put_float(buf, 4, quat_y);
+    _mav_put_float(buf, 8, quat_z);
+    _mav_put_float(buf, 12, quat_w);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN);
+#else
+    mavlink_set_orientation_quat_tc_t packet;
+    packet.quat_x = quat_x;
+    packet.quat_y = quat_y;
+    packet.quat_z = quat_z;
+    packet.quat_w = quat_w;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_orientation_quat_tc 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 set_orientation_quat_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_orientation_quat_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_orientation_quat_tc_t* set_orientation_quat_tc)
+{
+    return mavlink_msg_set_orientation_quat_tc_pack(system_id, component_id, msg, set_orientation_quat_tc->quat_x, set_orientation_quat_tc->quat_y, set_orientation_quat_tc->quat_z, set_orientation_quat_tc->quat_w);
+}
+
+/**
+ * @brief Encode a set_orientation_quat_tc 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 set_orientation_quat_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_orientation_quat_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_orientation_quat_tc_t* set_orientation_quat_tc)
+{
+    return mavlink_msg_set_orientation_quat_tc_pack_chan(system_id, component_id, chan, msg, set_orientation_quat_tc->quat_x, set_orientation_quat_tc->quat_y, set_orientation_quat_tc->quat_z, set_orientation_quat_tc->quat_w);
+}
+
+/**
+ * @brief Send a set_orientation_quat_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param quat_x  Quaternion x component
+ * @param quat_y  Quaternion y component
+ * @param quat_z  Quaternion z component
+ * @param quat_w  Quaternion w component
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_orientation_quat_tc_send(mavlink_channel_t chan, float quat_x, float quat_y, float quat_z, float quat_w)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN];
+    _mav_put_float(buf, 0, quat_x);
+    _mav_put_float(buf, 4, quat_y);
+    _mav_put_float(buf, 8, quat_z);
+    _mav_put_float(buf, 12, quat_w);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC, buf, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_CRC);
+#else
+    mavlink_set_orientation_quat_tc_t packet;
+    packet.quat_x = quat_x;
+    packet.quat_y = quat_y;
+    packet.quat_z = quat_z;
+    packet.quat_w = quat_w;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_orientation_quat_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_orientation_quat_tc_send_struct(mavlink_channel_t chan, const mavlink_set_orientation_quat_tc_t* set_orientation_quat_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_orientation_quat_tc_send(chan, set_orientation_quat_tc->quat_x, set_orientation_quat_tc->quat_y, set_orientation_quat_tc->quat_z, set_orientation_quat_tc->quat_w);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC, (const char *)set_orientation_quat_tc, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_orientation_quat_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float quat_x, float quat_y, float quat_z, float quat_w)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, quat_x);
+    _mav_put_float(buf, 4, quat_y);
+    _mav_put_float(buf, 8, quat_z);
+    _mav_put_float(buf, 12, quat_w);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC, buf, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_CRC);
+#else
+    mavlink_set_orientation_quat_tc_t *packet = (mavlink_set_orientation_quat_tc_t *)msgbuf;
+    packet->quat_x = quat_x;
+    packet->quat_y = quat_y;
+    packet->quat_z = quat_z;
+    packet->quat_w = quat_w;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC, (const char *)packet, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_ORIENTATION_QUAT_TC UNPACKING
+
+
+/**
+ * @brief Get field quat_x from set_orientation_quat_tc message
+ *
+ * @return  Quaternion x component
+ */
+static inline float mavlink_msg_set_orientation_quat_tc_get_quat_x(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Get field quat_y from set_orientation_quat_tc message
+ *
+ * @return  Quaternion y component
+ */
+static inline float mavlink_msg_set_orientation_quat_tc_get_quat_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  4);
+}
+
+/**
+ * @brief Get field quat_z from set_orientation_quat_tc message
+ *
+ * @return  Quaternion z component
+ */
+static inline float mavlink_msg_set_orientation_quat_tc_get_quat_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field quat_w from set_orientation_quat_tc message
+ *
+ * @return  Quaternion w component
+ */
+static inline float mavlink_msg_set_orientation_quat_tc_get_quat_w(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Decode a set_orientation_quat_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_orientation_quat_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_orientation_quat_tc_decode(const mavlink_message_t* msg, mavlink_set_orientation_quat_tc_t* set_orientation_quat_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_orientation_quat_tc->quat_x = mavlink_msg_set_orientation_quat_tc_get_quat_x(msg);
+    set_orientation_quat_tc->quat_y = mavlink_msg_set_orientation_quat_tc_get_quat_y(msg);
+    set_orientation_quat_tc->quat_z = mavlink_msg_set_orientation_quat_tc_get_quat_z(msg);
+    set_orientation_quat_tc->quat_w = mavlink_msg_set_orientation_quat_tc_get_quat_w(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN;
+        memset(set_orientation_quat_tc, 0, MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_LEN);
+    memcpy(set_orientation_quat_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_orientation_tc.h b/mavlink_lib/orion/mavlink_msg_set_orientation_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..5169814cd4c7a7afbe6e204bf82fb2d049078fc7
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_orientation_tc.h
@@ -0,0 +1,263 @@
+#pragma once
+// MESSAGE SET_ORIENTATION_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_ORIENTATION_TC 11
+
+
+typedef struct __mavlink_set_orientation_tc_t {
+ float yaw; /*< [deg] Yaw angle*/
+ float pitch; /*< [deg] Pitch angle*/
+ float roll; /*< [deg] Roll angle*/
+} mavlink_set_orientation_tc_t;
+
+#define MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN 12
+#define MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN 12
+#define MAVLINK_MSG_ID_11_LEN 12
+#define MAVLINK_MSG_ID_11_MIN_LEN 12
+
+#define MAVLINK_MSG_ID_SET_ORIENTATION_TC_CRC 71
+#define MAVLINK_MSG_ID_11_CRC 71
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_ORIENTATION_TC { \
+    11, \
+    "SET_ORIENTATION_TC", \
+    3, \
+    {  { "yaw", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_orientation_tc_t, yaw) }, \
+         { "pitch", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_orientation_tc_t, pitch) }, \
+         { "roll", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_set_orientation_tc_t, roll) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_ORIENTATION_TC { \
+    "SET_ORIENTATION_TC", \
+    3, \
+    {  { "yaw", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_orientation_tc_t, yaw) }, \
+         { "pitch", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_orientation_tc_t, pitch) }, \
+         { "roll", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_set_orientation_tc_t, roll) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_orientation_tc 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 yaw [deg] Yaw angle
+ * @param pitch [deg] Pitch angle
+ * @param roll [deg] Roll angle
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_orientation_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float yaw, float pitch, float roll)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN];
+    _mav_put_float(buf, 0, yaw);
+    _mav_put_float(buf, 4, pitch);
+    _mav_put_float(buf, 8, roll);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN);
+#else
+    mavlink_set_orientation_tc_t packet;
+    packet.yaw = yaw;
+    packet.pitch = pitch;
+    packet.roll = roll;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ORIENTATION_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_orientation_tc 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 yaw [deg] Yaw angle
+ * @param pitch [deg] Pitch angle
+ * @param roll [deg] Roll angle
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_orientation_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float yaw,float pitch,float roll)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN];
+    _mav_put_float(buf, 0, yaw);
+    _mav_put_float(buf, 4, pitch);
+    _mav_put_float(buf, 8, roll);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN);
+#else
+    mavlink_set_orientation_tc_t packet;
+    packet.yaw = yaw;
+    packet.pitch = pitch;
+    packet.roll = roll;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ORIENTATION_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_orientation_tc 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 set_orientation_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_orientation_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_orientation_tc_t* set_orientation_tc)
+{
+    return mavlink_msg_set_orientation_tc_pack(system_id, component_id, msg, set_orientation_tc->yaw, set_orientation_tc->pitch, set_orientation_tc->roll);
+}
+
+/**
+ * @brief Encode a set_orientation_tc 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 set_orientation_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_orientation_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_orientation_tc_t* set_orientation_tc)
+{
+    return mavlink_msg_set_orientation_tc_pack_chan(system_id, component_id, chan, msg, set_orientation_tc->yaw, set_orientation_tc->pitch, set_orientation_tc->roll);
+}
+
+/**
+ * @brief Send a set_orientation_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param yaw [deg] Yaw angle
+ * @param pitch [deg] Pitch angle
+ * @param roll [deg] Roll angle
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_orientation_tc_send(mavlink_channel_t chan, float yaw, float pitch, float roll)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN];
+    _mav_put_float(buf, 0, yaw);
+    _mav_put_float(buf, 4, pitch);
+    _mav_put_float(buf, 8, roll);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_TC, buf, MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_CRC);
+#else
+    mavlink_set_orientation_tc_t packet;
+    packet.yaw = yaw;
+    packet.pitch = pitch;
+    packet.roll = roll;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_orientation_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_orientation_tc_send_struct(mavlink_channel_t chan, const mavlink_set_orientation_tc_t* set_orientation_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_orientation_tc_send(chan, set_orientation_tc->yaw, set_orientation_tc->pitch, set_orientation_tc->roll);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_TC, (const char *)set_orientation_tc, MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_orientation_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float yaw, float pitch, float roll)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, yaw);
+    _mav_put_float(buf, 4, pitch);
+    _mav_put_float(buf, 8, roll);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_TC, buf, MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_CRC);
+#else
+    mavlink_set_orientation_tc_t *packet = (mavlink_set_orientation_tc_t *)msgbuf;
+    packet->yaw = yaw;
+    packet->pitch = pitch;
+    packet->roll = roll;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ORIENTATION_TC, (const char *)packet, MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN, MAVLINK_MSG_ID_SET_ORIENTATION_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_ORIENTATION_TC UNPACKING
+
+
+/**
+ * @brief Get field yaw from set_orientation_tc message
+ *
+ * @return [deg] Yaw angle
+ */
+static inline float mavlink_msg_set_orientation_tc_get_yaw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Get field pitch from set_orientation_tc message
+ *
+ * @return [deg] Pitch angle
+ */
+static inline float mavlink_msg_set_orientation_tc_get_pitch(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  4);
+}
+
+/**
+ * @brief Get field roll from set_orientation_tc message
+ *
+ * @return [deg] Roll angle
+ */
+static inline float mavlink_msg_set_orientation_tc_get_roll(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Decode a set_orientation_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_orientation_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_orientation_tc_decode(const mavlink_message_t* msg, mavlink_set_orientation_tc_t* set_orientation_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_orientation_tc->yaw = mavlink_msg_set_orientation_tc_get_yaw(msg);
+    set_orientation_tc->pitch = mavlink_msg_set_orientation_tc_get_pitch(msg);
+    set_orientation_tc->roll = mavlink_msg_set_orientation_tc_get_roll(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN;
+        memset(set_orientation_tc, 0, MAVLINK_MSG_ID_SET_ORIENTATION_TC_LEN);
+    memcpy(set_orientation_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_reference_altitude_tc.h b/mavlink_lib/orion/mavlink_msg_set_reference_altitude_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..a291b0b8da0d1d60e7e30767ade22abc5f35402a
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_reference_altitude_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_REFERENCE_ALTITUDE_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC 9
+
+
+typedef struct __mavlink_set_reference_altitude_tc_t {
+ float ref_altitude; /*< [m] Reference altitude*/
+} mavlink_set_reference_altitude_tc_t;
+
+#define MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN 4
+#define MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN 4
+#define MAVLINK_MSG_ID_9_LEN 4
+#define MAVLINK_MSG_ID_9_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_CRC 113
+#define MAVLINK_MSG_ID_9_CRC 113
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_REFERENCE_ALTITUDE_TC { \
+    9, \
+    "SET_REFERENCE_ALTITUDE_TC", \
+    1, \
+    {  { "ref_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_reference_altitude_tc_t, ref_altitude) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_REFERENCE_ALTITUDE_TC { \
+    "SET_REFERENCE_ALTITUDE_TC", \
+    1, \
+    {  { "ref_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_reference_altitude_tc_t, ref_altitude) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_reference_altitude_tc 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 ref_altitude [m] Reference altitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_reference_altitude_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float ref_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN];
+    _mav_put_float(buf, 0, ref_altitude);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN);
+#else
+    mavlink_set_reference_altitude_tc_t packet;
+    packet.ref_altitude = ref_altitude;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_reference_altitude_tc 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 ref_altitude [m] Reference altitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_reference_altitude_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float ref_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN];
+    _mav_put_float(buf, 0, ref_altitude);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN);
+#else
+    mavlink_set_reference_altitude_tc_t packet;
+    packet.ref_altitude = ref_altitude;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_reference_altitude_tc 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 set_reference_altitude_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_reference_altitude_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_reference_altitude_tc_t* set_reference_altitude_tc)
+{
+    return mavlink_msg_set_reference_altitude_tc_pack(system_id, component_id, msg, set_reference_altitude_tc->ref_altitude);
+}
+
+/**
+ * @brief Encode a set_reference_altitude_tc 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 set_reference_altitude_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_reference_altitude_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_reference_altitude_tc_t* set_reference_altitude_tc)
+{
+    return mavlink_msg_set_reference_altitude_tc_pack_chan(system_id, component_id, chan, msg, set_reference_altitude_tc->ref_altitude);
+}
+
+/**
+ * @brief Send a set_reference_altitude_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param ref_altitude [m] Reference altitude
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_reference_altitude_tc_send(mavlink_channel_t chan, float ref_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN];
+    _mav_put_float(buf, 0, ref_altitude);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC, buf, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_CRC);
+#else
+    mavlink_set_reference_altitude_tc_t packet;
+    packet.ref_altitude = ref_altitude;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_reference_altitude_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_reference_altitude_tc_send_struct(mavlink_channel_t chan, const mavlink_set_reference_altitude_tc_t* set_reference_altitude_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_reference_altitude_tc_send(chan, set_reference_altitude_tc->ref_altitude);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC, (const char *)set_reference_altitude_tc, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_reference_altitude_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float ref_altitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, ref_altitude);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC, buf, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_CRC);
+#else
+    mavlink_set_reference_altitude_tc_t *packet = (mavlink_set_reference_altitude_tc_t *)msgbuf;
+    packet->ref_altitude = ref_altitude;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC, (const char *)packet, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_REFERENCE_ALTITUDE_TC UNPACKING
+
+
+/**
+ * @brief Get field ref_altitude from set_reference_altitude_tc message
+ *
+ * @return [m] Reference altitude
+ */
+static inline float mavlink_msg_set_reference_altitude_tc_get_ref_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_reference_altitude_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_reference_altitude_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_reference_altitude_tc_decode(const mavlink_message_t* msg, mavlink_set_reference_altitude_tc_t* set_reference_altitude_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_reference_altitude_tc->ref_altitude = mavlink_msg_set_reference_altitude_tc_get_ref_altitude(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN;
+        memset(set_reference_altitude_tc, 0, MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_LEN);
+    memcpy(set_reference_altitude_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_reference_temperature_tc.h b/mavlink_lib/orion/mavlink_msg_set_reference_temperature_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..5bb1c529477606617b93eca65726e9580259f832
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_reference_temperature_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_REFERENCE_TEMPERATURE_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC 10
+
+
+typedef struct __mavlink_set_reference_temperature_tc_t {
+ float ref_temp; /*< [degC] Reference temperature*/
+} mavlink_set_reference_temperature_tc_t;
+
+#define MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN 4
+#define MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN 4
+#define MAVLINK_MSG_ID_10_LEN 4
+#define MAVLINK_MSG_ID_10_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_CRC 38
+#define MAVLINK_MSG_ID_10_CRC 38
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_REFERENCE_TEMPERATURE_TC { \
+    10, \
+    "SET_REFERENCE_TEMPERATURE_TC", \
+    1, \
+    {  { "ref_temp", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_reference_temperature_tc_t, ref_temp) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_REFERENCE_TEMPERATURE_TC { \
+    "SET_REFERENCE_TEMPERATURE_TC", \
+    1, \
+    {  { "ref_temp", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_reference_temperature_tc_t, ref_temp) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_reference_temperature_tc 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 ref_temp [degC] Reference temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_reference_temperature_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float ref_temp)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN];
+    _mav_put_float(buf, 0, ref_temp);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN);
+#else
+    mavlink_set_reference_temperature_tc_t packet;
+    packet.ref_temp = ref_temp;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_reference_temperature_tc 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 ref_temp [degC] Reference temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_reference_temperature_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float ref_temp)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN];
+    _mav_put_float(buf, 0, ref_temp);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN);
+#else
+    mavlink_set_reference_temperature_tc_t packet;
+    packet.ref_temp = ref_temp;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_reference_temperature_tc 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 set_reference_temperature_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_reference_temperature_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_reference_temperature_tc_t* set_reference_temperature_tc)
+{
+    return mavlink_msg_set_reference_temperature_tc_pack(system_id, component_id, msg, set_reference_temperature_tc->ref_temp);
+}
+
+/**
+ * @brief Encode a set_reference_temperature_tc 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 set_reference_temperature_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_reference_temperature_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_reference_temperature_tc_t* set_reference_temperature_tc)
+{
+    return mavlink_msg_set_reference_temperature_tc_pack_chan(system_id, component_id, chan, msg, set_reference_temperature_tc->ref_temp);
+}
+
+/**
+ * @brief Send a set_reference_temperature_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param ref_temp [degC] Reference temperature
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_reference_temperature_tc_send(mavlink_channel_t chan, float ref_temp)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN];
+    _mav_put_float(buf, 0, ref_temp);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC, buf, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_CRC);
+#else
+    mavlink_set_reference_temperature_tc_t packet;
+    packet.ref_temp = ref_temp;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_reference_temperature_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_reference_temperature_tc_send_struct(mavlink_channel_t chan, const mavlink_set_reference_temperature_tc_t* set_reference_temperature_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_reference_temperature_tc_send(chan, set_reference_temperature_tc->ref_temp);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC, (const char *)set_reference_temperature_tc, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_reference_temperature_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float ref_temp)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, ref_temp);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC, buf, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_CRC);
+#else
+    mavlink_set_reference_temperature_tc_t *packet = (mavlink_set_reference_temperature_tc_t *)msgbuf;
+    packet->ref_temp = ref_temp;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC, (const char *)packet, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_REFERENCE_TEMPERATURE_TC UNPACKING
+
+
+/**
+ * @brief Get field ref_temp from set_reference_temperature_tc message
+ *
+ * @return [degC] Reference temperature
+ */
+static inline float mavlink_msg_set_reference_temperature_tc_get_ref_temp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_reference_temperature_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_reference_temperature_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_reference_temperature_tc_decode(const mavlink_message_t* msg, mavlink_set_reference_temperature_tc_t* set_reference_temperature_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_reference_temperature_tc->ref_temp = mavlink_msg_set_reference_temperature_tc_get_ref_temp(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN;
+        memset(set_reference_temperature_tc, 0, MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_LEN);
+    memcpy(set_reference_temperature_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_rocket_coordinates_arp_tc.h b/mavlink_lib/orion/mavlink_msg_set_rocket_coordinates_arp_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..1956abb73fb473c943ac152b3cc2d62b9994105a
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_rocket_coordinates_arp_tc.h
@@ -0,0 +1,263 @@
+#pragma once
+// MESSAGE SET_ROCKET_COORDINATES_ARP_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC 64
+
+
+typedef struct __mavlink_set_rocket_coordinates_arp_tc_t {
+ float latitude; /*< [deg] Latitude*/
+ float longitude; /*< [deg] Longitude*/
+ float height; /*< [m] Height*/
+} mavlink_set_rocket_coordinates_arp_tc_t;
+
+#define MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN 12
+#define MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN 12
+#define MAVLINK_MSG_ID_64_LEN 12
+#define MAVLINK_MSG_ID_64_MIN_LEN 12
+
+#define MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_CRC 220
+#define MAVLINK_MSG_ID_64_CRC 220
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_ROCKET_COORDINATES_ARP_TC { \
+    64, \
+    "SET_ROCKET_COORDINATES_ARP_TC", \
+    3, \
+    {  { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_rocket_coordinates_arp_tc_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_rocket_coordinates_arp_tc_t, longitude) }, \
+         { "height", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_set_rocket_coordinates_arp_tc_t, height) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_ROCKET_COORDINATES_ARP_TC { \
+    "SET_ROCKET_COORDINATES_ARP_TC", \
+    3, \
+    {  { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_rocket_coordinates_arp_tc_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_rocket_coordinates_arp_tc_t, longitude) }, \
+         { "height", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_set_rocket_coordinates_arp_tc_t, height) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_rocket_coordinates_arp_tc 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 latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Height
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_rocket_coordinates_arp_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float latitude, float longitude, float height)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+    _mav_put_float(buf, 8, height);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN);
+#else
+    mavlink_set_rocket_coordinates_arp_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_rocket_coordinates_arp_tc 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 latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Height
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_rocket_coordinates_arp_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float latitude,float longitude,float height)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+    _mav_put_float(buf, 8, height);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN);
+#else
+    mavlink_set_rocket_coordinates_arp_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_rocket_coordinates_arp_tc 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 set_rocket_coordinates_arp_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_rocket_coordinates_arp_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_rocket_coordinates_arp_tc_t* set_rocket_coordinates_arp_tc)
+{
+    return mavlink_msg_set_rocket_coordinates_arp_tc_pack(system_id, component_id, msg, set_rocket_coordinates_arp_tc->latitude, set_rocket_coordinates_arp_tc->longitude, set_rocket_coordinates_arp_tc->height);
+}
+
+/**
+ * @brief Encode a set_rocket_coordinates_arp_tc 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 set_rocket_coordinates_arp_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_rocket_coordinates_arp_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_rocket_coordinates_arp_tc_t* set_rocket_coordinates_arp_tc)
+{
+    return mavlink_msg_set_rocket_coordinates_arp_tc_pack_chan(system_id, component_id, chan, msg, set_rocket_coordinates_arp_tc->latitude, set_rocket_coordinates_arp_tc->longitude, set_rocket_coordinates_arp_tc->height);
+}
+
+/**
+ * @brief Send a set_rocket_coordinates_arp_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @param height [m] Height
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_rocket_coordinates_arp_tc_send(mavlink_channel_t chan, float latitude, float longitude, float height)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+    _mav_put_float(buf, 8, height);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC, buf, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_CRC);
+#else
+    mavlink_set_rocket_coordinates_arp_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+    packet.height = height;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_rocket_coordinates_arp_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_rocket_coordinates_arp_tc_send_struct(mavlink_channel_t chan, const mavlink_set_rocket_coordinates_arp_tc_t* set_rocket_coordinates_arp_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_rocket_coordinates_arp_tc_send(chan, set_rocket_coordinates_arp_tc->latitude, set_rocket_coordinates_arp_tc->longitude, set_rocket_coordinates_arp_tc->height);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC, (const char *)set_rocket_coordinates_arp_tc, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_rocket_coordinates_arp_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float latitude, float longitude, float height)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+    _mav_put_float(buf, 8, height);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC, buf, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_CRC);
+#else
+    mavlink_set_rocket_coordinates_arp_tc_t *packet = (mavlink_set_rocket_coordinates_arp_tc_t *)msgbuf;
+    packet->latitude = latitude;
+    packet->longitude = longitude;
+    packet->height = height;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC, (const char *)packet, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_ROCKET_COORDINATES_ARP_TC UNPACKING
+
+
+/**
+ * @brief Get field latitude from set_rocket_coordinates_arp_tc message
+ *
+ * @return [deg] Latitude
+ */
+static inline float mavlink_msg_set_rocket_coordinates_arp_tc_get_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Get field longitude from set_rocket_coordinates_arp_tc message
+ *
+ * @return [deg] Longitude
+ */
+static inline float mavlink_msg_set_rocket_coordinates_arp_tc_get_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  4);
+}
+
+/**
+ * @brief Get field height from set_rocket_coordinates_arp_tc message
+ *
+ * @return [m] Height
+ */
+static inline float mavlink_msg_set_rocket_coordinates_arp_tc_get_height(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Decode a set_rocket_coordinates_arp_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_rocket_coordinates_arp_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_rocket_coordinates_arp_tc_decode(const mavlink_message_t* msg, mavlink_set_rocket_coordinates_arp_tc_t* set_rocket_coordinates_arp_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_rocket_coordinates_arp_tc->latitude = mavlink_msg_set_rocket_coordinates_arp_tc_get_latitude(msg);
+    set_rocket_coordinates_arp_tc->longitude = mavlink_msg_set_rocket_coordinates_arp_tc_get_longitude(msg);
+    set_rocket_coordinates_arp_tc->height = mavlink_msg_set_rocket_coordinates_arp_tc_get_height(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN;
+        memset(set_rocket_coordinates_arp_tc, 0, MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_LEN);
+    memcpy(set_rocket_coordinates_arp_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_servo_angle_tc.h b/mavlink_lib/orion/mavlink_msg_set_servo_angle_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..74f2888721a7ed79d479df991d640deb064d50cc
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_servo_angle_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_SERVO_ANGLE_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC 6
+
+
+typedef struct __mavlink_set_servo_angle_tc_t {
+ float angle; /*<  Servo angle in normalized value [0-1]*/
+ uint8_t servo_id; /*<  A member of the ServosList enum*/
+} mavlink_set_servo_angle_tc_t;
+
+#define MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN 5
+#define MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN 5
+#define MAVLINK_MSG_ID_6_LEN 5
+#define MAVLINK_MSG_ID_6_MIN_LEN 5
+
+#define MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_CRC 215
+#define MAVLINK_MSG_ID_6_CRC 215
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_SERVO_ANGLE_TC { \
+    6, \
+    "SET_SERVO_ANGLE_TC", \
+    2, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_servo_angle_tc_t, servo_id) }, \
+         { "angle", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_servo_angle_tc_t, angle) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_SERVO_ANGLE_TC { \
+    "SET_SERVO_ANGLE_TC", \
+    2, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_servo_angle_tc_t, servo_id) }, \
+         { "angle", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_servo_angle_tc_t, angle) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_servo_angle_tc 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 servo_id  A member of the ServosList enum
+ * @param angle  Servo angle in normalized value [0-1]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_servo_angle_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t servo_id, float angle)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN];
+    _mav_put_float(buf, 0, angle);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN);
+#else
+    mavlink_set_servo_angle_tc_t packet;
+    packet.angle = angle;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_servo_angle_tc 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 servo_id  A member of the ServosList enum
+ * @param angle  Servo angle in normalized value [0-1]
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_servo_angle_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t servo_id,float angle)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN];
+    _mav_put_float(buf, 0, angle);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN);
+#else
+    mavlink_set_servo_angle_tc_t packet;
+    packet.angle = angle;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_servo_angle_tc 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 set_servo_angle_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_servo_angle_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_servo_angle_tc_t* set_servo_angle_tc)
+{
+    return mavlink_msg_set_servo_angle_tc_pack(system_id, component_id, msg, set_servo_angle_tc->servo_id, set_servo_angle_tc->angle);
+}
+
+/**
+ * @brief Encode a set_servo_angle_tc 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 set_servo_angle_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_servo_angle_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_servo_angle_tc_t* set_servo_angle_tc)
+{
+    return mavlink_msg_set_servo_angle_tc_pack_chan(system_id, component_id, chan, msg, set_servo_angle_tc->servo_id, set_servo_angle_tc->angle);
+}
+
+/**
+ * @brief Send a set_servo_angle_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param servo_id  A member of the ServosList enum
+ * @param angle  Servo angle in normalized value [0-1]
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_servo_angle_tc_send(mavlink_channel_t chan, uint8_t servo_id, float angle)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN];
+    _mav_put_float(buf, 0, angle);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC, buf, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_CRC);
+#else
+    mavlink_set_servo_angle_tc_t packet;
+    packet.angle = angle;
+    packet.servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_servo_angle_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_servo_angle_tc_send_struct(mavlink_channel_t chan, const mavlink_set_servo_angle_tc_t* set_servo_angle_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_servo_angle_tc_send(chan, set_servo_angle_tc->servo_id, set_servo_angle_tc->angle);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC, (const char *)set_servo_angle_tc, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_servo_angle_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t servo_id, float angle)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, angle);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC, buf, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_CRC);
+#else
+    mavlink_set_servo_angle_tc_t *packet = (mavlink_set_servo_angle_tc_t *)msgbuf;
+    packet->angle = angle;
+    packet->servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC, (const char *)packet, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_SERVO_ANGLE_TC UNPACKING
+
+
+/**
+ * @brief Get field servo_id from set_servo_angle_tc message
+ *
+ * @return  A member of the ServosList enum
+ */
+static inline uint8_t mavlink_msg_set_servo_angle_tc_get_servo_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  4);
+}
+
+/**
+ * @brief Get field angle from set_servo_angle_tc message
+ *
+ * @return  Servo angle in normalized value [0-1]
+ */
+static inline float mavlink_msg_set_servo_angle_tc_get_angle(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_servo_angle_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_servo_angle_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_servo_angle_tc_decode(const mavlink_message_t* msg, mavlink_set_servo_angle_tc_t* set_servo_angle_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_servo_angle_tc->angle = mavlink_msg_set_servo_angle_tc_get_angle(msg);
+    set_servo_angle_tc->servo_id = mavlink_msg_set_servo_angle_tc_get_servo_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN;
+        memset(set_servo_angle_tc, 0, MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_LEN);
+    memcpy(set_servo_angle_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_stepper_angle_tc.h b/mavlink_lib/orion/mavlink_msg_set_stepper_angle_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..7850e94093721c50cfc9a775568ff7337e785db7
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_stepper_angle_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_STEPPER_ANGLE_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC 60
+
+
+typedef struct __mavlink_set_stepper_angle_tc_t {
+ float angle; /*<  Stepper angle in degrees*/
+ uint8_t stepper_id; /*<  A member of the StepperList enum*/
+} mavlink_set_stepper_angle_tc_t;
+
+#define MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN 5
+#define MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN 5
+#define MAVLINK_MSG_ID_60_LEN 5
+#define MAVLINK_MSG_ID_60_MIN_LEN 5
+
+#define MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_CRC 180
+#define MAVLINK_MSG_ID_60_CRC 180
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_STEPPER_ANGLE_TC { \
+    60, \
+    "SET_STEPPER_ANGLE_TC", \
+    2, \
+    {  { "stepper_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_stepper_angle_tc_t, stepper_id) }, \
+         { "angle", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_stepper_angle_tc_t, angle) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_STEPPER_ANGLE_TC { \
+    "SET_STEPPER_ANGLE_TC", \
+    2, \
+    {  { "stepper_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_stepper_angle_tc_t, stepper_id) }, \
+         { "angle", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_stepper_angle_tc_t, angle) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_stepper_angle_tc 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 stepper_id  A member of the StepperList enum
+ * @param angle  Stepper angle in degrees
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_stepper_angle_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t stepper_id, float angle)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN];
+    _mav_put_float(buf, 0, angle);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN);
+#else
+    mavlink_set_stepper_angle_tc_t packet;
+    packet.angle = angle;
+    packet.stepper_id = stepper_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_stepper_angle_tc 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 stepper_id  A member of the StepperList enum
+ * @param angle  Stepper angle in degrees
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_stepper_angle_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t stepper_id,float angle)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN];
+    _mav_put_float(buf, 0, angle);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN);
+#else
+    mavlink_set_stepper_angle_tc_t packet;
+    packet.angle = angle;
+    packet.stepper_id = stepper_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_stepper_angle_tc 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 set_stepper_angle_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_stepper_angle_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_stepper_angle_tc_t* set_stepper_angle_tc)
+{
+    return mavlink_msg_set_stepper_angle_tc_pack(system_id, component_id, msg, set_stepper_angle_tc->stepper_id, set_stepper_angle_tc->angle);
+}
+
+/**
+ * @brief Encode a set_stepper_angle_tc 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 set_stepper_angle_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_stepper_angle_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_stepper_angle_tc_t* set_stepper_angle_tc)
+{
+    return mavlink_msg_set_stepper_angle_tc_pack_chan(system_id, component_id, chan, msg, set_stepper_angle_tc->stepper_id, set_stepper_angle_tc->angle);
+}
+
+/**
+ * @brief Send a set_stepper_angle_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param stepper_id  A member of the StepperList enum
+ * @param angle  Stepper angle in degrees
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_stepper_angle_tc_send(mavlink_channel_t chan, uint8_t stepper_id, float angle)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN];
+    _mav_put_float(buf, 0, angle);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC, buf, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_CRC);
+#else
+    mavlink_set_stepper_angle_tc_t packet;
+    packet.angle = angle;
+    packet.stepper_id = stepper_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_stepper_angle_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_stepper_angle_tc_send_struct(mavlink_channel_t chan, const mavlink_set_stepper_angle_tc_t* set_stepper_angle_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_stepper_angle_tc_send(chan, set_stepper_angle_tc->stepper_id, set_stepper_angle_tc->angle);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC, (const char *)set_stepper_angle_tc, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_stepper_angle_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t stepper_id, float angle)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, angle);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC, buf, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_CRC);
+#else
+    mavlink_set_stepper_angle_tc_t *packet = (mavlink_set_stepper_angle_tc_t *)msgbuf;
+    packet->angle = angle;
+    packet->stepper_id = stepper_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC, (const char *)packet, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_STEPPER_ANGLE_TC UNPACKING
+
+
+/**
+ * @brief Get field stepper_id from set_stepper_angle_tc message
+ *
+ * @return  A member of the StepperList enum
+ */
+static inline uint8_t mavlink_msg_set_stepper_angle_tc_get_stepper_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  4);
+}
+
+/**
+ * @brief Get field angle from set_stepper_angle_tc message
+ *
+ * @return  Stepper angle in degrees
+ */
+static inline float mavlink_msg_set_stepper_angle_tc_get_angle(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_stepper_angle_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_stepper_angle_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_stepper_angle_tc_decode(const mavlink_message_t* msg, mavlink_set_stepper_angle_tc_t* set_stepper_angle_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_stepper_angle_tc->angle = mavlink_msg_set_stepper_angle_tc_get_angle(msg);
+    set_stepper_angle_tc->stepper_id = mavlink_msg_set_stepper_angle_tc_get_stepper_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN;
+        memset(set_stepper_angle_tc, 0, MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_LEN);
+    memcpy(set_stepper_angle_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_stepper_multiplier_tc.h b/mavlink_lib/orion/mavlink_msg_set_stepper_multiplier_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..69270ff6d681e252a38e07e7cc0133244bf03d43
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_stepper_multiplier_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_STEPPER_MULTIPLIER_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC 62
+
+
+typedef struct __mavlink_set_stepper_multiplier_tc_t {
+ float multiplier; /*<  Multiplier*/
+ uint8_t stepper_id; /*<  A member of the StepperList enum*/
+} mavlink_set_stepper_multiplier_tc_t;
+
+#define MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN 5
+#define MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN 5
+#define MAVLINK_MSG_ID_62_LEN 5
+#define MAVLINK_MSG_ID_62_MIN_LEN 5
+
+#define MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_CRC 173
+#define MAVLINK_MSG_ID_62_CRC 173
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_STEPPER_MULTIPLIER_TC { \
+    62, \
+    "SET_STEPPER_MULTIPLIER_TC", \
+    2, \
+    {  { "stepper_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_stepper_multiplier_tc_t, stepper_id) }, \
+         { "multiplier", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_stepper_multiplier_tc_t, multiplier) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_STEPPER_MULTIPLIER_TC { \
+    "SET_STEPPER_MULTIPLIER_TC", \
+    2, \
+    {  { "stepper_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_stepper_multiplier_tc_t, stepper_id) }, \
+         { "multiplier", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_stepper_multiplier_tc_t, multiplier) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_stepper_multiplier_tc 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 stepper_id  A member of the StepperList enum
+ * @param multiplier  Multiplier
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_stepper_multiplier_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t stepper_id, float multiplier)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN];
+    _mav_put_float(buf, 0, multiplier);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN);
+#else
+    mavlink_set_stepper_multiplier_tc_t packet;
+    packet.multiplier = multiplier;
+    packet.stepper_id = stepper_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_stepper_multiplier_tc 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 stepper_id  A member of the StepperList enum
+ * @param multiplier  Multiplier
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_stepper_multiplier_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t stepper_id,float multiplier)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN];
+    _mav_put_float(buf, 0, multiplier);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN);
+#else
+    mavlink_set_stepper_multiplier_tc_t packet;
+    packet.multiplier = multiplier;
+    packet.stepper_id = stepper_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_stepper_multiplier_tc 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 set_stepper_multiplier_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_stepper_multiplier_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_stepper_multiplier_tc_t* set_stepper_multiplier_tc)
+{
+    return mavlink_msg_set_stepper_multiplier_tc_pack(system_id, component_id, msg, set_stepper_multiplier_tc->stepper_id, set_stepper_multiplier_tc->multiplier);
+}
+
+/**
+ * @brief Encode a set_stepper_multiplier_tc 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 set_stepper_multiplier_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_stepper_multiplier_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_stepper_multiplier_tc_t* set_stepper_multiplier_tc)
+{
+    return mavlink_msg_set_stepper_multiplier_tc_pack_chan(system_id, component_id, chan, msg, set_stepper_multiplier_tc->stepper_id, set_stepper_multiplier_tc->multiplier);
+}
+
+/**
+ * @brief Send a set_stepper_multiplier_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param stepper_id  A member of the StepperList enum
+ * @param multiplier  Multiplier
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_stepper_multiplier_tc_send(mavlink_channel_t chan, uint8_t stepper_id, float multiplier)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN];
+    _mav_put_float(buf, 0, multiplier);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC, buf, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_CRC);
+#else
+    mavlink_set_stepper_multiplier_tc_t packet;
+    packet.multiplier = multiplier;
+    packet.stepper_id = stepper_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_stepper_multiplier_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_stepper_multiplier_tc_send_struct(mavlink_channel_t chan, const mavlink_set_stepper_multiplier_tc_t* set_stepper_multiplier_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_stepper_multiplier_tc_send(chan, set_stepper_multiplier_tc->stepper_id, set_stepper_multiplier_tc->multiplier);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC, (const char *)set_stepper_multiplier_tc, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_stepper_multiplier_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t stepper_id, float multiplier)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, multiplier);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC, buf, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_CRC);
+#else
+    mavlink_set_stepper_multiplier_tc_t *packet = (mavlink_set_stepper_multiplier_tc_t *)msgbuf;
+    packet->multiplier = multiplier;
+    packet->stepper_id = stepper_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC, (const char *)packet, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_STEPPER_MULTIPLIER_TC UNPACKING
+
+
+/**
+ * @brief Get field stepper_id from set_stepper_multiplier_tc message
+ *
+ * @return  A member of the StepperList enum
+ */
+static inline uint8_t mavlink_msg_set_stepper_multiplier_tc_get_stepper_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  4);
+}
+
+/**
+ * @brief Get field multiplier from set_stepper_multiplier_tc message
+ *
+ * @return  Multiplier
+ */
+static inline float mavlink_msg_set_stepper_multiplier_tc_get_multiplier(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_stepper_multiplier_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_stepper_multiplier_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_stepper_multiplier_tc_decode(const mavlink_message_t* msg, mavlink_set_stepper_multiplier_tc_t* set_stepper_multiplier_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_stepper_multiplier_tc->multiplier = mavlink_msg_set_stepper_multiplier_tc_get_multiplier(msg);
+    set_stepper_multiplier_tc->stepper_id = mavlink_msg_set_stepper_multiplier_tc_get_stepper_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN;
+        memset(set_stepper_multiplier_tc, 0, MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_LEN);
+    memcpy(set_stepper_multiplier_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_stepper_steps_tc.h b/mavlink_lib/orion/mavlink_msg_set_stepper_steps_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..863b69612c9411bc391b21bb3b5ec31fcf532e5b
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_stepper_steps_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_STEPPER_STEPS_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC 61
+
+
+typedef struct __mavlink_set_stepper_steps_tc_t {
+ float steps; /*<  Number of steps*/
+ uint8_t stepper_id; /*<  A member of the StepperList enum*/
+} mavlink_set_stepper_steps_tc_t;
+
+#define MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN 5
+#define MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN 5
+#define MAVLINK_MSG_ID_61_LEN 5
+#define MAVLINK_MSG_ID_61_MIN_LEN 5
+
+#define MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_CRC 246
+#define MAVLINK_MSG_ID_61_CRC 246
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_STEPPER_STEPS_TC { \
+    61, \
+    "SET_STEPPER_STEPS_TC", \
+    2, \
+    {  { "stepper_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_stepper_steps_tc_t, stepper_id) }, \
+         { "steps", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_stepper_steps_tc_t, steps) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_STEPPER_STEPS_TC { \
+    "SET_STEPPER_STEPS_TC", \
+    2, \
+    {  { "stepper_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_stepper_steps_tc_t, stepper_id) }, \
+         { "steps", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_stepper_steps_tc_t, steps) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_stepper_steps_tc 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 stepper_id  A member of the StepperList enum
+ * @param steps  Number of steps
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_stepper_steps_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t stepper_id, float steps)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN];
+    _mav_put_float(buf, 0, steps);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN);
+#else
+    mavlink_set_stepper_steps_tc_t packet;
+    packet.steps = steps;
+    packet.stepper_id = stepper_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_stepper_steps_tc 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 stepper_id  A member of the StepperList enum
+ * @param steps  Number of steps
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_stepper_steps_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t stepper_id,float steps)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN];
+    _mav_put_float(buf, 0, steps);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN);
+#else
+    mavlink_set_stepper_steps_tc_t packet;
+    packet.steps = steps;
+    packet.stepper_id = stepper_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_stepper_steps_tc 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 set_stepper_steps_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_stepper_steps_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_stepper_steps_tc_t* set_stepper_steps_tc)
+{
+    return mavlink_msg_set_stepper_steps_tc_pack(system_id, component_id, msg, set_stepper_steps_tc->stepper_id, set_stepper_steps_tc->steps);
+}
+
+/**
+ * @brief Encode a set_stepper_steps_tc 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 set_stepper_steps_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_stepper_steps_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_stepper_steps_tc_t* set_stepper_steps_tc)
+{
+    return mavlink_msg_set_stepper_steps_tc_pack_chan(system_id, component_id, chan, msg, set_stepper_steps_tc->stepper_id, set_stepper_steps_tc->steps);
+}
+
+/**
+ * @brief Send a set_stepper_steps_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param stepper_id  A member of the StepperList enum
+ * @param steps  Number of steps
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_stepper_steps_tc_send(mavlink_channel_t chan, uint8_t stepper_id, float steps)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN];
+    _mav_put_float(buf, 0, steps);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC, buf, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_CRC);
+#else
+    mavlink_set_stepper_steps_tc_t packet;
+    packet.steps = steps;
+    packet.stepper_id = stepper_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_stepper_steps_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_stepper_steps_tc_send_struct(mavlink_channel_t chan, const mavlink_set_stepper_steps_tc_t* set_stepper_steps_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_stepper_steps_tc_send(chan, set_stepper_steps_tc->stepper_id, set_stepper_steps_tc->steps);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC, (const char *)set_stepper_steps_tc, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_stepper_steps_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t stepper_id, float steps)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, steps);
+    _mav_put_uint8_t(buf, 4, stepper_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC, buf, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_CRC);
+#else
+    mavlink_set_stepper_steps_tc_t *packet = (mavlink_set_stepper_steps_tc_t *)msgbuf;
+    packet->steps = steps;
+    packet->stepper_id = stepper_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC, (const char *)packet, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_STEPPER_STEPS_TC UNPACKING
+
+
+/**
+ * @brief Get field stepper_id from set_stepper_steps_tc message
+ *
+ * @return  A member of the StepperList enum
+ */
+static inline uint8_t mavlink_msg_set_stepper_steps_tc_get_stepper_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  4);
+}
+
+/**
+ * @brief Get field steps from set_stepper_steps_tc message
+ *
+ * @return  Number of steps
+ */
+static inline float mavlink_msg_set_stepper_steps_tc_get_steps(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_stepper_steps_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_stepper_steps_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_stepper_steps_tc_decode(const mavlink_message_t* msg, mavlink_set_stepper_steps_tc_t* set_stepper_steps_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_stepper_steps_tc->steps = mavlink_msg_set_stepper_steps_tc_get_steps(msg);
+    set_stepper_steps_tc->stepper_id = mavlink_msg_set_stepper_steps_tc_get_stepper_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN;
+        memset(set_stepper_steps_tc, 0, MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_LEN);
+    memcpy(set_stepper_steps_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_target_coordinates_tc.h b/mavlink_lib/orion/mavlink_msg_set_target_coordinates_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..7b7b2cd06cf1404af2933543c3bf45dd00b66072
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_target_coordinates_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_TARGET_COORDINATES_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC 16
+
+
+typedef struct __mavlink_set_target_coordinates_tc_t {
+ float latitude; /*< [deg] Latitude*/
+ float longitude; /*< [deg] Longitude*/
+} mavlink_set_target_coordinates_tc_t;
+
+#define MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN 8
+#define MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN 8
+#define MAVLINK_MSG_ID_16_LEN 8
+#define MAVLINK_MSG_ID_16_MIN_LEN 8
+
+#define MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC 81
+#define MAVLINK_MSG_ID_16_CRC 81
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_TARGET_COORDINATES_TC { \
+    16, \
+    "SET_TARGET_COORDINATES_TC", \
+    2, \
+    {  { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_target_coordinates_tc_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_target_coordinates_tc_t, longitude) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_TARGET_COORDINATES_TC { \
+    "SET_TARGET_COORDINATES_TC", \
+    2, \
+    {  { "latitude", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_target_coordinates_tc_t, latitude) }, \
+         { "longitude", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_set_target_coordinates_tc_t, longitude) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_target_coordinates_tc 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 latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_target_coordinates_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN);
+#else
+    mavlink_set_target_coordinates_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_target_coordinates_tc 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 latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_target_coordinates_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   float latitude,float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN);
+#else
+    mavlink_set_target_coordinates_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_target_coordinates_tc 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 set_target_coordinates_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_target_coordinates_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_target_coordinates_tc_t* set_target_coordinates_tc)
+{
+    return mavlink_msg_set_target_coordinates_tc_pack(system_id, component_id, msg, set_target_coordinates_tc->latitude, set_target_coordinates_tc->longitude);
+}
+
+/**
+ * @brief Encode a set_target_coordinates_tc 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 set_target_coordinates_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_target_coordinates_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_target_coordinates_tc_t* set_target_coordinates_tc)
+{
+    return mavlink_msg_set_target_coordinates_tc_pack_chan(system_id, component_id, chan, msg, set_target_coordinates_tc->latitude, set_target_coordinates_tc->longitude);
+}
+
+/**
+ * @brief Send a set_target_coordinates_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param latitude [deg] Latitude
+ * @param longitude [deg] Longitude
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_target_coordinates_tc_send(mavlink_channel_t chan, float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN];
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC, buf, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC);
+#else
+    mavlink_set_target_coordinates_tc_t packet;
+    packet.latitude = latitude;
+    packet.longitude = longitude;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_target_coordinates_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_target_coordinates_tc_send_struct(mavlink_channel_t chan, const mavlink_set_target_coordinates_tc_t* set_target_coordinates_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_target_coordinates_tc_send(chan, set_target_coordinates_tc->latitude, set_target_coordinates_tc->longitude);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC, (const char *)set_target_coordinates_tc, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_target_coordinates_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  float latitude, float longitude)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, latitude);
+    _mav_put_float(buf, 4, longitude);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC, buf, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC);
+#else
+    mavlink_set_target_coordinates_tc_t *packet = (mavlink_set_target_coordinates_tc_t *)msgbuf;
+    packet->latitude = latitude;
+    packet->longitude = longitude;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC, (const char *)packet, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_TARGET_COORDINATES_TC UNPACKING
+
+
+/**
+ * @brief Get field latitude from set_target_coordinates_tc message
+ *
+ * @return [deg] Latitude
+ */
+static inline float mavlink_msg_set_target_coordinates_tc_get_latitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Get field longitude from set_target_coordinates_tc message
+ *
+ * @return [deg] Longitude
+ */
+static inline float mavlink_msg_set_target_coordinates_tc_get_longitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  4);
+}
+
+/**
+ * @brief Decode a set_target_coordinates_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_target_coordinates_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_target_coordinates_tc_decode(const mavlink_message_t* msg, mavlink_set_target_coordinates_tc_t* set_target_coordinates_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_target_coordinates_tc->latitude = mavlink_msg_set_target_coordinates_tc_get_latitude(msg);
+    set_target_coordinates_tc->longitude = mavlink_msg_set_target_coordinates_tc_get_longitude(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN;
+        memset(set_target_coordinates_tc, 0, MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_LEN);
+    memcpy(set_target_coordinates_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_set_valve_maximum_aperture_tc.h b/mavlink_lib/orion/mavlink_msg_set_valve_maximum_aperture_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..a29774f98af65e6c8981a896b79cc4c9bcc42574
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_set_valve_maximum_aperture_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_VALVE_MAXIMUM_APERTURE_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC 31
+
+
+typedef struct __mavlink_set_valve_maximum_aperture_tc_t {
+ float maximum_aperture; /*<  Maximum aperture*/
+ uint8_t servo_id; /*<  A member of the ServosList enum*/
+} mavlink_set_valve_maximum_aperture_tc_t;
+
+#define MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN 5
+#define MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN 5
+#define MAVLINK_MSG_ID_31_LEN 5
+#define MAVLINK_MSG_ID_31_MIN_LEN 5
+
+#define MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_CRC 22
+#define MAVLINK_MSG_ID_31_CRC 22
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_VALVE_MAXIMUM_APERTURE_TC { \
+    31, \
+    "SET_VALVE_MAXIMUM_APERTURE_TC", \
+    2, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_valve_maximum_aperture_tc_t, servo_id) }, \
+         { "maximum_aperture", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_valve_maximum_aperture_tc_t, maximum_aperture) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SET_VALVE_MAXIMUM_APERTURE_TC { \
+    "SET_VALVE_MAXIMUM_APERTURE_TC", \
+    2, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 4, offsetof(mavlink_set_valve_maximum_aperture_tc_t, servo_id) }, \
+         { "maximum_aperture", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_set_valve_maximum_aperture_tc_t, maximum_aperture) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a set_valve_maximum_aperture_tc 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 servo_id  A member of the ServosList enum
+ * @param maximum_aperture  Maximum aperture
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_valve_maximum_aperture_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t servo_id, float maximum_aperture)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN];
+    _mav_put_float(buf, 0, maximum_aperture);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN);
+#else
+    mavlink_set_valve_maximum_aperture_tc_t packet;
+    packet.maximum_aperture = maximum_aperture;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_CRC);
+}
+
+/**
+ * @brief Pack a set_valve_maximum_aperture_tc 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 servo_id  A member of the ServosList enum
+ * @param maximum_aperture  Maximum aperture
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_set_valve_maximum_aperture_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t servo_id,float maximum_aperture)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN];
+    _mav_put_float(buf, 0, maximum_aperture);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN);
+#else
+    mavlink_set_valve_maximum_aperture_tc_t packet;
+    packet.maximum_aperture = maximum_aperture;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_CRC);
+}
+
+/**
+ * @brief Encode a set_valve_maximum_aperture_tc 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 set_valve_maximum_aperture_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_valve_maximum_aperture_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_valve_maximum_aperture_tc_t* set_valve_maximum_aperture_tc)
+{
+    return mavlink_msg_set_valve_maximum_aperture_tc_pack(system_id, component_id, msg, set_valve_maximum_aperture_tc->servo_id, set_valve_maximum_aperture_tc->maximum_aperture);
+}
+
+/**
+ * @brief Encode a set_valve_maximum_aperture_tc 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 set_valve_maximum_aperture_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_set_valve_maximum_aperture_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_valve_maximum_aperture_tc_t* set_valve_maximum_aperture_tc)
+{
+    return mavlink_msg_set_valve_maximum_aperture_tc_pack_chan(system_id, component_id, chan, msg, set_valve_maximum_aperture_tc->servo_id, set_valve_maximum_aperture_tc->maximum_aperture);
+}
+
+/**
+ * @brief Send a set_valve_maximum_aperture_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param servo_id  A member of the ServosList enum
+ * @param maximum_aperture  Maximum aperture
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_set_valve_maximum_aperture_tc_send(mavlink_channel_t chan, uint8_t servo_id, float maximum_aperture)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN];
+    _mav_put_float(buf, 0, maximum_aperture);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC, buf, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_CRC);
+#else
+    mavlink_set_valve_maximum_aperture_tc_t packet;
+    packet.maximum_aperture = maximum_aperture;
+    packet.servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC, (const char *)&packet, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a set_valve_maximum_aperture_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_set_valve_maximum_aperture_tc_send_struct(mavlink_channel_t chan, const mavlink_set_valve_maximum_aperture_tc_t* set_valve_maximum_aperture_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_set_valve_maximum_aperture_tc_send(chan, set_valve_maximum_aperture_tc->servo_id, set_valve_maximum_aperture_tc->maximum_aperture);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC, (const char *)set_valve_maximum_aperture_tc, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_set_valve_maximum_aperture_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t servo_id, float maximum_aperture)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_float(buf, 0, maximum_aperture);
+    _mav_put_uint8_t(buf, 4, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC, buf, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_CRC);
+#else
+    mavlink_set_valve_maximum_aperture_tc_t *packet = (mavlink_set_valve_maximum_aperture_tc_t *)msgbuf;
+    packet->maximum_aperture = maximum_aperture;
+    packet->servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC, (const char *)packet, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SET_VALVE_MAXIMUM_APERTURE_TC UNPACKING
+
+
+/**
+ * @brief Get field servo_id from set_valve_maximum_aperture_tc message
+ *
+ * @return  A member of the ServosList enum
+ */
+static inline uint8_t mavlink_msg_set_valve_maximum_aperture_tc_get_servo_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  4);
+}
+
+/**
+ * @brief Get field maximum_aperture from set_valve_maximum_aperture_tc message
+ *
+ * @return  Maximum aperture
+ */
+static inline float mavlink_msg_set_valve_maximum_aperture_tc_get_maximum_aperture(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  0);
+}
+
+/**
+ * @brief Decode a set_valve_maximum_aperture_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param set_valve_maximum_aperture_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_set_valve_maximum_aperture_tc_decode(const mavlink_message_t* msg, mavlink_set_valve_maximum_aperture_tc_t* set_valve_maximum_aperture_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    set_valve_maximum_aperture_tc->maximum_aperture = mavlink_msg_set_valve_maximum_aperture_tc_get_maximum_aperture(msg);
+    set_valve_maximum_aperture_tc->servo_id = mavlink_msg_set_valve_maximum_aperture_tc_get_servo_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN? msg->len : MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN;
+        memset(set_valve_maximum_aperture_tc, 0, MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_LEN);
+    memcpy(set_valve_maximum_aperture_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_sys_tm.h b/mavlink_lib/orion/mavlink_msg_sys_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..4bbfdfedc17a6fc46c7120e2b3ff66956407e676
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_sys_tm.h
@@ -0,0 +1,413 @@
+#pragma once
+// MESSAGE SYS_TM PACKING
+
+#define MAVLINK_MSG_ID_SYS_TM 200
+
+
+typedef struct __mavlink_sys_tm_t {
+ uint64_t timestamp; /*< [us] Timestamp*/
+ uint8_t logger; /*<  True if the logger started correctly*/
+ uint8_t event_broker; /*<  True if the event broker started correctly*/
+ uint8_t radio; /*<  True if the radio started correctly*/
+ uint8_t sensors; /*<  True if the sensors started correctly*/
+ uint8_t actuators; /*<  True if the sensors started correctly*/
+ uint8_t pin_handler; /*<  True if the pin observer started correctly*/
+ uint8_t can_handler; /*<  True if the can handler started correctly*/
+ uint8_t scheduler; /*<  True if the board scheduler is running*/
+} mavlink_sys_tm_t;
+
+#define MAVLINK_MSG_ID_SYS_TM_LEN 16
+#define MAVLINK_MSG_ID_SYS_TM_MIN_LEN 16
+#define MAVLINK_MSG_ID_200_LEN 16
+#define MAVLINK_MSG_ID_200_MIN_LEN 16
+
+#define MAVLINK_MSG_ID_SYS_TM_CRC 48
+#define MAVLINK_MSG_ID_200_CRC 48
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SYS_TM { \
+    200, \
+    "SYS_TM", \
+    9, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_sys_tm_t, timestamp) }, \
+         { "logger", NULL, MAVLINK_TYPE_UINT8_T, 0, 8, offsetof(mavlink_sys_tm_t, logger) }, \
+         { "event_broker", NULL, MAVLINK_TYPE_UINT8_T, 0, 9, offsetof(mavlink_sys_tm_t, event_broker) }, \
+         { "radio", NULL, MAVLINK_TYPE_UINT8_T, 0, 10, offsetof(mavlink_sys_tm_t, radio) }, \
+         { "sensors", NULL, MAVLINK_TYPE_UINT8_T, 0, 11, offsetof(mavlink_sys_tm_t, sensors) }, \
+         { "actuators", NULL, MAVLINK_TYPE_UINT8_T, 0, 12, offsetof(mavlink_sys_tm_t, actuators) }, \
+         { "pin_handler", NULL, MAVLINK_TYPE_UINT8_T, 0, 13, offsetof(mavlink_sys_tm_t, pin_handler) }, \
+         { "can_handler", NULL, MAVLINK_TYPE_UINT8_T, 0, 14, offsetof(mavlink_sys_tm_t, can_handler) }, \
+         { "scheduler", NULL, MAVLINK_TYPE_UINT8_T, 0, 15, offsetof(mavlink_sys_tm_t, scheduler) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SYS_TM { \
+    "SYS_TM", \
+    9, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_sys_tm_t, timestamp) }, \
+         { "logger", NULL, MAVLINK_TYPE_UINT8_T, 0, 8, offsetof(mavlink_sys_tm_t, logger) }, \
+         { "event_broker", NULL, MAVLINK_TYPE_UINT8_T, 0, 9, offsetof(mavlink_sys_tm_t, event_broker) }, \
+         { "radio", NULL, MAVLINK_TYPE_UINT8_T, 0, 10, offsetof(mavlink_sys_tm_t, radio) }, \
+         { "sensors", NULL, MAVLINK_TYPE_UINT8_T, 0, 11, offsetof(mavlink_sys_tm_t, sensors) }, \
+         { "actuators", NULL, MAVLINK_TYPE_UINT8_T, 0, 12, offsetof(mavlink_sys_tm_t, actuators) }, \
+         { "pin_handler", NULL, MAVLINK_TYPE_UINT8_T, 0, 13, offsetof(mavlink_sys_tm_t, pin_handler) }, \
+         { "can_handler", NULL, MAVLINK_TYPE_UINT8_T, 0, 14, offsetof(mavlink_sys_tm_t, can_handler) }, \
+         { "scheduler", NULL, MAVLINK_TYPE_UINT8_T, 0, 15, offsetof(mavlink_sys_tm_t, scheduler) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a sys_tm 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 timestamp [us] Timestamp
+ * @param logger  True if the logger started correctly
+ * @param event_broker  True if the event broker started correctly
+ * @param radio  True if the radio started correctly
+ * @param sensors  True if the sensors started correctly
+ * @param actuators  True if the sensors started correctly
+ * @param pin_handler  True if the pin observer started correctly
+ * @param can_handler  True if the can handler started correctly
+ * @param scheduler  True if the board scheduler is running
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_sys_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint8_t logger, uint8_t event_broker, uint8_t radio, uint8_t sensors, uint8_t actuators, uint8_t pin_handler, uint8_t can_handler, uint8_t scheduler)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SYS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint8_t(buf, 8, logger);
+    _mav_put_uint8_t(buf, 9, event_broker);
+    _mav_put_uint8_t(buf, 10, radio);
+    _mav_put_uint8_t(buf, 11, sensors);
+    _mav_put_uint8_t(buf, 12, actuators);
+    _mav_put_uint8_t(buf, 13, pin_handler);
+    _mav_put_uint8_t(buf, 14, can_handler);
+    _mav_put_uint8_t(buf, 15, scheduler);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SYS_TM_LEN);
+#else
+    mavlink_sys_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.logger = logger;
+    packet.event_broker = event_broker;
+    packet.radio = radio;
+    packet.sensors = sensors;
+    packet.actuators = actuators;
+    packet.pin_handler = pin_handler;
+    packet.can_handler = can_handler;
+    packet.scheduler = scheduler;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SYS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SYS_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SYS_TM_MIN_LEN, MAVLINK_MSG_ID_SYS_TM_LEN, MAVLINK_MSG_ID_SYS_TM_CRC);
+}
+
+/**
+ * @brief Pack a sys_tm 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 timestamp [us] Timestamp
+ * @param logger  True if the logger started correctly
+ * @param event_broker  True if the event broker started correctly
+ * @param radio  True if the radio started correctly
+ * @param sensors  True if the sensors started correctly
+ * @param actuators  True if the sensors started correctly
+ * @param pin_handler  True if the pin observer started correctly
+ * @param can_handler  True if the can handler started correctly
+ * @param scheduler  True if the board scheduler is running
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_sys_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint8_t logger,uint8_t event_broker,uint8_t radio,uint8_t sensors,uint8_t actuators,uint8_t pin_handler,uint8_t can_handler,uint8_t scheduler)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SYS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint8_t(buf, 8, logger);
+    _mav_put_uint8_t(buf, 9, event_broker);
+    _mav_put_uint8_t(buf, 10, radio);
+    _mav_put_uint8_t(buf, 11, sensors);
+    _mav_put_uint8_t(buf, 12, actuators);
+    _mav_put_uint8_t(buf, 13, pin_handler);
+    _mav_put_uint8_t(buf, 14, can_handler);
+    _mav_put_uint8_t(buf, 15, scheduler);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SYS_TM_LEN);
+#else
+    mavlink_sys_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.logger = logger;
+    packet.event_broker = event_broker;
+    packet.radio = radio;
+    packet.sensors = sensors;
+    packet.actuators = actuators;
+    packet.pin_handler = pin_handler;
+    packet.can_handler = can_handler;
+    packet.scheduler = scheduler;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SYS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SYS_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SYS_TM_MIN_LEN, MAVLINK_MSG_ID_SYS_TM_LEN, MAVLINK_MSG_ID_SYS_TM_CRC);
+}
+
+/**
+ * @brief Encode a sys_tm 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 sys_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_sys_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_sys_tm_t* sys_tm)
+{
+    return mavlink_msg_sys_tm_pack(system_id, component_id, msg, sys_tm->timestamp, sys_tm->logger, sys_tm->event_broker, sys_tm->radio, sys_tm->sensors, sys_tm->actuators, sys_tm->pin_handler, sys_tm->can_handler, sys_tm->scheduler);
+}
+
+/**
+ * @brief Encode a sys_tm 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 sys_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_sys_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_sys_tm_t* sys_tm)
+{
+    return mavlink_msg_sys_tm_pack_chan(system_id, component_id, chan, msg, sys_tm->timestamp, sys_tm->logger, sys_tm->event_broker, sys_tm->radio, sys_tm->sensors, sys_tm->actuators, sys_tm->pin_handler, sys_tm->can_handler, sys_tm->scheduler);
+}
+
+/**
+ * @brief Send a sys_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] Timestamp
+ * @param logger  True if the logger started correctly
+ * @param event_broker  True if the event broker started correctly
+ * @param radio  True if the radio started correctly
+ * @param sensors  True if the sensors started correctly
+ * @param actuators  True if the sensors started correctly
+ * @param pin_handler  True if the pin observer started correctly
+ * @param can_handler  True if the can handler started correctly
+ * @param scheduler  True if the board scheduler is running
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_sys_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t logger, uint8_t event_broker, uint8_t radio, uint8_t sensors, uint8_t actuators, uint8_t pin_handler, uint8_t can_handler, uint8_t scheduler)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SYS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint8_t(buf, 8, logger);
+    _mav_put_uint8_t(buf, 9, event_broker);
+    _mav_put_uint8_t(buf, 10, radio);
+    _mav_put_uint8_t(buf, 11, sensors);
+    _mav_put_uint8_t(buf, 12, actuators);
+    _mav_put_uint8_t(buf, 13, pin_handler);
+    _mav_put_uint8_t(buf, 14, can_handler);
+    _mav_put_uint8_t(buf, 15, scheduler);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYS_TM, buf, MAVLINK_MSG_ID_SYS_TM_MIN_LEN, MAVLINK_MSG_ID_SYS_TM_LEN, MAVLINK_MSG_ID_SYS_TM_CRC);
+#else
+    mavlink_sys_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.logger = logger;
+    packet.event_broker = event_broker;
+    packet.radio = radio;
+    packet.sensors = sensors;
+    packet.actuators = actuators;
+    packet.pin_handler = pin_handler;
+    packet.can_handler = can_handler;
+    packet.scheduler = scheduler;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYS_TM, (const char *)&packet, MAVLINK_MSG_ID_SYS_TM_MIN_LEN, MAVLINK_MSG_ID_SYS_TM_LEN, MAVLINK_MSG_ID_SYS_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a sys_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_sys_tm_send_struct(mavlink_channel_t chan, const mavlink_sys_tm_t* sys_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_sys_tm_send(chan, sys_tm->timestamp, sys_tm->logger, sys_tm->event_broker, sys_tm->radio, sys_tm->sensors, sys_tm->actuators, sys_tm->pin_handler, sys_tm->can_handler, sys_tm->scheduler);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYS_TM, (const char *)sys_tm, MAVLINK_MSG_ID_SYS_TM_MIN_LEN, MAVLINK_MSG_ID_SYS_TM_LEN, MAVLINK_MSG_ID_SYS_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SYS_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_sys_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint8_t logger, uint8_t event_broker, uint8_t radio, uint8_t sensors, uint8_t actuators, uint8_t pin_handler, uint8_t can_handler, uint8_t scheduler)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint8_t(buf, 8, logger);
+    _mav_put_uint8_t(buf, 9, event_broker);
+    _mav_put_uint8_t(buf, 10, radio);
+    _mav_put_uint8_t(buf, 11, sensors);
+    _mav_put_uint8_t(buf, 12, actuators);
+    _mav_put_uint8_t(buf, 13, pin_handler);
+    _mav_put_uint8_t(buf, 14, can_handler);
+    _mav_put_uint8_t(buf, 15, scheduler);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYS_TM, buf, MAVLINK_MSG_ID_SYS_TM_MIN_LEN, MAVLINK_MSG_ID_SYS_TM_LEN, MAVLINK_MSG_ID_SYS_TM_CRC);
+#else
+    mavlink_sys_tm_t *packet = (mavlink_sys_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->logger = logger;
+    packet->event_broker = event_broker;
+    packet->radio = radio;
+    packet->sensors = sensors;
+    packet->actuators = actuators;
+    packet->pin_handler = pin_handler;
+    packet->can_handler = can_handler;
+    packet->scheduler = scheduler;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYS_TM, (const char *)packet, MAVLINK_MSG_ID_SYS_TM_MIN_LEN, MAVLINK_MSG_ID_SYS_TM_LEN, MAVLINK_MSG_ID_SYS_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SYS_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from sys_tm message
+ *
+ * @return [us] Timestamp
+ */
+static inline uint64_t mavlink_msg_sys_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field logger from sys_tm message
+ *
+ * @return  True if the logger started correctly
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_logger(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  8);
+}
+
+/**
+ * @brief Get field event_broker from sys_tm message
+ *
+ * @return  True if the event broker started correctly
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_event_broker(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  9);
+}
+
+/**
+ * @brief Get field radio from sys_tm message
+ *
+ * @return  True if the radio started correctly
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_radio(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  10);
+}
+
+/**
+ * @brief Get field sensors from sys_tm message
+ *
+ * @return  True if the sensors started correctly
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_sensors(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  11);
+}
+
+/**
+ * @brief Get field actuators from sys_tm message
+ *
+ * @return  True if the sensors started correctly
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_actuators(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  12);
+}
+
+/**
+ * @brief Get field pin_handler from sys_tm message
+ *
+ * @return  True if the pin observer started correctly
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_pin_handler(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  13);
+}
+
+/**
+ * @brief Get field can_handler from sys_tm message
+ *
+ * @return  True if the can handler started correctly
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_can_handler(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  14);
+}
+
+/**
+ * @brief Get field scheduler from sys_tm message
+ *
+ * @return  True if the board scheduler is running
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_scheduler(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  15);
+}
+
+/**
+ * @brief Decode a sys_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param sys_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_sys_tm_decode(const mavlink_message_t* msg, mavlink_sys_tm_t* sys_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    sys_tm->timestamp = mavlink_msg_sys_tm_get_timestamp(msg);
+    sys_tm->logger = mavlink_msg_sys_tm_get_logger(msg);
+    sys_tm->event_broker = mavlink_msg_sys_tm_get_event_broker(msg);
+    sys_tm->radio = mavlink_msg_sys_tm_get_radio(msg);
+    sys_tm->sensors = mavlink_msg_sys_tm_get_sensors(msg);
+    sys_tm->actuators = mavlink_msg_sys_tm_get_actuators(msg);
+    sys_tm->pin_handler = mavlink_msg_sys_tm_get_pin_handler(msg);
+    sys_tm->can_handler = mavlink_msg_sys_tm_get_can_handler(msg);
+    sys_tm->scheduler = mavlink_msg_sys_tm_get_scheduler(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SYS_TM_LEN? msg->len : MAVLINK_MSG_ID_SYS_TM_LEN;
+        memset(sys_tm, 0, MAVLINK_MSG_ID_SYS_TM_LEN);
+    memcpy(sys_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_system_tm_request_tc.h b/mavlink_lib/orion/mavlink_msg_system_tm_request_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..de5a083eed2404c27df5ad34524fcac401fe3b6f
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_system_tm_request_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SYSTEM_TM_REQUEST_TC PACKING
+
+#define MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC 3
+
+
+typedef struct __mavlink_system_tm_request_tc_t {
+ uint8_t tm_id; /*<  A member of the SystemTMList enum*/
+} mavlink_system_tm_request_tc_t;
+
+#define MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN 1
+#define MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN 1
+#define MAVLINK_MSG_ID_3_LEN 1
+#define MAVLINK_MSG_ID_3_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_CRC 165
+#define MAVLINK_MSG_ID_3_CRC 165
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SYSTEM_TM_REQUEST_TC { \
+    3, \
+    "SYSTEM_TM_REQUEST_TC", \
+    1, \
+    {  { "tm_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_system_tm_request_tc_t, tm_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SYSTEM_TM_REQUEST_TC { \
+    "SYSTEM_TM_REQUEST_TC", \
+    1, \
+    {  { "tm_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_system_tm_request_tc_t, tm_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a system_tm_request_tc 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 tm_id  A member of the SystemTMList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_system_tm_request_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t tm_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, tm_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN);
+#else
+    mavlink_system_tm_request_tc_t packet;
+    packet.tm_id = tm_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_CRC);
+}
+
+/**
+ * @brief Pack a system_tm_request_tc 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 tm_id  A member of the SystemTMList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_system_tm_request_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t tm_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, tm_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN);
+#else
+    mavlink_system_tm_request_tc_t packet;
+    packet.tm_id = tm_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_CRC);
+}
+
+/**
+ * @brief Encode a system_tm_request_tc 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 system_tm_request_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_system_tm_request_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_system_tm_request_tc_t* system_tm_request_tc)
+{
+    return mavlink_msg_system_tm_request_tc_pack(system_id, component_id, msg, system_tm_request_tc->tm_id);
+}
+
+/**
+ * @brief Encode a system_tm_request_tc 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 system_tm_request_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_system_tm_request_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_system_tm_request_tc_t* system_tm_request_tc)
+{
+    return mavlink_msg_system_tm_request_tc_pack_chan(system_id, component_id, chan, msg, system_tm_request_tc->tm_id);
+}
+
+/**
+ * @brief Send a system_tm_request_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param tm_id  A member of the SystemTMList enum
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_system_tm_request_tc_send(mavlink_channel_t chan, uint8_t tm_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN];
+    _mav_put_uint8_t(buf, 0, tm_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC, buf, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_CRC);
+#else
+    mavlink_system_tm_request_tc_t packet;
+    packet.tm_id = tm_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC, (const char *)&packet, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a system_tm_request_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_system_tm_request_tc_send_struct(mavlink_channel_t chan, const mavlink_system_tm_request_tc_t* system_tm_request_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_system_tm_request_tc_send(chan, system_tm_request_tc->tm_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC, (const char *)system_tm_request_tc, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_system_tm_request_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t tm_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, tm_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC, buf, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_CRC);
+#else
+    mavlink_system_tm_request_tc_t *packet = (mavlink_system_tm_request_tc_t *)msgbuf;
+    packet->tm_id = tm_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC, (const char *)packet, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE SYSTEM_TM_REQUEST_TC UNPACKING
+
+
+/**
+ * @brief Get field tm_id from system_tm_request_tc message
+ *
+ * @return  A member of the SystemTMList enum
+ */
+static inline uint8_t mavlink_msg_system_tm_request_tc_get_tm_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Decode a system_tm_request_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param system_tm_request_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_system_tm_request_tc_decode(const mavlink_message_t* msg, mavlink_system_tm_request_tc_t* system_tm_request_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    system_tm_request_tc->tm_id = mavlink_msg_system_tm_request_tc_get_tm_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN? msg->len : MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN;
+        memset(system_tm_request_tc, 0, MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_LEN);
+    memcpy(system_tm_request_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_task_stats_tm.h b/mavlink_lib/orion/mavlink_msg_task_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..b30386259c138ea1f350a58f449e55f626c58bb6
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_task_stats_tm.h
@@ -0,0 +1,463 @@
+#pragma once
+// MESSAGE TASK_STATS_TM PACKING
+
+#define MAVLINK_MSG_ID_TASK_STATS_TM 204
+
+
+typedef struct __mavlink_task_stats_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged */
+ uint32_t task_missed_events; /*<  Number of missed events*/
+ uint32_t task_failed_events; /*<  Number of missed events*/
+ float task_activation_mean; /*<  Task activation mean period*/
+ float task_activation_stddev; /*<  Task activation mean standard deviation*/
+ float task_period_mean; /*<  Task period mean period*/
+ float task_period_stddev; /*<  Task period mean standard deviation*/
+ float task_workload_mean; /*<  Task workload mean period*/
+ float task_workload_stddev; /*<  Task workload mean standard deviation*/
+ uint16_t task_id; /*<  Task ID*/
+ uint16_t task_period; /*< [ns] Period of the task*/
+} mavlink_task_stats_tm_t;
+
+#define MAVLINK_MSG_ID_TASK_STATS_TM_LEN 44
+#define MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN 44
+#define MAVLINK_MSG_ID_204_LEN 44
+#define MAVLINK_MSG_ID_204_MIN_LEN 44
+
+#define MAVLINK_MSG_ID_TASK_STATS_TM_CRC 19
+#define MAVLINK_MSG_ID_204_CRC 19
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_TASK_STATS_TM { \
+    204, \
+    "TASK_STATS_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_task_stats_tm_t, timestamp) }, \
+         { "task_id", NULL, MAVLINK_TYPE_UINT16_T, 0, 40, offsetof(mavlink_task_stats_tm_t, task_id) }, \
+         { "task_period", NULL, MAVLINK_TYPE_UINT16_T, 0, 42, offsetof(mavlink_task_stats_tm_t, task_period) }, \
+         { "task_missed_events", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_task_stats_tm_t, task_missed_events) }, \
+         { "task_failed_events", NULL, MAVLINK_TYPE_UINT32_T, 0, 12, offsetof(mavlink_task_stats_tm_t, task_failed_events) }, \
+         { "task_activation_mean", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_task_stats_tm_t, task_activation_mean) }, \
+         { "task_activation_stddev", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_task_stats_tm_t, task_activation_stddev) }, \
+         { "task_period_mean", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_task_stats_tm_t, task_period_mean) }, \
+         { "task_period_stddev", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_task_stats_tm_t, task_period_stddev) }, \
+         { "task_workload_mean", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_task_stats_tm_t, task_workload_mean) }, \
+         { "task_workload_stddev", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_task_stats_tm_t, task_workload_stddev) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_TASK_STATS_TM { \
+    "TASK_STATS_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_task_stats_tm_t, timestamp) }, \
+         { "task_id", NULL, MAVLINK_TYPE_UINT16_T, 0, 40, offsetof(mavlink_task_stats_tm_t, task_id) }, \
+         { "task_period", NULL, MAVLINK_TYPE_UINT16_T, 0, 42, offsetof(mavlink_task_stats_tm_t, task_period) }, \
+         { "task_missed_events", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_task_stats_tm_t, task_missed_events) }, \
+         { "task_failed_events", NULL, MAVLINK_TYPE_UINT32_T, 0, 12, offsetof(mavlink_task_stats_tm_t, task_failed_events) }, \
+         { "task_activation_mean", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_task_stats_tm_t, task_activation_mean) }, \
+         { "task_activation_stddev", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_task_stats_tm_t, task_activation_stddev) }, \
+         { "task_period_mean", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_task_stats_tm_t, task_period_mean) }, \
+         { "task_period_stddev", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_task_stats_tm_t, task_period_stddev) }, \
+         { "task_workload_mean", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_task_stats_tm_t, task_workload_mean) }, \
+         { "task_workload_stddev", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_task_stats_tm_t, task_workload_stddev) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a task_stats_tm 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 timestamp [us] When was this logged 
+ * @param task_id  Task ID
+ * @param task_period [ns] Period of the task
+ * @param task_missed_events  Number of missed events
+ * @param task_failed_events  Number of missed events
+ * @param task_activation_mean  Task activation mean period
+ * @param task_activation_stddev  Task activation mean standard deviation
+ * @param task_period_mean  Task period mean period
+ * @param task_period_stddev  Task period mean standard deviation
+ * @param task_workload_mean  Task workload mean period
+ * @param task_workload_stddev  Task workload mean standard deviation
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_task_stats_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint16_t task_id, uint16_t task_period, uint32_t task_missed_events, uint32_t task_failed_events, float task_activation_mean, float task_activation_stddev, float task_period_mean, float task_period_stddev, float task_workload_mean, float task_workload_stddev)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_TASK_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, task_missed_events);
+    _mav_put_uint32_t(buf, 12, task_failed_events);
+    _mav_put_float(buf, 16, task_activation_mean);
+    _mav_put_float(buf, 20, task_activation_stddev);
+    _mav_put_float(buf, 24, task_period_mean);
+    _mav_put_float(buf, 28, task_period_stddev);
+    _mav_put_float(buf, 32, task_workload_mean);
+    _mav_put_float(buf, 36, task_workload_stddev);
+    _mav_put_uint16_t(buf, 40, task_id);
+    _mav_put_uint16_t(buf, 42, task_period);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_TASK_STATS_TM_LEN);
+#else
+    mavlink_task_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.task_missed_events = task_missed_events;
+    packet.task_failed_events = task_failed_events;
+    packet.task_activation_mean = task_activation_mean;
+    packet.task_activation_stddev = task_activation_stddev;
+    packet.task_period_mean = task_period_mean;
+    packet.task_period_stddev = task_period_stddev;
+    packet.task_workload_mean = task_workload_mean;
+    packet.task_workload_stddev = task_workload_stddev;
+    packet.task_id = task_id;
+    packet.task_period = task_period;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_TASK_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_TASK_STATS_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_CRC);
+}
+
+/**
+ * @brief Pack a task_stats_tm 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 timestamp [us] When was this logged 
+ * @param task_id  Task ID
+ * @param task_period [ns] Period of the task
+ * @param task_missed_events  Number of missed events
+ * @param task_failed_events  Number of missed events
+ * @param task_activation_mean  Task activation mean period
+ * @param task_activation_stddev  Task activation mean standard deviation
+ * @param task_period_mean  Task period mean period
+ * @param task_period_stddev  Task period mean standard deviation
+ * @param task_workload_mean  Task workload mean period
+ * @param task_workload_stddev  Task workload mean standard deviation
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_task_stats_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint16_t task_id,uint16_t task_period,uint32_t task_missed_events,uint32_t task_failed_events,float task_activation_mean,float task_activation_stddev,float task_period_mean,float task_period_stddev,float task_workload_mean,float task_workload_stddev)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_TASK_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, task_missed_events);
+    _mav_put_uint32_t(buf, 12, task_failed_events);
+    _mav_put_float(buf, 16, task_activation_mean);
+    _mav_put_float(buf, 20, task_activation_stddev);
+    _mav_put_float(buf, 24, task_period_mean);
+    _mav_put_float(buf, 28, task_period_stddev);
+    _mav_put_float(buf, 32, task_workload_mean);
+    _mav_put_float(buf, 36, task_workload_stddev);
+    _mav_put_uint16_t(buf, 40, task_id);
+    _mav_put_uint16_t(buf, 42, task_period);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_TASK_STATS_TM_LEN);
+#else
+    mavlink_task_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.task_missed_events = task_missed_events;
+    packet.task_failed_events = task_failed_events;
+    packet.task_activation_mean = task_activation_mean;
+    packet.task_activation_stddev = task_activation_stddev;
+    packet.task_period_mean = task_period_mean;
+    packet.task_period_stddev = task_period_stddev;
+    packet.task_workload_mean = task_workload_mean;
+    packet.task_workload_stddev = task_workload_stddev;
+    packet.task_id = task_id;
+    packet.task_period = task_period;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_TASK_STATS_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_TASK_STATS_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_CRC);
+}
+
+/**
+ * @brief Encode a task_stats_tm 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 task_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_task_stats_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_task_stats_tm_t* task_stats_tm)
+{
+    return mavlink_msg_task_stats_tm_pack(system_id, component_id, msg, task_stats_tm->timestamp, task_stats_tm->task_id, task_stats_tm->task_period, task_stats_tm->task_missed_events, task_stats_tm->task_failed_events, task_stats_tm->task_activation_mean, task_stats_tm->task_activation_stddev, task_stats_tm->task_period_mean, task_stats_tm->task_period_stddev, task_stats_tm->task_workload_mean, task_stats_tm->task_workload_stddev);
+}
+
+/**
+ * @brief Encode a task_stats_tm 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 task_stats_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_task_stats_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_task_stats_tm_t* task_stats_tm)
+{
+    return mavlink_msg_task_stats_tm_pack_chan(system_id, component_id, chan, msg, task_stats_tm->timestamp, task_stats_tm->task_id, task_stats_tm->task_period, task_stats_tm->task_missed_events, task_stats_tm->task_failed_events, task_stats_tm->task_activation_mean, task_stats_tm->task_activation_stddev, task_stats_tm->task_period_mean, task_stats_tm->task_period_stddev, task_stats_tm->task_workload_mean, task_stats_tm->task_workload_stddev);
+}
+
+/**
+ * @brief Send a task_stats_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged 
+ * @param task_id  Task ID
+ * @param task_period [ns] Period of the task
+ * @param task_missed_events  Number of missed events
+ * @param task_failed_events  Number of missed events
+ * @param task_activation_mean  Task activation mean period
+ * @param task_activation_stddev  Task activation mean standard deviation
+ * @param task_period_mean  Task period mean period
+ * @param task_period_stddev  Task period mean standard deviation
+ * @param task_workload_mean  Task workload mean period
+ * @param task_workload_stddev  Task workload mean standard deviation
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_task_stats_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint16_t task_id, uint16_t task_period, uint32_t task_missed_events, uint32_t task_failed_events, float task_activation_mean, float task_activation_stddev, float task_period_mean, float task_period_stddev, float task_workload_mean, float task_workload_stddev)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_TASK_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, task_missed_events);
+    _mav_put_uint32_t(buf, 12, task_failed_events);
+    _mav_put_float(buf, 16, task_activation_mean);
+    _mav_put_float(buf, 20, task_activation_stddev);
+    _mav_put_float(buf, 24, task_period_mean);
+    _mav_put_float(buf, 28, task_period_stddev);
+    _mav_put_float(buf, 32, task_workload_mean);
+    _mav_put_float(buf, 36, task_workload_stddev);
+    _mav_put_uint16_t(buf, 40, task_id);
+    _mav_put_uint16_t(buf, 42, task_period);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TASK_STATS_TM, buf, MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_CRC);
+#else
+    mavlink_task_stats_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.task_missed_events = task_missed_events;
+    packet.task_failed_events = task_failed_events;
+    packet.task_activation_mean = task_activation_mean;
+    packet.task_activation_stddev = task_activation_stddev;
+    packet.task_period_mean = task_period_mean;
+    packet.task_period_stddev = task_period_stddev;
+    packet.task_workload_mean = task_workload_mean;
+    packet.task_workload_stddev = task_workload_stddev;
+    packet.task_id = task_id;
+    packet.task_period = task_period;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TASK_STATS_TM, (const char *)&packet, MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a task_stats_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_task_stats_tm_send_struct(mavlink_channel_t chan, const mavlink_task_stats_tm_t* task_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_task_stats_tm_send(chan, task_stats_tm->timestamp, task_stats_tm->task_id, task_stats_tm->task_period, task_stats_tm->task_missed_events, task_stats_tm->task_failed_events, task_stats_tm->task_activation_mean, task_stats_tm->task_activation_stddev, task_stats_tm->task_period_mean, task_stats_tm->task_period_stddev, task_stats_tm->task_workload_mean, task_stats_tm->task_workload_stddev);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TASK_STATS_TM, (const char *)task_stats_tm, MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_TASK_STATS_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_task_stats_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint16_t task_id, uint16_t task_period, uint32_t task_missed_events, uint32_t task_failed_events, float task_activation_mean, float task_activation_stddev, float task_period_mean, float task_period_stddev, float task_workload_mean, float task_workload_stddev)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint32_t(buf, 8, task_missed_events);
+    _mav_put_uint32_t(buf, 12, task_failed_events);
+    _mav_put_float(buf, 16, task_activation_mean);
+    _mav_put_float(buf, 20, task_activation_stddev);
+    _mav_put_float(buf, 24, task_period_mean);
+    _mav_put_float(buf, 28, task_period_stddev);
+    _mav_put_float(buf, 32, task_workload_mean);
+    _mav_put_float(buf, 36, task_workload_stddev);
+    _mav_put_uint16_t(buf, 40, task_id);
+    _mav_put_uint16_t(buf, 42, task_period);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TASK_STATS_TM, buf, MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_CRC);
+#else
+    mavlink_task_stats_tm_t *packet = (mavlink_task_stats_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->task_missed_events = task_missed_events;
+    packet->task_failed_events = task_failed_events;
+    packet->task_activation_mean = task_activation_mean;
+    packet->task_activation_stddev = task_activation_stddev;
+    packet->task_period_mean = task_period_mean;
+    packet->task_period_stddev = task_period_stddev;
+    packet->task_workload_mean = task_workload_mean;
+    packet->task_workload_stddev = task_workload_stddev;
+    packet->task_id = task_id;
+    packet->task_period = task_period;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TASK_STATS_TM, (const char *)packet, MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_LEN, MAVLINK_MSG_ID_TASK_STATS_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE TASK_STATS_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from task_stats_tm message
+ *
+ * @return [us] When was this logged 
+ */
+static inline uint64_t mavlink_msg_task_stats_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field task_id from task_stats_tm message
+ *
+ * @return  Task ID
+ */
+static inline uint16_t mavlink_msg_task_stats_tm_get_task_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  40);
+}
+
+/**
+ * @brief Get field task_period from task_stats_tm message
+ *
+ * @return [ns] Period of the task
+ */
+static inline uint16_t mavlink_msg_task_stats_tm_get_task_period(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  42);
+}
+
+/**
+ * @brief Get field task_missed_events from task_stats_tm message
+ *
+ * @return  Number of missed events
+ */
+static inline uint32_t mavlink_msg_task_stats_tm_get_task_missed_events(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  8);
+}
+
+/**
+ * @brief Get field task_failed_events from task_stats_tm message
+ *
+ * @return  Number of missed events
+ */
+static inline uint32_t mavlink_msg_task_stats_tm_get_task_failed_events(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint32_t(msg,  12);
+}
+
+/**
+ * @brief Get field task_activation_mean from task_stats_tm message
+ *
+ * @return  Task activation mean period
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_activation_mean(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field task_activation_stddev from task_stats_tm message
+ *
+ * @return  Task activation mean standard deviation
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_activation_stddev(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @brief Get field task_period_mean from task_stats_tm message
+ *
+ * @return  Task period mean period
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_period_mean(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  24);
+}
+
+/**
+ * @brief Get field task_period_stddev from task_stats_tm message
+ *
+ * @return  Task period mean standard deviation
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_period_stddev(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field task_workload_mean from task_stats_tm message
+ *
+ * @return  Task workload mean period
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_workload_mean(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field task_workload_stddev from task_stats_tm message
+ *
+ * @return  Task workload mean standard deviation
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_workload_stddev(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @brief Decode a task_stats_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param task_stats_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_task_stats_tm_decode(const mavlink_message_t* msg, mavlink_task_stats_tm_t* task_stats_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    task_stats_tm->timestamp = mavlink_msg_task_stats_tm_get_timestamp(msg);
+    task_stats_tm->task_missed_events = mavlink_msg_task_stats_tm_get_task_missed_events(msg);
+    task_stats_tm->task_failed_events = mavlink_msg_task_stats_tm_get_task_failed_events(msg);
+    task_stats_tm->task_activation_mean = mavlink_msg_task_stats_tm_get_task_activation_mean(msg);
+    task_stats_tm->task_activation_stddev = mavlink_msg_task_stats_tm_get_task_activation_stddev(msg);
+    task_stats_tm->task_period_mean = mavlink_msg_task_stats_tm_get_task_period_mean(msg);
+    task_stats_tm->task_period_stddev = mavlink_msg_task_stats_tm_get_task_period_stddev(msg);
+    task_stats_tm->task_workload_mean = mavlink_msg_task_stats_tm_get_task_workload_mean(msg);
+    task_stats_tm->task_workload_stddev = mavlink_msg_task_stats_tm_get_task_workload_stddev(msg);
+    task_stats_tm->task_id = mavlink_msg_task_stats_tm_get_task_id(msg);
+    task_stats_tm->task_period = mavlink_msg_task_stats_tm_get_task_period(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_TASK_STATS_TM_LEN? msg->len : MAVLINK_MSG_ID_TASK_STATS_TM_LEN;
+        memset(task_stats_tm, 0, MAVLINK_MSG_ID_TASK_STATS_TM_LEN);
+    memcpy(task_stats_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_temp_tm.h b/mavlink_lib/orion/mavlink_msg_temp_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..2ca27e7f111884943f627673009bb0df4f7cba89
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_temp_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE TEMP_TM PACKING
+
+#define MAVLINK_MSG_ID_TEMP_TM 109
+
+
+typedef struct __mavlink_temp_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float temperature; /*< [deg] Temperature*/
+ char sensor_name[20]; /*<  Sensor name*/
+} mavlink_temp_tm_t;
+
+#define MAVLINK_MSG_ID_TEMP_TM_LEN 32
+#define MAVLINK_MSG_ID_TEMP_TM_MIN_LEN 32
+#define MAVLINK_MSG_ID_109_LEN 32
+#define MAVLINK_MSG_ID_109_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_TEMP_TM_CRC 140
+#define MAVLINK_MSG_ID_109_CRC 140
+
+#define MAVLINK_MSG_TEMP_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_TEMP_TM { \
+    109, \
+    "TEMP_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_temp_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_temp_tm_t, sensor_name) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_temp_tm_t, temperature) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_TEMP_TM { \
+    "TEMP_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_temp_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_temp_tm_t, sensor_name) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_temp_tm_t, temperature) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a temp_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param temperature [deg] Temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_temp_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_TEMP_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, temperature);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_TEMP_TM_LEN);
+#else
+    mavlink_temp_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.temperature = temperature;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_TEMP_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_TEMP_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_TEMP_TM_MIN_LEN, MAVLINK_MSG_ID_TEMP_TM_LEN, MAVLINK_MSG_ID_TEMP_TM_CRC);
+}
+
+/**
+ * @brief Pack a temp_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param temperature [deg] Temperature
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_temp_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_TEMP_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, temperature);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_TEMP_TM_LEN);
+#else
+    mavlink_temp_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.temperature = temperature;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_TEMP_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_TEMP_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_TEMP_TM_MIN_LEN, MAVLINK_MSG_ID_TEMP_TM_LEN, MAVLINK_MSG_ID_TEMP_TM_CRC);
+}
+
+/**
+ * @brief Encode a temp_tm 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 temp_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_temp_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_temp_tm_t* temp_tm)
+{
+    return mavlink_msg_temp_tm_pack(system_id, component_id, msg, temp_tm->timestamp, temp_tm->sensor_name, temp_tm->temperature);
+}
+
+/**
+ * @brief Encode a temp_tm 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 temp_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_temp_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_temp_tm_t* temp_tm)
+{
+    return mavlink_msg_temp_tm_pack_chan(system_id, component_id, chan, msg, temp_tm->timestamp, temp_tm->sensor_name, temp_tm->temperature);
+}
+
+/**
+ * @brief Send a temp_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param temperature [deg] Temperature
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_temp_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_TEMP_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, temperature);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TEMP_TM, buf, MAVLINK_MSG_ID_TEMP_TM_MIN_LEN, MAVLINK_MSG_ID_TEMP_TM_LEN, MAVLINK_MSG_ID_TEMP_TM_CRC);
+#else
+    mavlink_temp_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.temperature = temperature;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TEMP_TM, (const char *)&packet, MAVLINK_MSG_ID_TEMP_TM_MIN_LEN, MAVLINK_MSG_ID_TEMP_TM_LEN, MAVLINK_MSG_ID_TEMP_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a temp_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_temp_tm_send_struct(mavlink_channel_t chan, const mavlink_temp_tm_t* temp_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_temp_tm_send(chan, temp_tm->timestamp, temp_tm->sensor_name, temp_tm->temperature);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TEMP_TM, (const char *)temp_tm, MAVLINK_MSG_ID_TEMP_TM_MIN_LEN, MAVLINK_MSG_ID_TEMP_TM_LEN, MAVLINK_MSG_ID_TEMP_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_TEMP_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_temp_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, float temperature)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, temperature);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TEMP_TM, buf, MAVLINK_MSG_ID_TEMP_TM_MIN_LEN, MAVLINK_MSG_ID_TEMP_TM_LEN, MAVLINK_MSG_ID_TEMP_TM_CRC);
+#else
+    mavlink_temp_tm_t *packet = (mavlink_temp_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->temperature = temperature;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TEMP_TM, (const char *)packet, MAVLINK_MSG_ID_TEMP_TM_MIN_LEN, MAVLINK_MSG_ID_TEMP_TM_LEN, MAVLINK_MSG_ID_TEMP_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE TEMP_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from temp_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_temp_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from temp_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_temp_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  12);
+}
+
+/**
+ * @brief Get field temperature from temp_tm message
+ *
+ * @return [deg] Temperature
+ */
+static inline float mavlink_msg_temp_tm_get_temperature(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Decode a temp_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param temp_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_temp_tm_decode(const mavlink_message_t* msg, mavlink_temp_tm_t* temp_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    temp_tm->timestamp = mavlink_msg_temp_tm_get_timestamp(msg);
+    temp_tm->temperature = mavlink_msg_temp_tm_get_temperature(msg);
+    mavlink_msg_temp_tm_get_sensor_name(msg, temp_tm->sensor_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_TEMP_TM_LEN? msg->len : MAVLINK_MSG_ID_TEMP_TM_LEN;
+        memset(temp_tm, 0, MAVLINK_MSG_ID_TEMP_TM_LEN);
+    memcpy(temp_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_voltage_tm.h b/mavlink_lib/orion/mavlink_msg_voltage_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..ab5547cfbf330fadca17736e9ba1787a539be5cc
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_voltage_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE VOLTAGE_TM PACKING
+
+#define MAVLINK_MSG_ID_VOLTAGE_TM 107
+
+
+typedef struct __mavlink_voltage_tm_t {
+ uint64_t timestamp; /*< [us] When was this logged*/
+ float voltage; /*< [V] Voltage*/
+ char sensor_name[20]; /*<  Sensor name*/
+} mavlink_voltage_tm_t;
+
+#define MAVLINK_MSG_ID_VOLTAGE_TM_LEN 32
+#define MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN 32
+#define MAVLINK_MSG_ID_107_LEN 32
+#define MAVLINK_MSG_ID_107_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_VOLTAGE_TM_CRC 245
+#define MAVLINK_MSG_ID_107_CRC 245
+
+#define MAVLINK_MSG_VOLTAGE_TM_FIELD_SENSOR_NAME_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_VOLTAGE_TM { \
+    107, \
+    "VOLTAGE_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_voltage_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_voltage_tm_t, sensor_name) }, \
+         { "voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_voltage_tm_t, voltage) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_VOLTAGE_TM { \
+    "VOLTAGE_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_voltage_tm_t, timestamp) }, \
+         { "sensor_name", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_voltage_tm_t, sensor_name) }, \
+         { "voltage", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_voltage_tm_t, voltage) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a voltage_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param voltage [V] Voltage
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_voltage_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, const char *sensor_name, float voltage)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_VOLTAGE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, voltage);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_VOLTAGE_TM_LEN);
+#else
+    mavlink_voltage_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.voltage = voltage;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_VOLTAGE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_VOLTAGE_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_CRC);
+}
+
+/**
+ * @brief Pack a voltage_tm 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 timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param voltage [V] Voltage
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_voltage_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,const char *sensor_name,float voltage)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_VOLTAGE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, voltage);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_VOLTAGE_TM_LEN);
+#else
+    mavlink_voltage_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.voltage = voltage;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_VOLTAGE_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_VOLTAGE_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_CRC);
+}
+
+/**
+ * @brief Encode a voltage_tm 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 voltage_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_voltage_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_voltage_tm_t* voltage_tm)
+{
+    return mavlink_msg_voltage_tm_pack(system_id, component_id, msg, voltage_tm->timestamp, voltage_tm->sensor_name, voltage_tm->voltage);
+}
+
+/**
+ * @brief Encode a voltage_tm 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 voltage_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_voltage_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_voltage_tm_t* voltage_tm)
+{
+    return mavlink_msg_voltage_tm_pack_chan(system_id, component_id, chan, msg, voltage_tm->timestamp, voltage_tm->sensor_name, voltage_tm->voltage);
+}
+
+/**
+ * @brief Send a voltage_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [us] When was this logged
+ * @param sensor_name  Sensor name
+ * @param voltage [V] Voltage
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_voltage_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_name, float voltage)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_VOLTAGE_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, voltage);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_VOLTAGE_TM, buf, MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_CRC);
+#else
+    mavlink_voltage_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.voltage = voltage;
+    mav_array_memcpy(packet.sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_VOLTAGE_TM, (const char *)&packet, MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a voltage_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_voltage_tm_send_struct(mavlink_channel_t chan, const mavlink_voltage_tm_t* voltage_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_voltage_tm_send(chan, voltage_tm->timestamp, voltage_tm->sensor_name, voltage_tm->voltage);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_VOLTAGE_TM, (const char *)voltage_tm, MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_VOLTAGE_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_voltage_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, const char *sensor_name, float voltage)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, voltage);
+    _mav_put_char_array(buf, 12, sensor_name, 20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_VOLTAGE_TM, buf, MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_CRC);
+#else
+    mavlink_voltage_tm_t *packet = (mavlink_voltage_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->voltage = voltage;
+    mav_array_memcpy(packet->sensor_name, sensor_name, sizeof(char)*20);
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_VOLTAGE_TM, (const char *)packet, MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_LEN, MAVLINK_MSG_ID_VOLTAGE_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE VOLTAGE_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from voltage_tm message
+ *
+ * @return [us] When was this logged
+ */
+static inline uint64_t mavlink_msg_voltage_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field sensor_name from voltage_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_voltage_tm_get_sensor_name(const mavlink_message_t* msg, char *sensor_name)
+{
+    return _MAV_RETURN_char_array(msg, sensor_name, 20,  12);
+}
+
+/**
+ * @brief Get field voltage from voltage_tm message
+ *
+ * @return [V] Voltage
+ */
+static inline float mavlink_msg_voltage_tm_get_voltage(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Decode a voltage_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param voltage_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_voltage_tm_decode(const mavlink_message_t* msg, mavlink_voltage_tm_t* voltage_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    voltage_tm->timestamp = mavlink_msg_voltage_tm_get_timestamp(msg);
+    voltage_tm->voltage = mavlink_msg_voltage_tm_get_voltage(msg);
+    mavlink_msg_voltage_tm_get_sensor_name(msg, voltage_tm->sensor_name);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_VOLTAGE_TM_LEN? msg->len : MAVLINK_MSG_ID_VOLTAGE_TM_LEN;
+        memset(voltage_tm, 0, MAVLINK_MSG_ID_VOLTAGE_TM_LEN);
+    memcpy(voltage_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_wack_tm.h b/mavlink_lib/orion/mavlink_msg_wack_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..00837464a535d75aeddf21cedf794f6d0bceb057
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_wack_tm.h
@@ -0,0 +1,263 @@
+#pragma once
+// MESSAGE WACK_TM PACKING
+
+#define MAVLINK_MSG_ID_WACK_TM 102
+
+
+typedef struct __mavlink_wack_tm_t {
+ uint16_t err_id; /*<  Error core that generated the WACK*/
+ uint8_t recv_msgid; /*<  Message id of the received message*/
+ uint8_t seq_ack; /*<  Sequence number of the received message*/
+} mavlink_wack_tm_t;
+
+#define MAVLINK_MSG_ID_WACK_TM_LEN 4
+#define MAVLINK_MSG_ID_WACK_TM_MIN_LEN 4
+#define MAVLINK_MSG_ID_102_LEN 4
+#define MAVLINK_MSG_ID_102_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_WACK_TM_CRC 51
+#define MAVLINK_MSG_ID_102_CRC 51
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_WACK_TM { \
+    102, \
+    "WACK_TM", \
+    3, \
+    {  { "recv_msgid", NULL, MAVLINK_TYPE_UINT8_T, 0, 2, offsetof(mavlink_wack_tm_t, recv_msgid) }, \
+         { "seq_ack", NULL, MAVLINK_TYPE_UINT8_T, 0, 3, offsetof(mavlink_wack_tm_t, seq_ack) }, \
+         { "err_id", NULL, MAVLINK_TYPE_UINT16_T, 0, 0, offsetof(mavlink_wack_tm_t, err_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_WACK_TM { \
+    "WACK_TM", \
+    3, \
+    {  { "recv_msgid", NULL, MAVLINK_TYPE_UINT8_T, 0, 2, offsetof(mavlink_wack_tm_t, recv_msgid) }, \
+         { "seq_ack", NULL, MAVLINK_TYPE_UINT8_T, 0, 3, offsetof(mavlink_wack_tm_t, seq_ack) }, \
+         { "err_id", NULL, MAVLINK_TYPE_UINT16_T, 0, 0, offsetof(mavlink_wack_tm_t, err_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a wack_tm 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 recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ * @param err_id  Error core that generated the WACK
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_wack_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t recv_msgid, uint8_t seq_ack, uint16_t err_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_WACK_TM_LEN];
+    _mav_put_uint16_t(buf, 0, err_id);
+    _mav_put_uint8_t(buf, 2, recv_msgid);
+    _mav_put_uint8_t(buf, 3, seq_ack);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_WACK_TM_LEN);
+#else
+    mavlink_wack_tm_t packet;
+    packet.err_id = err_id;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_WACK_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_WACK_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_WACK_TM_MIN_LEN, MAVLINK_MSG_ID_WACK_TM_LEN, MAVLINK_MSG_ID_WACK_TM_CRC);
+}
+
+/**
+ * @brief Pack a wack_tm 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 recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ * @param err_id  Error core that generated the WACK
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_wack_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t recv_msgid,uint8_t seq_ack,uint16_t err_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_WACK_TM_LEN];
+    _mav_put_uint16_t(buf, 0, err_id);
+    _mav_put_uint8_t(buf, 2, recv_msgid);
+    _mav_put_uint8_t(buf, 3, seq_ack);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_WACK_TM_LEN);
+#else
+    mavlink_wack_tm_t packet;
+    packet.err_id = err_id;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_WACK_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_WACK_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_WACK_TM_MIN_LEN, MAVLINK_MSG_ID_WACK_TM_LEN, MAVLINK_MSG_ID_WACK_TM_CRC);
+}
+
+/**
+ * @brief Encode a wack_tm 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 wack_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_wack_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_wack_tm_t* wack_tm)
+{
+    return mavlink_msg_wack_tm_pack(system_id, component_id, msg, wack_tm->recv_msgid, wack_tm->seq_ack, wack_tm->err_id);
+}
+
+/**
+ * @brief Encode a wack_tm 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 wack_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_wack_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_wack_tm_t* wack_tm)
+{
+    return mavlink_msg_wack_tm_pack_chan(system_id, component_id, chan, msg, wack_tm->recv_msgid, wack_tm->seq_ack, wack_tm->err_id);
+}
+
+/**
+ * @brief Send a wack_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param recv_msgid  Message id of the received message
+ * @param seq_ack  Sequence number of the received message
+ * @param err_id  Error core that generated the WACK
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_wack_tm_send(mavlink_channel_t chan, uint8_t recv_msgid, uint8_t seq_ack, uint16_t err_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_WACK_TM_LEN];
+    _mav_put_uint16_t(buf, 0, err_id);
+    _mav_put_uint8_t(buf, 2, recv_msgid);
+    _mav_put_uint8_t(buf, 3, seq_ack);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WACK_TM, buf, MAVLINK_MSG_ID_WACK_TM_MIN_LEN, MAVLINK_MSG_ID_WACK_TM_LEN, MAVLINK_MSG_ID_WACK_TM_CRC);
+#else
+    mavlink_wack_tm_t packet;
+    packet.err_id = err_id;
+    packet.recv_msgid = recv_msgid;
+    packet.seq_ack = seq_ack;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WACK_TM, (const char *)&packet, MAVLINK_MSG_ID_WACK_TM_MIN_LEN, MAVLINK_MSG_ID_WACK_TM_LEN, MAVLINK_MSG_ID_WACK_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a wack_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_wack_tm_send_struct(mavlink_channel_t chan, const mavlink_wack_tm_t* wack_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_wack_tm_send(chan, wack_tm->recv_msgid, wack_tm->seq_ack, wack_tm->err_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WACK_TM, (const char *)wack_tm, MAVLINK_MSG_ID_WACK_TM_MIN_LEN, MAVLINK_MSG_ID_WACK_TM_LEN, MAVLINK_MSG_ID_WACK_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_WACK_TM_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_wack_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t recv_msgid, uint8_t seq_ack, uint16_t err_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint16_t(buf, 0, err_id);
+    _mav_put_uint8_t(buf, 2, recv_msgid);
+    _mav_put_uint8_t(buf, 3, seq_ack);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WACK_TM, buf, MAVLINK_MSG_ID_WACK_TM_MIN_LEN, MAVLINK_MSG_ID_WACK_TM_LEN, MAVLINK_MSG_ID_WACK_TM_CRC);
+#else
+    mavlink_wack_tm_t *packet = (mavlink_wack_tm_t *)msgbuf;
+    packet->err_id = err_id;
+    packet->recv_msgid = recv_msgid;
+    packet->seq_ack = seq_ack;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WACK_TM, (const char *)packet, MAVLINK_MSG_ID_WACK_TM_MIN_LEN, MAVLINK_MSG_ID_WACK_TM_LEN, MAVLINK_MSG_ID_WACK_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE WACK_TM UNPACKING
+
+
+/**
+ * @brief Get field recv_msgid from wack_tm message
+ *
+ * @return  Message id of the received message
+ */
+static inline uint8_t mavlink_msg_wack_tm_get_recv_msgid(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  2);
+}
+
+/**
+ * @brief Get field seq_ack from wack_tm message
+ *
+ * @return  Sequence number of the received message
+ */
+static inline uint8_t mavlink_msg_wack_tm_get_seq_ack(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  3);
+}
+
+/**
+ * @brief Get field err_id from wack_tm message
+ *
+ * @return  Error core that generated the WACK
+ */
+static inline uint16_t mavlink_msg_wack_tm_get_err_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  0);
+}
+
+/**
+ * @brief Decode a wack_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param wack_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_wack_tm_decode(const mavlink_message_t* msg, mavlink_wack_tm_t* wack_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    wack_tm->err_id = mavlink_msg_wack_tm_get_err_id(msg);
+    wack_tm->recv_msgid = mavlink_msg_wack_tm_get_recv_msgid(msg);
+    wack_tm->seq_ack = mavlink_msg_wack_tm_get_seq_ack(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_WACK_TM_LEN? msg->len : MAVLINK_MSG_ID_WACK_TM_LEN;
+        memset(wack_tm, 0, MAVLINK_MSG_ID_WACK_TM_LEN);
+    memcpy(wack_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/mavlink_msg_wiggle_servo_tc.h b/mavlink_lib/orion/mavlink_msg_wiggle_servo_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..8b127cb2933322c63c571b82f866e87968fa5873
--- /dev/null
+++ b/mavlink_lib/orion/mavlink_msg_wiggle_servo_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE WIGGLE_SERVO_TC PACKING
+
+#define MAVLINK_MSG_ID_WIGGLE_SERVO_TC 8
+
+
+typedef struct __mavlink_wiggle_servo_tc_t {
+ uint8_t servo_id; /*<  A member of the ServosList enum*/
+} mavlink_wiggle_servo_tc_t;
+
+#define MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN 1
+#define MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN 1
+#define MAVLINK_MSG_ID_8_LEN 1
+#define MAVLINK_MSG_ID_8_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC 160
+#define MAVLINK_MSG_ID_8_CRC 160
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_WIGGLE_SERVO_TC { \
+    8, \
+    "WIGGLE_SERVO_TC", \
+    1, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_wiggle_servo_tc_t, servo_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_WIGGLE_SERVO_TC { \
+    "WIGGLE_SERVO_TC", \
+    1, \
+    {  { "servo_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_wiggle_servo_tc_t, servo_id) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a wiggle_servo_tc 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 servo_id  A member of the ServosList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_wiggle_servo_tc_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN);
+#else
+    mavlink_wiggle_servo_tc_t packet;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_WIGGLE_SERVO_TC;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC);
+}
+
+/**
+ * @brief Pack a wiggle_servo_tc 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 servo_id  A member of the ServosList enum
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_wiggle_servo_tc_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN);
+#else
+    mavlink_wiggle_servo_tc_t packet;
+    packet.servo_id = servo_id;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_WIGGLE_SERVO_TC;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC);
+}
+
+/**
+ * @brief Encode a wiggle_servo_tc 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 wiggle_servo_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_wiggle_servo_tc_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_wiggle_servo_tc_t* wiggle_servo_tc)
+{
+    return mavlink_msg_wiggle_servo_tc_pack(system_id, component_id, msg, wiggle_servo_tc->servo_id);
+}
+
+/**
+ * @brief Encode a wiggle_servo_tc 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 wiggle_servo_tc C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_wiggle_servo_tc_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_wiggle_servo_tc_t* wiggle_servo_tc)
+{
+    return mavlink_msg_wiggle_servo_tc_pack_chan(system_id, component_id, chan, msg, wiggle_servo_tc->servo_id);
+}
+
+/**
+ * @brief Send a wiggle_servo_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param servo_id  A member of the ServosList enum
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_wiggle_servo_tc_send(mavlink_channel_t chan, uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN];
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WIGGLE_SERVO_TC, buf, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC);
+#else
+    mavlink_wiggle_servo_tc_t packet;
+    packet.servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WIGGLE_SERVO_TC, (const char *)&packet, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC);
+#endif
+}
+
+/**
+ * @brief Send a wiggle_servo_tc message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_wiggle_servo_tc_send_struct(mavlink_channel_t chan, const mavlink_wiggle_servo_tc_t* wiggle_servo_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_wiggle_servo_tc_send(chan, wiggle_servo_tc->servo_id);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WIGGLE_SERVO_TC, (const char *)wiggle_servo_tc, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+  This variant 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_wiggle_servo_tc_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t servo_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, servo_id);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WIGGLE_SERVO_TC, buf, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC);
+#else
+    mavlink_wiggle_servo_tc_t *packet = (mavlink_wiggle_servo_tc_t *)msgbuf;
+    packet->servo_id = servo_id;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_WIGGLE_SERVO_TC, (const char *)packet, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE WIGGLE_SERVO_TC UNPACKING
+
+
+/**
+ * @brief Get field servo_id from wiggle_servo_tc message
+ *
+ * @return  A member of the ServosList enum
+ */
+static inline uint8_t mavlink_msg_wiggle_servo_tc_get_servo_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  0);
+}
+
+/**
+ * @brief Decode a wiggle_servo_tc message into a struct
+ *
+ * @param msg The message to decode
+ * @param wiggle_servo_tc C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_wiggle_servo_tc_decode(const mavlink_message_t* msg, mavlink_wiggle_servo_tc_t* wiggle_servo_tc)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    wiggle_servo_tc->servo_id = mavlink_msg_wiggle_servo_tc_get_servo_id(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN? msg->len : MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN;
+        memset(wiggle_servo_tc, 0, MAVLINK_MSG_ID_WIGGLE_SERVO_TC_LEN);
+    memcpy(wiggle_servo_tc, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_lib/orion/orion.h b/mavlink_lib/orion/orion.h
new file mode 100644
index 0000000000000000000000000000000000000000..eef0e9c9ddc641fa14bfc64fa84f95bb2cc14233
--- /dev/null
+++ b/mavlink_lib/orion/orion.h
@@ -0,0 +1,290 @@
+/** @file
+ *  @brief MAVLink comm protocol generated from orion.xml
+ *  @see http://mavlink.org
+ */
+#pragma once
+#ifndef MAVLINK_ORION_H
+#define MAVLINK_ORION_H
+
+#ifndef MAVLINK_H
+    #error Wrong include order: MAVLINK_ORION.H MUST NOT BE DIRECTLY USED. Include mavlink.h from the same directory instead or set ALL AND EVERY defines from MAVLINK.H manually accordingly, including the #define MAVLINK_H call.
+#endif
+
+#undef MAVLINK_THIS_XML_HASH
+#define MAVLINK_THIS_XML_HASH 5249158651932825104
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// MESSAGE LENGTHS AND CRCS
+
+#ifndef MAVLINK_MESSAGE_LENGTHS
+#define MAVLINK_MESSAGE_LENGTHS {0, 8, 1, 1, 1, 1, 5, 1, 1, 4, 4, 12, 16, 8, 2, 4, 8, 1, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 7, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 12, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 74, 64, 32, 60, 32, 32, 32, 32, 56, 22, 5, 19, 36, 36, 36, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 46, 28, 20, 44, 53, 77, 29, 178, 158, 180, 170, 64, 37, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+#endif
+
+#ifndef MAVLINK_MESSAGE_CRCS
+#define MAVLINK_MESSAGE_CRCS {0, 136, 198, 165, 248, 184, 215, 226, 160, 113, 38, 71, 168, 67, 218, 44, 81, 181, 199, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 22, 65, 79, 167, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 246, 173, 183, 220, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 251, 51, 57, 72, 87, 229, 245, 212, 140, 148, 6, 165, 87, 255, 103, 9, 68, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 142, 108, 39, 19, 234, 66, 11, 235, 188, 195, 99, 87, 67, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+#endif
+
+#include "../protocol.h"
+
+#define MAVLINK_ENABLED_ORION
+
+// ENUM DEFINITIONS
+
+
+/** @brief Enum that lists all the system IDs of the various devices */
+#ifndef HAVE_ENUM_SysIDs
+#define HAVE_ENUM_SysIDs
+typedef enum SysIDs
+{
+   MAV_SYSID_MAIN=1, /*  | */
+   MAV_SYSID_PAYLOAD=2, /*  | */
+   MAV_SYSID_RIG=3, /*  | */
+   MAV_SYSID_GS=4, /*  | */
+   MAV_SYSID_ARP=5, /*  | */
+   MAV_SYSID_GS_BACKUP=6, /*  | */
+   MAV_SYSID_ARP_BACKUP=7, /*  | */
+   SysIDs_ENUM_END=8, /*  | */
+} SysIDs;
+#endif
+
+/** @brief Enum list for all the telemetries that can be requested */
+#ifndef HAVE_ENUM_SystemTMList
+#define HAVE_ENUM_SystemTMList
+typedef enum SystemTMList
+{
+   MAV_SYS_ID=1, /* State of init results about system hardware/software components | */
+   MAV_PIN_OBS_ID=2, /* Pin observer data | */
+   MAV_LOGGER_ID=3, /* SD Logger stats | */
+   MAV_MAVLINK_STATS_ID=4, /* Mavlink driver stats | */
+   MAV_TASK_STATS_ID=5, /* Task scheduler statistics answer: n mavlink messages where n is the number of tasks | */
+   MAV_ADA_ID=6, /* ADA Status | */
+   MAV_NAS_ID=7, /* NavigationSystem data | */
+   MAV_MEA_ID=8, /* MEA Status | */
+   MAV_CAN_STATS_ID=9, /* Canbus stats | */
+   MAV_FLIGHT_ID=10, /* Flight telemetry | */
+   MAV_STATS_ID=11, /* Satistics telemetry | */
+   MAV_SENSORS_STATE_ID=12, /* Sensors init state telemetry | */
+   MAV_GSE_ID=13, /* Ground Segnement Equipment | */
+   MAV_MOTOR_ID=14, /* Rocket Motor data | */
+   MAV_REGISTRY_ID=15, /* Command to fetch all registry keys | */
+   MAV_REFERENCE_ID=16, /* Command to fetch reference values | */
+   MAV_CALIBRATION_ID=17, /* Command to fetch calibration values | */
+   SystemTMList_ENUM_END=18, /*  | */
+} SystemTMList;
+#endif
+
+/** @brief Enum list of all sensors telemetries that can be requested */
+#ifndef HAVE_ENUM_SensorsTMList
+#define HAVE_ENUM_SensorsTMList
+typedef enum SensorsTMList
+{
+   MAV_BMX160_ID=1, /* BMX160 IMU data | */
+   MAV_VN100_ID=2, /* VN100 IMU data | */
+   MAV_MPU9250_ID=3, /* MPU9250 IMU data | */
+   MAV_ADS131M08_ID=4, /* ADS 8 channel ADC data | */
+   MAV_MS5803_ID=5, /* MS5803 barometer data | */
+   MAV_BME280_ID=6, /* BME280 barometer data | */
+   MAV_LIS3MDL_ID=7, /* LIS3MDL compass data | */
+   MAV_LIS2MDL_ID=8, /* Magnetometer data | */
+   MAV_LPS28DFW_ID=9, /* Pressure sensor data | */
+   MAV_LSM6DSRX_ID=10, /* IMU data | */
+   MAV_H3LIS331DL_ID=11, /* 400G accelerometer | */
+   MAV_LPS22DF_ID=12, /* Pressure sensor data | */
+   MAV_GPS_ID=13, /* GPS data | */
+   MAV_CURRENT_SENSE_ID=14, /* Electrical current sensors data | */
+   MAV_BATTERY_VOLTAGE_ID=15, /* Battery voltage data | */
+   MAV_ROTATED_IMU_ID=16, /* Load cell data | */
+   MAV_DPL_PRESS_ID=17, /* Deployment pressure data | */
+   MAV_STATIC_PRESS_ID=18, /* Static pressure data | */
+   MAV_BACKUP_STATIC_PRESS_ID=19, /* Static pressure data | */
+   MAV_STATIC_PITOT_PRESS_ID=20, /* Pitot pressure data | */
+   MAV_TOTAL_PITOT_PRESS_ID=21, /* Pitot pressure data | */
+   MAV_DYNAMIC_PITOT_PRESS_ID=22, /* Pitot pressure data | */
+   MAV_LOAD_CELL_ID=23, /* Load cell data | */
+   MAV_TANK_TOP_PRESS_ID=24, /* Top tank pressure | */
+   MAV_TANK_BOTTOM_PRESS_ID=25, /* Bottom tank pressure | */
+   MAV_TANK_TEMP_ID=26, /* Tank temperature | */
+   MAV_COMBUSTION_PRESS_ID=27, /* Combustion chamber pressure | */
+   MAV_FILLING_PRESS_ID=28, /* Filling line pressure | */
+   MAV_VESSEL_PRESS_ID=29, /* Vessel pressure | */
+   MAV_LOAD_CELL_VESSEL_ID=30, /* Vessel tank weight | */
+   MAV_LOAD_CELL_TANK_ID=31, /* Tank weight | */
+   SensorsTMList_ENUM_END=32, /*  | */
+} SensorsTMList;
+#endif
+
+/** @brief Enum of the commands */
+#ifndef HAVE_ENUM_MavCommandList
+#define HAVE_ENUM_MavCommandList
+typedef enum MavCommandList
+{
+   MAV_CMD_ARM=1, /* Command to arm the rocket | */
+   MAV_CMD_DISARM=2, /* Command to disarm the rocket | */
+   MAV_CMD_CALIBRATE=3, /* Command to trigger the calibration | */
+   MAV_CMD_SAVE_CALIBRATION=4, /* Command to save the current calibration into a file | */
+   MAV_CMD_FORCE_INIT=5, /* Command to init the rocket | */
+   MAV_CMD_FORCE_LAUNCH=6, /* Command to force the launch state on the rocket | */
+   MAV_CMD_FORCE_ENGINE_SHUTDOWN=7, /* Command to trigger engine shutdown | */
+   MAV_CMD_FORCE_EXPULSION=8, /* Command to trigger nosecone expulsion | */
+   MAV_CMD_FORCE_DEPLOYMENT=9, /* Command to activate the thermal cutters and cut the drogue, activating both thermal cutters sequentially | */
+   MAV_CMD_FORCE_LANDING=10, /* Command to communicate the end of the mission and close the file descriptors in the SD card | */
+   MAV_CMD_START_LOGGING=11, /* Command to enable sensor logging | */
+   MAV_CMD_STOP_LOGGING=12, /* Command to permanently close the log file | */
+   MAV_CMD_FORCE_REBOOT=13, /* Command to reset the board from test status | */
+   MAV_CMD_ENTER_TEST_MODE=14, /* Command to enter the test mode | */
+   MAV_CMD_EXIT_TEST_MODE=15, /* Command to exit the test mode | */
+   MAV_CMD_START_RECORDING=16, /* Command to start the internal cameras recordings | */
+   MAV_CMD_STOP_RECORDING=17, /* Command to stop the internal cameras recordings | */
+   MAV_CMD_OPEN_NITROGEN=18, /* Command to open the nitrogen valve | */
+   MAV_CMD_REGISTRY_LOAD=19, /* Command to reload the registry from memory | */
+   MAV_CMD_REGISTRY_SAVE=20, /* Command to commit the registry to memory | */
+   MAV_CMD_REGISTRY_CLEAR=21, /* Command to clear the registry | */
+   MAV_CMD_ENTER_HIL=22, /* Command to enter HIL mode at next reboot | */
+   MAV_CMD_EXIT_HIL=23, /* Command to exit HIL mode at next reboot | */
+   MAV_CMD_RESET_ALGORITHM=24, /* Command to reset the set algorithm. Used for now in ARP to reset the follow algorithm and return to armed state. | */
+   MAV_CMD_ARP_FORCE_NO_FEEDBACK=25, /* Command to force ARP system to entern the no feedback from VN300 state | */
+   MAV_CMD_ARP_FOLLOW=26, /* Command to enter in the ARP's follow state and procedure to follow the rocket | */
+   MavCommandList_ENUM_END=27, /*  | */
+} MavCommandList;
+#endif
+
+/** @brief Enum of all the servos */
+#ifndef HAVE_ENUM_ServosList
+#define HAVE_ENUM_ServosList
+typedef enum ServosList
+{
+   AIR_BRAKES_SERVO=1, /*  | */
+   EXPULSION_SERVO=2, /*  | */
+   PARAFOIL_LEFT_SERVO=3, /*  | */
+   PARAFOIL_RIGHT_SERVO=4, /*  | */
+   MAIN_VALVE=5, /*  | */
+   VENTING_VALVE=6, /*  | */
+   RELEASE_VALVE=7, /*  | */
+   FILLING_VALVE=8, /*  | */
+   DISCONNECT_SERVO=9, /*  | */
+   ServosList_ENUM_END=10, /*  | */
+} ServosList;
+#endif
+
+/** @brief Enum of all the steppers */
+#ifndef HAVE_ENUM_StepperList
+#define HAVE_ENUM_StepperList
+typedef enum StepperList
+{
+   STEPPER_X=1, /*  | */
+   STEPPER_Y=2, /*  | */
+   StepperList_ENUM_END=3, /*  | */
+} StepperList;
+#endif
+
+/** @brief Enum of all the pins */
+#ifndef HAVE_ENUM_PinsList
+#define HAVE_ENUM_PinsList
+typedef enum PinsList
+{
+   RAMP_PIN=1, /*  | */
+   NOSECONE_PIN=2, /*  | */
+   PinsList_ENUM_END=3, /*  | */
+} PinsList;
+#endif
+
+// MAVLINK VERSION
+
+#ifndef MAVLINK_VERSION
+#define MAVLINK_VERSION 1
+#endif
+
+#if (MAVLINK_VERSION == 0)
+#undef MAVLINK_VERSION
+#define MAVLINK_VERSION 1
+#endif
+
+// MESSAGE DEFINITIONS
+#include "./mavlink_msg_ping_tc.h"
+#include "./mavlink_msg_command_tc.h"
+#include "./mavlink_msg_system_tm_request_tc.h"
+#include "./mavlink_msg_sensor_tm_request_tc.h"
+#include "./mavlink_msg_servo_tm_request_tc.h"
+#include "./mavlink_msg_set_servo_angle_tc.h"
+#include "./mavlink_msg_reset_servo_tc.h"
+#include "./mavlink_msg_wiggle_servo_tc.h"
+#include "./mavlink_msg_set_reference_altitude_tc.h"
+#include "./mavlink_msg_set_reference_temperature_tc.h"
+#include "./mavlink_msg_set_orientation_tc.h"
+#include "./mavlink_msg_set_orientation_quat_tc.h"
+#include "./mavlink_msg_set_coordinates_tc.h"
+#include "./mavlink_msg_raw_event_tc.h"
+#include "./mavlink_msg_set_deployment_altitude_tc.h"
+#include "./mavlink_msg_set_target_coordinates_tc.h"
+#include "./mavlink_msg_set_algorithm_tc.h"
+#include "./mavlink_msg_set_calibration_pressure_tc.h"
+#include "./mavlink_msg_set_initial_mea_mass_tc.h"
+#include "./mavlink_msg_set_atomic_valve_timing_tc.h"
+#include "./mavlink_msg_set_valve_maximum_aperture_tc.h"
+#include "./mavlink_msg_conrig_state_tc.h"
+#include "./mavlink_msg_set_ignition_time_tc.h"
+#include "./mavlink_msg_set_nitrogen_time_tc.h"
+#include "./mavlink_msg_set_cooling_time_tc.h"
+#include "./mavlink_msg_set_stepper_angle_tc.h"
+#include "./mavlink_msg_set_stepper_steps_tc.h"
+#include "./mavlink_msg_set_stepper_multiplier_tc.h"
+#include "./mavlink_msg_set_antenna_coordinates_arp_tc.h"
+#include "./mavlink_msg_set_rocket_coordinates_arp_tc.h"
+#include "./mavlink_msg_arp_command_tc.h"
+#include "./mavlink_msg_ack_tm.h"
+#include "./mavlink_msg_nack_tm.h"
+#include "./mavlink_msg_wack_tm.h"
+#include "./mavlink_msg_gps_tm.h"
+#include "./mavlink_msg_imu_tm.h"
+#include "./mavlink_msg_pressure_tm.h"
+#include "./mavlink_msg_adc_tm.h"
+#include "./mavlink_msg_voltage_tm.h"
+#include "./mavlink_msg_current_tm.h"
+#include "./mavlink_msg_temp_tm.h"
+#include "./mavlink_msg_load_tm.h"
+#include "./mavlink_msg_attitude_tm.h"
+#include "./mavlink_msg_sensor_state_tm.h"
+#include "./mavlink_msg_servo_tm.h"
+#include "./mavlink_msg_pin_tm.h"
+#include "./mavlink_msg_reference_tm.h"
+#include "./mavlink_msg_registry_float_tm.h"
+#include "./mavlink_msg_registry_int_tm.h"
+#include "./mavlink_msg_registry_coord_tm.h"
+#include "./mavlink_msg_arp_tm.h"
+#include "./mavlink_msg_sys_tm.h"
+#include "./mavlink_msg_logger_tm.h"
+#include "./mavlink_msg_mavlink_stats_tm.h"
+#include "./mavlink_msg_can_stats_tm.h"
+#include "./mavlink_msg_task_stats_tm.h"
+#include "./mavlink_msg_ada_tm.h"
+#include "./mavlink_msg_nas_tm.h"
+#include "./mavlink_msg_mea_tm.h"
+#include "./mavlink_msg_rocket_flight_tm.h"
+#include "./mavlink_msg_payload_flight_tm.h"
+#include "./mavlink_msg_rocket_stats_tm.h"
+#include "./mavlink_msg_payload_stats_tm.h"
+#include "./mavlink_msg_gse_tm.h"
+#include "./mavlink_msg_motor_tm.h"
+#include "./mavlink_msg_calibration_tm.h"
+
+// base include
+
+
+#undef MAVLINK_THIS_XML_HASH
+#define MAVLINK_THIS_XML_HASH 5249158651932825104
+
+#if MAVLINK_THIS_XML_HASH == MAVLINK_PRIMARY_XML_HASH
+# define MAVLINK_MESSAGE_INFO {{"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, MAVLINK_MESSAGE_INFO_PING_TC, MAVLINK_MESSAGE_INFO_COMMAND_TC, MAVLINK_MESSAGE_INFO_SYSTEM_TM_REQUEST_TC, MAVLINK_MESSAGE_INFO_SENSOR_TM_REQUEST_TC, MAVLINK_MESSAGE_INFO_SERVO_TM_REQUEST_TC, MAVLINK_MESSAGE_INFO_SET_SERVO_ANGLE_TC, MAVLINK_MESSAGE_INFO_RESET_SERVO_TC, MAVLINK_MESSAGE_INFO_WIGGLE_SERVO_TC, MAVLINK_MESSAGE_INFO_SET_REFERENCE_ALTITUDE_TC, MAVLINK_MESSAGE_INFO_SET_REFERENCE_TEMPERATURE_TC, MAVLINK_MESSAGE_INFO_SET_ORIENTATION_TC, MAVLINK_MESSAGE_INFO_SET_ORIENTATION_QUAT_TC, MAVLINK_MESSAGE_INFO_SET_COORDINATES_TC, MAVLINK_MESSAGE_INFO_RAW_EVENT_TC, MAVLINK_MESSAGE_INFO_SET_DEPLOYMENT_ALTITUDE_TC, MAVLINK_MESSAGE_INFO_SET_TARGET_COORDINATES_TC, MAVLINK_MESSAGE_INFO_SET_ALGORITHM_TC, MAVLINK_MESSAGE_INFO_SET_CALIBRATION_PRESSURE_TC, MAVLINK_MESSAGE_INFO_SET_INITIAL_MEA_MASS_TC, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, MAVLINK_MESSAGE_INFO_SET_ATOMIC_VALVE_TIMING_TC, MAVLINK_MESSAGE_INFO_SET_VALVE_MAXIMUM_APERTURE_TC, MAVLINK_MESSAGE_INFO_CONRIG_STATE_TC, MAVLINK_MESSAGE_INFO_SET_IGNITION_TIME_TC, MAVLINK_MESSAGE_INFO_SET_NITROGEN_TIME_TC, MAVLINK_MESSAGE_INFO_SET_COOLING_TIME_TC, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, MAVLINK_MESSAGE_INFO_SET_STEPPER_ANGLE_TC, MAVLINK_MESSAGE_INFO_SET_STEPPER_STEPS_TC, MAVLINK_MESSAGE_INFO_SET_STEPPER_MULTIPLIER_TC, MAVLINK_MESSAGE_INFO_SET_ANTENNA_COORDINATES_ARP_TC, MAVLINK_MESSAGE_INFO_SET_ROCKET_COORDINATES_ARP_TC, MAVLINK_MESSAGE_INFO_ARP_COMMAND_TC, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, MAVLINK_MESSAGE_INFO_ACK_TM, MAVLINK_MESSAGE_INFO_NACK_TM, MAVLINK_MESSAGE_INFO_WACK_TM, MAVLINK_MESSAGE_INFO_GPS_TM, MAVLINK_MESSAGE_INFO_IMU_TM, MAVLINK_MESSAGE_INFO_PRESSURE_TM, MAVLINK_MESSAGE_INFO_ADC_TM, MAVLINK_MESSAGE_INFO_VOLTAGE_TM, MAVLINK_MESSAGE_INFO_CURRENT_TM, MAVLINK_MESSAGE_INFO_TEMP_TM, MAVLINK_MESSAGE_INFO_LOAD_TM, MAVLINK_MESSAGE_INFO_ATTITUDE_TM, MAVLINK_MESSAGE_INFO_SENSOR_STATE_TM, MAVLINK_MESSAGE_INFO_SERVO_TM, MAVLINK_MESSAGE_INFO_PIN_TM, MAVLINK_MESSAGE_INFO_REFERENCE_TM, MAVLINK_MESSAGE_INFO_REGISTRY_FLOAT_TM, MAVLINK_MESSAGE_INFO_REGISTRY_INT_TM, MAVLINK_MESSAGE_INFO_REGISTRY_COORD_TM, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, MAVLINK_MESSAGE_INFO_ARP_TM, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, MAVLINK_MESSAGE_INFO_SYS_TM, MAVLINK_MESSAGE_INFO_LOGGER_TM, MAVLINK_MESSAGE_INFO_MAVLINK_STATS_TM, MAVLINK_MESSAGE_INFO_CAN_STATS_TM, MAVLINK_MESSAGE_INFO_TASK_STATS_TM, MAVLINK_MESSAGE_INFO_ADA_TM, MAVLINK_MESSAGE_INFO_NAS_TM, MAVLINK_MESSAGE_INFO_MEA_TM, MAVLINK_MESSAGE_INFO_ROCKET_FLIGHT_TM, MAVLINK_MESSAGE_INFO_PAYLOAD_FLIGHT_TM, MAVLINK_MESSAGE_INFO_ROCKET_STATS_TM, MAVLINK_MESSAGE_INFO_PAYLOAD_STATS_TM, MAVLINK_MESSAGE_INFO_GSE_TM, MAVLINK_MESSAGE_INFO_MOTOR_TM, MAVLINK_MESSAGE_INFO_CALIBRATION_TM, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}}
+# define MAVLINK_MESSAGE_NAMES {{ "ACK_TM", 100 }, { "ADA_TM", 205 }, { "ADC_TM", 106 }, { "ARP_COMMAND_TC", 65 }, { "ARP_TM", 150 }, { "ATTITUDE_TM", 111 }, { "CALIBRATION_TM", 214 }, { "CAN_STATS_TM", 203 }, { "COMMAND_TC", 2 }, { "CONRIG_STATE_TC", 32 }, { "CURRENT_TM", 108 }, { "GPS_TM", 103 }, { "GSE_TM", 212 }, { "IMU_TM", 104 }, { "LOAD_TM", 110 }, { "LOGGER_TM", 201 }, { "MAVLINK_STATS_TM", 202 }, { "MEA_TM", 207 }, { "MOTOR_TM", 213 }, { "NACK_TM", 101 }, { "NAS_TM", 206 }, { "PAYLOAD_FLIGHT_TM", 209 }, { "PAYLOAD_STATS_TM", 211 }, { "PING_TC", 1 }, { "PIN_TM", 114 }, { "PRESSURE_TM", 105 }, { "RAW_EVENT_TC", 14 }, { "REFERENCE_TM", 115 }, { "REGISTRY_COORD_TM", 118 }, { "REGISTRY_FLOAT_TM", 116 }, { "REGISTRY_INT_TM", 117 }, { "RESET_SERVO_TC", 7 }, { "ROCKET_FLIGHT_TM", 208 }, { "ROCKET_STATS_TM", 210 }, { "SENSOR_STATE_TM", 112 }, { "SENSOR_TM_REQUEST_TC", 4 }, { "SERVO_TM", 113 }, { "SERVO_TM_REQUEST_TC", 5 }, { "SET_ALGORITHM_TC", 17 }, { "SET_ANTENNA_COORDINATES_ARP_TC", 63 }, { "SET_ATOMIC_VALVE_TIMING_TC", 30 }, { "SET_CALIBRATION_PRESSURE_TC", 18 }, { "SET_COOLING_TIME_TC", 35 }, { "SET_COORDINATES_TC", 13 }, { "SET_DEPLOYMENT_ALTITUDE_TC", 15 }, { "SET_IGNITION_TIME_TC", 33 }, { "SET_INITIAL_MEA_MASS_TC", 19 }, { "SET_NITROGEN_TIME_TC", 34 }, { "SET_ORIENTATION_QUAT_TC", 12 }, { "SET_ORIENTATION_TC", 11 }, { "SET_REFERENCE_ALTITUDE_TC", 9 }, { "SET_REFERENCE_TEMPERATURE_TC", 10 }, { "SET_ROCKET_COORDINATES_ARP_TC", 64 }, { "SET_SERVO_ANGLE_TC", 6 }, { "SET_STEPPER_ANGLE_TC", 60 }, { "SET_STEPPER_MULTIPLIER_TC", 62 }, { "SET_STEPPER_STEPS_TC", 61 }, { "SET_TARGET_COORDINATES_TC", 16 }, { "SET_VALVE_MAXIMUM_APERTURE_TC", 31 }, { "SYSTEM_TM_REQUEST_TC", 3 }, { "SYS_TM", 200 }, { "TASK_STATS_TM", 204 }, { "TEMP_TM", 109 }, { "VOLTAGE_TM", 107 }, { "WACK_TM", 102 }, { "WIGGLE_SERVO_TC", 8 }}
+# if MAVLINK_COMMAND_24BIT
+#  include "../mavlink_get_info.h"
+# endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+#endif // MAVLINK_ORION_H
diff --git a/mavlink_lib/orion/testsuite.h b/mavlink_lib/orion/testsuite.h
new file mode 100644
index 0000000000000000000000000000000000000000..e4c5187ccd7dde9ae5142005c801117fe786422c
--- /dev/null
+++ b/mavlink_lib/orion/testsuite.h
@@ -0,0 +1,4430 @@
+/** @file
+ *    @brief MAVLink comm protocol testsuite generated from orion.xml
+ *    @see https://mavlink.io/en/
+ */
+#pragma once
+#ifndef ORION_TESTSUITE_H
+#define ORION_TESTSUITE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef MAVLINK_TEST_ALL
+#define MAVLINK_TEST_ALL
+
+static void mavlink_test_orion(uint8_t, uint8_t, mavlink_message_t *last_msg);
+
+static void mavlink_test_all(uint8_t system_id, uint8_t component_id, mavlink_message_t *last_msg)
+{
+
+    mavlink_test_orion(system_id, component_id, last_msg);
+}
+#endif
+
+
+
+
+static void mavlink_test_ping_tc(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_PING_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_ping_tc_t packet_in = {
+        93372036854775807ULL
+    };
+    mavlink_ping_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_PING_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_PING_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ping_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_ping_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ping_tc_pack(system_id, component_id, &msg , packet1.timestamp );
+    mavlink_msg_ping_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ping_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp );
+    mavlink_msg_ping_tc_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_ping_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ping_tc_send(MAVLINK_COMM_1 , packet1.timestamp );
+    mavlink_msg_ping_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("PING_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_PING_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_command_tc(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_COMMAND_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_command_tc_t packet_in = {
+        5
+    };
+    mavlink_command_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.command_id = packet_in.command_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_COMMAND_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_command_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_command_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_command_tc_pack(system_id, component_id, &msg , packet1.command_id );
+    mavlink_msg_command_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_command_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.command_id );
+    mavlink_msg_command_tc_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_command_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_command_tc_send(MAVLINK_COMM_1 , packet1.command_id );
+    mavlink_msg_command_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("COMMAND_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_COMMAND_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_system_tm_request_tc(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_SYSTEM_TM_REQUEST_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_system_tm_request_tc_t packet_in = {
+        5
+    };
+    mavlink_system_tm_request_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.tm_id = packet_in.tm_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_system_tm_request_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_system_tm_request_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_system_tm_request_tc_pack(system_id, component_id, &msg , packet1.tm_id );
+    mavlink_msg_system_tm_request_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_system_tm_request_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.tm_id );
+    mavlink_msg_system_tm_request_tc_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_system_tm_request_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_system_tm_request_tc_send(MAVLINK_COMM_1 , packet1.tm_id );
+    mavlink_msg_system_tm_request_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SYSTEM_TM_REQUEST_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_sensor_tm_request_tc(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_SENSOR_TM_REQUEST_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_sensor_tm_request_tc_t packet_in = {
+        5
+    };
+    mavlink_sensor_tm_request_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.sensor_name = packet_in.sensor_name;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sensor_tm_request_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_sensor_tm_request_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sensor_tm_request_tc_pack(system_id, component_id, &msg , packet1.sensor_name );
+    mavlink_msg_sensor_tm_request_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sensor_tm_request_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.sensor_name );
+    mavlink_msg_sensor_tm_request_tc_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_sensor_tm_request_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sensor_tm_request_tc_send(MAVLINK_COMM_1 , packet1.sensor_name );
+    mavlink_msg_sensor_tm_request_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SENSOR_TM_REQUEST_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_servo_tm_request_tc(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_SERVO_TM_REQUEST_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_servo_tm_request_tc_t packet_in = {
+        5
+    };
+    mavlink_servo_tm_request_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.servo_id = packet_in.servo_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_servo_tm_request_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_servo_tm_request_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_servo_tm_request_tc_pack(system_id, component_id, &msg , packet1.servo_id );
+    mavlink_msg_servo_tm_request_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_servo_tm_request_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.servo_id );
+    mavlink_msg_servo_tm_request_tc_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_servo_tm_request_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_servo_tm_request_tc_send(MAVLINK_COMM_1 , packet1.servo_id );
+    mavlink_msg_servo_tm_request_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SERVO_TM_REQUEST_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_servo_angle_tc(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_SET_SERVO_ANGLE_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_servo_angle_tc_t packet_in = {
+        17.0,17
+    };
+    mavlink_set_servo_angle_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.angle = packet_in.angle;
+        packet1.servo_id = packet_in.servo_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_servo_angle_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_servo_angle_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_servo_angle_tc_pack(system_id, component_id, &msg , packet1.servo_id , packet1.angle );
+    mavlink_msg_set_servo_angle_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_servo_angle_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.servo_id , packet1.angle );
+    mavlink_msg_set_servo_angle_tc_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_set_servo_angle_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_servo_angle_tc_send(MAVLINK_COMM_1 , packet1.servo_id , packet1.angle );
+    mavlink_msg_set_servo_angle_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_SERVO_ANGLE_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_reset_servo_tc(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_RESET_SERVO_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_reset_servo_tc_t packet_in = {
+        5
+    };
+    mavlink_reset_servo_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.servo_id = packet_in.servo_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_RESET_SERVO_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_reset_servo_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_reset_servo_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_reset_servo_tc_pack(system_id, component_id, &msg , packet1.servo_id );
+    mavlink_msg_reset_servo_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_reset_servo_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.servo_id );
+    mavlink_msg_reset_servo_tc_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_reset_servo_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_reset_servo_tc_send(MAVLINK_COMM_1 , packet1.servo_id );
+    mavlink_msg_reset_servo_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("RESET_SERVO_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_RESET_SERVO_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_wiggle_servo_tc(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_WIGGLE_SERVO_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_wiggle_servo_tc_t packet_in = {
+        5
+    };
+    mavlink_wiggle_servo_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.servo_id = packet_in.servo_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_WIGGLE_SERVO_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_wiggle_servo_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_wiggle_servo_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_wiggle_servo_tc_pack(system_id, component_id, &msg , packet1.servo_id );
+    mavlink_msg_wiggle_servo_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_wiggle_servo_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.servo_id );
+    mavlink_msg_wiggle_servo_tc_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_wiggle_servo_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_wiggle_servo_tc_send(MAVLINK_COMM_1 , packet1.servo_id );
+    mavlink_msg_wiggle_servo_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("WIGGLE_SERVO_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_WIGGLE_SERVO_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_reference_altitude_tc(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_SET_REFERENCE_ALTITUDE_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_reference_altitude_tc_t packet_in = {
+        17.0
+    };
+    mavlink_set_reference_altitude_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.ref_altitude = packet_in.ref_altitude;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_reference_altitude_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_reference_altitude_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_reference_altitude_tc_pack(system_id, component_id, &msg , packet1.ref_altitude );
+    mavlink_msg_set_reference_altitude_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_reference_altitude_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.ref_altitude );
+    mavlink_msg_set_reference_altitude_tc_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_set_reference_altitude_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_reference_altitude_tc_send(MAVLINK_COMM_1 , packet1.ref_altitude );
+    mavlink_msg_set_reference_altitude_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_REFERENCE_ALTITUDE_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_reference_temperature_tc(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_SET_REFERENCE_TEMPERATURE_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_reference_temperature_tc_t packet_in = {
+        17.0
+    };
+    mavlink_set_reference_temperature_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.ref_temp = packet_in.ref_temp;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_reference_temperature_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_reference_temperature_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_reference_temperature_tc_pack(system_id, component_id, &msg , packet1.ref_temp );
+    mavlink_msg_set_reference_temperature_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_reference_temperature_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.ref_temp );
+    mavlink_msg_set_reference_temperature_tc_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_set_reference_temperature_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_reference_temperature_tc_send(MAVLINK_COMM_1 , packet1.ref_temp );
+    mavlink_msg_set_reference_temperature_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_REFERENCE_TEMPERATURE_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_orientation_tc(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_SET_ORIENTATION_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_orientation_tc_t packet_in = {
+        17.0,45.0,73.0
+    };
+    mavlink_set_orientation_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.yaw = packet_in.yaw;
+        packet1.pitch = packet_in.pitch;
+        packet1.roll = packet_in.roll;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_ORIENTATION_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_orientation_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_orientation_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_orientation_tc_pack(system_id, component_id, &msg , packet1.yaw , packet1.pitch , packet1.roll );
+    mavlink_msg_set_orientation_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_orientation_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.yaw , packet1.pitch , packet1.roll );
+    mavlink_msg_set_orientation_tc_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_set_orientation_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_orientation_tc_send(MAVLINK_COMM_1 , packet1.yaw , packet1.pitch , packet1.roll );
+    mavlink_msg_set_orientation_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_ORIENTATION_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_ORIENTATION_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_orientation_quat_tc(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_SET_ORIENTATION_QUAT_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_orientation_quat_tc_t packet_in = {
+        17.0,45.0,73.0,101.0
+    };
+    mavlink_set_orientation_quat_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.quat_x = packet_in.quat_x;
+        packet1.quat_y = packet_in.quat_y;
+        packet1.quat_z = packet_in.quat_z;
+        packet1.quat_w = packet_in.quat_w;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_orientation_quat_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_orientation_quat_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_orientation_quat_tc_pack(system_id, component_id, &msg , packet1.quat_x , packet1.quat_y , packet1.quat_z , packet1.quat_w );
+    mavlink_msg_set_orientation_quat_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_orientation_quat_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.quat_x , packet1.quat_y , packet1.quat_z , packet1.quat_w );
+    mavlink_msg_set_orientation_quat_tc_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_set_orientation_quat_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_orientation_quat_tc_send(MAVLINK_COMM_1 , packet1.quat_x , packet1.quat_y , packet1.quat_z , packet1.quat_w );
+    mavlink_msg_set_orientation_quat_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_ORIENTATION_QUAT_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_ORIENTATION_QUAT_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_coordinates_tc(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_SET_COORDINATES_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_coordinates_tc_t packet_in = {
+        17.0,45.0
+    };
+    mavlink_set_coordinates_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.latitude = packet_in.latitude;
+        packet1.longitude = packet_in.longitude;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_COORDINATES_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_coordinates_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_coordinates_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_coordinates_tc_pack(system_id, component_id, &msg , packet1.latitude , packet1.longitude );
+    mavlink_msg_set_coordinates_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_coordinates_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.latitude , packet1.longitude );
+    mavlink_msg_set_coordinates_tc_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_set_coordinates_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_coordinates_tc_send(MAVLINK_COMM_1 , packet1.latitude , packet1.longitude );
+    mavlink_msg_set_coordinates_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_COORDINATES_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_COORDINATES_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_raw_event_tc(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_RAW_EVENT_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_raw_event_tc_t packet_in = {
+        5,72
+    };
+    mavlink_raw_event_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.topic_id = packet_in.topic_id;
+        packet1.event_id = packet_in.event_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_RAW_EVENT_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_raw_event_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_raw_event_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_raw_event_tc_pack(system_id, component_id, &msg , packet1.topic_id , packet1.event_id );
+    mavlink_msg_raw_event_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_raw_event_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.topic_id , packet1.event_id );
+    mavlink_msg_raw_event_tc_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_raw_event_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_raw_event_tc_send(MAVLINK_COMM_1 , packet1.topic_id , packet1.event_id );
+    mavlink_msg_raw_event_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("RAW_EVENT_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_RAW_EVENT_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_deployment_altitude_tc(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_SET_DEPLOYMENT_ALTITUDE_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_deployment_altitude_tc_t packet_in = {
+        17.0
+    };
+    mavlink_set_deployment_altitude_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.dpl_altitude = packet_in.dpl_altitude;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_deployment_altitude_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_deployment_altitude_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_deployment_altitude_tc_pack(system_id, component_id, &msg , packet1.dpl_altitude );
+    mavlink_msg_set_deployment_altitude_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_deployment_altitude_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.dpl_altitude );
+    mavlink_msg_set_deployment_altitude_tc_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_set_deployment_altitude_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_deployment_altitude_tc_send(MAVLINK_COMM_1 , packet1.dpl_altitude );
+    mavlink_msg_set_deployment_altitude_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_DEPLOYMENT_ALTITUDE_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_target_coordinates_tc(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_SET_TARGET_COORDINATES_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_target_coordinates_tc_t packet_in = {
+        17.0,45.0
+    };
+    mavlink_set_target_coordinates_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.latitude = packet_in.latitude;
+        packet1.longitude = packet_in.longitude;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_target_coordinates_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_target_coordinates_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_target_coordinates_tc_pack(system_id, component_id, &msg , packet1.latitude , packet1.longitude );
+    mavlink_msg_set_target_coordinates_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_target_coordinates_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.latitude , packet1.longitude );
+    mavlink_msg_set_target_coordinates_tc_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_set_target_coordinates_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_target_coordinates_tc_send(MAVLINK_COMM_1 , packet1.latitude , packet1.longitude );
+    mavlink_msg_set_target_coordinates_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_TARGET_COORDINATES_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_algorithm_tc(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_SET_ALGORITHM_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_algorithm_tc_t packet_in = {
+        5
+    };
+    mavlink_set_algorithm_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.algorithm_number = packet_in.algorithm_number;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_ALGORITHM_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_algorithm_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_algorithm_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_algorithm_tc_pack(system_id, component_id, &msg , packet1.algorithm_number );
+    mavlink_msg_set_algorithm_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_algorithm_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.algorithm_number );
+    mavlink_msg_set_algorithm_tc_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_set_algorithm_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_algorithm_tc_send(MAVLINK_COMM_1 , packet1.algorithm_number );
+    mavlink_msg_set_algorithm_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_ALGORITHM_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_ALGORITHM_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_calibration_pressure_tc(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_SET_CALIBRATION_PRESSURE_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_calibration_pressure_tc_t packet_in = {
+        17.0
+    };
+    mavlink_set_calibration_pressure_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.pressure = packet_in.pressure;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_calibration_pressure_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_calibration_pressure_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_calibration_pressure_tc_pack(system_id, component_id, &msg , packet1.pressure );
+    mavlink_msg_set_calibration_pressure_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_calibration_pressure_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.pressure );
+    mavlink_msg_set_calibration_pressure_tc_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_set_calibration_pressure_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_calibration_pressure_tc_send(MAVLINK_COMM_1 , packet1.pressure );
+    mavlink_msg_set_calibration_pressure_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_CALIBRATION_PRESSURE_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_CALIBRATION_PRESSURE_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_initial_mea_mass_tc(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_SET_INITIAL_MEA_MASS_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_initial_mea_mass_tc_t packet_in = {
+        17.0
+    };
+    mavlink_set_initial_mea_mass_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.mass = packet_in.mass;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_initial_mea_mass_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_initial_mea_mass_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_initial_mea_mass_tc_pack(system_id, component_id, &msg , packet1.mass );
+    mavlink_msg_set_initial_mea_mass_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_initial_mea_mass_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.mass );
+    mavlink_msg_set_initial_mea_mass_tc_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_set_initial_mea_mass_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_initial_mea_mass_tc_send(MAVLINK_COMM_1 , packet1.mass );
+    mavlink_msg_set_initial_mea_mass_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_INITIAL_MEA_MASS_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_INITIAL_MEA_MASS_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_atomic_valve_timing_tc(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_SET_ATOMIC_VALVE_TIMING_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_atomic_valve_timing_tc_t packet_in = {
+        963497464,17
+    };
+    mavlink_set_atomic_valve_timing_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.maximum_timing = packet_in.maximum_timing;
+        packet1.servo_id = packet_in.servo_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_atomic_valve_timing_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_atomic_valve_timing_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_atomic_valve_timing_tc_pack(system_id, component_id, &msg , packet1.servo_id , packet1.maximum_timing );
+    mavlink_msg_set_atomic_valve_timing_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_atomic_valve_timing_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.servo_id , packet1.maximum_timing );
+    mavlink_msg_set_atomic_valve_timing_tc_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_set_atomic_valve_timing_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_atomic_valve_timing_tc_send(MAVLINK_COMM_1 , packet1.servo_id , packet1.maximum_timing );
+    mavlink_msg_set_atomic_valve_timing_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_ATOMIC_VALVE_TIMING_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_valve_maximum_aperture_tc(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_SET_VALVE_MAXIMUM_APERTURE_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_valve_maximum_aperture_tc_t packet_in = {
+        17.0,17
+    };
+    mavlink_set_valve_maximum_aperture_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.maximum_aperture = packet_in.maximum_aperture;
+        packet1.servo_id = packet_in.servo_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_valve_maximum_aperture_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_valve_maximum_aperture_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_valve_maximum_aperture_tc_pack(system_id, component_id, &msg , packet1.servo_id , packet1.maximum_aperture );
+    mavlink_msg_set_valve_maximum_aperture_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_valve_maximum_aperture_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.servo_id , packet1.maximum_aperture );
+    mavlink_msg_set_valve_maximum_aperture_tc_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_set_valve_maximum_aperture_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_valve_maximum_aperture_tc_send(MAVLINK_COMM_1 , packet1.servo_id , packet1.maximum_aperture );
+    mavlink_msg_set_valve_maximum_aperture_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_VALVE_MAXIMUM_APERTURE_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_conrig_state_tc(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_CONRIG_STATE_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_conrig_state_tc_t packet_in = {
+        5,72,139,206,17,84,151
+    };
+    mavlink_conrig_state_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.ignition_btn = packet_in.ignition_btn;
+        packet1.filling_valve_btn = packet_in.filling_valve_btn;
+        packet1.venting_valve_btn = packet_in.venting_valve_btn;
+        packet1.release_pressure_btn = packet_in.release_pressure_btn;
+        packet1.quick_connector_btn = packet_in.quick_connector_btn;
+        packet1.start_tars_btn = packet_in.start_tars_btn;
+        packet1.arm_switch = packet_in.arm_switch;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_CONRIG_STATE_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_conrig_state_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_conrig_state_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_conrig_state_tc_pack(system_id, component_id, &msg , packet1.ignition_btn , packet1.filling_valve_btn , packet1.venting_valve_btn , packet1.release_pressure_btn , packet1.quick_connector_btn , packet1.start_tars_btn , packet1.arm_switch );
+    mavlink_msg_conrig_state_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_conrig_state_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.ignition_btn , packet1.filling_valve_btn , packet1.venting_valve_btn , packet1.release_pressure_btn , packet1.quick_connector_btn , packet1.start_tars_btn , packet1.arm_switch );
+    mavlink_msg_conrig_state_tc_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_conrig_state_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_conrig_state_tc_send(MAVLINK_COMM_1 , packet1.ignition_btn , packet1.filling_valve_btn , packet1.venting_valve_btn , packet1.release_pressure_btn , packet1.quick_connector_btn , packet1.start_tars_btn , packet1.arm_switch );
+    mavlink_msg_conrig_state_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("CONRIG_STATE_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_CONRIG_STATE_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_ignition_time_tc(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_SET_IGNITION_TIME_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_ignition_time_tc_t packet_in = {
+        963497464
+    };
+    mavlink_set_ignition_time_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timing = packet_in.timing;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_IGNITION_TIME_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_ignition_time_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_ignition_time_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_ignition_time_tc_pack(system_id, component_id, &msg , packet1.timing );
+    mavlink_msg_set_ignition_time_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_ignition_time_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timing );
+    mavlink_msg_set_ignition_time_tc_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_set_ignition_time_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_ignition_time_tc_send(MAVLINK_COMM_1 , packet1.timing );
+    mavlink_msg_set_ignition_time_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_IGNITION_TIME_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_IGNITION_TIME_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_nitrogen_time_tc(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_SET_NITROGEN_TIME_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_nitrogen_time_tc_t packet_in = {
+        963497464
+    };
+    mavlink_set_nitrogen_time_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timing = packet_in.timing;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_nitrogen_time_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_nitrogen_time_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_nitrogen_time_tc_pack(system_id, component_id, &msg , packet1.timing );
+    mavlink_msg_set_nitrogen_time_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_nitrogen_time_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timing );
+    mavlink_msg_set_nitrogen_time_tc_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_set_nitrogen_time_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_nitrogen_time_tc_send(MAVLINK_COMM_1 , packet1.timing );
+    mavlink_msg_set_nitrogen_time_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_NITROGEN_TIME_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_NITROGEN_TIME_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_cooling_time_tc(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_SET_COOLING_TIME_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_cooling_time_tc_t packet_in = {
+        963497464
+    };
+    mavlink_set_cooling_time_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timing = packet_in.timing;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_COOLING_TIME_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_cooling_time_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_cooling_time_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_cooling_time_tc_pack(system_id, component_id, &msg , packet1.timing );
+    mavlink_msg_set_cooling_time_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_cooling_time_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timing );
+    mavlink_msg_set_cooling_time_tc_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_set_cooling_time_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_cooling_time_tc_send(MAVLINK_COMM_1 , packet1.timing );
+    mavlink_msg_set_cooling_time_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_COOLING_TIME_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_COOLING_TIME_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_stepper_angle_tc(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_SET_STEPPER_ANGLE_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_stepper_angle_tc_t packet_in = {
+        17.0,17
+    };
+    mavlink_set_stepper_angle_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.angle = packet_in.angle;
+        packet1.stepper_id = packet_in.stepper_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_angle_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_stepper_angle_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_angle_tc_pack(system_id, component_id, &msg , packet1.stepper_id , packet1.angle );
+    mavlink_msg_set_stepper_angle_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_angle_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.stepper_id , packet1.angle );
+    mavlink_msg_set_stepper_angle_tc_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_set_stepper_angle_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_angle_tc_send(MAVLINK_COMM_1 , packet1.stepper_id , packet1.angle );
+    mavlink_msg_set_stepper_angle_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_STEPPER_ANGLE_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_STEPPER_ANGLE_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_stepper_steps_tc(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_SET_STEPPER_STEPS_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_stepper_steps_tc_t packet_in = {
+        17.0,17
+    };
+    mavlink_set_stepper_steps_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.steps = packet_in.steps;
+        packet1.stepper_id = packet_in.stepper_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_steps_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_stepper_steps_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_steps_tc_pack(system_id, component_id, &msg , packet1.stepper_id , packet1.steps );
+    mavlink_msg_set_stepper_steps_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_steps_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.stepper_id , packet1.steps );
+    mavlink_msg_set_stepper_steps_tc_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_set_stepper_steps_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_steps_tc_send(MAVLINK_COMM_1 , packet1.stepper_id , packet1.steps );
+    mavlink_msg_set_stepper_steps_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_STEPPER_STEPS_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_STEPPER_STEPS_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_stepper_multiplier_tc(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_SET_STEPPER_MULTIPLIER_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_stepper_multiplier_tc_t packet_in = {
+        17.0,17
+    };
+    mavlink_set_stepper_multiplier_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.multiplier = packet_in.multiplier;
+        packet1.stepper_id = packet_in.stepper_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_multiplier_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_stepper_multiplier_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_multiplier_tc_pack(system_id, component_id, &msg , packet1.stepper_id , packet1.multiplier );
+    mavlink_msg_set_stepper_multiplier_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_multiplier_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.stepper_id , packet1.multiplier );
+    mavlink_msg_set_stepper_multiplier_tc_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_set_stepper_multiplier_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_stepper_multiplier_tc_send(MAVLINK_COMM_1 , packet1.stepper_id , packet1.multiplier );
+    mavlink_msg_set_stepper_multiplier_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_STEPPER_MULTIPLIER_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_STEPPER_MULTIPLIER_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_antenna_coordinates_arp_tc(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_SET_ANTENNA_COORDINATES_ARP_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_antenna_coordinates_arp_tc_t packet_in = {
+        17.0,45.0,73.0
+    };
+    mavlink_set_antenna_coordinates_arp_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.latitude = packet_in.latitude;
+        packet1.longitude = packet_in.longitude;
+        packet1.height = packet_in.height;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_antenna_coordinates_arp_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_antenna_coordinates_arp_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_antenna_coordinates_arp_tc_pack(system_id, component_id, &msg , packet1.latitude , packet1.longitude , packet1.height );
+    mavlink_msg_set_antenna_coordinates_arp_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_antenna_coordinates_arp_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.latitude , packet1.longitude , packet1.height );
+    mavlink_msg_set_antenna_coordinates_arp_tc_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_set_antenna_coordinates_arp_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_antenna_coordinates_arp_tc_send(MAVLINK_COMM_1 , packet1.latitude , packet1.longitude , packet1.height );
+    mavlink_msg_set_antenna_coordinates_arp_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_ANTENNA_COORDINATES_ARP_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_ANTENNA_COORDINATES_ARP_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_set_rocket_coordinates_arp_tc(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_SET_ROCKET_COORDINATES_ARP_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_set_rocket_coordinates_arp_tc_t packet_in = {
+        17.0,45.0,73.0
+    };
+    mavlink_set_rocket_coordinates_arp_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.latitude = packet_in.latitude;
+        packet1.longitude = packet_in.longitude;
+        packet1.height = packet_in.height;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_rocket_coordinates_arp_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_set_rocket_coordinates_arp_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_rocket_coordinates_arp_tc_pack(system_id, component_id, &msg , packet1.latitude , packet1.longitude , packet1.height );
+    mavlink_msg_set_rocket_coordinates_arp_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_rocket_coordinates_arp_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.latitude , packet1.longitude , packet1.height );
+    mavlink_msg_set_rocket_coordinates_arp_tc_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_set_rocket_coordinates_arp_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_set_rocket_coordinates_arp_tc_send(MAVLINK_COMM_1 , packet1.latitude , packet1.longitude , packet1.height );
+    mavlink_msg_set_rocket_coordinates_arp_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SET_ROCKET_COORDINATES_ARP_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SET_ROCKET_COORDINATES_ARP_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_arp_command_tc(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_ARP_COMMAND_TC >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_arp_command_tc_t packet_in = {
+        5
+    };
+    mavlink_arp_command_tc_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.command_id = packet_in.command_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_ARP_COMMAND_TC_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_arp_command_tc_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_arp_command_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_arp_command_tc_pack(system_id, component_id, &msg , packet1.command_id );
+    mavlink_msg_arp_command_tc_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_arp_command_tc_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.command_id );
+    mavlink_msg_arp_command_tc_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_arp_command_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_arp_command_tc_send(MAVLINK_COMM_1 , packet1.command_id );
+    mavlink_msg_arp_command_tc_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("ARP_COMMAND_TC") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_ARP_COMMAND_TC) != NULL);
+#endif
+}
+
+static void mavlink_test_ack_tm(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_ACK_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_ack_tm_t packet_in = {
+        5,72
+    };
+    mavlink_ack_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.recv_msgid = packet_in.recv_msgid;
+        packet1.seq_ack = packet_in.seq_ack;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_ACK_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_ACK_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ack_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_ack_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ack_tm_pack(system_id, component_id, &msg , packet1.recv_msgid , packet1.seq_ack );
+    mavlink_msg_ack_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ack_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.recv_msgid , packet1.seq_ack );
+    mavlink_msg_ack_tm_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_ack_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ack_tm_send(MAVLINK_COMM_1 , packet1.recv_msgid , packet1.seq_ack );
+    mavlink_msg_ack_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("ACK_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_ACK_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_nack_tm(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_NACK_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_nack_tm_t packet_in = {
+        17235,139,206
+    };
+    mavlink_nack_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.err_id = packet_in.err_id;
+        packet1.recv_msgid = packet_in.recv_msgid;
+        packet1.seq_ack = packet_in.seq_ack;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_NACK_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_NACK_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_nack_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_nack_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_nack_tm_pack(system_id, component_id, &msg , packet1.recv_msgid , packet1.seq_ack , packet1.err_id );
+    mavlink_msg_nack_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_nack_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.recv_msgid , packet1.seq_ack , packet1.err_id );
+    mavlink_msg_nack_tm_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_nack_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_nack_tm_send(MAVLINK_COMM_1 , packet1.recv_msgid , packet1.seq_ack , packet1.err_id );
+    mavlink_msg_nack_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("NACK_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_NACK_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_wack_tm(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_WACK_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_wack_tm_t packet_in = {
+        17235,139,206
+    };
+    mavlink_wack_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.err_id = packet_in.err_id;
+        packet1.recv_msgid = packet_in.recv_msgid;
+        packet1.seq_ack = packet_in.seq_ack;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_WACK_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_WACK_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_wack_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_wack_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_wack_tm_pack(system_id, component_id, &msg , packet1.recv_msgid , packet1.seq_ack , packet1.err_id );
+    mavlink_msg_wack_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_wack_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.recv_msgid , packet1.seq_ack , packet1.err_id );
+    mavlink_msg_wack_tm_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_wack_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_wack_tm_send(MAVLINK_COMM_1 , packet1.recv_msgid , packet1.seq_ack , packet1.err_id );
+    mavlink_msg_wack_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("WACK_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_WACK_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_gps_tm(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_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_gps_tm_t packet_in = {
+        93372036854775807ULL,179.0,235.0,291.0,241.0,269.0,297.0,325.0,353.0,"ABCDEFGHIJKLMNOPQRS",221,32
+    };
+    mavlink_gps_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.latitude = packet_in.latitude;
+        packet1.longitude = packet_in.longitude;
+        packet1.height = packet_in.height;
+        packet1.vel_north = packet_in.vel_north;
+        packet1.vel_east = packet_in.vel_east;
+        packet1.vel_down = packet_in.vel_down;
+        packet1.speed = packet_in.speed;
+        packet1.track = packet_in.track;
+        packet1.fix = packet_in.fix;
+        packet1.n_satellites = packet_in.n_satellites;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_GPS_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_GPS_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_gps_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_gps_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_gps_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.fix , packet1.latitude , packet1.longitude , packet1.height , packet1.vel_north , packet1.vel_east , packet1.vel_down , packet1.speed , packet1.track , packet1.n_satellites );
+    mavlink_msg_gps_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_gps_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.fix , packet1.latitude , packet1.longitude , packet1.height , packet1.vel_north , packet1.vel_east , packet1.vel_down , packet1.speed , packet1.track , packet1.n_satellites );
+    mavlink_msg_gps_tm_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_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_gps_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.fix , packet1.latitude , packet1.longitude , packet1.height , packet1.vel_north , packet1.vel_east , packet1.vel_down , packet1.speed , packet1.track , packet1.n_satellites );
+    mavlink_msg_gps_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("GPS_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_GPS_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_imu_tm(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_IMU_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_imu_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,269.0,297.0,"STUVWXYZABCDEFGHIJK"
+    };
+    mavlink_imu_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.acc_x = packet_in.acc_x;
+        packet1.acc_y = packet_in.acc_y;
+        packet1.acc_z = packet_in.acc_z;
+        packet1.gyro_x = packet_in.gyro_x;
+        packet1.gyro_y = packet_in.gyro_y;
+        packet1.gyro_z = packet_in.gyro_z;
+        packet1.mag_x = packet_in.mag_x;
+        packet1.mag_y = packet_in.mag_y;
+        packet1.mag_z = packet_in.mag_z;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_IMU_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_IMU_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_imu_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_imu_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_imu_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z );
+    mavlink_msg_imu_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_imu_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z );
+    mavlink_msg_imu_tm_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_imu_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_imu_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z );
+    mavlink_msg_imu_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("IMU_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_IMU_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_pressure_tm(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_PRESSURE_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_pressure_tm_t packet_in = {
+        93372036854775807ULL,73.0,"MNOPQRSTUVWXYZABCDE"
+    };
+    mavlink_pressure_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.pressure = packet_in.pressure;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_PRESSURE_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_pressure_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_pressure_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_pressure_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.pressure );
+    mavlink_msg_pressure_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_pressure_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.pressure );
+    mavlink_msg_pressure_tm_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_pressure_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_pressure_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.pressure );
+    mavlink_msg_pressure_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("PRESSURE_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_PRESSURE_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_adc_tm(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_ADC_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_adc_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,269.0,"OPQRSTUVWXYZABCDEFG"
+    };
+    mavlink_adc_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.channel_0 = packet_in.channel_0;
+        packet1.channel_1 = packet_in.channel_1;
+        packet1.channel_2 = packet_in.channel_2;
+        packet1.channel_3 = packet_in.channel_3;
+        packet1.channel_4 = packet_in.channel_4;
+        packet1.channel_5 = packet_in.channel_5;
+        packet1.channel_6 = packet_in.channel_6;
+        packet1.channel_7 = packet_in.channel_7;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_ADC_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_ADC_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_adc_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_adc_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_adc_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.channel_0 , packet1.channel_1 , packet1.channel_2 , packet1.channel_3 , packet1.channel_4 , packet1.channel_5 , packet1.channel_6 , packet1.channel_7 );
+    mavlink_msg_adc_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_adc_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.channel_0 , packet1.channel_1 , packet1.channel_2 , packet1.channel_3 , packet1.channel_4 , packet1.channel_5 , packet1.channel_6 , packet1.channel_7 );
+    mavlink_msg_adc_tm_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_adc_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_adc_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.channel_0 , packet1.channel_1 , packet1.channel_2 , packet1.channel_3 , packet1.channel_4 , packet1.channel_5 , packet1.channel_6 , packet1.channel_7 );
+    mavlink_msg_adc_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("ADC_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_ADC_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_voltage_tm(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_VOLTAGE_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_voltage_tm_t packet_in = {
+        93372036854775807ULL,73.0,"MNOPQRSTUVWXYZABCDE"
+    };
+    mavlink_voltage_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.voltage = packet_in.voltage;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_VOLTAGE_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_voltage_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_voltage_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_voltage_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.voltage );
+    mavlink_msg_voltage_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_voltage_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.voltage );
+    mavlink_msg_voltage_tm_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_voltage_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_voltage_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.voltage );
+    mavlink_msg_voltage_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("VOLTAGE_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_VOLTAGE_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_current_tm(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_CURRENT_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_current_tm_t packet_in = {
+        93372036854775807ULL,73.0,"MNOPQRSTUVWXYZABCDE"
+    };
+    mavlink_current_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.current = packet_in.current;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_CURRENT_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_current_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_current_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_current_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.current );
+    mavlink_msg_current_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_current_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.current );
+    mavlink_msg_current_tm_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_current_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_current_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.current );
+    mavlink_msg_current_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("CURRENT_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_CURRENT_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_temp_tm(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_TEMP_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_temp_tm_t packet_in = {
+        93372036854775807ULL,73.0,"MNOPQRSTUVWXYZABCDE"
+    };
+    mavlink_temp_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.temperature = packet_in.temperature;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_TEMP_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_TEMP_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_temp_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_temp_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_temp_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.temperature );
+    mavlink_msg_temp_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_temp_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.temperature );
+    mavlink_msg_temp_tm_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_temp_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_temp_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.temperature );
+    mavlink_msg_temp_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("TEMP_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_TEMP_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_load_tm(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_LOAD_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_load_tm_t packet_in = {
+        93372036854775807ULL,73.0,"MNOPQRSTUVWXYZABCDE"
+    };
+    mavlink_load_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.load = packet_in.load;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_LOAD_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_LOAD_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_load_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_load_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_load_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.load );
+    mavlink_msg_load_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_load_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.load );
+    mavlink_msg_load_tm_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_load_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_load_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.load );
+    mavlink_msg_load_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("LOAD_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_LOAD_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_attitude_tm(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_ATTITUDE_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_attitude_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,"KLMNOPQRSTUVWXYZABC"
+    };
+    mavlink_attitude_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.roll = packet_in.roll;
+        packet1.pitch = packet_in.pitch;
+        packet1.yaw = packet_in.yaw;
+        packet1.quat_x = packet_in.quat_x;
+        packet1.quat_y = packet_in.quat_y;
+        packet1.quat_z = packet_in.quat_z;
+        packet1.quat_w = packet_in.quat_w;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_ATTITUDE_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_attitude_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_attitude_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_attitude_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.sensor_name , packet1.roll , packet1.pitch , packet1.yaw , packet1.quat_x , packet1.quat_y , packet1.quat_z , packet1.quat_w );
+    mavlink_msg_attitude_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_attitude_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.sensor_name , packet1.roll , packet1.pitch , packet1.yaw , packet1.quat_x , packet1.quat_y , packet1.quat_z , packet1.quat_w );
+    mavlink_msg_attitude_tm_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_attitude_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_attitude_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.sensor_name , packet1.roll , packet1.pitch , packet1.yaw , packet1.quat_x , packet1.quat_y , packet1.quat_z , packet1.quat_w );
+    mavlink_msg_attitude_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("ATTITUDE_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_ATTITUDE_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_sensor_state_tm(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_SENSOR_STATE_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_sensor_state_tm_t packet_in = {
+        "ABCDEFGHIJKLMNOPQRS",65,132
+    };
+    mavlink_sensor_state_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.initialized = packet_in.initialized;
+        packet1.enabled = packet_in.enabled;
+        
+        mav_array_memcpy(packet1.sensor_name, packet_in.sensor_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sensor_state_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_sensor_state_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sensor_state_tm_pack(system_id, component_id, &msg , packet1.sensor_name , packet1.initialized , packet1.enabled );
+    mavlink_msg_sensor_state_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sensor_state_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.sensor_name , packet1.initialized , packet1.enabled );
+    mavlink_msg_sensor_state_tm_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_sensor_state_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sensor_state_tm_send(MAVLINK_COMM_1 , packet1.sensor_name , packet1.initialized , packet1.enabled );
+    mavlink_msg_sensor_state_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SENSOR_STATE_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SENSOR_STATE_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_servo_tm(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_SERVO_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_servo_tm_t packet_in = {
+        17.0,17
+    };
+    mavlink_servo_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.servo_position = packet_in.servo_position;
+        packet1.servo_id = packet_in.servo_id;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SERVO_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SERVO_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_servo_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_servo_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_servo_tm_pack(system_id, component_id, &msg , packet1.servo_id , packet1.servo_position );
+    mavlink_msg_servo_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_servo_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.servo_id , packet1.servo_position );
+    mavlink_msg_servo_tm_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_servo_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_servo_tm_send(MAVLINK_COMM_1 , packet1.servo_id , packet1.servo_position );
+    mavlink_msg_servo_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SERVO_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SERVO_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_pin_tm(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_PIN_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_pin_tm_t packet_in = {
+        93372036854775807ULL,93372036854776311ULL,53,120,187
+    };
+    mavlink_pin_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.last_change_timestamp = packet_in.last_change_timestamp;
+        packet1.pin_id = packet_in.pin_id;
+        packet1.changes_counter = packet_in.changes_counter;
+        packet1.current_state = packet_in.current_state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_PIN_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_PIN_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_pin_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_pin_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_pin_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.pin_id , packet1.last_change_timestamp , packet1.changes_counter , packet1.current_state );
+    mavlink_msg_pin_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_pin_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.pin_id , packet1.last_change_timestamp , packet1.changes_counter , packet1.current_state );
+    mavlink_msg_pin_tm_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_pin_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_pin_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.pin_id , packet1.last_change_timestamp , packet1.changes_counter , packet1.current_state );
+    mavlink_msg_pin_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("PIN_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_PIN_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_reference_tm(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_REFERENCE_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_reference_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0
+    };
+    mavlink_reference_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.ref_altitude = packet_in.ref_altitude;
+        packet1.ref_pressure = packet_in.ref_pressure;
+        packet1.ref_temperature = packet_in.ref_temperature;
+        packet1.ref_latitude = packet_in.ref_latitude;
+        packet1.ref_longitude = packet_in.ref_longitude;
+        packet1.msl_pressure = packet_in.msl_pressure;
+        packet1.msl_temperature = packet_in.msl_temperature;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_REFERENCE_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_reference_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_reference_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_reference_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.ref_altitude , packet1.ref_pressure , packet1.ref_temperature , packet1.ref_latitude , packet1.ref_longitude , packet1.msl_pressure , packet1.msl_temperature );
+    mavlink_msg_reference_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_reference_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.ref_altitude , packet1.ref_pressure , packet1.ref_temperature , packet1.ref_latitude , packet1.ref_longitude , packet1.msl_pressure , packet1.msl_temperature );
+    mavlink_msg_reference_tm_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_reference_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_reference_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.ref_altitude , packet1.ref_pressure , packet1.ref_temperature , packet1.ref_latitude , packet1.ref_longitude , packet1.msl_pressure , packet1.msl_temperature );
+    mavlink_msg_reference_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("REFERENCE_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_REFERENCE_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_registry_float_tm(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_REGISTRY_FLOAT_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_registry_float_tm_t packet_in = {
+        93372036854775807ULL,963497880,101.0,"QRSTUVWXYZABCDEFGHI"
+    };
+    mavlink_registry_float_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.key_id = packet_in.key_id;
+        packet1.value = packet_in.value;
+        
+        mav_array_memcpy(packet1.key_name, packet_in.key_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_REGISTRY_FLOAT_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_float_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_registry_float_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_float_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.value );
+    mavlink_msg_registry_float_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_float_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.value );
+    mavlink_msg_registry_float_tm_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_registry_float_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_float_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.value );
+    mavlink_msg_registry_float_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("REGISTRY_FLOAT_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_REGISTRY_FLOAT_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_registry_int_tm(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_REGISTRY_INT_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_registry_int_tm_t packet_in = {
+        93372036854775807ULL,963497880,963498088,"QRSTUVWXYZABCDEFGHI"
+    };
+    mavlink_registry_int_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.key_id = packet_in.key_id;
+        packet1.value = packet_in.value;
+        
+        mav_array_memcpy(packet1.key_name, packet_in.key_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_REGISTRY_INT_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_int_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_registry_int_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_int_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.value );
+    mavlink_msg_registry_int_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_int_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.value );
+    mavlink_msg_registry_int_tm_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_registry_int_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_int_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.value );
+    mavlink_msg_registry_int_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("REGISTRY_INT_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_REGISTRY_INT_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_registry_coord_tm(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_REGISTRY_COORD_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_registry_coord_tm_t packet_in = {
+        93372036854775807ULL,963497880,101.0,129.0,"UVWXYZABCDEFGHIJKLM"
+    };
+    mavlink_registry_coord_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.key_id = packet_in.key_id;
+        packet1.latitude = packet_in.latitude;
+        packet1.longitude = packet_in.longitude;
+        
+        mav_array_memcpy(packet1.key_name, packet_in.key_name, sizeof(char)*20);
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_REGISTRY_COORD_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_coord_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_registry_coord_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_coord_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.latitude , packet1.longitude );
+    mavlink_msg_registry_coord_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_coord_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.latitude , packet1.longitude );
+    mavlink_msg_registry_coord_tm_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_registry_coord_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_registry_coord_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.key_id , packet1.key_name , packet1.latitude , packet1.longitude );
+    mavlink_msg_registry_coord_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("REGISTRY_COORD_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_REGISTRY_COORD_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_arp_tm(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_ARP_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_arp_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,269.0,297.0,325.0,353.0,381.0,409.0,437.0,465.0,493.0,521.0,21187,21291,21395,21499,21603,21707,21811,21915,22019,22123,22227,171,238,49,116,183,250
+    };
+    mavlink_arp_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.yaw = packet_in.yaw;
+        packet1.pitch = packet_in.pitch;
+        packet1.roll = packet_in.roll;
+        packet1.target_yaw = packet_in.target_yaw;
+        packet1.target_pitch = packet_in.target_pitch;
+        packet1.stepperX_pos = packet_in.stepperX_pos;
+        packet1.stepperX_delta = packet_in.stepperX_delta;
+        packet1.stepperX_speed = packet_in.stepperX_speed;
+        packet1.stepperY_pos = packet_in.stepperY_pos;
+        packet1.stepperY_delta = packet_in.stepperY_delta;
+        packet1.stepperY_speed = packet_in.stepperY_speed;
+        packet1.gps_latitude = packet_in.gps_latitude;
+        packet1.gps_longitude = packet_in.gps_longitude;
+        packet1.gps_height = packet_in.gps_height;
+        packet1.main_rx_rssi = packet_in.main_rx_rssi;
+        packet1.payload_rx_rssi = packet_in.payload_rx_rssi;
+        packet1.battery_voltage = packet_in.battery_voltage;
+        packet1.main_packet_tx_error_count = packet_in.main_packet_tx_error_count;
+        packet1.main_tx_bitrate = packet_in.main_tx_bitrate;
+        packet1.main_packet_rx_success_count = packet_in.main_packet_rx_success_count;
+        packet1.main_packet_rx_drop_count = packet_in.main_packet_rx_drop_count;
+        packet1.main_rx_bitrate = packet_in.main_rx_bitrate;
+        packet1.payload_packet_tx_error_count = packet_in.payload_packet_tx_error_count;
+        packet1.payload_tx_bitrate = packet_in.payload_tx_bitrate;
+        packet1.payload_packet_rx_success_count = packet_in.payload_packet_rx_success_count;
+        packet1.payload_packet_rx_drop_count = packet_in.payload_packet_rx_drop_count;
+        packet1.payload_rx_bitrate = packet_in.payload_rx_bitrate;
+        packet1.log_number = packet_in.log_number;
+        packet1.state = packet_in.state;
+        packet1.gps_fix = packet_in.gps_fix;
+        packet1.main_radio_present = packet_in.main_radio_present;
+        packet1.payload_radio_present = packet_in.payload_radio_present;
+        packet1.ethernet_present = packet_in.ethernet_present;
+        packet1.ethernet_status = packet_in.ethernet_status;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_ARP_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_ARP_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_arp_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_arp_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_arp_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.state , packet1.yaw , packet1.pitch , packet1.roll , packet1.target_yaw , packet1.target_pitch , packet1.stepperX_pos , packet1.stepperX_delta , packet1.stepperX_speed , packet1.stepperY_pos , packet1.stepperY_delta , packet1.stepperY_speed , packet1.gps_latitude , packet1.gps_longitude , packet1.gps_height , packet1.gps_fix , packet1.main_radio_present , packet1.main_packet_tx_error_count , packet1.main_tx_bitrate , packet1.main_packet_rx_success_count , packet1.main_packet_rx_drop_count , packet1.main_rx_bitrate , packet1.main_rx_rssi , packet1.payload_radio_present , packet1.payload_packet_tx_error_count , packet1.payload_tx_bitrate , packet1.payload_packet_rx_success_count , packet1.payload_packet_rx_drop_count , packet1.payload_rx_bitrate , packet1.payload_rx_rssi , packet1.ethernet_present , packet1.ethernet_status , packet1.battery_voltage , packet1.log_number );
+    mavlink_msg_arp_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_arp_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.state , packet1.yaw , packet1.pitch , packet1.roll , packet1.target_yaw , packet1.target_pitch , packet1.stepperX_pos , packet1.stepperX_delta , packet1.stepperX_speed , packet1.stepperY_pos , packet1.stepperY_delta , packet1.stepperY_speed , packet1.gps_latitude , packet1.gps_longitude , packet1.gps_height , packet1.gps_fix , packet1.main_radio_present , packet1.main_packet_tx_error_count , packet1.main_tx_bitrate , packet1.main_packet_rx_success_count , packet1.main_packet_rx_drop_count , packet1.main_rx_bitrate , packet1.main_rx_rssi , packet1.payload_radio_present , packet1.payload_packet_tx_error_count , packet1.payload_tx_bitrate , packet1.payload_packet_rx_success_count , packet1.payload_packet_rx_drop_count , packet1.payload_rx_bitrate , packet1.payload_rx_rssi , packet1.ethernet_present , packet1.ethernet_status , packet1.battery_voltage , packet1.log_number );
+    mavlink_msg_arp_tm_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_arp_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_arp_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.state , packet1.yaw , packet1.pitch , packet1.roll , packet1.target_yaw , packet1.target_pitch , packet1.stepperX_pos , packet1.stepperX_delta , packet1.stepperX_speed , packet1.stepperY_pos , packet1.stepperY_delta , packet1.stepperY_speed , packet1.gps_latitude , packet1.gps_longitude , packet1.gps_height , packet1.gps_fix , packet1.main_radio_present , packet1.main_packet_tx_error_count , packet1.main_tx_bitrate , packet1.main_packet_rx_success_count , packet1.main_packet_rx_drop_count , packet1.main_rx_bitrate , packet1.main_rx_rssi , packet1.payload_radio_present , packet1.payload_packet_tx_error_count , packet1.payload_tx_bitrate , packet1.payload_packet_rx_success_count , packet1.payload_packet_rx_drop_count , packet1.payload_rx_bitrate , packet1.payload_rx_rssi , packet1.ethernet_present , packet1.ethernet_status , packet1.battery_voltage , packet1.log_number );
+    mavlink_msg_arp_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("ARP_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_ARP_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_sys_tm(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_SYS_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_sys_tm_t packet_in = {
+        93372036854775807ULL,29,96,163,230,41,108,175,242
+    };
+    mavlink_sys_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.logger = packet_in.logger;
+        packet1.event_broker = packet_in.event_broker;
+        packet1.radio = packet_in.radio;
+        packet1.sensors = packet_in.sensors;
+        packet1.actuators = packet_in.actuators;
+        packet1.pin_handler = packet_in.pin_handler;
+        packet1.can_handler = packet_in.can_handler;
+        packet1.scheduler = packet_in.scheduler;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_SYS_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_SYS_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sys_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_sys_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sys_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.logger , packet1.event_broker , packet1.radio , packet1.sensors , packet1.actuators , packet1.pin_handler , packet1.can_handler , packet1.scheduler );
+    mavlink_msg_sys_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sys_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.logger , packet1.event_broker , packet1.radio , packet1.sensors , packet1.actuators , packet1.pin_handler , packet1.can_handler , packet1.scheduler );
+    mavlink_msg_sys_tm_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_sys_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_sys_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.logger , packet1.event_broker , packet1.radio , packet1.sensors , packet1.actuators , packet1.pin_handler , packet1.can_handler , packet1.scheduler );
+    mavlink_msg_sys_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("SYS_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_SYS_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_logger_tm(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_LOGGER_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_logger_tm_t packet_in = {
+        93372036854775807ULL,963497880,963498088,963498296,963498504,963498712,963498920,963499128,963499336,963499544,19523
+    };
+    mavlink_logger_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.too_large_samples = packet_in.too_large_samples;
+        packet1.dropped_samples = packet_in.dropped_samples;
+        packet1.queued_samples = packet_in.queued_samples;
+        packet1.buffers_filled = packet_in.buffers_filled;
+        packet1.buffers_written = packet_in.buffers_written;
+        packet1.writes_failed = packet_in.writes_failed;
+        packet1.last_write_error = packet_in.last_write_error;
+        packet1.average_write_time = packet_in.average_write_time;
+        packet1.max_write_time = packet_in.max_write_time;
+        packet1.log_number = packet_in.log_number;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_LOGGER_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_logger_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_logger_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_logger_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.log_number , packet1.too_large_samples , packet1.dropped_samples , packet1.queued_samples , packet1.buffers_filled , packet1.buffers_written , packet1.writes_failed , packet1.last_write_error , packet1.average_write_time , packet1.max_write_time );
+    mavlink_msg_logger_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_logger_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.log_number , packet1.too_large_samples , packet1.dropped_samples , packet1.queued_samples , packet1.buffers_filled , packet1.buffers_written , packet1.writes_failed , packet1.last_write_error , packet1.average_write_time , packet1.max_write_time );
+    mavlink_msg_logger_tm_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_logger_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_logger_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.log_number , packet1.too_large_samples , packet1.dropped_samples , packet1.queued_samples , packet1.buffers_filled , packet1.buffers_written , packet1.writes_failed , packet1.last_write_error , packet1.average_write_time , packet1.max_write_time );
+    mavlink_msg_logger_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("LOGGER_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_LOGGER_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_mavlink_stats_tm(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_MAVLINK_STATS_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_mavlink_stats_tm_t packet_in = {
+        93372036854775807ULL,963497880,17859,17963,18067,18171,18275,199,10,77,144,211,22
+    };
+    mavlink_mavlink_stats_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.parse_state = packet_in.parse_state;
+        packet1.n_send_queue = packet_in.n_send_queue;
+        packet1.max_send_queue = packet_in.max_send_queue;
+        packet1.n_send_errors = packet_in.n_send_errors;
+        packet1.packet_rx_success_count = packet_in.packet_rx_success_count;
+        packet1.packet_rx_drop_count = packet_in.packet_rx_drop_count;
+        packet1.msg_received = packet_in.msg_received;
+        packet1.buffer_overrun = packet_in.buffer_overrun;
+        packet1.parse_error = packet_in.parse_error;
+        packet1.packet_idx = packet_in.packet_idx;
+        packet1.current_rx_seq = packet_in.current_rx_seq;
+        packet1.current_tx_seq = packet_in.current_tx_seq;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_MAVLINK_STATS_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_mavlink_stats_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_mavlink_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_mavlink_stats_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.n_send_queue , packet1.max_send_queue , packet1.n_send_errors , packet1.msg_received , packet1.buffer_overrun , packet1.parse_error , packet1.parse_state , packet1.packet_idx , packet1.current_rx_seq , packet1.current_tx_seq , packet1.packet_rx_success_count , packet1.packet_rx_drop_count );
+    mavlink_msg_mavlink_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_mavlink_stats_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.n_send_queue , packet1.max_send_queue , packet1.n_send_errors , packet1.msg_received , packet1.buffer_overrun , packet1.parse_error , packet1.parse_state , packet1.packet_idx , packet1.current_rx_seq , packet1.current_tx_seq , packet1.packet_rx_success_count , packet1.packet_rx_drop_count );
+    mavlink_msg_mavlink_stats_tm_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_mavlink_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_mavlink_stats_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.n_send_queue , packet1.max_send_queue , packet1.n_send_errors , packet1.msg_received , packet1.buffer_overrun , packet1.parse_error , packet1.parse_state , packet1.packet_idx , packet1.current_rx_seq , packet1.current_tx_seq , packet1.packet_rx_success_count , packet1.packet_rx_drop_count );
+    mavlink_msg_mavlink_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("MAVLINK_STATS_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_MAVLINK_STATS_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_can_stats_tm(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_CAN_STATS_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_can_stats_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0
+    };
+    mavlink_can_stats_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.payload_bit_rate = packet_in.payload_bit_rate;
+        packet1.total_bit_rate = packet_in.total_bit_rate;
+        packet1.load_percent = packet_in.load_percent;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_CAN_STATS_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_can_stats_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_can_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_can_stats_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.payload_bit_rate , packet1.total_bit_rate , packet1.load_percent );
+    mavlink_msg_can_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_can_stats_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.payload_bit_rate , packet1.total_bit_rate , packet1.load_percent );
+    mavlink_msg_can_stats_tm_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_can_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_can_stats_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.payload_bit_rate , packet1.total_bit_rate , packet1.load_percent );
+    mavlink_msg_can_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("CAN_STATS_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_CAN_STATS_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_task_stats_tm(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_TASK_STATS_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_task_stats_tm_t packet_in = {
+        93372036854775807ULL,963497880,963498088,129.0,157.0,185.0,213.0,241.0,269.0,19315,19419
+    };
+    mavlink_task_stats_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.task_missed_events = packet_in.task_missed_events;
+        packet1.task_failed_events = packet_in.task_failed_events;
+        packet1.task_activation_mean = packet_in.task_activation_mean;
+        packet1.task_activation_stddev = packet_in.task_activation_stddev;
+        packet1.task_period_mean = packet_in.task_period_mean;
+        packet1.task_period_stddev = packet_in.task_period_stddev;
+        packet1.task_workload_mean = packet_in.task_workload_mean;
+        packet1.task_workload_stddev = packet_in.task_workload_stddev;
+        packet1.task_id = packet_in.task_id;
+        packet1.task_period = packet_in.task_period;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_task_stats_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_task_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_task_stats_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.task_id , packet1.task_period , packet1.task_missed_events , packet1.task_failed_events , packet1.task_activation_mean , packet1.task_activation_stddev , packet1.task_period_mean , packet1.task_period_stddev , packet1.task_workload_mean , packet1.task_workload_stddev );
+    mavlink_msg_task_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_task_stats_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.task_id , packet1.task_period , packet1.task_missed_events , packet1.task_failed_events , packet1.task_activation_mean , packet1.task_activation_stddev , packet1.task_period_mean , packet1.task_period_stddev , packet1.task_workload_mean , packet1.task_workload_stddev );
+    mavlink_msg_task_stats_tm_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_task_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_task_stats_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.task_id , packet1.task_period , packet1.task_missed_events , packet1.task_failed_events , packet1.task_activation_mean , packet1.task_activation_stddev , packet1.task_period_mean , packet1.task_period_stddev , packet1.task_workload_mean , packet1.task_workload_stddev );
+    mavlink_msg_task_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("TASK_STATS_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_TASK_STATS_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_ada_tm(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_ADA_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_ada_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,269.0,297.0,325.0,353.0,161
+    };
+    mavlink_ada_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.kalman_x0 = packet_in.kalman_x0;
+        packet1.kalman_x1 = packet_in.kalman_x1;
+        packet1.kalman_x2 = packet_in.kalman_x2;
+        packet1.vertical_speed = packet_in.vertical_speed;
+        packet1.msl_altitude = packet_in.msl_altitude;
+        packet1.ref_pressure = packet_in.ref_pressure;
+        packet1.ref_altitude = packet_in.ref_altitude;
+        packet1.ref_temperature = packet_in.ref_temperature;
+        packet1.msl_pressure = packet_in.msl_pressure;
+        packet1.msl_temperature = packet_in.msl_temperature;
+        packet1.dpl_altitude = packet_in.dpl_altitude;
+        packet1.state = packet_in.state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_ADA_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_ADA_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ada_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_ada_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ada_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.state , packet1.kalman_x0 , packet1.kalman_x1 , packet1.kalman_x2 , packet1.vertical_speed , packet1.msl_altitude , packet1.ref_pressure , packet1.ref_altitude , packet1.ref_temperature , packet1.msl_pressure , packet1.msl_temperature , packet1.dpl_altitude );
+    mavlink_msg_ada_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ada_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.state , packet1.kalman_x0 , packet1.kalman_x1 , packet1.kalman_x2 , packet1.vertical_speed , packet1.msl_altitude , packet1.ref_pressure , packet1.ref_altitude , packet1.ref_temperature , packet1.msl_pressure , packet1.msl_temperature , packet1.dpl_altitude );
+    mavlink_msg_ada_tm_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_ada_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_ada_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.state , packet1.kalman_x0 , packet1.kalman_x1 , packet1.kalman_x2 , packet1.vertical_speed , packet1.msl_altitude , packet1.ref_pressure , packet1.ref_altitude , packet1.ref_temperature , packet1.msl_pressure , packet1.msl_temperature , packet1.dpl_altitude );
+    mavlink_msg_ada_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("ADA_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_ADA_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_nas_tm(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_NAS_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_nas_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,269.0,297.0,325.0,353.0,381.0,409.0,437.0,465.0,493.0,521.0,233
+    };
+    mavlink_nas_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.nas_n = packet_in.nas_n;
+        packet1.nas_e = packet_in.nas_e;
+        packet1.nas_d = packet_in.nas_d;
+        packet1.nas_vn = packet_in.nas_vn;
+        packet1.nas_ve = packet_in.nas_ve;
+        packet1.nas_vd = packet_in.nas_vd;
+        packet1.nas_qx = packet_in.nas_qx;
+        packet1.nas_qy = packet_in.nas_qy;
+        packet1.nas_qz = packet_in.nas_qz;
+        packet1.nas_qw = packet_in.nas_qw;
+        packet1.nas_bias_x = packet_in.nas_bias_x;
+        packet1.nas_bias_y = packet_in.nas_bias_y;
+        packet1.nas_bias_z = packet_in.nas_bias_z;
+        packet1.ref_pressure = packet_in.ref_pressure;
+        packet1.ref_temperature = packet_in.ref_temperature;
+        packet1.ref_latitude = packet_in.ref_latitude;
+        packet1.ref_longitude = packet_in.ref_longitude;
+        packet1.state = packet_in.state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_NAS_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_NAS_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_nas_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_nas_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_nas_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.state , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.ref_pressure , packet1.ref_temperature , packet1.ref_latitude , packet1.ref_longitude );
+    mavlink_msg_nas_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_nas_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.state , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.ref_pressure , packet1.ref_temperature , packet1.ref_latitude , packet1.ref_longitude );
+    mavlink_msg_nas_tm_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_nas_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_nas_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.state , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.ref_pressure , packet1.ref_temperature , packet1.ref_latitude , packet1.ref_longitude );
+    mavlink_msg_nas_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("NAS_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_NAS_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_mea_tm(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_MEA_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_mea_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,89
+    };
+    mavlink_mea_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.kalman_x0 = packet_in.kalman_x0;
+        packet1.kalman_x1 = packet_in.kalman_x1;
+        packet1.kalman_x2 = packet_in.kalman_x2;
+        packet1.mass = packet_in.mass;
+        packet1.corrected_pressure = packet_in.corrected_pressure;
+        packet1.state = packet_in.state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_MEA_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_MEA_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_mea_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_mea_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_mea_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.state , packet1.kalman_x0 , packet1.kalman_x1 , packet1.kalman_x2 , packet1.mass , packet1.corrected_pressure );
+    mavlink_msg_mea_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_mea_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.state , packet1.kalman_x0 , packet1.kalman_x1 , packet1.kalman_x2 , packet1.mass , packet1.corrected_pressure );
+    mavlink_msg_mea_tm_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_mea_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_mea_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.state , packet1.kalman_x0 , packet1.kalman_x1 , packet1.kalman_x2 , packet1.mass , packet1.corrected_pressure );
+    mavlink_msg_mea_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("MEA_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_MEA_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_rocket_flight_tm(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_ROCKET_FLIGHT_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_rocket_flight_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,269.0,297.0,325.0,353.0,381.0,409.0,437.0,465.0,493.0,521.0,549.0,577.0,605.0,633.0,661.0,689.0,717.0,745.0,773.0,801.0,829.0,857.0,885.0,913.0,941.0,969.0,997.0,1025.0,1053.0,1081.0,1109.0,1137.0,1165.0,1193.0,1221.0,21,88
+    };
+    mavlink_rocket_flight_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.pressure_ada = packet_in.pressure_ada;
+        packet1.pressure_digi = packet_in.pressure_digi;
+        packet1.pressure_static = packet_in.pressure_static;
+        packet1.pressure_dpl = packet_in.pressure_dpl;
+        packet1.airspeed_pitot = packet_in.airspeed_pitot;
+        packet1.altitude_agl = packet_in.altitude_agl;
+        packet1.ada_vert_speed = packet_in.ada_vert_speed;
+        packet1.mea_mass = packet_in.mea_mass;
+        packet1.mea_apogee = packet_in.mea_apogee;
+        packet1.acc_x = packet_in.acc_x;
+        packet1.acc_y = packet_in.acc_y;
+        packet1.acc_z = packet_in.acc_z;
+        packet1.gyro_x = packet_in.gyro_x;
+        packet1.gyro_y = packet_in.gyro_y;
+        packet1.gyro_z = packet_in.gyro_z;
+        packet1.mag_x = packet_in.mag_x;
+        packet1.mag_y = packet_in.mag_y;
+        packet1.mag_z = packet_in.mag_z;
+        packet1.vn100_qx = packet_in.vn100_qx;
+        packet1.vn100_qy = packet_in.vn100_qy;
+        packet1.vn100_qz = packet_in.vn100_qz;
+        packet1.vn100_qw = packet_in.vn100_qw;
+        packet1.gps_lat = packet_in.gps_lat;
+        packet1.gps_lon = packet_in.gps_lon;
+        packet1.gps_alt = packet_in.gps_alt;
+        packet1.abk_angle = packet_in.abk_angle;
+        packet1.nas_n = packet_in.nas_n;
+        packet1.nas_e = packet_in.nas_e;
+        packet1.nas_d = packet_in.nas_d;
+        packet1.nas_vn = packet_in.nas_vn;
+        packet1.nas_ve = packet_in.nas_ve;
+        packet1.nas_vd = packet_in.nas_vd;
+        packet1.nas_qx = packet_in.nas_qx;
+        packet1.nas_qy = packet_in.nas_qy;
+        packet1.nas_qz = packet_in.nas_qz;
+        packet1.nas_qw = packet_in.nas_qw;
+        packet1.nas_bias_x = packet_in.nas_bias_x;
+        packet1.nas_bias_y = packet_in.nas_bias_y;
+        packet1.nas_bias_z = packet_in.nas_bias_z;
+        packet1.battery_voltage = packet_in.battery_voltage;
+        packet1.cam_battery_voltage = packet_in.cam_battery_voltage;
+        packet1.temperature = packet_in.temperature;
+        packet1.gps_fix = packet_in.gps_fix;
+        packet1.fmm_state = packet_in.fmm_state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_rocket_flight_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_rocket_flight_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_rocket_flight_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.altitude_agl , packet1.ada_vert_speed , packet1.mea_mass , packet1.mea_apogee , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z , packet1.vn100_qx , packet1.vn100_qy , packet1.vn100_qz , packet1.vn100_qw , packet1.gps_fix , packet1.gps_lat , packet1.gps_lon , packet1.gps_alt , packet1.fmm_state , packet1.abk_angle , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.battery_voltage , packet1.cam_battery_voltage , packet1.temperature );
+    mavlink_msg_rocket_flight_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_rocket_flight_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.altitude_agl , packet1.ada_vert_speed , packet1.mea_mass , packet1.mea_apogee , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z , packet1.vn100_qx , packet1.vn100_qy , packet1.vn100_qz , packet1.vn100_qw , packet1.gps_fix , packet1.gps_lat , packet1.gps_lon , packet1.gps_alt , packet1.fmm_state , packet1.abk_angle , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.battery_voltage , packet1.cam_battery_voltage , packet1.temperature );
+    mavlink_msg_rocket_flight_tm_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_rocket_flight_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_rocket_flight_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.altitude_agl , packet1.ada_vert_speed , packet1.mea_mass , packet1.mea_apogee , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z , packet1.vn100_qx , packet1.vn100_qy , packet1.vn100_qz , packet1.vn100_qw , packet1.gps_fix , packet1.gps_lat , packet1.gps_lon , packet1.gps_alt , packet1.fmm_state , packet1.abk_angle , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.battery_voltage , packet1.cam_battery_voltage , packet1.temperature );
+    mavlink_msg_rocket_flight_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("ROCKET_FLIGHT_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_ROCKET_FLIGHT_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_payload_flight_tm(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_PAYLOAD_FLIGHT_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_payload_flight_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,269.0,297.0,325.0,353.0,381.0,409.0,437.0,465.0,493.0,521.0,549.0,577.0,605.0,633.0,661.0,689.0,717.0,745.0,773.0,801.0,829.0,857.0,885.0,913.0,941.0,969.0,997.0,1025.0,1053.0,1081.0,217,28
+    };
+    mavlink_payload_flight_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.pressure_digi = packet_in.pressure_digi;
+        packet1.pressure_static = packet_in.pressure_static;
+        packet1.pressure_dynamic = packet_in.pressure_dynamic;
+        packet1.airspeed_pitot = packet_in.airspeed_pitot;
+        packet1.altitude_agl = packet_in.altitude_agl;
+        packet1.acc_x = packet_in.acc_x;
+        packet1.acc_y = packet_in.acc_y;
+        packet1.acc_z = packet_in.acc_z;
+        packet1.gyro_x = packet_in.gyro_x;
+        packet1.gyro_y = packet_in.gyro_y;
+        packet1.gyro_z = packet_in.gyro_z;
+        packet1.mag_x = packet_in.mag_x;
+        packet1.mag_y = packet_in.mag_y;
+        packet1.mag_z = packet_in.mag_z;
+        packet1.gps_lat = packet_in.gps_lat;
+        packet1.gps_lon = packet_in.gps_lon;
+        packet1.gps_alt = packet_in.gps_alt;
+        packet1.left_servo_angle = packet_in.left_servo_angle;
+        packet1.right_servo_angle = packet_in.right_servo_angle;
+        packet1.nas_n = packet_in.nas_n;
+        packet1.nas_e = packet_in.nas_e;
+        packet1.nas_d = packet_in.nas_d;
+        packet1.nas_vn = packet_in.nas_vn;
+        packet1.nas_ve = packet_in.nas_ve;
+        packet1.nas_vd = packet_in.nas_vd;
+        packet1.nas_qx = packet_in.nas_qx;
+        packet1.nas_qy = packet_in.nas_qy;
+        packet1.nas_qz = packet_in.nas_qz;
+        packet1.nas_qw = packet_in.nas_qw;
+        packet1.nas_bias_x = packet_in.nas_bias_x;
+        packet1.nas_bias_y = packet_in.nas_bias_y;
+        packet1.nas_bias_z = packet_in.nas_bias_z;
+        packet1.wes_n = packet_in.wes_n;
+        packet1.wes_e = packet_in.wes_e;
+        packet1.battery_voltage = packet_in.battery_voltage;
+        packet1.cam_battery_voltage = packet_in.cam_battery_voltage;
+        packet1.temperature = packet_in.temperature;
+        packet1.gps_fix = packet_in.gps_fix;
+        packet1.fmm_state = packet_in.fmm_state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_payload_flight_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_payload_flight_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_payload_flight_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dynamic , packet1.airspeed_pitot , packet1.altitude_agl , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z , packet1.gps_fix , packet1.gps_lat , packet1.gps_lon , packet1.gps_alt , packet1.fmm_state , packet1.left_servo_angle , packet1.right_servo_angle , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.wes_n , packet1.wes_e , packet1.battery_voltage , packet1.cam_battery_voltage , packet1.temperature );
+    mavlink_msg_payload_flight_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_payload_flight_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dynamic , packet1.airspeed_pitot , packet1.altitude_agl , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z , packet1.gps_fix , packet1.gps_lat , packet1.gps_lon , packet1.gps_alt , packet1.fmm_state , packet1.left_servo_angle , packet1.right_servo_angle , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.wes_n , packet1.wes_e , packet1.battery_voltage , packet1.cam_battery_voltage , packet1.temperature );
+    mavlink_msg_payload_flight_tm_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_payload_flight_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_payload_flight_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dynamic , packet1.airspeed_pitot , packet1.altitude_agl , packet1.acc_x , packet1.acc_y , packet1.acc_z , packet1.gyro_x , packet1.gyro_y , packet1.gyro_z , packet1.mag_x , packet1.mag_y , packet1.mag_z , packet1.gps_fix , packet1.gps_lat , packet1.gps_lon , packet1.gps_alt , packet1.fmm_state , packet1.left_servo_angle , packet1.right_servo_angle , packet1.nas_n , packet1.nas_e , packet1.nas_d , packet1.nas_vn , packet1.nas_ve , packet1.nas_vd , packet1.nas_qx , packet1.nas_qy , packet1.nas_qz , packet1.nas_qw , packet1.nas_bias_x , packet1.nas_bias_y , packet1.nas_bias_z , packet1.wes_n , packet1.wes_e , packet1.battery_voltage , packet1.cam_battery_voltage , packet1.temperature );
+    mavlink_msg_payload_flight_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("PAYLOAD_FLIGHT_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_rocket_stats_tm(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_ROCKET_STATS_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_rocket_stats_tm_t packet_in = {
+        93372036854775807ULL,93372036854776311ULL,93372036854776815ULL,93372036854777319ULL,93372036854777823ULL,93372036854778327ULL,93372036854778831ULL,93372036854779335ULL,93372036854779839ULL,93372036854780343ULL,93372036854780847ULL,633.0,661.0,689.0,717.0,745.0,773.0,801.0,829.0,857.0,885.0,913.0,941.0,969.0,997.0,1025.0,1053.0,963505368,1109.0,963505784,25763,119,186,253,64,131,198,9,76,143,210,21,88,155,222
+    };
+    mavlink_rocket_stats_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.liftoff_ts = packet_in.liftoff_ts;
+        packet1.liftoff_max_acc_ts = packet_in.liftoff_max_acc_ts;
+        packet1.max_speed_ts = packet_in.max_speed_ts;
+        packet1.max_mach_ts = packet_in.max_mach_ts;
+        packet1.shutdown_ts = packet_in.shutdown_ts;
+        packet1.apogee_ts = packet_in.apogee_ts;
+        packet1.apogee_max_acc_ts = packet_in.apogee_max_acc_ts;
+        packet1.dpl_ts = packet_in.dpl_ts;
+        packet1.dpl_max_acc_ts = packet_in.dpl_max_acc_ts;
+        packet1.dpl_bay_max_pressure_ts = packet_in.dpl_bay_max_pressure_ts;
+        packet1.liftoff_max_acc = packet_in.liftoff_max_acc;
+        packet1.max_speed = packet_in.max_speed;
+        packet1.max_speed_altitude = packet_in.max_speed_altitude;
+        packet1.max_mach = packet_in.max_mach;
+        packet1.shutdown_alt = packet_in.shutdown_alt;
+        packet1.apogee_lat = packet_in.apogee_lat;
+        packet1.apogee_lon = packet_in.apogee_lon;
+        packet1.apogee_alt = packet_in.apogee_alt;
+        packet1.apogee_max_acc = packet_in.apogee_max_acc;
+        packet1.dpl_alt = packet_in.dpl_alt;
+        packet1.dpl_max_acc = packet_in.dpl_max_acc;
+        packet1.dpl_bay_max_pressure = packet_in.dpl_bay_max_pressure;
+        packet1.ref_lat = packet_in.ref_lat;
+        packet1.ref_lon = packet_in.ref_lon;
+        packet1.ref_alt = packet_in.ref_alt;
+        packet1.cpu_load = packet_in.cpu_load;
+        packet1.free_heap = packet_in.free_heap;
+        packet1.exp_angle = packet_in.exp_angle;
+        packet1.log_good = packet_in.log_good;
+        packet1.log_number = packet_in.log_number;
+        packet1.ada_state = packet_in.ada_state;
+        packet1.abk_state = packet_in.abk_state;
+        packet1.nas_state = packet_in.nas_state;
+        packet1.mea_state = packet_in.mea_state;
+        packet1.pin_launch = packet_in.pin_launch;
+        packet1.pin_nosecone = packet_in.pin_nosecone;
+        packet1.pin_expulsion = packet_in.pin_expulsion;
+        packet1.cutter_presence = packet_in.cutter_presence;
+        packet1.payload_board_state = packet_in.payload_board_state;
+        packet1.motor_board_state = packet_in.motor_board_state;
+        packet1.payload_can_status = packet_in.payload_can_status;
+        packet1.motor_can_status = packet_in.motor_can_status;
+        packet1.rig_can_status = packet_in.rig_can_status;
+        packet1.hil_state = packet_in.hil_state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_rocket_stats_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_rocket_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_rocket_stats_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_speed_ts , packet1.max_speed , packet1.max_speed_altitude , packet1.max_mach_ts , packet1.max_mach , packet1.shutdown_ts , packet1.shutdown_alt , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.apogee_alt , packet1.apogee_max_acc_ts , packet1.apogee_max_acc , packet1.dpl_ts , packet1.dpl_alt , packet1.dpl_max_acc_ts , packet1.dpl_max_acc , packet1.dpl_bay_max_pressure_ts , packet1.dpl_bay_max_pressure , packet1.ref_lat , packet1.ref_lon , packet1.ref_alt , packet1.cpu_load , packet1.free_heap , packet1.ada_state , packet1.abk_state , packet1.nas_state , packet1.mea_state , packet1.exp_angle , packet1.pin_launch , packet1.pin_nosecone , packet1.pin_expulsion , packet1.cutter_presence , packet1.log_number , packet1.log_good , packet1.payload_board_state , packet1.motor_board_state , packet1.payload_can_status , packet1.motor_can_status , packet1.rig_can_status , packet1.hil_state );
+    mavlink_msg_rocket_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_rocket_stats_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_speed_ts , packet1.max_speed , packet1.max_speed_altitude , packet1.max_mach_ts , packet1.max_mach , packet1.shutdown_ts , packet1.shutdown_alt , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.apogee_alt , packet1.apogee_max_acc_ts , packet1.apogee_max_acc , packet1.dpl_ts , packet1.dpl_alt , packet1.dpl_max_acc_ts , packet1.dpl_max_acc , packet1.dpl_bay_max_pressure_ts , packet1.dpl_bay_max_pressure , packet1.ref_lat , packet1.ref_lon , packet1.ref_alt , packet1.cpu_load , packet1.free_heap , packet1.ada_state , packet1.abk_state , packet1.nas_state , packet1.mea_state , packet1.exp_angle , packet1.pin_launch , packet1.pin_nosecone , packet1.pin_expulsion , packet1.cutter_presence , packet1.log_number , packet1.log_good , packet1.payload_board_state , packet1.motor_board_state , packet1.payload_can_status , packet1.motor_can_status , packet1.rig_can_status , packet1.hil_state );
+    mavlink_msg_rocket_stats_tm_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_rocket_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_rocket_stats_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_speed_ts , packet1.max_speed , packet1.max_speed_altitude , packet1.max_mach_ts , packet1.max_mach , packet1.shutdown_ts , packet1.shutdown_alt , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.apogee_alt , packet1.apogee_max_acc_ts , packet1.apogee_max_acc , packet1.dpl_ts , packet1.dpl_alt , packet1.dpl_max_acc_ts , packet1.dpl_max_acc , packet1.dpl_bay_max_pressure_ts , packet1.dpl_bay_max_pressure , packet1.ref_lat , packet1.ref_lon , packet1.ref_alt , packet1.cpu_load , packet1.free_heap , packet1.ada_state , packet1.abk_state , packet1.nas_state , packet1.mea_state , packet1.exp_angle , packet1.pin_launch , packet1.pin_nosecone , packet1.pin_expulsion , packet1.cutter_presence , packet1.log_number , packet1.log_good , packet1.payload_board_state , packet1.motor_board_state , packet1.payload_can_status , packet1.motor_can_status , packet1.rig_can_status , packet1.hil_state );
+    mavlink_msg_rocket_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("ROCKET_STATS_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_ROCKET_STATS_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_payload_stats_tm(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_PAYLOAD_STATS_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_payload_stats_tm_t packet_in = {
+        93372036854775807ULL,93372036854776311ULL,93372036854776815ULL,93372036854777319ULL,93372036854777823ULL,93372036854778327ULL,93372036854778831ULL,93372036854779335ULL,93372036854779839ULL,521.0,549.0,577.0,605.0,633.0,661.0,689.0,717.0,745.0,773.0,801.0,829.0,857.0,885.0,913.0,941.0,969.0,997.0,1025.0,963505160,963505368,25347,95,162,229,40,107,174,241,52,119,186,253,64
+    };
+    mavlink_payload_stats_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.liftoff_ts = packet_in.liftoff_ts;
+        packet1.liftoff_max_acc_ts = packet_in.liftoff_max_acc_ts;
+        packet1.max_speed_ts = packet_in.max_speed_ts;
+        packet1.max_mach_ts = packet_in.max_mach_ts;
+        packet1.apogee_ts = packet_in.apogee_ts;
+        packet1.apogee_max_acc_ts = packet_in.apogee_max_acc_ts;
+        packet1.dpl_ts = packet_in.dpl_ts;
+        packet1.dpl_max_acc_ts = packet_in.dpl_max_acc_ts;
+        packet1.liftoff_max_acc = packet_in.liftoff_max_acc;
+        packet1.max_speed = packet_in.max_speed;
+        packet1.max_speed_altitude = packet_in.max_speed_altitude;
+        packet1.max_mach = packet_in.max_mach;
+        packet1.apogee_lat = packet_in.apogee_lat;
+        packet1.apogee_lon = packet_in.apogee_lon;
+        packet1.apogee_alt = packet_in.apogee_alt;
+        packet1.apogee_max_acc = packet_in.apogee_max_acc;
+        packet1.wing_target_lat = packet_in.wing_target_lat;
+        packet1.wing_target_lon = packet_in.wing_target_lon;
+        packet1.wing_active_target_n = packet_in.wing_active_target_n;
+        packet1.wing_active_target_e = packet_in.wing_active_target_e;
+        packet1.dpl_alt = packet_in.dpl_alt;
+        packet1.dpl_max_acc = packet_in.dpl_max_acc;
+        packet1.ref_lat = packet_in.ref_lat;
+        packet1.ref_lon = packet_in.ref_lon;
+        packet1.ref_alt = packet_in.ref_alt;
+        packet1.min_pressure = packet_in.min_pressure;
+        packet1.cpu_load = packet_in.cpu_load;
+        packet1.free_heap = packet_in.free_heap;
+        packet1.log_good = packet_in.log_good;
+        packet1.log_number = packet_in.log_number;
+        packet1.wing_algorithm = packet_in.wing_algorithm;
+        packet1.nas_state = packet_in.nas_state;
+        packet1.wnc_state = packet_in.wnc_state;
+        packet1.pin_launch = packet_in.pin_launch;
+        packet1.pin_nosecone = packet_in.pin_nosecone;
+        packet1.cutter_presence = packet_in.cutter_presence;
+        packet1.main_board_state = packet_in.main_board_state;
+        packet1.motor_board_state = packet_in.motor_board_state;
+        packet1.main_can_status = packet_in.main_can_status;
+        packet1.motor_can_status = packet_in.motor_can_status;
+        packet1.rig_can_status = packet_in.rig_can_status;
+        packet1.hil_state = packet_in.hil_state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_payload_stats_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_payload_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_payload_stats_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_speed_ts , packet1.max_speed , packet1.max_speed_altitude , packet1.max_mach_ts , packet1.max_mach , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.apogee_alt , packet1.apogee_max_acc_ts , packet1.apogee_max_acc , packet1.wing_target_lat , packet1.wing_target_lon , packet1.wing_active_target_n , packet1.wing_active_target_e , packet1.wing_algorithm , packet1.dpl_ts , packet1.dpl_alt , packet1.dpl_max_acc_ts , packet1.dpl_max_acc , packet1.ref_lat , packet1.ref_lon , packet1.ref_alt , packet1.min_pressure , packet1.cpu_load , packet1.free_heap , packet1.nas_state , packet1.wnc_state , packet1.pin_launch , packet1.pin_nosecone , packet1.cutter_presence , packet1.log_number , packet1.log_good , packet1.main_board_state , packet1.motor_board_state , packet1.main_can_status , packet1.motor_can_status , packet1.rig_can_status , packet1.hil_state );
+    mavlink_msg_payload_stats_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_payload_stats_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_speed_ts , packet1.max_speed , packet1.max_speed_altitude , packet1.max_mach_ts , packet1.max_mach , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.apogee_alt , packet1.apogee_max_acc_ts , packet1.apogee_max_acc , packet1.wing_target_lat , packet1.wing_target_lon , packet1.wing_active_target_n , packet1.wing_active_target_e , packet1.wing_algorithm , packet1.dpl_ts , packet1.dpl_alt , packet1.dpl_max_acc_ts , packet1.dpl_max_acc , packet1.ref_lat , packet1.ref_lon , packet1.ref_alt , packet1.min_pressure , packet1.cpu_load , packet1.free_heap , packet1.nas_state , packet1.wnc_state , packet1.pin_launch , packet1.pin_nosecone , packet1.cutter_presence , packet1.log_number , packet1.log_good , packet1.main_board_state , packet1.motor_board_state , packet1.main_can_status , packet1.motor_can_status , packet1.rig_can_status , packet1.hil_state );
+    mavlink_msg_payload_stats_tm_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_payload_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_payload_stats_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_speed_ts , packet1.max_speed , packet1.max_speed_altitude , packet1.max_mach_ts , packet1.max_mach , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.apogee_alt , packet1.apogee_max_acc_ts , packet1.apogee_max_acc , packet1.wing_target_lat , packet1.wing_target_lon , packet1.wing_active_target_n , packet1.wing_active_target_e , packet1.wing_algorithm , packet1.dpl_ts , packet1.dpl_alt , packet1.dpl_max_acc_ts , packet1.dpl_max_acc , packet1.ref_lat , packet1.ref_lon , packet1.ref_alt , packet1.min_pressure , packet1.cpu_load , packet1.free_heap , packet1.nas_state , packet1.wnc_state , packet1.pin_launch , packet1.pin_nosecone , packet1.cutter_presence , packet1.log_number , packet1.log_good , packet1.main_board_state , packet1.motor_board_state , packet1.main_can_status , packet1.motor_can_status , packet1.rig_can_status , packet1.hil_state );
+    mavlink_msg_payload_stats_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("PAYLOAD_STATS_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_PAYLOAD_STATS_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_gse_tm(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_GSE_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_gse_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,963498920,241.0,269.0,297.0,963499752,19731,27,94,161,228,39,106,173,240,51,118,185,252,63,130
+    };
+    mavlink_gse_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.loadcell_rocket = packet_in.loadcell_rocket;
+        packet1.loadcell_vessel = packet_in.loadcell_vessel;
+        packet1.filling_pressure = packet_in.filling_pressure;
+        packet1.vessel_pressure = packet_in.vessel_pressure;
+        packet1.cpu_load = packet_in.cpu_load;
+        packet1.free_heap = packet_in.free_heap;
+        packet1.battery_voltage = packet_in.battery_voltage;
+        packet1.current_consumption = packet_in.current_consumption;
+        packet1.umbilical_current_consumption = packet_in.umbilical_current_consumption;
+        packet1.log_good = packet_in.log_good;
+        packet1.log_number = packet_in.log_number;
+        packet1.filling_valve_state = packet_in.filling_valve_state;
+        packet1.venting_valve_state = packet_in.venting_valve_state;
+        packet1.release_valve_state = packet_in.release_valve_state;
+        packet1.main_valve_state = packet_in.main_valve_state;
+        packet1.nitrogen_valve_state = packet_in.nitrogen_valve_state;
+        packet1.gmm_state = packet_in.gmm_state;
+        packet1.tars_state = packet_in.tars_state;
+        packet1.arming_state = packet_in.arming_state;
+        packet1.main_board_state = packet_in.main_board_state;
+        packet1.payload_board_state = packet_in.payload_board_state;
+        packet1.motor_board_state = packet_in.motor_board_state;
+        packet1.main_can_status = packet_in.main_can_status;
+        packet1.payload_can_status = packet_in.payload_can_status;
+        packet1.motor_can_status = packet_in.motor_can_status;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_GSE_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_GSE_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_gse_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_gse_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_gse_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.loadcell_rocket , packet1.loadcell_vessel , packet1.filling_pressure , packet1.vessel_pressure , packet1.filling_valve_state , packet1.venting_valve_state , packet1.release_valve_state , packet1.main_valve_state , packet1.nitrogen_valve_state , packet1.gmm_state , packet1.tars_state , packet1.arming_state , packet1.cpu_load , packet1.free_heap , packet1.battery_voltage , packet1.current_consumption , packet1.umbilical_current_consumption , packet1.main_board_state , packet1.payload_board_state , packet1.motor_board_state , packet1.main_can_status , packet1.payload_can_status , packet1.motor_can_status , packet1.log_number , packet1.log_good );
+    mavlink_msg_gse_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_gse_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.loadcell_rocket , packet1.loadcell_vessel , packet1.filling_pressure , packet1.vessel_pressure , packet1.filling_valve_state , packet1.venting_valve_state , packet1.release_valve_state , packet1.main_valve_state , packet1.nitrogen_valve_state , packet1.gmm_state , packet1.tars_state , packet1.arming_state , packet1.cpu_load , packet1.free_heap , packet1.battery_voltage , packet1.current_consumption , packet1.umbilical_current_consumption , packet1.main_board_state , packet1.payload_board_state , packet1.motor_board_state , packet1.main_can_status , packet1.payload_can_status , packet1.motor_can_status , packet1.log_number , packet1.log_good );
+    mavlink_msg_gse_tm_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_gse_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_gse_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.loadcell_rocket , packet1.loadcell_vessel , packet1.filling_pressure , packet1.vessel_pressure , packet1.filling_valve_state , packet1.venting_valve_state , packet1.release_valve_state , packet1.main_valve_state , packet1.nitrogen_valve_state , packet1.gmm_state , packet1.tars_state , packet1.arming_state , packet1.cpu_load , packet1.free_heap , packet1.battery_voltage , packet1.current_consumption , packet1.umbilical_current_consumption , packet1.main_board_state , packet1.payload_board_state , packet1.motor_board_state , packet1.main_can_status , packet1.payload_can_status , packet1.motor_can_status , packet1.log_number , packet1.log_good );
+    mavlink_msg_gse_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("GSE_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_GSE_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_motor_tm(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_MOTOR_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_motor_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,963498920,18899,235,46,113
+    };
+    mavlink_motor_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.top_tank_pressure = packet_in.top_tank_pressure;
+        packet1.bottom_tank_pressure = packet_in.bottom_tank_pressure;
+        packet1.combustion_chamber_pressure = packet_in.combustion_chamber_pressure;
+        packet1.tank_temperature = packet_in.tank_temperature;
+        packet1.battery_voltage = packet_in.battery_voltage;
+        packet1.log_good = packet_in.log_good;
+        packet1.log_number = packet_in.log_number;
+        packet1.main_valve_state = packet_in.main_valve_state;
+        packet1.venting_valve_state = packet_in.venting_valve_state;
+        packet1.hil_state = packet_in.hil_state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_MOTOR_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_motor_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_motor_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_motor_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.top_tank_pressure , packet1.bottom_tank_pressure , packet1.combustion_chamber_pressure , packet1.tank_temperature , packet1.main_valve_state , packet1.venting_valve_state , packet1.battery_voltage , packet1.log_number , packet1.log_good , packet1.hil_state );
+    mavlink_msg_motor_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_motor_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.top_tank_pressure , packet1.bottom_tank_pressure , packet1.combustion_chamber_pressure , packet1.tank_temperature , packet1.main_valve_state , packet1.venting_valve_state , packet1.battery_voltage , packet1.log_number , packet1.log_good , packet1.hil_state );
+    mavlink_msg_motor_tm_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_motor_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_motor_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.top_tank_pressure , packet1.bottom_tank_pressure , packet1.combustion_chamber_pressure , packet1.tank_temperature , packet1.main_valve_state , packet1.venting_valve_state , packet1.battery_voltage , packet1.log_number , packet1.log_good , packet1.hil_state );
+    mavlink_msg_motor_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("MOTOR_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_MOTOR_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_calibration_tm(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_CALIBRATION_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_calibration_tm_t packet_in = {
+        93372036854775807ULL,73.0,101.0,129.0,157.0,185.0,213.0,241.0,269.0,297.0,325.0,353.0,381.0,409.0,437.0,465.0,493.0,521.0
+    };
+    mavlink_calibration_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.gyro_bias_x = packet_in.gyro_bias_x;
+        packet1.gyro_bias_y = packet_in.gyro_bias_y;
+        packet1.gyro_bias_z = packet_in.gyro_bias_z;
+        packet1.mag_bias_x = packet_in.mag_bias_x;
+        packet1.mag_bias_y = packet_in.mag_bias_y;
+        packet1.mag_bias_z = packet_in.mag_bias_z;
+        packet1.mag_scale_x = packet_in.mag_scale_x;
+        packet1.mag_scale_y = packet_in.mag_scale_y;
+        packet1.mag_scale_z = packet_in.mag_scale_z;
+        packet1.static_press_1_bias = packet_in.static_press_1_bias;
+        packet1.static_press_1_scale = packet_in.static_press_1_scale;
+        packet1.static_press_2_bias = packet_in.static_press_2_bias;
+        packet1.static_press_2_scale = packet_in.static_press_2_scale;
+        packet1.dpl_bay_press_bias = packet_in.dpl_bay_press_bias;
+        packet1.dpl_bay_press_scale = packet_in.dpl_bay_press_scale;
+        packet1.dynamic_press_bias = packet_in.dynamic_press_bias;
+        packet1.dynamic_press_scale = packet_in.dynamic_press_scale;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_CALIBRATION_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_calibration_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_calibration_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_calibration_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.gyro_bias_x , packet1.gyro_bias_y , packet1.gyro_bias_z , packet1.mag_bias_x , packet1.mag_bias_y , packet1.mag_bias_z , packet1.mag_scale_x , packet1.mag_scale_y , packet1.mag_scale_z , packet1.static_press_1_bias , packet1.static_press_1_scale , packet1.static_press_2_bias , packet1.static_press_2_scale , packet1.dpl_bay_press_bias , packet1.dpl_bay_press_scale , packet1.dynamic_press_bias , packet1.dynamic_press_scale );
+    mavlink_msg_calibration_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_calibration_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.gyro_bias_x , packet1.gyro_bias_y , packet1.gyro_bias_z , packet1.mag_bias_x , packet1.mag_bias_y , packet1.mag_bias_z , packet1.mag_scale_x , packet1.mag_scale_y , packet1.mag_scale_z , packet1.static_press_1_bias , packet1.static_press_1_scale , packet1.static_press_2_bias , packet1.static_press_2_scale , packet1.dpl_bay_press_bias , packet1.dpl_bay_press_scale , packet1.dynamic_press_bias , packet1.dynamic_press_scale );
+    mavlink_msg_calibration_tm_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_calibration_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_calibration_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.gyro_bias_x , packet1.gyro_bias_y , packet1.gyro_bias_z , packet1.mag_bias_x , packet1.mag_bias_y , packet1.mag_bias_z , packet1.mag_scale_x , packet1.mag_scale_y , packet1.mag_scale_z , packet1.static_press_1_bias , packet1.static_press_1_scale , packet1.static_press_2_bias , packet1.static_press_2_scale , packet1.dpl_bay_press_bias , packet1.dpl_bay_press_scale , packet1.dynamic_press_bias , packet1.dynamic_press_scale );
+    mavlink_msg_calibration_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+#ifdef MAVLINK_HAVE_GET_MESSAGE_INFO
+    MAVLINK_ASSERT(mavlink_get_message_info_by_name("CALIBRATION_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_CALIBRATION_TM) != NULL);
+#endif
+}
+
+static void mavlink_test_orion(uint8_t system_id, uint8_t component_id, mavlink_message_t *last_msg)
+{
+    mavlink_test_ping_tc(system_id, component_id, last_msg);
+    mavlink_test_command_tc(system_id, component_id, last_msg);
+    mavlink_test_system_tm_request_tc(system_id, component_id, last_msg);
+    mavlink_test_sensor_tm_request_tc(system_id, component_id, last_msg);
+    mavlink_test_servo_tm_request_tc(system_id, component_id, last_msg);
+    mavlink_test_set_servo_angle_tc(system_id, component_id, last_msg);
+    mavlink_test_reset_servo_tc(system_id, component_id, last_msg);
+    mavlink_test_wiggle_servo_tc(system_id, component_id, last_msg);
+    mavlink_test_set_reference_altitude_tc(system_id, component_id, last_msg);
+    mavlink_test_set_reference_temperature_tc(system_id, component_id, last_msg);
+    mavlink_test_set_orientation_tc(system_id, component_id, last_msg);
+    mavlink_test_set_orientation_quat_tc(system_id, component_id, last_msg);
+    mavlink_test_set_coordinates_tc(system_id, component_id, last_msg);
+    mavlink_test_raw_event_tc(system_id, component_id, last_msg);
+    mavlink_test_set_deployment_altitude_tc(system_id, component_id, last_msg);
+    mavlink_test_set_target_coordinates_tc(system_id, component_id, last_msg);
+    mavlink_test_set_algorithm_tc(system_id, component_id, last_msg);
+    mavlink_test_set_calibration_pressure_tc(system_id, component_id, last_msg);
+    mavlink_test_set_initial_mea_mass_tc(system_id, component_id, last_msg);
+    mavlink_test_set_atomic_valve_timing_tc(system_id, component_id, last_msg);
+    mavlink_test_set_valve_maximum_aperture_tc(system_id, component_id, last_msg);
+    mavlink_test_conrig_state_tc(system_id, component_id, last_msg);
+    mavlink_test_set_ignition_time_tc(system_id, component_id, last_msg);
+    mavlink_test_set_nitrogen_time_tc(system_id, component_id, last_msg);
+    mavlink_test_set_cooling_time_tc(system_id, component_id, last_msg);
+    mavlink_test_set_stepper_angle_tc(system_id, component_id, last_msg);
+    mavlink_test_set_stepper_steps_tc(system_id, component_id, last_msg);
+    mavlink_test_set_stepper_multiplier_tc(system_id, component_id, last_msg);
+    mavlink_test_set_antenna_coordinates_arp_tc(system_id, component_id, last_msg);
+    mavlink_test_set_rocket_coordinates_arp_tc(system_id, component_id, last_msg);
+    mavlink_test_arp_command_tc(system_id, component_id, last_msg);
+    mavlink_test_ack_tm(system_id, component_id, last_msg);
+    mavlink_test_nack_tm(system_id, component_id, last_msg);
+    mavlink_test_wack_tm(system_id, component_id, last_msg);
+    mavlink_test_gps_tm(system_id, component_id, last_msg);
+    mavlink_test_imu_tm(system_id, component_id, last_msg);
+    mavlink_test_pressure_tm(system_id, component_id, last_msg);
+    mavlink_test_adc_tm(system_id, component_id, last_msg);
+    mavlink_test_voltage_tm(system_id, component_id, last_msg);
+    mavlink_test_current_tm(system_id, component_id, last_msg);
+    mavlink_test_temp_tm(system_id, component_id, last_msg);
+    mavlink_test_load_tm(system_id, component_id, last_msg);
+    mavlink_test_attitude_tm(system_id, component_id, last_msg);
+    mavlink_test_sensor_state_tm(system_id, component_id, last_msg);
+    mavlink_test_servo_tm(system_id, component_id, last_msg);
+    mavlink_test_pin_tm(system_id, component_id, last_msg);
+    mavlink_test_reference_tm(system_id, component_id, last_msg);
+    mavlink_test_registry_float_tm(system_id, component_id, last_msg);
+    mavlink_test_registry_int_tm(system_id, component_id, last_msg);
+    mavlink_test_registry_coord_tm(system_id, component_id, last_msg);
+    mavlink_test_arp_tm(system_id, component_id, last_msg);
+    mavlink_test_sys_tm(system_id, component_id, last_msg);
+    mavlink_test_logger_tm(system_id, component_id, last_msg);
+    mavlink_test_mavlink_stats_tm(system_id, component_id, last_msg);
+    mavlink_test_can_stats_tm(system_id, component_id, last_msg);
+    mavlink_test_task_stats_tm(system_id, component_id, last_msg);
+    mavlink_test_ada_tm(system_id, component_id, last_msg);
+    mavlink_test_nas_tm(system_id, component_id, last_msg);
+    mavlink_test_mea_tm(system_id, component_id, last_msg);
+    mavlink_test_rocket_flight_tm(system_id, component_id, last_msg);
+    mavlink_test_payload_flight_tm(system_id, component_id, last_msg);
+    mavlink_test_rocket_stats_tm(system_id, component_id, last_msg);
+    mavlink_test_payload_stats_tm(system_id, component_id, last_msg);
+    mavlink_test_gse_tm(system_id, component_id, last_msg);
+    mavlink_test_motor_tm(system_id, component_id, last_msg);
+    mavlink_test_calibration_tm(system_id, component_id, last_msg);
+}
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+#endif // ORION_TESTSUITE_H
diff --git a/mavlink_lib/orion/version.h b/mavlink_lib/orion/version.h
new file mode 100644
index 0000000000000000000000000000000000000000..c20a0165b1711b9900ebae04aee1f3717af7ba11
--- /dev/null
+++ b/mavlink_lib/orion/version.h
@@ -0,0 +1,14 @@
+/** @file
+ *  @brief MAVLink comm protocol built from orion.xml
+ *  @see http://mavlink.org
+ */
+#pragma once
+ 
+#ifndef MAVLINK_VERSION_H
+#define MAVLINK_VERSION_H
+
+#define MAVLINK_BUILD_DATE "Tue Nov 19 2024"
+#define MAVLINK_WIRE_PROTOCOL_VERSION "1.0"
+#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 180
+ 
+#endif // MAVLINK_VERSION_H
diff --git a/message_definitions/orion.xml b/message_definitions/orion.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd258f674fb0bcb7f7646daf8f085b0d89d1bfd7
--- /dev/null
+++ b/message_definitions/orion.xml
@@ -0,0 +1,986 @@
+<?xml version="1.0"?>
+<mavlink>
+    <version>1</version>
+    <enums>
+        <enum name="SysIDs">
+            <description>Enum that lists all the system IDs of the various devices</description>
+            <entry name="MAV_SYSID_MAIN" value="1"></entry>
+            <entry name="MAV_SYSID_PAYLOAD" value="2"></entry>
+            <entry name="MAV_SYSID_RIG" value="3"></entry>
+            <entry name="MAV_SYSID_GS" value="4"></entry>
+            <entry name="MAV_SYSID_ARP" value="5"></entry>
+            <entry name="MAV_SYSID_GS_BACKUP" value="6"></entry>
+            <entry name="MAV_SYSID_ARP_BACKUP" value="7"></entry>
+        </enum>
+        <enum name="SystemTMList">
+            <description>Enum list for all the telemetries that can be requested</description>
+            <entry name="MAV_SYS_ID" value="1">
+                <description>State of init results about system hardware/software components</description>
+            </entry>
+            <entry name="MAV_PIN_OBS_ID" value="2">
+                <description>Pin observer data</description>
+            </entry>
+            <entry name="MAV_LOGGER_ID" value="3">
+                <description>SD Logger stats</description>
+            </entry>
+            <entry name="MAV_MAVLINK_STATS_ID" value="4">
+                <description>Mavlink driver stats</description>
+            </entry>
+            <entry name="MAV_TASK_STATS_ID" value="5">
+                <description>Task scheduler statistics answer: n mavlink messages where n is the number of tasks</description>
+            </entry>
+            <entry name="MAV_ADA_ID" value="6">
+                <description>ADA Status</description>
+            </entry>
+            <entry name="MAV_NAS_ID" value="7">
+                <description>NavigationSystem data</description>
+            </entry>
+            <entry name="MAV_MEA_ID" value="8">
+                <description>MEA Status</description>
+            </entry>
+            <entry name="MAV_CAN_STATS_ID" value="9">
+                <description>Canbus stats</description>
+            </entry>
+            <entry name="MAV_FLIGHT_ID" value="10">
+                <description>Flight telemetry</description>
+            </entry>
+            <entry name="MAV_STATS_ID" value="11">
+                <description>Satistics telemetry</description>
+            </entry>
+            <entry name="MAV_SENSORS_STATE_ID" value="12">
+                <description>Sensors init state telemetry</description>
+            </entry>
+            <entry name="MAV_GSE_ID" value="13">
+                <description>Ground Segnement Equipment</description>
+            </entry>
+            <entry name="MAV_MOTOR_ID" value="14">
+                <description>Rocket Motor data</description>
+            </entry>
+            <entry name="MAV_REGISTRY_ID" value="15">
+                <description>Command to fetch all registry keys</description>
+            </entry>
+            <entry name="MAV_REFERENCE_ID" value="16">
+                <description>Command to fetch reference values</description>
+            </entry>
+            <entry name="MAV_CALIBRATION_ID" value="17">
+                <description>Command to fetch calibration values</description>
+            </entry>
+        </enum>
+        <enum name="SensorsTMList">
+            <description>Enum list of all sensors telemetries that can be requested</description>
+            <!-- PHYSICAL SENSORS NAMES -->
+            <entry name="MAV_BMX160_ID" value="1">
+                <description>BMX160 IMU data</description>
+            </entry>
+            <entry name="MAV_VN100_ID" value="2">
+                <description>VN100 IMU data</description>
+            </entry>
+            <entry name="MAV_MPU9250_ID" value="3">
+                <description>MPU9250 IMU data</description>
+            </entry>
+            <entry name="MAV_ADS131M08_ID" value="4">
+                <description>ADS 8 channel ADC data</description>
+            </entry>
+            <entry name="MAV_MS5803_ID" value="5">
+                <description>MS5803 barometer data</description>
+            </entry>
+            <entry name="MAV_BME280_ID" value="6">
+                <description>BME280 barometer data</description>
+            </entry>
+            <entry name="MAV_LIS3MDL_ID" value="7">
+                <description>LIS3MDL compass data</description>
+            </entry>
+            <entry name="MAV_LIS2MDL_ID" value="8">
+                <description>Magnetometer data</description>
+            </entry>
+            <entry name="MAV_LPS28DFW_ID" value="9">
+                <description>Pressure sensor data</description>
+            </entry>
+            <entry name="MAV_LSM6DSRX_ID" value="10">
+                <description>IMU data</description> 
+            </entry>
+            <entry name="MAV_H3LIS331DL_ID" value="11">
+                <description>400G accelerometer</description>
+            </entry>
+            <entry name="MAV_LPS22DF_ID" value="12">
+                <description>Pressure sensor data</description>
+            </entry>
+            <!-- GENERIC SENSORS NAMES -->
+            <!-- ROCKET -->
+            <entry name="MAV_GPS_ID" value="13">
+                <description>GPS data</description>
+            </entry>
+            <entry name="MAV_CURRENT_SENSE_ID" value="14">
+                <description>Electrical current sensors data</description>
+            </entry>
+            <entry name="MAV_BATTERY_VOLTAGE_ID" value="15">
+                <description>Battery voltage data</description>
+            </entry>
+            <entry name="MAV_ROTATED_IMU_ID" value="16">
+                <description>Load cell data</description>
+            </entry>
+            <entry name="MAV_DPL_PRESS_ID" value="17">
+                <description>Deployment pressure data</description>
+            </entry>
+            <entry name="MAV_STATIC_PRESS_ID" value="18">
+                <description>Static pressure data</description>
+            </entry>
+            <entry name="MAV_BACKUP_STATIC_PRESS_ID" value="19">
+                <description>Static pressure data</description>
+            </entry>
+            <entry name="MAV_STATIC_PITOT_PRESS_ID" value="20">
+                <description>Pitot pressure data</description>
+            </entry>
+            <entry name="MAV_TOTAL_PITOT_PRESS_ID" value="21">
+                <description>Pitot pressure data</description>
+            </entry>
+            <entry name="MAV_DYNAMIC_PITOT_PRESS_ID" value="22">
+                <description>Pitot pressure data</description>
+            </entry>
+            <entry name="MAV_LOAD_CELL_ID" value="23">
+                <description>Load cell data</description>
+            </entry>
+            <!-- MOTOR -->
+            <entry name="MAV_TANK_TOP_PRESS_ID" value="24">
+                <description>Top tank pressure</description>
+            </entry>
+            <entry name="MAV_TANK_BOTTOM_PRESS_ID" value="25">
+                <description>Bottom tank pressure</description>
+            </entry>
+            <entry name="MAV_TANK_TEMP_ID" value="26">
+                <description>Tank temperature</description>
+            </entry>
+            <entry name="MAV_COMBUSTION_PRESS_ID" value="27">
+                <description>Combustion chamber pressure</description>
+            </entry>
+            <!-- GSE -->
+            <entry name="MAV_FILLING_PRESS_ID" value="28">
+                <description>Filling line pressure</description>
+            </entry>
+            <entry name="MAV_VESSEL_PRESS_ID" value="29">
+                <description>Vessel pressure</description>
+            </entry>
+            <entry name="MAV_LOAD_CELL_VESSEL_ID" value="30">
+                <description>Vessel tank weight</description>
+            </entry>
+            <entry name="MAV_LOAD_CELL_TANK_ID" value="31">
+                <description>Tank weight</description>
+            </entry>
+        </enum>
+        <enum name="MavCommandList">
+            <description>Enum of the commands</description>
+            <entry name="MAV_CMD_ARM" value="1">
+                <description>Command to arm the rocket</description>
+            </entry>
+            <entry name="MAV_CMD_DISARM" value="2">
+                <description>Command to disarm the rocket</description>
+            </entry>
+            <entry name="MAV_CMD_CALIBRATE" value="3">
+                <description>Command to trigger the calibration</description>
+            </entry>
+            <entry name="MAV_CMD_SAVE_CALIBRATION" value="4">
+                <description>Command to save the current calibration into a file</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_INIT" value="5">
+                <description>Command to init the rocket</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_LAUNCH" value="6">
+                <description>Command to force the launch state on the rocket</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_ENGINE_SHUTDOWN" value="7">
+                <description>Command to trigger engine shutdown</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_EXPULSION" value="8">
+                <description>Command to trigger nosecone expulsion</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_DEPLOYMENT" value="9">
+                <description>Command to activate the thermal cutters and cut the drogue, activating both thermal cutters sequentially</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_LANDING" value="10">
+                <description>Command to communicate the end of the mission and close the file descriptors in the SD card</description>
+            </entry>
+            <entry name="MAV_CMD_START_LOGGING" value="11">
+                <description>Command to enable sensor logging</description>
+            </entry>
+            <entry name="MAV_CMD_STOP_LOGGING" value="12">
+                <description>Command to permanently close the log file</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_REBOOT" value="13">
+                <description>Command to reset the board from test status</description>
+            </entry>
+            <entry name="MAV_CMD_ENTER_TEST_MODE" value="14">
+                <description>Command to enter the test mode</description>
+            </entry>
+            <entry name="MAV_CMD_EXIT_TEST_MODE" value="15">
+                <description>Command to exit the test mode</description>
+            </entry>
+            <entry name="MAV_CMD_START_RECORDING" value="16">
+                <description>Command to start the internal cameras recordings</description>
+            </entry>
+            <entry name="MAV_CMD_STOP_RECORDING" value="17">
+                <description>Command to stop the internal cameras recordings</description>
+            </entry>
+            <entry name="MAV_CMD_OPEN_NITROGEN" value="18">
+                <description>Command to open the nitrogen valve</description>
+            </entry>
+            <entry name="MAV_CMD_REGISTRY_LOAD" value="19">
+                <description>Command to reload the registry from memory</description>
+            </entry>
+            <entry name="MAV_CMD_REGISTRY_SAVE" value="20">
+                <description>Command to commit the registry to memory</description>
+            </entry>
+            <entry name="MAV_CMD_REGISTRY_CLEAR" value="21">
+                <description>Command to clear the registry</description>
+            </entry>
+            <entry name="MAV_CMD_ENTER_HIL" value="22">
+                <description>Command to enter HIL mode at next reboot</description>
+            </entry>
+            <entry name="MAV_CMD_EXIT_HIL" value="23">
+                <description>Command to exit HIL mode at next reboot</description>
+            </entry>
+            <entry name="MAV_CMD_RESET_ALGORITHM" value="24">
+                <description>Command to reset the set algorithm. Used for now in ARP to reset the follow algorithm and return to armed state.</description>
+            </entry>
+            <entry name="MAV_CMD_ARP_FORCE_NO_FEEDBACK" value="25">
+                <description>Command to force ARP system to entern the no feedback from VN300 state</description>
+            </entry>
+            <entry name="MAV_CMD_ARP_FOLLOW" value="26">
+                <description>Command to enter in the ARP's follow state and procedure to follow the rocket</description>
+            </entry>
+        </enum>
+        <enum name="ServosList">
+            <description>Enum of all the servos</description>
+            <entry name="AIR_BRAKES_SERVO" value="1"></entry>
+            <entry name="EXPULSION_SERVO" value="2"></entry>
+            <entry name="PARAFOIL_LEFT_SERVO" value="3"></entry>
+            <entry name="PARAFOIL_RIGHT_SERVO" value="4"></entry>
+            <entry name="MAIN_VALVE" value="5"></entry> <!-- FEEDLINE FROM TANK TO COMBUSTION CHAMBER -->
+            <entry name="VENTING_VALVE" value="6"></entry> <!-- VENTING FROM TANK TO AIR-->
+            <entry name="RELEASE_VALVE" value="7"></entry> <!-- RELEASE VALVE TO DEPRESSURIZE THE REFUELING LINE-->
+            <entry name="FILLING_VALVE" value="8"></entry> <!-- FILLING VALVE TO START REFUELING THE ROCKET -->
+            <entry name="DISCONNECT_SERVO" value="9"></entry> <!-- AUTOMATIC DETACH OF REFUELING QUICK CONNECTOR-->
+        </enum>
+        <enum name="StepperList">
+            <description>Enum of all the steppers</description>
+            <entry name="STEPPER_X" value="1"></entry>
+            <entry name="STEPPER_Y" value="2"></entry>
+        </enum>
+        <enum name="PinsList">
+            <description>Enum of all the pins</description>
+            <entry name="RAMP_PIN" value="1"></entry>
+            <entry name="NOSECONE_PIN" value="2"></entry>
+        </enum>
+    </enums>
+    <messages>
+        <!-- FROM GROUND TO ROCKET -->
+        <message id="1" name="PING_TC">
+            <description>TC to ping the rocket (expects an ACK message as a response)</description>
+            <field name="timestamp" type="uint64_t">Timestamp to identify when it was sent</field>
+        </message>
+        <message id="2" name="COMMAND_TC">
+            <description>TC containing a command with no parameters that trigger some action</description>
+            <field name="command_id" type="uint8_t">A member of the MavCommandList enum</field>
+        </message>
+        <message id="3" name="SYSTEM_TM_REQUEST_TC">
+            <description>TC containing a request for the status of a board</description>
+            <field name="tm_id" type="uint8_t">A member of the SystemTMList enum</field>
+        </message>
+        <message id="4" name="SENSOR_TM_REQUEST_TC">
+            <description>TC containing a request for sensors telemetry</description>
+            <field name="sensor_name" type="uint8_t">A member of the SensorTMList enum</field>
+        </message>
+        <message id="5" name="SERVO_TM_REQUEST_TC">
+            <description>TC containing a request for servo telemetry</description>
+            <field name="servo_id" type="uint8_t">A member of the ServosList enum</field>
+        </message>
+        <message id="6" name="SET_SERVO_ANGLE_TC">
+            <description>Sets the angle of a certain servo</description>
+            <field name="servo_id" type="uint8_t">A member of the ServosList enum</field>
+            <field name="angle" type="float">Servo angle in normalized value [0-1]</field>
+        </message>
+        <message id="7" name="RESET_SERVO_TC">
+            <description>Resets the specified servo</description>
+            <field name="servo_id" type="uint8_t">A member of the ServosList enum</field>
+        </message>
+        <message id="8" name="WIGGLE_SERVO_TC">
+            <description>Wiggles the specified servo</description>
+            <field name="servo_id" type="uint8_t">A member of the ServosList enum</field>
+        </message>
+        <message id="9" name="SET_REFERENCE_ALTITUDE_TC">
+            <description>Sets the reference altitude for the altimeter</description>
+            <field name="ref_altitude" type="float" units="m">Reference altitude</field>
+        </message>
+        <message id="10" name="SET_REFERENCE_TEMPERATURE_TC">
+            <description>Sets the reference temperature for the altimeter</description>
+            <field name="ref_temp" type="float" units="degC">Reference temperature</field>
+        </message>
+        <message id="11" name="SET_ORIENTATION_TC">
+            <description>Sets current orientation for the navigation system</description>
+            <field name="yaw" type="float" units="deg">Yaw angle</field>
+            <field name="pitch" type="float" units="deg">Pitch angle</field>
+            <field name="roll" type="float" units="deg">Roll angle</field>
+        </message>
+        <message id="12" name="SET_ORIENTATION_QUAT_TC">
+            <description>Sets current orientation for the navigation system using a quaternion</description>
+            <field name="quat_x" type="float">Quaternion x component</field>
+            <field name="quat_y" type="float">Quaternion y component</field>
+            <field name="quat_z" type="float">Quaternion z component</field>
+            <field name="quat_w" type="float">Quaternion w component</field>
+        </message>
+        <message id="13" name="SET_COORDINATES_TC">
+            <description>Sets current coordinates</description>
+            <field name="latitude" type="float" units="deg">Latitude</field>
+            <field name="longitude" type="float" units="deg">Longitude</field>
+        </message>
+        <message id="14" name="RAW_EVENT_TC">
+            <description>TC containing a raw event to be posted directly in the EventBroker</description>
+            <field name="topic_id" type="uint8_t">Id of the topic to which the event should be posted</field>
+            <field name="event_id" type="uint8_t">Id of the event to be posted</field>
+        </message>
+        <message id="15" name="SET_DEPLOYMENT_ALTITUDE_TC">
+            <description>Sets the deployment altitude for the main parachute</description>
+            <field name="dpl_altitude" type="float" units="m">Deployment altitude</field>
+        </message>
+        <message id="16" name="SET_TARGET_COORDINATES_TC">
+            <description>Sets the target coordinates</description>
+            <field name="latitude" type="float" units="deg">Latitude</field>
+            <field name="longitude" type="float" units="deg">Longitude</field>
+        </message>
+        <message id="17" name="SET_ALGORITHM_TC">
+            <description>Sets the algorithm number (for parafoil guidance)</description>
+            <field name="algorithm_number" type="uint8_t">Algorithm number</field>
+        </message>
+        <message id="18" name="SET_CALIBRATION_PRESSURE_TC">
+            <description>Set the pressure used for analog pressure calibration</description>
+            <field name="pressure" type="float" units="Pa">Pressure</field>
+        </message>
+        <message id="19" name="SET_INITIAL_MEA_MASS_TC">
+            <description>Set the initial MEA mass</description>
+            <field name="mass" type="float" units="kg">Mass</field>
+        </message>
+
+        <!-- FROM GROUND TO GSE -->
+        <message id="30" name="SET_ATOMIC_VALVE_TIMING_TC">
+            <description>Sets the maximum time that the valves can be open atomically</description>
+            <field name="servo_id" type="uint8_t">A member of the ServosList enum</field>
+            <field name="maximum_timing" type="uint32_t" units="ms">Maximum timing in [ms]</field>
+        </message>
+        <message id="31" name="SET_VALVE_MAXIMUM_APERTURE_TC">
+            <description>Sets the maximum aperture of the specified valve. Set as value from 0 to 1</description>
+            <field name="servo_id" type="uint8_t">A member of the ServosList enum</field>
+            <field name="maximum_aperture" type="float">Maximum aperture</field>
+        </message>
+        <message id="32" name="CONRIG_STATE_TC">
+            <description>Send the state of the conrig buttons</description>
+            <field name="ignition_btn" type="uint8_t">Ignition button pressed</field>
+            <field name="filling_valve_btn" type="uint8_t">Open filling valve pressed</field>
+            <field name="venting_valve_btn" type="uint8_t">Open venting valve pressed</field>
+            <field name="release_pressure_btn" type="uint8_t">Release filling line pressure pressed</field>
+            <field name="quick_connector_btn" type="uint8_t">Detach quick connector pressed</field>
+            <field name="start_tars_btn" type="uint8_t">Startup TARS pressed</field>
+            <field name="arm_switch" type="uint8_t">Arming switch state</field>
+        </message>
+        <message id="33" name="SET_IGNITION_TIME_TC">
+            <description>Sets the time in ms that the igniter stays on before the oxidant valve is opened</description>
+            <field name="timing" type="uint32_t" units="ms">Timing in [ms]</field>
+        </message>
+        <message id="34" name="SET_NITROGEN_TIME_TC">
+            <description>Sets the time in ms that the nitrogen will stay open</description>
+            <field name="timing" type="uint32_t" units="ms">Timing in [ms]</field>
+        </message>
+        <message id="35" name="SET_COOLING_TIME_TC">
+            <description>Sets the time in ms that the system will wait before disarming after firing</description>
+            <field name="timing" type="uint32_t" units="ms">Timing in [ms]</field>
+        </message>
+
+        <!-- FROM GROUND TO ARP -->
+        <message id="60" name="SET_STEPPER_ANGLE_TC">
+            <description>Move the stepper of a certain angle</description>
+            <field name="stepper_id" type="uint8_t">A member of the StepperList enum</field>
+            <field name="angle" type="float">Stepper angle in degrees</field>
+        </message>
+        <message id="61" name="SET_STEPPER_STEPS_TC">
+            <description>Move the stepper of a certain amount of steps</description>
+            <field name="stepper_id" type="uint8_t">A member of the StepperList enum</field>
+            <field name="steps" type="float">Number of steps</field>
+        </message>
+        <message id="62" name="SET_STEPPER_MULTIPLIER_TC">
+            <description>Set the multiplier of the stepper</description>
+            <field name="stepper_id" type="uint8_t">A member of the StepperList enum</field>
+            <field name="multiplier" type="float">Multiplier</field>
+        </message>
+        <message id="63" name="SET_ANTENNA_COORDINATES_ARP_TC">
+            <description>Sets current antennas coordinates</description>
+            <field name="latitude" type="float" units="deg">Latitude</field>
+            <field name="longitude" type="float" units="deg">Longitude</field>
+            <field name="height" type="float" units="m">Height</field>
+        </message>
+        <message id="64" name="SET_ROCKET_COORDINATES_ARP_TC">
+            <description>Sets current rocket coordinates</description>
+            <field name="latitude" type="float" units="deg">Latitude</field>
+            <field name="longitude" type="float" units="deg">Longitude</field>
+            <field name="height" type="float" units="m">Height</field>
+        </message>
+        <message id="65" name="ARP_COMMAND_TC">
+            <description>TC containing a command with no parameters that trigger some action</description>
+            <field name="command_id" type="uint8_t">A member of the MavCommandList enum</field>
+        </message>
+
+        <!-- FROM ROCKET TO GROUND: GENERIC -->
+        <message id="100" name="ACK_TM">
+            <description>TM containing an ACK message to notify that the message has been processed correctly</description>
+            <field name="recv_msgid" type="uint8_t">Message id of the received message</field>
+            <field name="seq_ack" type="uint8_t">Sequence number of the received message</field>
+        </message>
+        <message id="101" name="NACK_TM">
+            <description>TM containing a NACK message to notify that the received message was invalid</description>
+            <field name="recv_msgid" type="uint8_t">Message id of the received message</field>
+            <field name="seq_ack" type="uint8_t">Sequence number of the received message</field>
+            <field name="err_id" type="uint16_t">Error core that generated the NACK</field>
+        </message>
+        <message id="102" name="WACK_TM">
+            <description>TM containing an ACK message to notify that the message has been processed with a warning</description>
+            <field name="recv_msgid" type="uint8_t">Message id of the received message</field>
+            <field name="seq_ack" type="uint8_t">Sequence number of the received message</field>
+            <field name="err_id" type="uint16_t">Error core that generated the WACK</field>
+        </message>
+        <message id="103" name="GPS_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="fix" type="uint8_t">Wether the GPS has a FIX</field>
+            <field name="latitude" type="double" units="deg">Latitude</field>
+            <field name="longitude" type="double" units="deg">Longitude</field>
+            <field name="height" type="double" units="m">Altitude</field>
+            <field name="vel_north" type="float" units="m/s">Velocity in NED frame (north)</field>
+            <field name="vel_east" type="float" units="m/s">Velocity in NED frame (east)</field>
+            <field name="vel_down" type="float" units="m/s">Velocity in NED frame (down)</field>
+            <field name="speed" type="float" units="m/s">Speed</field>
+            <field name="track" type="float" units="deg">Track</field>
+            <field name="n_satellites" type="uint8_t">Number of connected satellites</field>
+        </message>
+        <message id="104" name="IMU_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="acc_x" type="float" units="m/s2">X axis acceleration</field>
+            <field name="acc_y" type="float" units="m/s2">Y axis acceleration</field>
+            <field name="acc_z" type="float" units="m/s2">Z axis acceleration</field>
+            <field name="gyro_x" type="float" units="rad/s">X axis gyro</field>
+            <field name="gyro_y" type="float" units="rad/s">Y axis gyro</field>
+            <field name="gyro_z" type="float" units="rad/s">Z axis gyro</field>
+            <field name="mag_x" type="float" units="uT">X axis compass</field>
+            <field name="mag_y" type="float" units="uT">Y axis compass</field>
+            <field name="mag_z" type="float" units="uT">Z axis compass</field>
+        </message>
+        <message id="105" name="PRESSURE_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="pressure" type="float" units="Pa">Pressure of the digital barometer</field>
+        </message>
+        <message id="106" name="ADC_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="channel_0" type="float" units="V">ADC voltage measured on channel 0</field>
+            <field name="channel_1" type="float" units="V">ADC voltage measured on channel 1</field>
+            <field name="channel_2" type="float" units="V">ADC voltage measured on channel 2</field>
+            <field name="channel_3" type="float" units="V">ADC voltage measured on channel 3</field>
+            <field name="channel_4" type="float" units="V">ADC voltage measured on channel 4</field>
+            <field name="channel_5" type="float" units="V">ADC voltage measured on channel 5</field>
+            <field name="channel_6" type="float" units="V">ADC voltage measured on channel 6</field>
+            <field name="channel_7" type="float" units="V">ADC voltage measured on channel 7</field>
+        </message>
+        <message id="107" name="VOLTAGE_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="voltage" type="float" units="V">Voltage</field>
+        </message>
+        <message id="108" name="CURRENT_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="current" type="float" units="A">Current</field>
+        </message>
+        <message id="109" name="TEMP_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="temperature" type="float" units="deg">Temperature</field>
+        </message>
+        <message id="110" name="LOAD_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="load" type="float" units="kg">Load force</field>
+        </message>
+        <message id="111" name="ATTITUDE_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="roll" type="float" units="deg">Roll angle</field>
+            <field name="pitch" type="float" units="deg">Pitch angle</field>
+            <field name="yaw" type="float" units="deg">Yaw angle</field>
+            <field name="quat_x" type="float">Quaternion x component</field>
+            <field name="quat_y" type="float">Quaternion y component</field>
+            <field name="quat_z" type="float">Quaternion z component</field>
+            <field name="quat_w" type="float">Quaternion w component</field>
+        </message>
+        <message id="112" name="SENSOR_STATE_TM">
+            <description></description>
+            <field name="sensor_name" type="char[20]">Sensor name</field>
+            <field name="initialized" type="uint8_t">Boolean that represents the init state</field>
+            <field name="enabled" type="uint8_t">Boolean that represents the enabled state</field>
+        </message>
+        <message id="113" name="SERVO_TM">
+            <description></description>
+            <field name="servo_id" type="uint8_t">A member of the ServosList enum</field>
+            <field name="servo_position" type="float">Position of the servo [0-1]</field>
+        </message>
+        <message id="114" name="PIN_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
+            <field name="pin_id" type="uint8_t">A member of the PinsList enum</field>
+            <field name="last_change_timestamp" type="uint64_t">Last change timestamp of pin</field>
+            <field name="changes_counter" type="uint8_t">Number of changes of pin</field>
+            <field name="current_state" type="uint8_t">Current state of pin</field>
+        </message>
+        <message id="115" name="REFERENCE_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
+            <field name="ref_altitude" type="float" units="m">Reference altitude</field>
+            <field name="ref_pressure" type="float" units="Pa">Reference atmospheric pressure</field>
+            <field name="ref_temperature" type="float" units="degC">Reference temperature</field>
+            <field name="ref_latitude" type="float" units="deg">Reference latitude</field>
+            <field name="ref_longitude" type="float" units="deg">Reference longitude</field>
+            <field name="msl_pressure" type="float" units="Pa">Mean sea level atmospheric pressure</field>
+            <field name="msl_temperature" type="float" units="degC">Mean sea level temperature</field>
+        </message>
+        <message id="116" name="REGISTRY_FLOAT_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
+            <field name="key_id" type="uint32_t">Id of this configuration entry</field>
+            <field name="key_name" type="char[20]">Name of this configuration entry</field>
+            <field name="value" type="float">Value of this configuration</field>
+        </message>
+        <message id="117" name="REGISTRY_INT_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
+            <field name="key_id" type="uint32_t">Id of this configuration entry</field>
+            <field name="key_name" type="char[20]">Name of this configuration entry</field>
+            <field name="value" type="uint32_t">Value of this configuration</field>
+        </message>
+        <message id="118" name="REGISTRY_COORD_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
+            <field name="key_id" type="uint32_t">Id of this configuration entry</field>
+            <field name="key_name" type="char[20]">Name of this configuration entry</field>
+            <field name="latitude" type="float" units="deg">Latitude in this configuration</field>
+            <field name="longitude" type="float" units="deg">Latitude in this configuration</field>
+        </message>
+        
+        <!-- FROM AUTOMATED ROCKET POINTER TO GROUNDSTATION -->
+        <message id="150" name="ARP_TM">
+            <description></description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
+            <field name="state" type="uint8_t">State Machine Controller State</field>
+            <field name="yaw" type="float" units="deg">Current Yaw</field>
+            <field name="pitch" type="float" units="deg">Current Pitch</field>
+            <field name="roll" type="float" units="deg">Current Roll</field>
+            <field name="target_yaw" type="float" units="deg">Target Yaw</field>
+            <field name="target_pitch" type="float" units="deg">Target Pitch</field>
+            <field name="stepperX_pos" type="float" units="deg">StepperX current position wrt the boot position</field>
+            <field name="stepperX_delta" type="float" units="deg">StepperX last actuated delta angle</field>
+            <field name="stepperX_speed" type="float" units="rps">StepperX current speed</field>
+            <field name="stepperY_pos" type="float" units="deg">StepperY current position wrt the boot position</field>
+            <field name="stepperY_delta" type="float" units="deg">StepperY last actuated delta angle</field>
+            <field name="stepperY_speed" type="float" units="rps">StepperY current Speed</field>
+            <field name="gps_latitude" type="float" units="deg">Latitude</field>
+            <field name="gps_longitude" type="float" units="deg">Longitude</field>
+            <field name="gps_height" type="float" units="m">Altitude</field>
+            <field name="gps_fix" type="uint8_t">Wether the GPS has a FIX</field>
+            <field name="main_radio_present" type="uint8_t">Boolean indicating the presence of the main radio</field>
+            <field name="main_packet_tx_error_count" type="uint16_t">Number of errors during send</field>
+            <field name="main_tx_bitrate" type="uint16_t" units="b/s">Send bitrate</field>
+            <field name="main_packet_rx_success_count" type="uint16_t">Number of succesfull received mavlink packets</field>
+            <field name="main_packet_rx_drop_count" type="uint16_t">Number of dropped mavlink packets</field>
+            <field name="main_rx_bitrate" type="uint16_t" units="b/s">Receive bitrate</field>
+            <field name="main_rx_rssi" type="float" units="dBm">Receive RSSI</field>
+            <field name="payload_radio_present" type="uint8_t">Boolean indicating the presence of the payload radio</field>
+            <field name="payload_packet_tx_error_count" type="uint16_t">Number of errors during send</field>
+            <field name="payload_tx_bitrate" type="uint16_t" units="b/s">Send bitrate</field>
+            <field name="payload_packet_rx_success_count" type="uint16_t">Number of succesfull received mavlink packets</field>
+            <field name="payload_packet_rx_drop_count" type="uint16_t">Number of dropped mavlink packets</field>
+            <field name="payload_rx_bitrate" type="uint16_t" units="b/s">Receive bitrate</field>
+            <field name="payload_rx_rssi" type="float" units="dBm">Receive RSSI</field>
+            <field name="ethernet_present" type="uint8_t">Boolean indicating the presence of the ethernet module</field>
+            <field name="ethernet_status" type="uint8_t">Status flag indicating the status of the ethernet PHY</field>
+            <field name="battery_voltage" type="float" units="V">Battery voltage</field>
+            <field name="log_number" type="int16_t">Currently active log file, -1 if the logger is inactive</field>
+        </message>
+
+        <!-- FROM ROCKET TO GROUND: SPECIFIC -->
+        <message id="200" name="SYS_TM">
+            <description>System status telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
+            <field name="logger" type="uint8_t">True if the logger started correctly</field>
+            <field name="event_broker" type="uint8_t">True if the event broker started correctly</field>
+            <field name="radio" type="uint8_t">True if the radio started correctly</field>
+            <field name="sensors" type="uint8_t">True if the sensors started correctly</field>
+            <field name="actuators" type="uint8_t">True if the sensors started correctly</field>
+            <field name="pin_handler" type="uint8_t">True if the pin observer started correctly</field>
+            <field name="can_handler" type="uint8_t">True if the can handler started correctly</field>
+            <field name="scheduler" type="uint8_t">True if the board scheduler is running</field>
+        </message>
+        <message id="201" name="LOGGER_TM">
+            <description>Logger status telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
+            <field name="log_number" type="int16_t">Currently active log file, -1 if the logger is inactive</field>
+            <field name="too_large_samples" type="int32_t">Number of dropped samples because too large</field>
+            <field name="dropped_samples" type="int32_t">Number of dropped samples due to fifo full</field>
+            <field name="queued_samples" type="int32_t">Number of samples written to buffer</field>
+            <field name="buffers_filled" type="int32_t">Number of buffers filled</field>
+            <field name="buffers_written" type="int32_t">Number of buffers written to disk</field>
+            <field name="writes_failed" type="int32_t">Number of fwrite() that failed</field>
+            <field name="last_write_error" type="int32_t">Error of the last fwrite() that failed</field>
+            <field name="average_write_time" type="int32_t">Average time to perform an fwrite() of a buffer</field>
+            <field name="max_write_time" type="int32_t">Max time to perform an fwrite() of a buffer</field>
+        </message>
+        <message id="202" name="MAVLINK_STATS_TM">
+            <description>Status of MavlinkDriver</description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged </field>
+            <field name="n_send_queue" type="uint16_t">Current len of the occupied portion of the queue</field>
+            <field name="max_send_queue" type="uint16_t">Max occupied len of the queue </field>
+            <field name="n_send_errors" type="uint16_t">Number of packet not sent correctly by the TMTC</field>
+            <field name="msg_received" type="uint8_t"> Number of received messages</field>
+            <field name="buffer_overrun" type="uint8_t"> Number of buffer overruns</field>
+            <field name="parse_error" type="uint8_t"> Number of parse errors</field>
+            <field name="parse_state" type="uint32_t"> Parsing state machine</field>
+            <field name="packet_idx" type="uint8_t"> Index in current packet</field>
+            <field name="current_rx_seq" type="uint8_t"> Sequence number of last packet received</field>
+            <field name="current_tx_seq" type="uint8_t"> Sequence number of last packet sent  </field>
+            <field name="packet_rx_success_count" type="uint16_t"> Received packets</field>
+            <field name="packet_rx_drop_count" type="uint16_t">  Number of packet drops   </field>
+        </message>
+        <message id="203" name="CAN_STATS_TM">
+            <description>Status of CanHandler</description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="payload_bit_rate" type="float">Payload only bitrate</field>
+            <field name="total_bit_rate" type="float">Total bitrate</field>
+            <field name="load_percent" type="float">Load percent of the BUS</field>
+        </message>
+        <message id="204" name="TASK_STATS_TM">
+            <description>Statistics of the Task Scheduler</description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged </field>
+            <field name="task_id" type="uint16_t">Task ID</field>
+            <field name="task_period" type="uint16_t" units="ns">Period of the task</field>
+            <field name="task_missed_events" type="uint32_t">Number of missed events</field>
+            <field name="task_failed_events" type="uint32_t">Number of missed events</field>
+            <field name="task_activation_mean" type="float">Task activation mean period</field>
+            <field name="task_activation_stddev" type="float">Task activation mean standard deviation</field>
+            <field name="task_period_mean" type="float">Task period mean period</field>
+            <field name="task_period_stddev" type="float">Task period mean standard deviation</field>
+            <field name="task_workload_mean" type="float">Task workload mean period</field>
+            <field name="task_workload_stddev" type="float">Task workload mean standard deviation</field>
+        </message>
+        <message id="205" name="ADA_TM">
+            <description>Apogee Detection Algorithm status telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="state" type="uint8_t">ADA current state</field>
+            <field name="kalman_x0" type="float">Kalman state variable 0 (pressure)</field>
+            <field name="kalman_x1" type="float">Kalman state variable 1 (pressure velocity)</field>
+            <field name="kalman_x2" type="float">Kalman state variable 2 (pressure acceleration)</field>
+            <field name="vertical_speed" type="float" units="m/s">Vertical speed computed by the ADA</field>
+            <field name="msl_altitude" type="float" units="m">Altitude w.r.t. mean sea level</field>
+            <field name="ref_pressure" type="float" units="Pa">Calibration pressure</field>
+            <field name="ref_altitude" type="float" units="m">Calibration altitude</field>
+            <field name="ref_temperature" type="float" units="degC">Calibration temperature</field>
+            <field name="msl_pressure" type="float" units="Pa">Expected pressure at mean sea level</field>
+            <field name="msl_temperature" type="float" units="degC">Expected temperature at mean sea level</field>
+            <field name="dpl_altitude" type="float" units="m">Main parachute deployment altituyde</field>
+        </message>
+        <message id="206" name="NAS_TM">
+            <description>Navigation System status telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="state" type="uint8_t">NAS current state</field>
+            <field name="nas_n" type="float" units="deg">Navigation system estimated noth position</field>
+            <field name="nas_e" type="float" units="deg">Navigation system estimated east position</field>
+            <field name="nas_d" type="float" units="m">Navigation system estimated down position</field>
+            <field name="nas_vn" type="float" units="m/s">Navigation system estimated north velocity</field>
+            <field name="nas_ve" type="float" units="m/s">Navigation system estimated east velocity</field>
+            <field name="nas_vd" type="float" units="m/s">Navigation system estimated down velocity</field>
+            <field name="nas_qx" type="float" units="deg">Navigation system estimated attitude (qx)</field>
+            <field name="nas_qy" type="float" units="deg">Navigation system estimated attitude (qy)</field>
+            <field name="nas_qz" type="float" units="deg">Navigation system estimated attitude (qz)</field>
+            <field name="nas_qw" type="float" units="deg">Navigation system estimated attitude (qw)</field>
+            <field name="nas_bias_x" type="float">Navigation system gyroscope bias on x axis</field>
+            <field name="nas_bias_y" type="float">Navigation system gyroscope bias on y axis</field>
+            <field name="nas_bias_z" type="float">Navigation system gyroscope bias on z axis</field>
+            <field name="ref_pressure" type="float" units="Pa">Calibration pressure</field>
+            <field name="ref_temperature" type="float" units="degC">Calibration temperature</field>
+            <field name="ref_latitude" type="float" units="deg">Calibration latitude</field>
+            <field name="ref_longitude" type="float" units="deg">Calibration longitude</field>
+        </message>
+        <message id="207" name="MEA_TM">
+            <description>Mass Estimation Algorithm status telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">When was this logged</field>
+            <field name="state" type="uint8_t">MEA current state</field>
+            <field name="kalman_x0" type="float">Kalman state variable 0 (corrected pressure)</field>
+            <field name="kalman_x1" type="float">Kalman state variable 1 </field>
+            <field name="kalman_x2" type="float">Kalman state variable 2 (mass)</field>
+            <field name="mass" type="float" units="kg">Mass estimated</field>
+            <field name="corrected_pressure" type="float" units="Pa">Corrected pressure</field>
+        </message>
+        <message id="208" name="ROCKET_FLIGHT_TM">
+            <description>High Rate Rocket Telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp in microseconds</field>
+            <field name="pressure_ada" type="float" units="Pa">Atmospheric pressure estimated by ADA</field>
+            <field name="pressure_digi" type="float" units="Pa">Pressure from digital sensor</field>
+            <field name="pressure_static" type="float" units="Pa">Pressure from static port</field>
+            <field name="pressure_dpl" type="float" units="Pa">Pressure from deployment vane sensor</field>
+            <field name="airspeed_pitot" type="float" units="m/s">Pitot airspeed</field>
+            <field name="altitude_agl" type="float" units="m">Altitude above ground level</field>
+            <field name="ada_vert_speed" type="float" units="m/s">Vertical speed estimated by ADA</field>
+            <field name="mea_mass" type="float" units="kg">Mass estimated by MEA</field>
+            <field name="mea_apogee" type="float" units="m">MEA estimated apogee</field>
+            <field name="acc_x" type="float" units="m/s^2">Acceleration on X axis (body)</field>
+            <field name="acc_y" type="float" units="m/s^2">Acceleration on Y axis (body)</field>
+            <field name="acc_z" type="float" units="m/s^2">Acceleration on Z axis (body)</field>
+            <field name="gyro_x" type="float" units="rad/s">Angular speed on X axis (body)</field>
+            <field name="gyro_y" type="float" units="rad/s">Angular speed on Y axis (body)</field>
+            <field name="gyro_z" type="float" units="rad/s">Angular speed on Z axis (body)</field>
+            <field name="mag_x" type="float" units="uT">Magnetic field on X axis (body)</field>
+            <field name="mag_y" type="float" units="uT">Magnetic field on Y axis (body)</field>
+            <field name="mag_z" type="float" units="uT">Magnetic field on Z axis (body)</field>
+            <field name="vn100_qx" type="float">VN100 estimated attitude (qx)</field>
+            <field name="vn100_qy" type="float">VN100 estimated attitude (qy)</field>
+            <field name="vn100_qz" type="float">VN100 estimated attitude (qz)</field>
+            <field name="vn100_qw" type="float">VN100 estimated attitude (qw)</field>
+            <field name="gps_fix" type="uint8_t">Wether the GPS has a FIX</field>
+            <field name="gps_lat" type="float" units="deg">Latitude</field>
+            <field name="gps_lon" type="float" units="deg">Longitude</field>
+            <field name="gps_alt" type="float" units="m">GPS Altitude</field>
+            <field name="fmm_state" type="uint8_t">Flight Mode Manager State</field>
+            <field name="abk_angle" type="float">Air Brakes angle</field>
+            <field name="nas_n" type="float" units="deg">NAS estimated noth position</field>
+            <field name="nas_e" type="float" units="deg">NAS estimated east position</field>
+            <field name="nas_d" type="float" units="m">NAS estimated down position</field>
+            <field name="nas_vn" type="float" units="m/s">NAS estimated north velocity</field>
+            <field name="nas_ve" type="float" units="m/s">NAS estimated east velocity</field>
+            <field name="nas_vd" type="float" units="m/s">NAS estimated down velocity</field>
+            <field name="nas_qx" type="float">NAS estimated attitude (qx)</field>
+            <field name="nas_qy" type="float">NAS estimated attitude (qy)</field>
+            <field name="nas_qz" type="float">NAS estimated attitude (qz)</field>
+            <field name="nas_qw" type="float">NAS estimated attitude (qw)</field>
+            <field name="nas_bias_x" type="float">NAS gyroscope bias on x axis</field>
+            <field name="nas_bias_y" type="float">NAS gyroscope bias on y axis</field>
+            <field name="nas_bias_z" type="float">NAS gyroscope bias on z axis</field>
+            <field name="battery_voltage" type="float" units="V">Battery voltage</field>
+            <field name="cam_battery_voltage" type="float" units="V">Camera battery voltage</field>
+            <field name="temperature" type="float" units="degC">Temperature</field>
+        </message>
+        <message id="209" name="PAYLOAD_FLIGHT_TM">
+            <description>High Rate Payload Telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp in microseconds</field>
+            <field name="pressure_digi" type="float" units="Pa">Pressure from digital sensor</field>
+            <field name="pressure_static" type="float" units="Pa">Pressure from static port</field>
+            <field name="pressure_dynamic" type="float" units="Pa">Pressure from dynamic port</field>
+            <field name="airspeed_pitot" type="float" units="m/s">Pitot airspeed</field>
+            <field name="altitude_agl" type="float" units="m">Altitude above ground level</field>
+            <field name="acc_x" type="float" units="m/s^2">Acceleration on X axis (body)</field>
+            <field name="acc_y" type="float" units="m/s^2">Acceleration on Y axis (body)</field>
+            <field name="acc_z" type="float" units="m/s^2">Acceleration on Z axis (body)</field>
+            <field name="gyro_x" type="float" units="rad/s">Angular speed on X axis (body)</field>
+            <field name="gyro_y" type="float" units="rad/s">Angular speed on Y axis (body)</field>
+            <field name="gyro_z" type="float" units="rad/s">Angular speed on Z axis (body)</field>
+            <field name="mag_x" type="float" units="uT">Magnetic field on X axis (body)</field>
+            <field name="mag_y" type="float" units="uT">Magnetic field on Y axis (body)</field>
+            <field name="mag_z" type="float" units="uT">Magnetic field on Z axis (body)</field>
+            <field name="gps_fix" type="uint8_t">Wether the GPS has a FIX</field>
+            <field name="gps_lat" type="float" units="deg">Latitude</field>
+            <field name="gps_lon" type="float" units="deg">Longitude</field>
+            <field name="gps_alt" type="float" units="m">GPS Altitude</field>
+            <field name="fmm_state" type="uint8_t">Flight Mode Manager State</field>
+            <field name="left_servo_angle" type="float" units="deg">Left servo motor angle</field>
+            <field name="right_servo_angle" type="float" units="deg">Right servo motor angle</field>
+            <field name="nas_n" type="float" units="deg">NAS estimated noth position</field>
+            <field name="nas_e" type="float" units="deg">NAS estimated east position</field>
+            <field name="nas_d" type="float" units="m">NAS estimated down position</field>
+            <field name="nas_vn" type="float" units="m/s">NAS estimated north velocity</field>
+            <field name="nas_ve" type="float" units="m/s">NAS estimated east velocity</field>
+            <field name="nas_vd" type="float" units="m/s">NAS estimated down velocity</field>
+            <field name="nas_qx" type="float">NAS estimated attitude (qx)</field>
+            <field name="nas_qy" type="float">NAS estimated attitude (qy)</field>
+            <field name="nas_qz" type="float">NAS estimated attitude (qz)</field>
+            <field name="nas_qw" type="float">NAS estimated attitude (qw)</field>
+            <field name="nas_bias_x" type="float">NAS gyroscope bias on x axis</field>
+            <field name="nas_bias_y" type="float">NAS gyroscope bias on y axis</field>
+            <field name="nas_bias_z" type="float">NAS gyroscope bias on z axis</field>
+            <field name="wes_n" type="float" units="m/s">Wind estimated north velocity</field>
+            <field name="wes_e" type="float" units="m/s">Wind estimated east velocity</field>
+            <field name="battery_voltage" type="float" units="V">Battery voltage</field>
+            <field name="cam_battery_voltage" type="float" units="V">Camera battery voltage</field>
+            <field name="temperature" type="float" units="degC">Temperature</field>
+        </message>
+        <message id="210" name="ROCKET_STATS_TM">
+            <description>Low Rate Rocket Telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp in microseconds</field>
+            <field name="liftoff_ts" type="uint64_t" units="us">System clock at liftoff</field>
+            <field name="liftoff_max_acc_ts" type="uint64_t" units="us">System clock at the maximum liftoff acceleration</field>
+            <field name="liftoff_max_acc" type="float" units="m/s2">Maximum liftoff acceleration</field>
+            <field name="max_speed_ts" type="uint64_t" units="us">System clock at max speed</field>
+            <field name="max_speed" type="float" units="m/s">Max measured speed</field>
+            <field name="max_speed_altitude" type="float" units="m">Altitude at max speed</field>
+            <field name="max_mach_ts" type="uint64_t">System clock at maximum measured mach</field>
+            <field name="max_mach" type="float">Maximum measured mach</field>
+            <field name="shutdown_ts" type="uint64_t">System clock at shutdown</field>
+            <field name="shutdown_alt" type="float">Altitude at shutdown</field>
+            <field name="apogee_ts" type="uint64_t" units="us">System clock at apogee</field>
+            <field name="apogee_lat" type="float" units="deg">Apogee latitude</field>
+            <field name="apogee_lon" type="float" units="deg">Apogee longitude</field>
+            <field name="apogee_alt" type="float" units="m">Apogee altitude</field>
+            <field name="apogee_max_acc_ts" type="uint64_t" units="us">System clock at max acceleration after apogee</field>
+            <field name="apogee_max_acc" type="float" units="m/s2">Max acceleration after apogee</field>
+            <field name="dpl_ts" type="uint64_t" units="us">System clock at main deployment</field>
+            <field name="dpl_alt" type="float" units="m">Deployment altitude</field>
+            <field name="dpl_max_acc_ts" type="uint64_t" units="us">System clock at max acceleration during main deployment</field>
+            <field name="dpl_max_acc" type="float" units="m/s2">Max acceleration during main deployment</field>
+            <field name="dpl_bay_max_pressure_ts" type="uint64_t" units="us">System clock at max pressure in the deployment bay during drogue deployment</field>
+            <field name="dpl_bay_max_pressure" type="float" units="Pa">Max pressure in the deployment bay during drogue deployment</field>
+            <field name="ref_lat" type="float" units="deg">Reference altitude</field>
+            <field name="ref_lon" type="float" units="deg">Reference longitude</field>
+            <field name="ref_alt" type="float" units="m">Reference altitude</field>
+            <field name="cpu_load" type="float">CPU load in percentage</field>
+            <field name="free_heap" type="uint32_t">Amount of available heap in memory</field>
+            <field name="ada_state" type="uint8_t">ADA Controller State</field>
+            <field name="abk_state" type="uint8_t">Airbrake FSM state</field>
+            <field name="nas_state" type="uint8_t">NAS FSM State</field>
+            <field name="mea_state" type="uint8_t">MEA Controller State</field>
+            <field name="exp_angle" type="float">Expulsion servo angle</field>
+            <field name="pin_launch" type="uint8_t">Launch pin status (1 = connected, 0 = disconnected)</field>
+            <field name="pin_nosecone" type="uint8_t">Nosecone pin status (1 = connected, 0 = disconnected)</field>
+            <field name="pin_expulsion" type="uint8_t">Servo sensor status (1 = actuated, 0 = idle)</field>
+            <field name="cutter_presence" type="uint8_t">Cutter presence status (1 = present, 0 = missing)</field>
+            <field name="log_number" type="int16_t">Currently active log file, -1 if the logger is inactive</field>
+            <field name="log_good" type="int32_t">0 if log failed, 1 otherwise</field>
+            <field name="payload_board_state" type="uint8_t">Main board fmm state</field>
+            <field name="motor_board_state" type="uint8_t">Motor board fmm state</field>
+            <field name="payload_can_status" type="uint8_t">Main CAN status</field>
+            <field name="motor_can_status" type="uint8_t">Motor CAN status</field>
+            <field name="rig_can_status" type="uint8_t">RIG CAN status</field>
+            <field name="hil_state" type="uint8_t">1 if the board is currently in HIL mode</field>
+        </message>
+        <message id="211" name="PAYLOAD_STATS_TM">
+            <description>Low Rate Payload Telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp in microseconds</field>
+            <field name="liftoff_ts" type="uint64_t" units="us">System clock at liftoff</field>
+            <field name="liftoff_max_acc_ts" type="uint64_t" units="us">System clock at the maximum liftoff acceleration</field>
+            <field name="liftoff_max_acc" type="float" units="m/s2">Maximum liftoff acceleration</field>
+            <field name="max_speed_ts" type="uint64_t" units="us">System clock at max speed</field>
+            <field name="max_speed" type="float" units="m/s">Max measured speed</field>
+            <field name="max_speed_altitude" type="float" units="m">Altitude at max speed</field>
+            <field name="max_mach_ts" type="uint64_t">System clock at maximum measured mach</field>
+            <field name="max_mach" type="float">Maximum measured mach</field>
+            <field name="apogee_ts" type="uint64_t" units="us">System clock at apogee</field>
+            <field name="apogee_lat" type="float" units="deg">Apogee latitude</field>
+            <field name="apogee_lon" type="float" units="deg">Apogee longitude</field>
+            <field name="apogee_alt" type="float" units="m">Apogee altitude</field>
+            <field name="apogee_max_acc_ts" type="uint64_t" units="us">System clock at max acceleration after apogee</field>
+            <field name="apogee_max_acc" type="float" units="m/s2">Max acceleration after apogee</field>
+            <field name="wing_target_lat" type="float" units="deg">Wing target latitude</field>
+            <field name="wing_target_lon" type="float" units="deg">Wing target longitude</field>
+            <field name="wing_active_target_n" type="float" units="m">Wing active target N</field>
+            <field name="wing_active_target_e" type="float" units="m">Wing active target E</field>
+            <field name="wing_algorithm" type="uint8_t">Wing selected algorithm</field>
+            <field name="dpl_ts" type="uint64_t" units="us">System clock at main deployment</field>
+            <field name="dpl_alt" type="float" units="m">Deployment altitude</field>
+            <field name="dpl_max_acc_ts" type="uint64_t" units="us">System clock at max acceleration during main deployment</field>
+            <field name="dpl_max_acc" type="float" units="m/s2">Max acceleration during main deployment</field>
+            <field name="ref_lat" type="float" units="deg">Reference altitude</field>
+            <field name="ref_lon" type="float" units="deg">Reference longitude</field>
+            <field name="ref_alt" type="float" units="m">Reference altitude</field>
+            <field name="min_pressure" type="float" units="Pa">Apogee pressure - Digital barometer</field>
+            <field name="cpu_load" type="float">CPU load in percentage</field>
+            <field name="free_heap" type="uint32_t">Amount of available heap in memory</field>
+            <field name="nas_state" type="uint8_t">NAS FSM State</field>
+            <field name="wnc_state" type="uint8_t">Wing Controller State</field>
+            <field name="pin_launch" type="uint8_t">Launch pin status (1 = connected, 0 = disconnected)</field>
+            <field name="pin_nosecone" type="uint8_t">Nosecone pin status (1 = connected, 0 = disconnected)</field>
+            <field name="cutter_presence" type="uint8_t">Cutter presence status (1 = present, 0 = missing)</field>
+            <field name="log_number" type="int16_t">Currently active log file, -1 if the logger is inactive</field>
+            <field name="log_good" type="int32_t">0 if log failed, 1 otherwise</field>
+            <field name="main_board_state" type="uint8_t">Main board fmm state</field>
+            <field name="motor_board_state" type="uint8_t">Motor board fmm state</field>
+            <field name="main_can_status" type="uint8_t">Main CAN status</field>
+            <field name="motor_can_status" type="uint8_t">Motor CAN status</field>
+            <field name="rig_can_status" type="uint8_t">RIG CAN status</field>
+            <field name="hil_state" type="uint8_t">1 if the board is currently in HIL mode</field>
+        </message>
+        <message id="212" name="GSE_TM">
+            <description>Ground Segment Equipment telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp in microseconds</field>
+            <field name="loadcell_rocket" type="float" units="kg">Rocket weight</field>
+            <field name="loadcell_vessel" type="float" units="kg">External tank weight</field>
+            <field name="filling_pressure" type="float" units="Bar">Refueling line pressure</field>
+            <field name="vessel_pressure" type="float" units="Bar">Vessel tank pressure</field>
+            <field name="filling_valve_state" type="uint8_t">1 If the filling valve is open</field>
+            <field name="venting_valve_state" type="uint8_t">1 If the venting valve is open</field>
+            <field name="release_valve_state" type="uint8_t">1 If the release valve is open</field>
+            <field name="main_valve_state" type="uint8_t">1 If the main valve is open</field>
+            <field name="nitrogen_valve_state" type="uint8_t"> 1 If the nitrogen valve is open</field>
+            <field name="gmm_state" type="uint8_t">State of the GroundModeManager</field>
+            <field name="tars_state" type="uint8_t">State of Tars</field>
+            <field name="arming_state" type="uint8_t">Arming state (1 if armed, 0 otherwise)</field>
+            <field name="cpu_load" type="float">CPU load in percentage</field>
+            <field name="free_heap" type="uint32_t">Amount of available heap in memory</field>
+            <field name="battery_voltage" type="float">Battery voltage</field>
+            <field name="current_consumption" type="float" units="A">RIG current</field>
+            <field name="umbilical_current_consumption" type="float" units="A">Umbilical current</field>
+            <field name="main_board_state" type="uint8_t">Main board fmm state</field>
+            <field name="payload_board_state" type="uint8_t">Payload board fmm state</field>
+            <field name="motor_board_state" type="uint8_t">Motor board fmm state</field>
+            <field name="main_can_status" type="uint8_t">Main CAN status</field>
+            <field name="payload_can_status" type="uint8_t">Payload CAN status</field>
+            <field name="motor_can_status" type="uint8_t">Motor CAN status</field>
+            <field name="log_number" type="int16_t">Currently active log file, -1 if the logger is inactive</field>
+            <field name="log_good" type="int32_t">0 if log failed, 1 otherwise</field>
+        </message>
+        <message id="213" name="MOTOR_TM">
+            <description>Motor rocket telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp in microseconds</field>
+            <field name="top_tank_pressure" type="float" units="Bar">Tank upper pressure</field>
+            <field name="bottom_tank_pressure" type="float" units="Bar">Tank bottom pressure</field>
+            <field name="combustion_chamber_pressure" type="float" units="Bar">Pressure inside the combustion chamber used for automatic shutdown</field>
+            <field name="tank_temperature" type="float">Tank temperature</field>
+            <field name="main_valve_state" type="uint8_t">1 If the main valve is open </field>
+            <field name="venting_valve_state" type="uint8_t">1 If the venting valve is open </field>
+            <field name="battery_voltage" type="float" units="V">Battery voltage</field>
+            <field name="log_number" type="int16_t">Currently active log file, -1 if the logger is inactive</field>
+            <field name="log_good" type="int32_t">0 if log failed, 1 otherwise</field>
+            <field name="hil_state" type="uint8_t">1 if the board is currently in HIL mode</field>
+        </message>
+        <message id="214" name="CALIBRATION_TM">
+            <description>Calibration telemetry</description>
+            <field name="timestamp" type="uint64_t" units="us">Timestamp in microseconds</field>
+            <field name="gyro_bias_x" type="float" units="deg/s">Gyroscope X bias</field>
+            <field name="gyro_bias_y" type="float" units="deg/s">Gyroscope Y bias</field>
+            <field name="gyro_bias_z" type="float" units="deg/s">Gyroscope Z bias</field>
+            <field name="mag_bias_x" type="float" units="uT">Magnetometer X bias</field>
+            <field name="mag_bias_y" type="float" units="uT">Magnetometer Y bias</field>
+            <field name="mag_bias_z" type="float" units="uT">Magnetometer Z bias</field>
+            <field name="mag_scale_x" type="float">Magnetometer X scale</field>
+            <field name="mag_scale_y" type="float">Magnetometer Y scale</field>
+            <field name="mag_scale_z" type="float">Magnetometer Z scale</field>
+            <field name="static_press_1_bias" type="float" units="Pa">Static pressure 1 bias</field>
+            <field name="static_press_1_scale" type="float">Static pressure 1 scale</field>
+            <field name="static_press_2_bias" type="float" units="Pa">Static pressure 2 bias</field>
+            <field name="static_press_2_scale" type="float">Static pressure 2 scale</field>
+            <field name="dpl_bay_press_bias" type="float" units="Pa">Deployment bay pressure bias</field>
+            <field name="dpl_bay_press_scale" type="float">Deployment bay pressure scale</field>
+            <field name="dynamic_press_bias" type="float" units="Pa">Dynamic pressure bias</field>
+            <field name="dynamic_press_scale" type="float">Dynamic pressure scale</field>
+        </message>
+    </messages>
+</mavlink>