diff --git a/mavlink_skyward_lib/mavlink_lib/checksum.h b/mavlink_skyward_lib/mavlink_lib/checksum.h
new file mode 100644
index 0000000000000000000000000000000000000000..fcd5e1d55b3df83d5121551bb50a77dae1164b00
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/checksum.h
@@ -0,0 +1,96 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _CHECKSUM_H_
+#define _CHECKSUM_H_
+
+// Visual Studio versions before 2010 don't have stdint.h, so we just error out.
+#if (defined _MSC_VER) && (_MSC_VER < 1600)
+#error "The C-MAVLink implementation requires Visual Studio 2010 or greater"
+#endif
+
+#include <stdint.h>
+
+/**
+ *
+ *  CALCULATE THE CHECKSUM
+ *
+ */
+
+#define X25_INIT_CRC 0xffff
+#define X25_VALIDATE_CRC 0xf0b8
+
+#ifndef HAVE_CRC_ACCUMULATE
+/**
+ * @brief Accumulate the MCRF4XX CRC16 by adding one char at a time.
+ *
+ * The checksum function adds the hash of one char at a time to the
+ * 16 bit checksum (uint16_t).
+ *
+ * @param data new char to hash
+ * @param crcAccum the already accumulated checksum
+ **/
+static inline void crc_accumulate(uint8_t data, uint16_t *crcAccum)
+{
+        /*Accumulate one byte of data into the CRC*/
+        uint8_t tmp;
+
+        tmp = data ^ (uint8_t)(*crcAccum &0xff);
+        tmp ^= (tmp<<4);
+        *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
+}
+#endif
+
+
+/**
+ * @brief Initialize the buffer for the MCRF4XX CRC16
+ *
+ * @param crcAccum the 16 bit MCRF4XX CRC16
+ */
+static inline void crc_init(uint16_t* crcAccum)
+{
+        *crcAccum = X25_INIT_CRC;
+}
+
+
+/**
+ * @brief Calculates the MCRF4XX CRC16 checksum on a byte buffer
+ *
+ * @param  pBuffer buffer containing the byte array to hash
+ * @param  length  length of the byte array
+ * @return the checksum over the buffer bytes
+ **/
+static inline uint16_t crc_calculate(const uint8_t* pBuffer, uint16_t length)
+{
+        uint16_t crcTmp;
+        crc_init(&crcTmp);
+	while (length--) {
+                crc_accumulate(*pBuffer++, &crcTmp);
+        }
+        return crcTmp;
+}
+
+
+/**
+ * @brief Accumulate the MCRF4XX CRC16 CRC by adding an array of bytes
+ *
+ * The checksum function adds the hash of one char at a time to the
+ * 16 bit checksum (uint16_t).
+ *
+ * @param data new bytes to hash
+ * @param crcAccum the already accumulated checksum
+ **/
+static inline void crc_accumulate_buffer(uint16_t *crcAccum, const char *pBuffer, uint16_t length)
+{
+	const uint8_t *p = (const uint8_t *)pBuffer;
+	while (length--) {
+                crc_accumulate(*p++, crcAccum);
+        }
+}
+
+#endif /* _CHECKSUM_H_ */
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/mavlink_skyward_lib/mavlink_lib/mavlink_conversions.h b/mavlink_skyward_lib/mavlink_lib/mavlink_conversions.h
new file mode 100644
index 0000000000000000000000000000000000000000..d45e6bab399e13c48fb64cd1ed3e57d5ce9241c2
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/mavlink_conversions.h
@@ -0,0 +1,216 @@
+#ifndef  _MAVLINK_CONVERSIONS_H_
+#define  _MAVLINK_CONVERSIONS_H_
+
+#ifndef MAVLINK_NO_CONVERSION_HELPERS
+
+/* enable math defines on Windows */
+#ifdef _MSC_VER
+#ifndef _USE_MATH_DEFINES
+#define _USE_MATH_DEFINES
+#endif
+#endif
+#include <math.h>
+
+#ifndef M_PI_2
+    #define M_PI_2 ((float)asin(1))
+#endif
+
+/**
+ * @file mavlink_conversions.h
+ *
+ * These conversion functions follow the NASA rotation standards definition file
+ * available online.
+ *
+ * Their intent is to lower the barrier for MAVLink adopters to use gimbal-lock free
+ * (both rotation matrices, sometimes called DCM, and quaternions are gimbal-lock free)
+ * rotation representations. Euler angles (roll, pitch, yaw) will be phased out of the
+ * protocol as widely as possible.
+ *
+ * @author James Goppert
+ * @author Thomas Gubler <thomasgubler@gmail.com>
+ */
+
+
+/**
+ * Converts a quaternion to a rotation matrix
+ *
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ * @param dcm a 3x3 rotation matrix
+ */
+MAVLINK_HELPER void mavlink_quaternion_to_dcm(const float quaternion[4], float dcm[3][3])
+{
+    double a = quaternion[0];
+    double b = quaternion[1];
+    double c = quaternion[2];
+    double d = quaternion[3];
+    double aSq = a * a;
+    double bSq = b * b;
+    double cSq = c * c;
+    double dSq = d * d;
+    dcm[0][0] = aSq + bSq - cSq - dSq;
+    dcm[0][1] = 2 * (b * c - a * d);
+    dcm[0][2] = 2 * (a * c + b * d);
+    dcm[1][0] = 2 * (b * c + a * d);
+    dcm[1][1] = aSq - bSq + cSq - dSq;
+    dcm[1][2] = 2 * (c * d - a * b);
+    dcm[2][0] = 2 * (b * d - a * c);
+    dcm[2][1] = 2 * (a * b + c * d);
+    dcm[2][2] = aSq - bSq - cSq + dSq;
+}
+
+
+/**
+ * Converts a rotation matrix to euler angles
+ *
+ * @param dcm a 3x3 rotation matrix
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ */
+MAVLINK_HELPER void mavlink_dcm_to_euler(const float dcm[3][3], float* roll, float* pitch, float* yaw)
+{
+    float phi, theta, psi;
+    theta = asin(-dcm[2][0]);
+
+    if (fabsf(theta - (float)M_PI_2) < 1.0e-3f) {
+        phi = 0.0f;
+        psi = (atan2f(dcm[1][2] - dcm[0][1],
+                dcm[0][2] + dcm[1][1]) + phi);
+
+    } else if (fabsf(theta + (float)M_PI_2) < 1.0e-3f) {
+        phi = 0.0f;
+        psi = atan2f(dcm[1][2] - dcm[0][1],
+                  dcm[0][2] + dcm[1][1] - phi);
+
+    } else {
+        phi = atan2f(dcm[2][1], dcm[2][2]);
+        psi = atan2f(dcm[1][0], dcm[0][0]);
+    }
+
+    *roll = phi;
+    *pitch = theta;
+    *yaw = psi;
+}
+
+
+/**
+ * Converts a quaternion to euler angles
+ *
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ */
+MAVLINK_HELPER void mavlink_quaternion_to_euler(const float quaternion[4], float* roll, float* pitch, float* yaw)
+{
+    float dcm[3][3];
+    mavlink_quaternion_to_dcm(quaternion, dcm);
+    mavlink_dcm_to_euler((const float(*)[3])dcm, roll, pitch, yaw);
+}
+
+
+/**
+ * Converts euler angles to a quaternion
+ *
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ */
+MAVLINK_HELPER void mavlink_euler_to_quaternion(float roll, float pitch, float yaw, float quaternion[4])
+{
+    float cosPhi_2 = cosf(roll / 2);
+    float sinPhi_2 = sinf(roll / 2);
+    float cosTheta_2 = cosf(pitch / 2);
+    float sinTheta_2 = sinf(pitch / 2);
+    float cosPsi_2 = cosf(yaw / 2);
+    float sinPsi_2 = sinf(yaw / 2);
+    quaternion[0] = (cosPhi_2 * cosTheta_2 * cosPsi_2 +
+            sinPhi_2 * sinTheta_2 * sinPsi_2);
+    quaternion[1] = (sinPhi_2 * cosTheta_2 * cosPsi_2 -
+            cosPhi_2 * sinTheta_2 * sinPsi_2);
+    quaternion[2] = (cosPhi_2 * sinTheta_2 * cosPsi_2 +
+            sinPhi_2 * cosTheta_2 * sinPsi_2);
+    quaternion[3] = (cosPhi_2 * cosTheta_2 * sinPsi_2 -
+            sinPhi_2 * sinTheta_2 * cosPsi_2);
+}
+
+
+/**
+ * Converts a rotation matrix to a quaternion
+ * Reference:
+ *  - Shoemake, Quaternions,
+ *  http://www.cs.ucr.edu/~vbz/resources/quatut.pdf
+ *
+ * @param dcm a 3x3 rotation matrix
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ */
+MAVLINK_HELPER void mavlink_dcm_to_quaternion(const float dcm[3][3], float quaternion[4])
+{
+    float tr = dcm[0][0] + dcm[1][1] + dcm[2][2];
+    if (tr > 0.0f) {
+        float s = sqrtf(tr + 1.0f);
+        quaternion[0] = s * 0.5f;
+        s = 0.5f / s;
+        quaternion[1] = (dcm[2][1] - dcm[1][2]) * s;
+        quaternion[2] = (dcm[0][2] - dcm[2][0]) * s;
+        quaternion[3] = (dcm[1][0] - dcm[0][1]) * s;
+    } else {
+        /* Find maximum diagonal element in dcm
+         * store index in dcm_i */
+        int dcm_i = 0;
+        int i;
+        for (i = 1; i < 3; i++) {
+            if (dcm[i][i] > dcm[dcm_i][dcm_i]) {
+                dcm_i = i;
+            }
+        }
+
+        int dcm_j = (dcm_i + 1) % 3;
+        int dcm_k = (dcm_i + 2) % 3;
+
+        float s = sqrtf((dcm[dcm_i][dcm_i] - dcm[dcm_j][dcm_j] -
+                    dcm[dcm_k][dcm_k]) + 1.0f);
+        quaternion[dcm_i + 1] = s * 0.5f;
+        s = 0.5f / s;
+        quaternion[dcm_j + 1] = (dcm[dcm_i][dcm_j] + dcm[dcm_j][dcm_i]) * s;
+        quaternion[dcm_k + 1] = (dcm[dcm_k][dcm_i] + dcm[dcm_i][dcm_k]) * s;
+        quaternion[0] = (dcm[dcm_k][dcm_j] - dcm[dcm_j][dcm_k]) * s;
+    }
+}
+
+
+/**
+ * Converts euler angles to a rotation matrix
+ *
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ * @param dcm a 3x3 rotation matrix
+ */
+MAVLINK_HELPER void mavlink_euler_to_dcm(float roll, float pitch, float yaw, float dcm[3][3])
+{
+    float cosPhi = cosf(roll);
+    float sinPhi = sinf(roll);
+    float cosThe = cosf(pitch);
+    float sinThe = sinf(pitch);
+    float cosPsi = cosf(yaw);
+    float sinPsi = sinf(yaw);
+
+    dcm[0][0] = cosThe * cosPsi;
+    dcm[0][1] = -cosPhi * sinPsi + sinPhi * sinThe * cosPsi;
+    dcm[0][2] = sinPhi * sinPsi + cosPhi * sinThe * cosPsi;
+
+    dcm[1][0] = cosThe * sinPsi;
+    dcm[1][1] = cosPhi * cosPsi + sinPhi * sinThe * sinPsi;
+    dcm[1][2] = -sinPhi * cosPsi + cosPhi * sinThe * sinPsi;
+
+    dcm[2][0] = -sinThe;
+    dcm[2][1] = sinPhi * cosThe;
+    dcm[2][2] = cosPhi * cosThe;
+}
+
+#endif // MAVLINK_NO_CONVERSION_HELPERS
+
+#endif // _MAVLINK_CONVERSIONS_H_
+
diff --git a/mavlink_skyward_lib/mavlink_lib/mavlink_helpers.h b/mavlink_skyward_lib/mavlink_lib/mavlink_helpers.h
new file mode 100644
index 0000000000000000000000000000000000000000..22e5d406c794010a8809ed2d9fb0765d9a7e06e5
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/mavlink_helpers.h
@@ -0,0 +1,659 @@
+#ifndef  _MAVLINK_HELPERS_H_
+#define  _MAVLINK_HELPERS_H_
+
+#include "string.h"
+#include "checksum.h"
+#include "mavlink_types.h"
+#include "mavlink_conversions.h"
+
+#ifndef MAVLINK_HELPER
+#define MAVLINK_HELPER
+#endif
+
+/*
+ * Internal function to give access to the channel status for each channel
+ */
+#ifndef MAVLINK_GET_CHANNEL_STATUS
+MAVLINK_HELPER mavlink_status_t* mavlink_get_channel_status(uint8_t chan)
+{
+#ifdef MAVLINK_EXTERNAL_RX_STATUS
+	// No m_mavlink_status array defined in function,
+	// has to be defined externally
+#else
+	static mavlink_status_t m_mavlink_status[MAVLINK_COMM_NUM_BUFFERS];
+#endif
+	return &m_mavlink_status[chan];
+}
+#endif
+
+/*
+ * Internal function to give access to the channel buffer for each channel
+ */
+#ifndef MAVLINK_GET_CHANNEL_BUFFER
+MAVLINK_HELPER mavlink_message_t* mavlink_get_channel_buffer(uint8_t chan)
+{
+	
+#ifdef MAVLINK_EXTERNAL_RX_BUFFER
+	// No m_mavlink_buffer array defined in function,
+	// has to be defined externally
+#else
+	static mavlink_message_t m_mavlink_buffer[MAVLINK_COMM_NUM_BUFFERS];
+#endif
+	return &m_mavlink_buffer[chan];
+}
+#endif
+
+/**
+ * @brief Reset the status of a channel.
+ */
+MAVLINK_HELPER void mavlink_reset_channel_status(uint8_t chan)
+{
+	mavlink_status_t *status = mavlink_get_channel_status(chan);
+	status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+}
+
+/**
+ * @brief Finalize a MAVLink message with channel assignment
+ *
+ * This function calculates the checksum and sets length and aircraft id correctly.
+ * It assumes that the message id and the payload are already correctly set. This function
+ * can also be used if the message header has already been written before (as in mavlink_msg_xxx_pack
+ * instead of mavlink_msg_xxx_pack_headerless), it just introduces little extra overhead.
+ *
+ * @param msg Message to finalize
+ * @param system_id Id of the sending (this) system, 1-127
+ * @param length Message length
+ */
+#if MAVLINK_CRC_EXTRA
+MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id, 
+						      uint8_t chan, uint8_t min_length, uint8_t length, uint8_t crc_extra)
+#else
+MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id, 
+						      uint8_t chan, uint8_t length)
+#endif
+{
+	// This is only used for the v2 protocol and we silence it here
+	(void)min_length;
+	// This code part is the same for all messages;
+	msg->magic = MAVLINK_STX;
+	msg->len = length;
+	msg->sysid = system_id;
+	msg->compid = component_id;
+	// One sequence number per channel
+	msg->seq = mavlink_get_channel_status(chan)->current_tx_seq;
+	mavlink_get_channel_status(chan)->current_tx_seq = mavlink_get_channel_status(chan)->current_tx_seq+1;
+	msg->checksum = crc_calculate(((const uint8_t*)(msg)) + 3, MAVLINK_CORE_HEADER_LEN);
+	crc_accumulate_buffer(&msg->checksum, _MAV_PAYLOAD(msg), msg->len);
+#if MAVLINK_CRC_EXTRA
+	crc_accumulate(crc_extra, &msg->checksum);
+#endif
+	mavlink_ck_a(msg) = (uint8_t)(msg->checksum & 0xFF);
+	mavlink_ck_b(msg) = (uint8_t)(msg->checksum >> 8);
+
+	return length + MAVLINK_NUM_NON_PAYLOAD_BYTES;
+}
+
+
+/**
+ * @brief Finalize a MAVLink message with MAVLINK_COMM_0 as default channel
+ */
+#if MAVLINK_CRC_EXTRA
+MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id, 
+						 uint8_t min_length, uint8_t length, uint8_t crc_extra)
+{
+    return mavlink_finalize_message_chan(msg, system_id, component_id, MAVLINK_COMM_0, min_length, length, crc_extra);
+}
+#else
+MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id, 
+						 uint8_t length)
+{
+	return mavlink_finalize_message_chan(msg, system_id, component_id, MAVLINK_COMM_0, length);
+}
+#endif
+
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len);
+
+/**
+ * @brief Finalize a MAVLink message with channel assignment and send
+ */
+#if MAVLINK_CRC_EXTRA
+MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint8_t msgid, const char *packet, 
+						    uint8_t min_length, uint8_t length, uint8_t crc_extra)
+#else
+MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint8_t msgid, const char *packet, uint8_t length)
+#endif
+{
+	uint16_t checksum;
+	uint8_t buf[MAVLINK_NUM_HEADER_BYTES];
+	uint8_t ck[2];
+	mavlink_status_t *status = mavlink_get_channel_status(chan);
+	buf[0] = MAVLINK_STX;
+	buf[1] = length;
+	buf[2] = status->current_tx_seq;
+	buf[3] = mavlink_system.sysid;
+	buf[4] = mavlink_system.compid;
+	buf[5] = msgid;
+	status->current_tx_seq++;
+	checksum = crc_calculate((const uint8_t*)&buf[1], MAVLINK_CORE_HEADER_LEN);
+	crc_accumulate_buffer(&checksum, packet, length);
+#if MAVLINK_CRC_EXTRA
+	crc_accumulate(crc_extra, &checksum);
+#endif
+	ck[0] = (uint8_t)(checksum & 0xFF);
+	ck[1] = (uint8_t)(checksum >> 8);
+
+	MAVLINK_START_UART_SEND(chan, MAVLINK_NUM_NON_PAYLOAD_BYTES + (uint16_t)length);
+	_mavlink_send_uart(chan, (const char *)buf, MAVLINK_NUM_HEADER_BYTES);
+	_mavlink_send_uart(chan, packet, length);
+	_mavlink_send_uart(chan, (const char *)ck, 2);
+	MAVLINK_END_UART_SEND(chan, MAVLINK_NUM_NON_PAYLOAD_BYTES + (uint16_t)length);
+}
+
+/**
+ * @brief re-send a message over a uart channel
+ * this is more stack efficient than re-marshalling the message
+ */
+MAVLINK_HELPER void _mavlink_resend_uart(mavlink_channel_t chan, const mavlink_message_t *msg)
+{
+	uint8_t ck[2];
+
+	ck[0] = (uint8_t)(msg->checksum & 0xFF);
+	ck[1] = (uint8_t)(msg->checksum >> 8);
+	// XXX use the right sequence here
+
+	MAVLINK_START_UART_SEND(chan, MAVLINK_NUM_NON_PAYLOAD_BYTES + msg->len);
+	_mavlink_send_uart(chan, (const char *)&msg->magic, MAVLINK_NUM_HEADER_BYTES);
+	_mavlink_send_uart(chan, _MAV_PAYLOAD(msg), msg->len);
+	_mavlink_send_uart(chan, (const char *)ck, 2);
+	MAVLINK_END_UART_SEND(chan, MAVLINK_NUM_NON_PAYLOAD_BYTES + msg->len);
+}
+#endif // MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+/**
+ * @brief Pack a message to send it over a serial byte stream
+ */
+MAVLINK_HELPER uint16_t mavlink_msg_to_send_buffer(uint8_t *buffer, const mavlink_message_t *msg)
+{
+	memcpy(buffer, (const uint8_t *)&msg->magic, MAVLINK_NUM_HEADER_BYTES + (uint16_t)msg->len);
+
+	uint8_t *ck = buffer + (MAVLINK_NUM_HEADER_BYTES + (uint16_t)msg->len);
+
+	ck[0] = (uint8_t)(msg->checksum & 0xFF);
+	ck[1] = (uint8_t)(msg->checksum >> 8);
+
+	return MAVLINK_NUM_NON_PAYLOAD_BYTES + (uint16_t)msg->len;
+}
+
+union __mavlink_bitfield {
+	uint8_t uint8;
+	int8_t int8;
+	uint16_t uint16;
+	int16_t int16;
+	uint32_t uint32;
+	int32_t int32;
+};
+
+
+MAVLINK_HELPER void mavlink_start_checksum(mavlink_message_t* msg)
+{
+	crc_init(&msg->checksum);
+}
+
+MAVLINK_HELPER void mavlink_update_checksum(mavlink_message_t* msg, uint8_t c)
+{
+	crc_accumulate(c, &msg->checksum);
+}
+
+/**
+ * This is a variant of mavlink_frame_char() but with caller supplied
+ * parsing buffers. It is useful when you want to create a MAVLink
+ * parser in a library that doesn't use any global variables
+ *
+ * @param rxmsg    parsing message buffer
+ * @param status   parsing status buffer 
+ * @param c        The char to parse
+ *
+ * @param r_message NULL if no message could be decoded, otherwise the message data
+ * @param r_mavlink_status if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded, 1 on good message and CRC, 2 on bad CRC
+ */
+MAVLINK_HELPER uint8_t mavlink_frame_char_buffer(mavlink_message_t* rxmsg, 
+                                                 mavlink_status_t* status,
+                                                 uint8_t c, 
+                                                 mavlink_message_t* r_message, 
+                                                 mavlink_status_t* r_mavlink_status)
+{
+        /*
+	  default message crc function. You can override this per-system to
+	  put this data in a different memory segment
+	*/
+#if MAVLINK_CRC_EXTRA
+#ifndef MAVLINK_MESSAGE_CRC
+	static const uint8_t mavlink_message_crcs[256] = MAVLINK_MESSAGE_CRCS;
+#define MAVLINK_MESSAGE_CRC(msgid) mavlink_message_crcs[msgid]
+#endif
+#endif
+
+	/* Enable this option to check the length of each message.
+	   This allows invalid messages to be caught much sooner. Use if the transmission
+	   medium is prone to missing (or extra) characters (e.g. a radio that fades in
+	   and out). Only use if the channel will only contain messages types listed in
+	   the headers.
+	*/
+#ifdef MAVLINK_CHECK_MESSAGE_LENGTH
+#ifndef MAVLINK_MESSAGE_LENGTH
+	static const uint8_t mavlink_message_lengths[256] = MAVLINK_MESSAGE_LENGTHS;
+#define MAVLINK_MESSAGE_LENGTH(msgid) mavlink_message_lengths[msgid]
+#endif
+#endif
+
+	int bufferIndex = 0;
+
+	status->msg_received = MAVLINK_FRAMING_INCOMPLETE;
+
+	switch (status->parse_state)
+	{
+	case MAVLINK_PARSE_STATE_UNINIT:
+	case MAVLINK_PARSE_STATE_IDLE:
+		if (c == MAVLINK_STX)
+		{
+			status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+			rxmsg->len = 0;
+			rxmsg->magic = c;
+			mavlink_start_checksum(rxmsg);
+		}
+		break;
+
+	case MAVLINK_PARSE_STATE_GOT_STX:
+			if (status->msg_received 
+/* Support shorter buffers than the
+   default maximum packet size */
+#if (MAVLINK_MAX_PAYLOAD_LEN < 255)
+				|| c > MAVLINK_MAX_PAYLOAD_LEN
+#endif
+				)
+		{
+			status->buffer_overrun++;
+			status->parse_error++;
+			status->msg_received = 0;
+			status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+		}
+		else
+		{
+			// NOT counting STX, LENGTH, SEQ, SYSID, COMPID, MSGID, CRC1 and CRC2
+			rxmsg->len = c;
+			status->packet_idx = 0;
+			mavlink_update_checksum(rxmsg, c);
+			status->parse_state = MAVLINK_PARSE_STATE_GOT_LENGTH;
+		}
+		break;
+
+	case MAVLINK_PARSE_STATE_GOT_LENGTH:
+		rxmsg->seq = c;
+		mavlink_update_checksum(rxmsg, c);
+		status->parse_state = MAVLINK_PARSE_STATE_GOT_SEQ;
+		break;
+
+	case MAVLINK_PARSE_STATE_GOT_SEQ:
+		rxmsg->sysid = c;
+		mavlink_update_checksum(rxmsg, c);
+		status->parse_state = MAVLINK_PARSE_STATE_GOT_SYSID;
+		break;
+
+	case MAVLINK_PARSE_STATE_GOT_SYSID:
+		rxmsg->compid = c;
+		mavlink_update_checksum(rxmsg, c);
+		status->parse_state = MAVLINK_PARSE_STATE_GOT_COMPID;
+		break;
+
+	case MAVLINK_PARSE_STATE_GOT_COMPID:
+#ifdef MAVLINK_CHECK_MESSAGE_LENGTH
+	        if (rxmsg->len != MAVLINK_MESSAGE_LENGTH(c))
+		{
+			status->parse_error++;
+			status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+			break;
+	    }
+#endif
+		rxmsg->msgid = c;
+		mavlink_update_checksum(rxmsg, c);
+		if (rxmsg->len == 0)
+		{
+			status->parse_state = MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+		}
+		else
+		{
+			status->parse_state = MAVLINK_PARSE_STATE_GOT_MSGID;
+		}
+		break;
+
+	case MAVLINK_PARSE_STATE_GOT_MSGID:
+		_MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx++] = (char)c;
+		mavlink_update_checksum(rxmsg, c);
+		if (status->packet_idx == rxmsg->len)
+		{
+			status->parse_state = MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+		}
+		break;
+
+	case MAVLINK_PARSE_STATE_GOT_PAYLOAD:
+#if MAVLINK_CRC_EXTRA
+		mavlink_update_checksum(rxmsg, MAVLINK_MESSAGE_CRC(rxmsg->msgid));
+#endif
+		if (c != (rxmsg->checksum & 0xFF)) {
+			status->parse_state = MAVLINK_PARSE_STATE_GOT_BAD_CRC1;
+		} else {
+			status->parse_state = MAVLINK_PARSE_STATE_GOT_CRC1;
+		}
+                _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx] = (char)c;
+		break;
+
+	case MAVLINK_PARSE_STATE_GOT_CRC1:
+	case MAVLINK_PARSE_STATE_GOT_BAD_CRC1:
+		if (status->parse_state == MAVLINK_PARSE_STATE_GOT_BAD_CRC1 || c != (rxmsg->checksum >> 8)) {
+			// got a bad CRC message
+			status->msg_received = MAVLINK_FRAMING_BAD_CRC;
+		} else {
+			// Successfully got message
+			status->msg_received = MAVLINK_FRAMING_OK;
+                }
+                status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+                _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx+1] = (char)c;
+                memcpy(r_message, rxmsg, sizeof(mavlink_message_t));
+		break;
+	}
+
+	bufferIndex++;
+	// If a message has been successfully decoded, check index
+	if (status->msg_received == MAVLINK_FRAMING_OK)
+	{
+		//while(status->current_seq != rxmsg->seq)
+		//{
+		//	status->packet_rx_drop_count++;
+		//               status->current_seq++;
+		//}
+		status->current_rx_seq = rxmsg->seq;
+		// Initial condition: If no packet has been received so far, drop count is undefined
+		if (status->packet_rx_success_count == 0) status->packet_rx_drop_count = 0;
+		// Count this packet as received
+		status->packet_rx_success_count++;
+	}
+
+	r_message->len = rxmsg->len; // Provide visibility on how far we are into current msg
+	r_mavlink_status->parse_state = status->parse_state;
+	r_mavlink_status->packet_idx = status->packet_idx;
+	r_mavlink_status->current_rx_seq = status->current_rx_seq+1;
+	r_mavlink_status->packet_rx_success_count = status->packet_rx_success_count;
+	r_mavlink_status->packet_rx_drop_count = status->parse_error;
+	status->parse_error = 0;
+
+	if (status->msg_received == MAVLINK_FRAMING_BAD_CRC) {
+		/*
+		  the CRC came out wrong. We now need to overwrite the
+		  msg CRC with the one on the wire so that if the
+		  caller decides to forward the message anyway that
+		  mavlink_msg_to_send_buffer() won't overwrite the
+		  checksum
+		 */
+		r_message->checksum = _MAV_PAYLOAD(rxmsg)[status->packet_idx] | (_MAV_PAYLOAD(rxmsg)[status->packet_idx+1]<<8);
+	}
+
+	return status->msg_received;
+}
+
+/**
+ * This is a convenience function which handles the complete MAVLink parsing.
+ * the function will parse one byte at a time and return the complete packet once
+ * it could be successfully decoded. This function will return 0, 1 or
+ * 2 (MAVLINK_FRAMING_INCOMPLETE, MAVLINK_FRAMING_OK or MAVLINK_FRAMING_BAD_CRC)
+ *
+ * Messages are parsed into an internal buffer (one for each channel). When a complete
+ * message is received it is copies into *r_message and the channel's status is
+ * copied into *r_mavlink_status.
+ *
+ * @param chan     ID of the channel to be parsed.
+ *                 A channel is not a physical message channel like a serial port, but a logical partition of
+ *                 the communication streams. COMM_NB is the limit for the number of channels
+ *                 on MCU (e.g. ARM7), while COMM_NB_HIGH is the limit for the number of channels in Linux/Windows
+ * @param c        The char to parse
+ *
+ * @param r_message NULL if no message could be decoded, the message data else
+ * @param r_mavlink_status if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded, 1 on good message and CRC, 2 on bad CRC
+ *
+ * A typical use scenario of this function call is:
+ *
+ * @code
+ * #include <mavlink.h>
+ *
+ * mavlink_status_t status;
+ * mavlink_message_t msg;
+ * int chan = 0;
+ *
+ *
+ * while(serial.bytesAvailable > 0)
+ * {
+ *   uint8_t byte = serial.getNextByte();
+ *   if (mavlink_frame_char(chan, byte, &msg, &status) != MAVLINK_FRAMING_INCOMPLETE)
+ *     {
+ *     printf("Received message with ID %d, sequence: %d from component %d of system %d", msg.msgid, msg.seq, msg.compid, msg.sysid);
+ *     }
+ * }
+ *
+ *
+ * @endcode
+ */
+MAVLINK_HELPER uint8_t mavlink_frame_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status)
+{
+	return mavlink_frame_char_buffer(mavlink_get_channel_buffer(chan),
+					 mavlink_get_channel_status(chan),
+					 c,
+					 r_message,
+					 r_mavlink_status);
+}
+
+
+/**
+ * This is a convenience function which handles the complete MAVLink parsing.
+ * the function will parse one byte at a time and return the complete packet once
+ * it could be successfully decoded. This function will return 0 or 1.
+ *
+ * Messages are parsed into an internal buffer (one for each channel). When a complete
+ * message is received it is copies into *r_message and the channel's status is
+ * copied into *r_mavlink_status.
+ *
+ * @param chan     ID of the channel to be parsed.
+ *                 A channel is not a physical message channel like a serial port, but a logical partition of
+ *                 the communication streams. COMM_NB is the limit for the number of channels
+ *                 on MCU (e.g. ARM7), while COMM_NB_HIGH is the limit for the number of channels in Linux/Windows
+ * @param c        The char to parse
+ *
+ * @param r_message NULL if no message could be decoded, otherwise the message data.
+ * @param r_mavlink_status if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded or bad CRC, 1 on good message and CRC
+ *
+ * A typical use scenario of this function call is:
+ *
+ * @code
+ * #include <mavlink.h>
+ *
+ * mavlink_status_t status;
+ * mavlink_message_t msg;
+ * int chan = 0;
+ *
+ *
+ * while(serial.bytesAvailable > 0)
+ * {
+ *   uint8_t byte = serial.getNextByte();
+ *   if (mavlink_parse_char(chan, byte, &msg, &status))
+ *     {
+ *     printf("Received message with ID %d, sequence: %d from component %d of system %d", msg.msgid, msg.seq, msg.compid, msg.sysid);
+ *     }
+ * }
+ *
+ *
+ * @endcode
+ */
+MAVLINK_HELPER uint8_t mavlink_parse_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status)
+{
+    uint8_t msg_received = mavlink_frame_char(chan, c, r_message, r_mavlink_status);
+    if (msg_received == MAVLINK_FRAMING_BAD_CRC) {
+	    // we got a bad CRC. Treat as a parse failure
+	    mavlink_message_t* rxmsg = mavlink_get_channel_buffer(chan);
+	    mavlink_status_t* status = mavlink_get_channel_status(chan);
+	    status->parse_error++;
+	    status->msg_received = MAVLINK_FRAMING_INCOMPLETE;
+	    status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+	    if (c == MAVLINK_STX)
+	    {
+		    status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+		    rxmsg->len = 0;
+		    mavlink_start_checksum(rxmsg);
+	    }
+	    return 0;
+    }
+    return msg_received;
+}
+
+/**
+ * @brief Put a bitfield of length 1-32 bit into the buffer
+ *
+ * @param b the value to add, will be encoded in the bitfield
+ * @param bits number of bits to use to encode b, e.g. 1 for boolean, 2, 3, etc.
+ * @param packet_index the position in the packet (the index of the first byte to use)
+ * @param bit_index the position in the byte (the index of the first bit to use)
+ * @param buffer packet buffer to write into
+ * @return new position of the last used byte in the buffer
+ */
+MAVLINK_HELPER uint8_t put_bitfield_n_by_index(int32_t b, uint8_t bits, uint8_t packet_index, uint8_t bit_index, uint8_t* r_bit_index, uint8_t* buffer)
+{
+	uint16_t bits_remain = bits;
+	// Transform number into network order
+	int32_t v;
+	uint8_t i_bit_index, i_byte_index, curr_bits_n;
+#if MAVLINK_NEED_BYTE_SWAP
+	union {
+		int32_t i;
+		uint8_t b[4];
+	} bin, bout;
+	bin.i = b;
+	bout.b[0] = bin.b[3];
+	bout.b[1] = bin.b[2];
+	bout.b[2] = bin.b[1];
+	bout.b[3] = bin.b[0];
+	v = bout.i;
+#else
+	v = b;
+#endif
+
+	// buffer in
+	// 01100000 01000000 00000000 11110001
+	// buffer out
+	// 11110001 00000000 01000000 01100000
+
+	// Existing partly filled byte (four free slots)
+	// 0111xxxx
+
+	// Mask n free bits
+	// 00001111 = 2^0 + 2^1 + 2^2 + 2^3 = 2^n - 1
+	// = ((uint32_t)(1 << n)) - 1; // = 2^n - 1
+
+	// Shift n bits into the right position
+	// out = in >> n;
+
+	// Mask and shift bytes
+	i_bit_index = bit_index;
+	i_byte_index = packet_index;
+	if (bit_index > 0)
+	{
+		// If bits were available at start, they were available
+		// in the byte before the current index
+		i_byte_index--;
+	}
+
+	// While bits have not been packed yet
+	while (bits_remain > 0)
+	{
+		// Bits still have to be packed
+		// there can be more than 8 bits, so
+		// we might have to pack them into more than one byte
+
+		// First pack everything we can into the current 'open' byte
+		//curr_bits_n = bits_remain << 3; // Equals  bits_remain mod 8
+		//FIXME
+		if (bits_remain <= (uint8_t)(8 - i_bit_index))
+		{
+			// Enough space
+			curr_bits_n = (uint8_t)bits_remain;
+		}
+		else
+		{
+			curr_bits_n = (8 - i_bit_index);
+		}
+		
+		// Pack these n bits into the current byte
+		// Mask out whatever was at that position with ones (xxx11111)
+		buffer[i_byte_index] &= (0xFF >> (8 - curr_bits_n));
+		// Put content to this position, by masking out the non-used part
+		buffer[i_byte_index] |= ((0x00 << curr_bits_n) & v);
+		
+		// Increment the bit index
+		i_bit_index += curr_bits_n;
+
+		// Now proceed to the next byte, if necessary
+		bits_remain -= curr_bits_n;
+		if (bits_remain > 0)
+		{
+			// Offer another 8 bits / one byte
+			i_byte_index++;
+			i_bit_index = 0;
+		}
+	}
+	
+	*r_bit_index = i_bit_index;
+	// If a partly filled byte is present, mark this as consumed
+	if (i_bit_index != 7) i_byte_index++;
+	return i_byte_index - packet_index;
+}
+
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+// To make MAVLink work on your MCU, define comm_send_ch() if you wish
+// to send 1 byte at a time, or MAVLINK_SEND_UART_BYTES() to send a
+// whole packet at a time
+
+/*
+
+#include "mavlink_types.h"
+
+void comm_send_ch(mavlink_channel_t chan, uint8_t ch)
+{
+    if (chan == MAVLINK_COMM_0)
+    {
+        uart0_transmit(ch);
+    }
+    if (chan == MAVLINK_COMM_1)
+    {
+    	uart1_transmit(ch);
+    }
+}
+ */
+
+MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len)
+{
+#ifdef MAVLINK_SEND_UART_BYTES
+	/* this is the more efficient approach, if the platform
+	   defines it */
+	MAVLINK_SEND_UART_BYTES(chan, (const uint8_t *)buf, len);
+#else
+	/* fallback to one byte at a time */
+	uint16_t i;
+	for (i = 0; i < len; i++) {
+		comm_send_ch(chan, (uint8_t)buf[i]);
+	}
+#endif
+}
+#endif // MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+#endif /* _MAVLINK_HELPERS_H_ */
diff --git a/mavlink_skyward_lib/mavlink_lib/mavlink_types.h b/mavlink_skyward_lib/mavlink_lib/mavlink_types.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b577a33a6cf7a52855f527f5ebffae947d5e5b7
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/mavlink_types.h
@@ -0,0 +1,230 @@
+#ifndef MAVLINK_TYPES_H_
+#define MAVLINK_TYPES_H_
+
+// Visual Studio versions before 2010 don't have stdint.h, so we just error out.
+#if (defined _MSC_VER) && (_MSC_VER < 1600)
+#error "The C-MAVLink implementation requires Visual Studio 2010 or greater"
+#endif
+
+#include <stdint.h>
+
+// Macro to define packed structures
+#ifdef __GNUC__
+  #define MAVPACKED( __Declaration__ ) __Declaration__ __attribute__((packed))
+#else
+  #define MAVPACKED( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop) )
+#endif
+
+#ifndef MAVLINK_MAX_PAYLOAD_LEN
+// it is possible to override this, but be careful!
+#define MAVLINK_MAX_PAYLOAD_LEN 255 ///< Maximum payload length
+#endif
+
+#define MAVLINK_CORE_HEADER_LEN 5 ///< Length of core header (of the comm. layer): message length (1 byte) + message sequence (1 byte) + message system id (1 byte) + message component id (1 byte) + message type id (1 byte)
+#define MAVLINK_NUM_HEADER_BYTES (MAVLINK_CORE_HEADER_LEN + 1) ///< Length of all header bytes, including core and checksum
+#define MAVLINK_NUM_CHECKSUM_BYTES 2
+#define MAVLINK_NUM_NON_PAYLOAD_BYTES (MAVLINK_NUM_HEADER_BYTES + MAVLINK_NUM_CHECKSUM_BYTES)
+
+#define MAVLINK_MAX_PACKET_LEN (MAVLINK_MAX_PAYLOAD_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES) ///< Maximum packet length
+
+#define MAVLINK_MSG_ID_EXTENDED_MESSAGE 255
+#define MAVLINK_EXTENDED_HEADER_LEN 14
+
+#if (defined _MSC_VER) || ((defined __APPLE__) && (defined __MACH__)) || (defined __linux__)
+  /* full fledged 32bit++ OS */
+  #define MAVLINK_MAX_EXTENDED_PACKET_LEN 65507
+#else
+  /* small microcontrollers */
+  #define MAVLINK_MAX_EXTENDED_PACKET_LEN 2048
+#endif
+
+#define MAVLINK_MAX_EXTENDED_PAYLOAD_LEN (MAVLINK_MAX_EXTENDED_PACKET_LEN - MAVLINK_EXTENDED_HEADER_LEN - MAVLINK_NUM_NON_PAYLOAD_BYTES)
+
+
+/**
+ * Old-style 4 byte param union
+ *
+ * This struct is the data format to be used when sending
+ * parameters. The parameter should be copied to the native
+ * type (without type conversion)
+ * and re-instanted on the receiving side using the
+ * native type as well.
+ */
+MAVPACKED(
+typedef struct param_union {
+	union {
+		float param_float;
+		int32_t param_int32;
+		uint32_t param_uint32;
+		int16_t param_int16;
+		uint16_t param_uint16;
+		int8_t param_int8;
+		uint8_t param_uint8;
+		uint8_t bytes[4];
+	};
+	uint8_t type;
+}) mavlink_param_union_t;
+
+
+/**
+ * New-style 8 byte param union
+ * mavlink_param_union_double_t will be 8 bytes long, and treated as needing 8 byte alignment for the purposes of MAVLink 1.0 field ordering.
+ * The mavlink_param_union_double_t will be treated as a little-endian structure.
+ *
+ * If is_double is 1 then the type is a double, and the remaining 63 bits are the double, with the lowest bit of the mantissa zero.
+ * The intention is that by replacing the is_double bit with 0 the type can be directly used as a double (as the is_double bit corresponds to the
+ * lowest mantissa bit of a double). If is_double is 0 then mavlink_type gives the type in the union.
+ * The mavlink_types.h header will also need to have shifts/masks to define the bit boundaries in the above,
+ * as bitfield ordering isn’t consistent between platforms. The above is intended to be for gcc on x86,
+ * which should be the same as gcc on little-endian arm. When using shifts/masks the value will be treated as a 64 bit unsigned number,
+ * and the bits pulled out using the shifts/masks.
+*/
+MAVPACKED(
+typedef struct param_union_extended {
+    union {
+    struct {
+        uint8_t is_double:1;
+        uint8_t mavlink_type:7;
+        union {
+            char c;
+            uint8_t uint8;
+            int8_t int8;
+            uint16_t uint16;
+            int16_t int16;
+            uint32_t uint32;
+            int32_t int32;
+            float f;
+            uint8_t align[7];
+        };
+    };
+    uint8_t data[8];
+    };
+}) mavlink_param_union_double_t;
+
+/**
+ * This structure is required to make the mavlink_send_xxx convenience functions
+ * work, as it tells the library what the current system and component ID are.
+ */
+MAVPACKED(
+typedef struct __mavlink_system {
+    uint8_t sysid;   ///< Used by the MAVLink message_xx_send() convenience function
+    uint8_t compid;  ///< Used by the MAVLink message_xx_send() convenience function
+}) mavlink_system_t;
+
+MAVPACKED(
+typedef struct __mavlink_message {
+	uint16_t checksum; ///< sent at end of packet
+	uint8_t magic;   ///< protocol magic marker
+	uint8_t len;     ///< Length of payload
+	uint8_t seq;     ///< Sequence of packet
+	uint8_t sysid;   ///< ID of message sender system/aircraft
+	uint8_t compid;  ///< ID of the message sender component
+	uint8_t msgid;   ///< ID of message in payload
+	uint64_t payload64[(MAVLINK_MAX_PAYLOAD_LEN+MAVLINK_NUM_CHECKSUM_BYTES+7)/8];
+}) mavlink_message_t;
+
+MAVPACKED(
+typedef struct __mavlink_extended_message {
+       mavlink_message_t base_msg;
+       int32_t extended_payload_len;   ///< Length of extended payload if any
+       uint8_t extended_payload[MAVLINK_MAX_EXTENDED_PAYLOAD_LEN];
+}) mavlink_extended_message_t;
+
+typedef enum {
+	MAVLINK_TYPE_CHAR     = 0,
+	MAVLINK_TYPE_UINT8_T  = 1,
+	MAVLINK_TYPE_INT8_T   = 2,
+	MAVLINK_TYPE_UINT16_T = 3,
+	MAVLINK_TYPE_INT16_T  = 4,
+	MAVLINK_TYPE_UINT32_T = 5,
+	MAVLINK_TYPE_INT32_T  = 6,
+	MAVLINK_TYPE_UINT64_T = 7,
+	MAVLINK_TYPE_INT64_T  = 8,
+	MAVLINK_TYPE_FLOAT    = 9,
+	MAVLINK_TYPE_DOUBLE   = 10
+} mavlink_message_type_t;
+
+#define MAVLINK_MAX_FIELDS 64
+
+typedef struct __mavlink_field_info {
+        const char *name;                 // name of this field
+        const char *print_format;         // printing format hint, or NULL
+        mavlink_message_type_t type;      // type of this field
+        unsigned int array_length;        // if non-zero, field is an array
+        unsigned int wire_offset;         // offset of each field in the payload
+        unsigned int structure_offset;    // offset in a C structure
+} mavlink_field_info_t;
+
+// note that in this structure the order of fields is the order
+// in the XML file, not necessary the wire order
+typedef struct __mavlink_message_info {
+	const char *name;                                      // name of the message
+	unsigned num_fields;                                   // how many fields in this message
+	mavlink_field_info_t fields[MAVLINK_MAX_FIELDS];       // field information
+} mavlink_message_info_t;
+
+#define _MAV_PAYLOAD(msg) ((const char *)(&((msg)->payload64[0])))
+#define _MAV_PAYLOAD_NON_CONST(msg) ((char *)(&((msg)->payload64[0])))
+
+// checksum is immediately after the payload bytes
+#define mavlink_ck_a(msg) *((msg)->len + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
+#define mavlink_ck_b(msg) *(((msg)->len+(uint16_t)1) + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
+
+#ifndef HAVE_MAVLINK_CHANNEL_T
+typedef enum {
+    MAVLINK_COMM_0,
+    MAVLINK_COMM_1,
+    MAVLINK_COMM_2,
+    MAVLINK_COMM_3
+} mavlink_channel_t;
+#endif
+
+/*
+ * applications can set MAVLINK_COMM_NUM_BUFFERS to the maximum number
+ * of buffers they will use. If more are used, then the result will be
+ * a stack overrun
+ */
+#ifndef MAVLINK_COMM_NUM_BUFFERS
+#if (defined linux) | (defined __linux) | (defined  __MACH__) | (defined _WIN32)
+# define MAVLINK_COMM_NUM_BUFFERS 16
+#else
+# define MAVLINK_COMM_NUM_BUFFERS 4
+#endif
+#endif
+
+typedef enum {
+    MAVLINK_PARSE_STATE_UNINIT=0,
+    MAVLINK_PARSE_STATE_IDLE,
+    MAVLINK_PARSE_STATE_GOT_STX,
+    MAVLINK_PARSE_STATE_GOT_SEQ,
+    MAVLINK_PARSE_STATE_GOT_LENGTH,
+    MAVLINK_PARSE_STATE_GOT_SYSID,
+    MAVLINK_PARSE_STATE_GOT_COMPID,
+    MAVLINK_PARSE_STATE_GOT_MSGID,
+    MAVLINK_PARSE_STATE_GOT_PAYLOAD,
+    MAVLINK_PARSE_STATE_GOT_CRC1,
+    MAVLINK_PARSE_STATE_GOT_BAD_CRC1
+} mavlink_parse_state_t; ///< The state machine for the comm parser
+
+typedef enum {
+    MAVLINK_FRAMING_INCOMPLETE=0,
+    MAVLINK_FRAMING_OK=1,
+    MAVLINK_FRAMING_BAD_CRC=2
+} mavlink_framing_t;
+
+typedef struct __mavlink_status {
+    uint8_t msg_received;               ///< Number of received messages
+    uint8_t buffer_overrun;             ///< Number of buffer overruns
+    uint8_t parse_error;                ///< Number of parse errors
+    mavlink_parse_state_t parse_state;  ///< Parsing state machine
+    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
+    uint16_t packet_rx_success_count;   ///< Received packets
+    uint16_t packet_rx_drop_count;      ///< Number of packet drops
+} mavlink_status_t;
+
+#define MAVLINK_BIG_ENDIAN 0
+#define MAVLINK_LITTLE_ENDIAN 1
+
+#endif /* MAVLINK_TYPES_H_ */
diff --git a/mavlink_skyward_lib/mavlink_lib/protocol.h b/mavlink_skyward_lib/mavlink_lib/protocol.h
new file mode 100644
index 0000000000000000000000000000000000000000..34749d9ba7106edf5de0486145fdde0e31aeec55
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/protocol.h
@@ -0,0 +1,339 @@
+#ifndef  _MAVLINK_PROTOCOL_H_
+#define  _MAVLINK_PROTOCOL_H_
+
+#include "string.h"
+#include "mavlink_types.h"
+
+/* 
+   If you want MAVLink on a system that is native big-endian,
+   you need to define NATIVE_BIG_ENDIAN
+*/
+#ifdef NATIVE_BIG_ENDIAN
+# define MAVLINK_NEED_BYTE_SWAP (MAVLINK_ENDIAN == MAVLINK_LITTLE_ENDIAN)
+#else
+# define MAVLINK_NEED_BYTE_SWAP (MAVLINK_ENDIAN != MAVLINK_LITTLE_ENDIAN)
+#endif
+
+#ifndef MAVLINK_STACK_BUFFER
+#define MAVLINK_STACK_BUFFER 0
+#endif
+
+#ifndef MAVLINK_AVOID_GCC_STACK_BUG
+# define MAVLINK_AVOID_GCC_STACK_BUG defined(__GNUC__)
+#endif
+
+#ifndef MAVLINK_ASSERT
+#define MAVLINK_ASSERT(x)
+#endif
+
+#ifndef MAVLINK_START_UART_SEND
+#define MAVLINK_START_UART_SEND(chan, length)
+#endif
+
+#ifndef MAVLINK_END_UART_SEND
+#define MAVLINK_END_UART_SEND(chan, length)
+#endif
+
+/* option to provide alternative implementation of mavlink_helpers.h */
+#ifdef MAVLINK_SEPARATE_HELPERS
+
+    #define MAVLINK_HELPER
+
+    /* decls in sync with those in mavlink_helpers.h */
+    #ifndef MAVLINK_GET_CHANNEL_STATUS
+    MAVLINK_HELPER mavlink_status_t* mavlink_get_channel_status(uint8_t chan);
+    #endif
+    MAVLINK_HELPER void mavlink_reset_channel_status(uint8_t chan);
+    #if MAVLINK_CRC_EXTRA
+    MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+                                                          uint8_t chan, uint8_t min_length, uint8_t length, uint8_t crc_extra);
+    MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+                                                     uint8_t min_length, uint8_t length, uint8_t crc_extra);
+    #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+    MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint8_t msgid, const char *packet,
+                                                        uint8_t min_length, uint8_t length, uint8_t crc_extra);
+    #endif
+    #else
+    MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+                                                          uint8_t chan, uint8_t length);
+    MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+                                                     uint8_t length);
+    #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+    MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint8_t msgid, const char *packet, uint8_t length);
+    #endif
+    #endif // MAVLINK_CRC_EXTRA
+    MAVLINK_HELPER uint16_t mavlink_msg_to_send_buffer(uint8_t *buffer, const mavlink_message_t *msg);
+    MAVLINK_HELPER void mavlink_start_checksum(mavlink_message_t* msg);
+    MAVLINK_HELPER void mavlink_update_checksum(mavlink_message_t* msg, uint8_t c);
+    MAVLINK_HELPER uint8_t mavlink_frame_char_buffer(mavlink_message_t* rxmsg, 
+						     mavlink_status_t* status,
+						     uint8_t c, 
+						     mavlink_message_t* r_message, 
+						     mavlink_status_t* r_mavlink_status);
+    MAVLINK_HELPER uint8_t mavlink_frame_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status);
+    MAVLINK_HELPER uint8_t mavlink_parse_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status);
+    MAVLINK_HELPER uint8_t put_bitfield_n_by_index(int32_t b, uint8_t bits, uint8_t packet_index, uint8_t bit_index,
+                               uint8_t* r_bit_index, uint8_t* buffer);
+    #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+    MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len);
+    MAVLINK_HELPER void _mavlink_resend_uart(mavlink_channel_t chan, const mavlink_message_t *msg);
+    #endif
+
+#else
+
+    #define MAVLINK_HELPER static inline
+    #include "mavlink_helpers.h"
+
+#endif // MAVLINK_SEPARATE_HELPERS
+
+/**
+ * @brief Get the required buffer size for this message
+ */
+static inline uint16_t mavlink_msg_get_send_buffer_length(const mavlink_message_t* msg)
+{
+	return msg->len + MAVLINK_NUM_NON_PAYLOAD_BYTES;
+}
+
+#if MAVLINK_NEED_BYTE_SWAP
+static inline void byte_swap_2(char *dst, const char *src)
+{
+	dst[0] = src[1];
+	dst[1] = src[0];
+}
+static inline void byte_swap_4(char *dst, const char *src)
+{
+	dst[0] = src[3];
+	dst[1] = src[2];
+	dst[2] = src[1];
+	dst[3] = src[0];
+}
+static inline void byte_swap_8(char *dst, const char *src)
+{
+	dst[0] = src[7];
+	dst[1] = src[6];
+	dst[2] = src[5];
+	dst[3] = src[4];
+	dst[4] = src[3];
+	dst[5] = src[2];
+	dst[6] = src[1];
+	dst[7] = src[0];
+}
+#elif !MAVLINK_ALIGNED_FIELDS
+static inline void byte_copy_2(char *dst, const char *src)
+{
+	dst[0] = src[0];
+	dst[1] = src[1];
+}
+static inline void byte_copy_4(char *dst, const char *src)
+{
+	dst[0] = src[0];
+	dst[1] = src[1];
+	dst[2] = src[2];
+	dst[3] = src[3];
+}
+static inline void byte_copy_8(char *dst, const char *src)
+{
+	memcpy(dst, src, 8);
+}
+#endif
+
+#define _mav_put_uint8_t(buf, wire_offset, b) buf[wire_offset] = (uint8_t)b
+#define _mav_put_int8_t(buf, wire_offset, b)  buf[wire_offset] = (int8_t)b
+#define _mav_put_char(buf, wire_offset, b)    buf[wire_offset] = b
+
+#if MAVLINK_NEED_BYTE_SWAP
+#define _mav_put_uint16_t(buf, wire_offset, b) byte_swap_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int16_t(buf, wire_offset, b)  byte_swap_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint32_t(buf, wire_offset, b) byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int32_t(buf, wire_offset, b)  byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint64_t(buf, wire_offset, b) byte_swap_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int64_t(buf, wire_offset, b)  byte_swap_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_float(buf, wire_offset, b)    byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_double(buf, wire_offset, b)   byte_swap_8(&buf[wire_offset], (const char *)&b)
+#elif !MAVLINK_ALIGNED_FIELDS
+#define _mav_put_uint16_t(buf, wire_offset, b) byte_copy_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int16_t(buf, wire_offset, b)  byte_copy_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint32_t(buf, wire_offset, b) byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int32_t(buf, wire_offset, b)  byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint64_t(buf, wire_offset, b) byte_copy_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int64_t(buf, wire_offset, b)  byte_copy_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_float(buf, wire_offset, b)    byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_double(buf, wire_offset, b)   byte_copy_8(&buf[wire_offset], (const char *)&b)
+#else
+#define _mav_put_uint16_t(buf, wire_offset, b) *(uint16_t *)&buf[wire_offset] = b
+#define _mav_put_int16_t(buf, wire_offset, b)  *(int16_t *)&buf[wire_offset] = b
+#define _mav_put_uint32_t(buf, wire_offset, b) *(uint32_t *)&buf[wire_offset] = b
+#define _mav_put_int32_t(buf, wire_offset, b)  *(int32_t *)&buf[wire_offset] = b
+#define _mav_put_uint64_t(buf, wire_offset, b) *(uint64_t *)&buf[wire_offset] = b
+#define _mav_put_int64_t(buf, wire_offset, b)  *(int64_t *)&buf[wire_offset] = b
+#define _mav_put_float(buf, wire_offset, b)    *(float *)&buf[wire_offset] = b
+#define _mav_put_double(buf, wire_offset, b)   *(double *)&buf[wire_offset] = b
+#endif
+
+/*
+  like memcpy(), but if src is NULL, do a memset to zero
+*/
+static inline void mav_array_memcpy(void *dest, const void *src, size_t n)
+{
+	if (src == NULL) {
+		memset(dest, 0, n);
+	} else {
+		memcpy(dest, src, n);
+	}
+}
+
+/*
+ * Place a char array into a buffer
+ */
+static inline void _mav_put_char_array(char *buf, uint8_t wire_offset, const char *b, uint8_t array_length)
+{
+	mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+/*
+ * Place a uint8_t array into a buffer
+ */
+static inline void _mav_put_uint8_t_array(char *buf, uint8_t wire_offset, const uint8_t *b, uint8_t array_length)
+{
+	mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+/*
+ * Place a int8_t array into a buffer
+ */
+static inline void _mav_put_int8_t_array(char *buf, uint8_t wire_offset, const int8_t *b, uint8_t array_length)
+{
+	mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+#if MAVLINK_NEED_BYTE_SWAP
+#define _MAV_PUT_ARRAY(TYPE, V) \
+static inline void _mav_put_ ## TYPE ##_array(char *buf, uint8_t wire_offset, const TYPE *b, uint8_t array_length) \
+{ \
+	if (b == NULL) { \
+		memset(&buf[wire_offset], 0, array_length*sizeof(TYPE)); \
+	} else { \
+		uint16_t i; \
+		for (i=0; i<array_length; i++) { \
+			_mav_put_## TYPE (buf, wire_offset+(i*sizeof(TYPE)), b[i]); \
+		} \
+	} \
+}
+#else
+#define _MAV_PUT_ARRAY(TYPE, V)					\
+static inline void _mav_put_ ## TYPE ##_array(char *buf, uint8_t wire_offset, const TYPE *b, uint8_t array_length) \
+{ \
+	mav_array_memcpy(&buf[wire_offset], b, array_length*sizeof(TYPE)); \
+}
+#endif
+
+_MAV_PUT_ARRAY(uint16_t, u16)
+_MAV_PUT_ARRAY(uint32_t, u32)
+_MAV_PUT_ARRAY(uint64_t, u64)
+_MAV_PUT_ARRAY(int16_t,  i16)
+_MAV_PUT_ARRAY(int32_t,  i32)
+_MAV_PUT_ARRAY(int64_t,  i64)
+_MAV_PUT_ARRAY(float,    f)
+_MAV_PUT_ARRAY(double,   d)
+
+#define _MAV_RETURN_char(msg, wire_offset)             (char)_MAV_PAYLOAD(msg)[wire_offset]
+#define _MAV_RETURN_int8_t(msg, wire_offset)   (int8_t)_MAV_PAYLOAD(msg)[wire_offset]
+#define _MAV_RETURN_uint8_t(msg, wire_offset) (uint8_t)_MAV_PAYLOAD(msg)[wire_offset]
+
+#if MAVLINK_NEED_BYTE_SWAP
+#define _MAV_MSG_RETURN_TYPE(TYPE, SIZE) \
+static inline TYPE _MAV_RETURN_## TYPE(const mavlink_message_t *msg, uint8_t ofs) \
+{ TYPE r; byte_swap_## SIZE((char*)&r, &_MAV_PAYLOAD(msg)[ofs]); return r; }
+
+_MAV_MSG_RETURN_TYPE(uint16_t, 2)
+_MAV_MSG_RETURN_TYPE(int16_t,  2)
+_MAV_MSG_RETURN_TYPE(uint32_t, 4)
+_MAV_MSG_RETURN_TYPE(int32_t,  4)
+_MAV_MSG_RETURN_TYPE(uint64_t, 8)
+_MAV_MSG_RETURN_TYPE(int64_t,  8)
+_MAV_MSG_RETURN_TYPE(float,    4)
+_MAV_MSG_RETURN_TYPE(double,   8)
+
+#elif !MAVLINK_ALIGNED_FIELDS
+#define _MAV_MSG_RETURN_TYPE(TYPE, SIZE) \
+static inline TYPE _MAV_RETURN_## TYPE(const mavlink_message_t *msg, uint8_t ofs) \
+{ TYPE r; byte_copy_## SIZE((char*)&r, &_MAV_PAYLOAD(msg)[ofs]); return r; }
+
+_MAV_MSG_RETURN_TYPE(uint16_t, 2)
+_MAV_MSG_RETURN_TYPE(int16_t,  2)
+_MAV_MSG_RETURN_TYPE(uint32_t, 4)
+_MAV_MSG_RETURN_TYPE(int32_t,  4)
+_MAV_MSG_RETURN_TYPE(uint64_t, 8)
+_MAV_MSG_RETURN_TYPE(int64_t,  8)
+_MAV_MSG_RETURN_TYPE(float,    4)
+_MAV_MSG_RETURN_TYPE(double,   8)
+#else // nicely aligned, no swap
+#define _MAV_MSG_RETURN_TYPE(TYPE) \
+static inline TYPE _MAV_RETURN_## TYPE(const mavlink_message_t *msg, uint8_t ofs) \
+{ return *(const TYPE *)(&_MAV_PAYLOAD(msg)[ofs]);}
+
+_MAV_MSG_RETURN_TYPE(uint16_t)
+_MAV_MSG_RETURN_TYPE(int16_t)
+_MAV_MSG_RETURN_TYPE(uint32_t)
+_MAV_MSG_RETURN_TYPE(int32_t)
+_MAV_MSG_RETURN_TYPE(uint64_t)
+_MAV_MSG_RETURN_TYPE(int64_t)
+_MAV_MSG_RETURN_TYPE(float)
+_MAV_MSG_RETURN_TYPE(double)
+#endif // MAVLINK_NEED_BYTE_SWAP
+
+static inline uint16_t _MAV_RETURN_char_array(const mavlink_message_t *msg, char *value, 
+						     uint8_t array_length, uint8_t wire_offset)
+{
+	memcpy(value, &_MAV_PAYLOAD(msg)[wire_offset], array_length);
+	return array_length;
+}
+
+static inline uint16_t _MAV_RETURN_uint8_t_array(const mavlink_message_t *msg, uint8_t *value, 
+							uint8_t array_length, uint8_t wire_offset)
+{
+	memcpy(value, &_MAV_PAYLOAD(msg)[wire_offset], array_length);
+	return array_length;
+}
+
+static inline uint16_t _MAV_RETURN_int8_t_array(const mavlink_message_t *msg, int8_t *value, 
+						       uint8_t array_length, uint8_t wire_offset)
+{
+	memcpy(value, &_MAV_PAYLOAD(msg)[wire_offset], array_length);
+	return array_length;
+}
+
+#if MAVLINK_NEED_BYTE_SWAP
+#define _MAV_RETURN_ARRAY(TYPE, V) \
+static inline uint16_t _MAV_RETURN_## TYPE ##_array(const mavlink_message_t *msg, TYPE *value, \
+							 uint8_t array_length, uint8_t wire_offset) \
+{ \
+	uint16_t i; \
+	for (i=0; i<array_length; i++) { \
+		value[i] = _MAV_RETURN_## TYPE (msg, wire_offset+(i*sizeof(value[0]))); \
+	} \
+	return array_length*sizeof(value[0]); \
+}
+#else
+#define _MAV_RETURN_ARRAY(TYPE, V)					\
+static inline uint16_t _MAV_RETURN_## TYPE ##_array(const mavlink_message_t *msg, TYPE *value, \
+							 uint8_t array_length, uint8_t wire_offset) \
+{ \
+	memcpy(value, &_MAV_PAYLOAD(msg)[wire_offset], array_length*sizeof(TYPE)); \
+	return array_length*sizeof(TYPE); \
+}
+#endif
+
+_MAV_RETURN_ARRAY(uint16_t, u16)
+_MAV_RETURN_ARRAY(uint32_t, u32)
+_MAV_RETURN_ARRAY(uint64_t, u64)
+_MAV_RETURN_ARRAY(int16_t,  i16)
+_MAV_RETURN_ARRAY(int32_t,  i32)
+_MAV_RETURN_ARRAY(int64_t,  i64)
+_MAV_RETURN_ARRAY(float,    f)
+_MAV_RETURN_ARRAY(double,   d)
+
+#endif // _MAVLINK_PROTOCOL_H_
diff --git a/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink.h
new file mode 100644
index 0000000000000000000000000000000000000000..a723bbbc9c50c564f76d044d95de9921adedc021
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink.h
@@ -0,0 +1,34 @@
+/** @file
+ *  @brief MAVLink comm protocol built from pyxis.xml
+ *  @see http://mavlink.org
+ */
+#pragma once
+#ifndef MAVLINK_H
+#define MAVLINK_H
+
+#define MAVLINK_PRIMARY_XML_HASH 4877622037329606464
+
+#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 "pyxis.h"
+
+#endif // MAVLINK_H
diff --git a/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_ack_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_ack_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..8abc2a50773e576580ab8179be7c6a2348071c59
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_ada_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_ada_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..584d3a839647e40632c03e6c6014ea2cb7b58c6c
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_ada_tm.h
@@ -0,0 +1,488 @@
+#pragma once
+// MESSAGE ADA_TM PACKING
+
+#define MAVLINK_MSG_ID_ADA_TM 205
+
+
+typedef struct __mavlink_ada_tm_t {
+ uint64_t timestamp; /*< [ms] 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*/
+ uint8_t state; /*<  ADA current state*/
+} mavlink_ada_tm_t;
+
+#define MAVLINK_MSG_ID_ADA_TM_LEN 49
+#define MAVLINK_MSG_ID_ADA_TM_MIN_LEN 49
+#define MAVLINK_MSG_ID_205_LEN 49
+#define MAVLINK_MSG_ID_205_MIN_LEN 49
+
+#define MAVLINK_MSG_ID_ADA_TM_CRC 79
+#define MAVLINK_MSG_ID_205_CRC 79
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ADA_TM { \
+    205, \
+    "ADA_TM", \
+    12, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_ada_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 48, 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) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ADA_TM { \
+    "ADA_TM", \
+    12, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_ada_tm_t, timestamp) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 48, 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) }, \
+         } \
+}
+#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 [ms] 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
+ * @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)
+{
+#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_uint8_t(buf, 48, 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.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 [ms] 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
+ * @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)
+{
+#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_uint8_t(buf, 48, 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.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);
+}
+
+/**
+ * @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);
+}
+
+/**
+ * @brief Send a ada_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] 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
+ */
+#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)
+{
+#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_uint8_t(buf, 48, 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.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);
+#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)
+{
+#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_uint8_t(buf, 48, 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->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 [ms] 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,  48);
+}
+
+/**
+ * @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 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->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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_adc_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_adc_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..ea6116c378fef31bb82e92d901c5187d409d0cbb
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_adc_tm.h
@@ -0,0 +1,330 @@
+#pragma once
+// MESSAGE ADC_TM PACKING
+
+#define MAVLINK_MSG_ID_ADC_TM 105
+
+
+typedef struct __mavlink_adc_tm_t {
+ uint64_t timestamp; /*< [ms] 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*/
+ char sensor_id[20]; /*<  Sensor name*/
+} mavlink_adc_tm_t;
+
+#define MAVLINK_MSG_ID_ADC_TM_LEN 44
+#define MAVLINK_MSG_ID_ADC_TM_MIN_LEN 44
+#define MAVLINK_MSG_ID_105_LEN 44
+#define MAVLINK_MSG_ID_105_MIN_LEN 44
+
+#define MAVLINK_MSG_ID_ADC_TM_CRC 104
+#define MAVLINK_MSG_ID_105_CRC 104
+
+#define MAVLINK_MSG_ADC_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ADC_TM { \
+    105, \
+    "ADC_TM", \
+    6, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_adc_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 24, offsetof(mavlink_adc_tm_t, sensor_id) }, \
+         { "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) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ADC_TM { \
+    "ADC_TM", \
+    6, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_adc_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 24, offsetof(mavlink_adc_tm_t, sensor_id) }, \
+         { "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) }, \
+         } \
+}
+#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 [ms] When was this logged
+ * @param sensor_id  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
+ * @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_id, float channel_0, float channel_1, float channel_2, float channel_3)
+{
+#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_char_array(buf, 24, sensor_id, 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;
+    mav_array_memcpy(packet.sensor_id, sensor_id, 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 [ms] When was this logged
+ * @param sensor_id  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
+ * @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_id,float channel_0,float channel_1,float channel_2,float channel_3)
+{
+#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_char_array(buf, 24, sensor_id, 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;
+    mav_array_memcpy(packet.sensor_id, sensor_id, 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_id, adc_tm->channel_0, adc_tm->channel_1, adc_tm->channel_2, adc_tm->channel_3);
+}
+
+/**
+ * @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_id, adc_tm->channel_0, adc_tm->channel_1, adc_tm->channel_2, adc_tm->channel_3);
+}
+
+/**
+ * @brief Send a adc_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] When was this logged
+ * @param sensor_id  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
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_adc_tm_send(mavlink_channel_t chan, uint64_t timestamp, const char *sensor_id, float channel_0, float channel_1, float channel_2, float channel_3)
+{
+#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_char_array(buf, 24, sensor_id, 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;
+    mav_array_memcpy(packet.sensor_id, sensor_id, 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_id, adc_tm->channel_0, adc_tm->channel_1, adc_tm->channel_2, adc_tm->channel_3);
+#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_id, float channel_0, float channel_1, float channel_2, float channel_3)
+{
+#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_char_array(buf, 24, sensor_id, 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;
+    mav_array_memcpy(packet->sensor_id, sensor_id, 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 [ms] 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_id from adc_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_adc_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 20,  24);
+}
+
+/**
+ * @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 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);
+    mavlink_msg_adc_tm_get_sensor_id(msg, adc_tm->sensor_id);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_attitude_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_attitude_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..47689d48d15881c736ff6eeca11d802043438343
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_attitude_tm.h
@@ -0,0 +1,405 @@
+#pragma once
+// MESSAGE ATTITUDE_TM PACKING
+
+#define MAVLINK_MSG_ID_ATTITUDE_TM 109
+
+
+typedef struct __mavlink_attitude_tm_t {
+ uint64_t timestamp; /*< [ms] 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_id[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_109_LEN 56
+#define MAVLINK_MSG_ID_109_MIN_LEN 56
+
+#define MAVLINK_MSG_ID_ATTITUDE_TM_CRC 170
+#define MAVLINK_MSG_ID_109_CRC 170
+
+#define MAVLINK_MSG_ATTITUDE_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ATTITUDE_TM { \
+    109, \
+    "ATTITUDE_TM", \
+    9, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_attitude_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 36, offsetof(mavlink_attitude_tm_t, sensor_id) }, \
+         { "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_id", NULL, MAVLINK_TYPE_CHAR, 20, 36, offsetof(mavlink_attitude_tm_t, sensor_id) }, \
+         { "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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id,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_id, 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_id, sensor_id, 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_id, 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_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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_id, 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_id, 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_id, 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_id, sensor_id, 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 [ms] 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_id from attitude_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_attitude_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 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_id(msg, attitude_tm->sensor_id);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_can_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_can_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..4df6f9ac3f618a56c268cc0cd171f627d32dddf0
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_can_tm.h
@@ -0,0 +1,363 @@
+#pragma once
+// MESSAGE CAN_TM PACKING
+
+#define MAVLINK_MSG_ID_CAN_TM 207
+
+
+typedef struct __mavlink_can_tm_t {
+ uint64_t timestamp; /*< [ms] When was this logged*/
+ uint64_t last_sent_ts; /*<  Timestamp of the last sent message*/
+ uint64_t last_rcv_ts; /*<  Timestamp of the last received message*/
+ uint16_t n_sent; /*<  Number of sent messages*/
+ uint16_t n_rcv; /*<  Number of received messages*/
+ uint8_t last_sent; /*<  Id of the last sent message*/
+ uint8_t last_rcv; /*<  Id of the last received message*/
+} mavlink_can_tm_t;
+
+#define MAVLINK_MSG_ID_CAN_TM_LEN 30
+#define MAVLINK_MSG_ID_CAN_TM_MIN_LEN 30
+#define MAVLINK_MSG_ID_207_LEN 30
+#define MAVLINK_MSG_ID_207_MIN_LEN 30
+
+#define MAVLINK_MSG_ID_CAN_TM_CRC 169
+#define MAVLINK_MSG_ID_207_CRC 169
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_CAN_TM { \
+    207, \
+    "CAN_TM", \
+    7, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_can_tm_t, timestamp) }, \
+         { "n_sent", NULL, MAVLINK_TYPE_UINT16_T, 0, 24, offsetof(mavlink_can_tm_t, n_sent) }, \
+         { "n_rcv", NULL, MAVLINK_TYPE_UINT16_T, 0, 26, offsetof(mavlink_can_tm_t, n_rcv) }, \
+         { "last_sent", NULL, MAVLINK_TYPE_UINT8_T, 0, 28, offsetof(mavlink_can_tm_t, last_sent) }, \
+         { "last_rcv", NULL, MAVLINK_TYPE_UINT8_T, 0, 29, offsetof(mavlink_can_tm_t, last_rcv) }, \
+         { "last_sent_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_can_tm_t, last_sent_ts) }, \
+         { "last_rcv_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_can_tm_t, last_rcv_ts) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_CAN_TM { \
+    "CAN_TM", \
+    7, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_can_tm_t, timestamp) }, \
+         { "n_sent", NULL, MAVLINK_TYPE_UINT16_T, 0, 24, offsetof(mavlink_can_tm_t, n_sent) }, \
+         { "n_rcv", NULL, MAVLINK_TYPE_UINT16_T, 0, 26, offsetof(mavlink_can_tm_t, n_rcv) }, \
+         { "last_sent", NULL, MAVLINK_TYPE_UINT8_T, 0, 28, offsetof(mavlink_can_tm_t, last_sent) }, \
+         { "last_rcv", NULL, MAVLINK_TYPE_UINT8_T, 0, 29, offsetof(mavlink_can_tm_t, last_rcv) }, \
+         { "last_sent_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_can_tm_t, last_sent_ts) }, \
+         { "last_rcv_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_can_tm_t, last_rcv_ts) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a can_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 [ms] When was this logged
+ * @param n_sent  Number of sent messages
+ * @param n_rcv  Number of received messages
+ * @param last_sent  Id of the last sent message
+ * @param last_rcv  Id of the last received message
+ * @param last_sent_ts  Timestamp of the last sent message
+ * @param last_rcv_ts  Timestamp of the last received message
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_can_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint16_t n_sent, uint16_t n_rcv, uint8_t last_sent, uint8_t last_rcv, uint64_t last_sent_ts, uint64_t last_rcv_ts)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CAN_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, last_sent_ts);
+    _mav_put_uint64_t(buf, 16, last_rcv_ts);
+    _mav_put_uint16_t(buf, 24, n_sent);
+    _mav_put_uint16_t(buf, 26, n_rcv);
+    _mav_put_uint8_t(buf, 28, last_sent);
+    _mav_put_uint8_t(buf, 29, last_rcv);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CAN_TM_LEN);
+#else
+    mavlink_can_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.last_sent_ts = last_sent_ts;
+    packet.last_rcv_ts = last_rcv_ts;
+    packet.n_sent = n_sent;
+    packet.n_rcv = n_rcv;
+    packet.last_sent = last_sent;
+    packet.last_rcv = last_rcv;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CAN_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CAN_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_CAN_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_TM_LEN, MAVLINK_MSG_ID_CAN_TM_CRC);
+}
+
+/**
+ * @brief Pack a can_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 [ms] When was this logged
+ * @param n_sent  Number of sent messages
+ * @param n_rcv  Number of received messages
+ * @param last_sent  Id of the last sent message
+ * @param last_rcv  Id of the last received message
+ * @param last_sent_ts  Timestamp of the last sent message
+ * @param last_rcv_ts  Timestamp of the last received message
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_can_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint16_t n_sent,uint16_t n_rcv,uint8_t last_sent,uint8_t last_rcv,uint64_t last_sent_ts,uint64_t last_rcv_ts)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CAN_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, last_sent_ts);
+    _mav_put_uint64_t(buf, 16, last_rcv_ts);
+    _mav_put_uint16_t(buf, 24, n_sent);
+    _mav_put_uint16_t(buf, 26, n_rcv);
+    _mav_put_uint8_t(buf, 28, last_sent);
+    _mav_put_uint8_t(buf, 29, last_rcv);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CAN_TM_LEN);
+#else
+    mavlink_can_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.last_sent_ts = last_sent_ts;
+    packet.last_rcv_ts = last_rcv_ts;
+    packet.n_sent = n_sent;
+    packet.n_rcv = n_rcv;
+    packet.last_sent = last_sent;
+    packet.last_rcv = last_rcv;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CAN_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_CAN_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_CAN_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_TM_LEN, MAVLINK_MSG_ID_CAN_TM_CRC);
+}
+
+/**
+ * @brief Encode a can_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_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_can_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_can_tm_t* can_tm)
+{
+    return mavlink_msg_can_tm_pack(system_id, component_id, msg, can_tm->timestamp, can_tm->n_sent, can_tm->n_rcv, can_tm->last_sent, can_tm->last_rcv, can_tm->last_sent_ts, can_tm->last_rcv_ts);
+}
+
+/**
+ * @brief Encode a can_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_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_can_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_can_tm_t* can_tm)
+{
+    return mavlink_msg_can_tm_pack_chan(system_id, component_id, chan, msg, can_tm->timestamp, can_tm->n_sent, can_tm->n_rcv, can_tm->last_sent, can_tm->last_rcv, can_tm->last_sent_ts, can_tm->last_rcv_ts);
+}
+
+/**
+ * @brief Send a can_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] When was this logged
+ * @param n_sent  Number of sent messages
+ * @param n_rcv  Number of received messages
+ * @param last_sent  Id of the last sent message
+ * @param last_rcv  Id of the last received message
+ * @param last_sent_ts  Timestamp of the last sent message
+ * @param last_rcv_ts  Timestamp of the last received message
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_can_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint16_t n_sent, uint16_t n_rcv, uint8_t last_sent, uint8_t last_rcv, uint64_t last_sent_ts, uint64_t last_rcv_ts)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_CAN_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint64_t(buf, 8, last_sent_ts);
+    _mav_put_uint64_t(buf, 16, last_rcv_ts);
+    _mav_put_uint16_t(buf, 24, n_sent);
+    _mav_put_uint16_t(buf, 26, n_rcv);
+    _mav_put_uint8_t(buf, 28, last_sent);
+    _mav_put_uint8_t(buf, 29, last_rcv);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_TM, buf, MAVLINK_MSG_ID_CAN_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_TM_LEN, MAVLINK_MSG_ID_CAN_TM_CRC);
+#else
+    mavlink_can_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.last_sent_ts = last_sent_ts;
+    packet.last_rcv_ts = last_rcv_ts;
+    packet.n_sent = n_sent;
+    packet.n_rcv = n_rcv;
+    packet.last_sent = last_sent;
+    packet.last_rcv = last_rcv;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_TM, (const char *)&packet, MAVLINK_MSG_ID_CAN_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_TM_LEN, MAVLINK_MSG_ID_CAN_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a can_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_can_tm_send_struct(mavlink_channel_t chan, const mavlink_can_tm_t* can_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_can_tm_send(chan, can_tm->timestamp, can_tm->n_sent, can_tm->n_rcv, can_tm->last_sent, can_tm->last_rcv, can_tm->last_sent_ts, can_tm->last_rcv_ts);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_TM, (const char *)can_tm, MAVLINK_MSG_ID_CAN_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_TM_LEN, MAVLINK_MSG_ID_CAN_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_CAN_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_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint16_t n_sent, uint16_t n_rcv, uint8_t last_sent, uint8_t last_rcv, uint64_t last_sent_ts, uint64_t last_rcv_ts)
+{
+#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_sent_ts);
+    _mav_put_uint64_t(buf, 16, last_rcv_ts);
+    _mav_put_uint16_t(buf, 24, n_sent);
+    _mav_put_uint16_t(buf, 26, n_rcv);
+    _mav_put_uint8_t(buf, 28, last_sent);
+    _mav_put_uint8_t(buf, 29, last_rcv);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_TM, buf, MAVLINK_MSG_ID_CAN_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_TM_LEN, MAVLINK_MSG_ID_CAN_TM_CRC);
+#else
+    mavlink_can_tm_t *packet = (mavlink_can_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->last_sent_ts = last_sent_ts;
+    packet->last_rcv_ts = last_rcv_ts;
+    packet->n_sent = n_sent;
+    packet->n_rcv = n_rcv;
+    packet->last_sent = last_sent;
+    packet->last_rcv = last_rcv;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAN_TM, (const char *)packet, MAVLINK_MSG_ID_CAN_TM_MIN_LEN, MAVLINK_MSG_ID_CAN_TM_LEN, MAVLINK_MSG_ID_CAN_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE CAN_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from can_tm message
+ *
+ * @return [ms] When was this logged
+ */
+static inline uint64_t mavlink_msg_can_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field n_sent from can_tm message
+ *
+ * @return  Number of sent messages
+ */
+static inline uint16_t mavlink_msg_can_tm_get_n_sent(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  24);
+}
+
+/**
+ * @brief Get field n_rcv from can_tm message
+ *
+ * @return  Number of received messages
+ */
+static inline uint16_t mavlink_msg_can_tm_get_n_rcv(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  26);
+}
+
+/**
+ * @brief Get field last_sent from can_tm message
+ *
+ * @return  Id of the last sent message
+ */
+static inline uint8_t mavlink_msg_can_tm_get_last_sent(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  28);
+}
+
+/**
+ * @brief Get field last_rcv from can_tm message
+ *
+ * @return  Id of the last received message
+ */
+static inline uint8_t mavlink_msg_can_tm_get_last_rcv(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  29);
+}
+
+/**
+ * @brief Get field last_sent_ts from can_tm message
+ *
+ * @return  Timestamp of the last sent message
+ */
+static inline uint64_t mavlink_msg_can_tm_get_last_sent_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  8);
+}
+
+/**
+ * @brief Get field last_rcv_ts from can_tm message
+ *
+ * @return  Timestamp of the last received message
+ */
+static inline uint64_t mavlink_msg_can_tm_get_last_rcv_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  16);
+}
+
+/**
+ * @brief Decode a can_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param can_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_can_tm_decode(const mavlink_message_t* msg, mavlink_can_tm_t* can_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    can_tm->timestamp = mavlink_msg_can_tm_get_timestamp(msg);
+    can_tm->last_sent_ts = mavlink_msg_can_tm_get_last_sent_ts(msg);
+    can_tm->last_rcv_ts = mavlink_msg_can_tm_get_last_rcv_ts(msg);
+    can_tm->n_sent = mavlink_msg_can_tm_get_n_sent(msg);
+    can_tm->n_rcv = mavlink_msg_can_tm_get_n_rcv(msg);
+    can_tm->last_sent = mavlink_msg_can_tm_get_last_sent(msg);
+    can_tm->last_rcv = mavlink_msg_can_tm_get_last_rcv(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_CAN_TM_LEN? msg->len : MAVLINK_MSG_ID_CAN_TM_LEN;
+        memset(can_tm, 0, MAVLINK_MSG_ID_CAN_TM_LEN);
+    memcpy(can_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_command_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_command_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..a4d0886b3f67df648cfd4ed0b8debc059ecfa272
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_current_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_current_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..2fb229a376dc8b7ca8dfaeb1f18389fc5d116ac1
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_current_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE CURRENT_TM PACKING
+
+#define MAVLINK_MSG_ID_CURRENT_TM 106
+
+
+typedef struct __mavlink_current_tm_t {
+ uint64_t timestamp; /*< [ms] When was this logged*/
+ float current; /*< [A] Current*/
+ char sensor_id[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_106_LEN 32
+#define MAVLINK_MSG_ID_106_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_CURRENT_TM_CRC 222
+#define MAVLINK_MSG_ID_106_CRC 222
+
+#define MAVLINK_MSG_CURRENT_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_CURRENT_TM { \
+    106, \
+    "CURRENT_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_current_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_current_tm_t, sensor_id) }, \
+         { "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_id", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_current_tm_t, sensor_id) }, \
+         { "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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id,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_id, 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_id, sensor_id, 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_id, 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_id, current_tm->current);
+}
+
+/**
+ * @brief Send a current_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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_id, 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_id, 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_id, 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_id, sensor_id, 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 [ms] 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_id from current_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_current_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 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_id(msg, current_tm->sensor_id);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_fsm_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_fsm_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..276ff87168f80e42aadd0f730680c6a70fc22626
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_fsm_tm.h
@@ -0,0 +1,363 @@
+#pragma once
+// MESSAGE FSM_TM PACKING
+
+#define MAVLINK_MSG_ID_FSM_TM 201
+
+
+typedef struct __mavlink_fsm_tm_t {
+ uint64_t timestamp; /*< [ms] Timestamp*/
+ uint8_t ada_state; /*<  Apogee Detection Algorithm state*/
+ uint8_t abk_state; /*<  AirBrakes state*/
+ uint8_t dpl_state; /*<  Deployment state*/
+ uint8_t fmm_state; /*<  Flight Mode Manager state*/
+ uint8_t fsr_state; /*<  Flight Stats Recorder state*/
+ uint8_t nas_state; /*<  Navigation and Attitude State state*/
+} mavlink_fsm_tm_t;
+
+#define MAVLINK_MSG_ID_FSM_TM_LEN 14
+#define MAVLINK_MSG_ID_FSM_TM_MIN_LEN 14
+#define MAVLINK_MSG_ID_201_LEN 14
+#define MAVLINK_MSG_ID_201_MIN_LEN 14
+
+#define MAVLINK_MSG_ID_FSM_TM_CRC 69
+#define MAVLINK_MSG_ID_201_CRC 69
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_FSM_TM { \
+    201, \
+    "FSM_TM", \
+    7, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_fsm_tm_t, timestamp) }, \
+         { "ada_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 8, offsetof(mavlink_fsm_tm_t, ada_state) }, \
+         { "abk_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 9, offsetof(mavlink_fsm_tm_t, abk_state) }, \
+         { "dpl_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 10, offsetof(mavlink_fsm_tm_t, dpl_state) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 11, offsetof(mavlink_fsm_tm_t, fmm_state) }, \
+         { "fsr_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 12, offsetof(mavlink_fsm_tm_t, fsr_state) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 13, offsetof(mavlink_fsm_tm_t, nas_state) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_FSM_TM { \
+    "FSM_TM", \
+    7, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_fsm_tm_t, timestamp) }, \
+         { "ada_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 8, offsetof(mavlink_fsm_tm_t, ada_state) }, \
+         { "abk_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 9, offsetof(mavlink_fsm_tm_t, abk_state) }, \
+         { "dpl_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 10, offsetof(mavlink_fsm_tm_t, dpl_state) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 11, offsetof(mavlink_fsm_tm_t, fmm_state) }, \
+         { "fsr_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 12, offsetof(mavlink_fsm_tm_t, fsr_state) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 13, offsetof(mavlink_fsm_tm_t, nas_state) }, \
+         } \
+}
+#endif
+
+/**
+ * @brief Pack a fsm_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 [ms] Timestamp
+ * @param ada_state  Apogee Detection Algorithm state
+ * @param abk_state  AirBrakes state
+ * @param dpl_state  Deployment state
+ * @param fmm_state  Flight Mode Manager state
+ * @param fsr_state  Flight Stats Recorder state
+ * @param nas_state  Navigation and Attitude State state
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_fsm_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+                               uint64_t timestamp, uint8_t ada_state, uint8_t abk_state, uint8_t dpl_state, uint8_t fmm_state, uint8_t fsr_state, uint8_t nas_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_FSM_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint8_t(buf, 8, ada_state);
+    _mav_put_uint8_t(buf, 9, abk_state);
+    _mav_put_uint8_t(buf, 10, dpl_state);
+    _mav_put_uint8_t(buf, 11, fmm_state);
+    _mav_put_uint8_t(buf, 12, fsr_state);
+    _mav_put_uint8_t(buf, 13, nas_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_FSM_TM_LEN);
+#else
+    mavlink_fsm_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.ada_state = ada_state;
+    packet.abk_state = abk_state;
+    packet.dpl_state = dpl_state;
+    packet.fmm_state = fmm_state;
+    packet.fsr_state = fsr_state;
+    packet.nas_state = nas_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_FSM_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_FSM_TM;
+    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_FSM_TM_MIN_LEN, MAVLINK_MSG_ID_FSM_TM_LEN, MAVLINK_MSG_ID_FSM_TM_CRC);
+}
+
+/**
+ * @brief Pack a fsm_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 [ms] Timestamp
+ * @param ada_state  Apogee Detection Algorithm state
+ * @param abk_state  AirBrakes state
+ * @param dpl_state  Deployment state
+ * @param fmm_state  Flight Mode Manager state
+ * @param fsr_state  Flight Stats Recorder state
+ * @param nas_state  Navigation and Attitude State state
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_fsm_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+                               mavlink_message_t* msg,
+                                   uint64_t timestamp,uint8_t ada_state,uint8_t abk_state,uint8_t dpl_state,uint8_t fmm_state,uint8_t fsr_state,uint8_t nas_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_FSM_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint8_t(buf, 8, ada_state);
+    _mav_put_uint8_t(buf, 9, abk_state);
+    _mav_put_uint8_t(buf, 10, dpl_state);
+    _mav_put_uint8_t(buf, 11, fmm_state);
+    _mav_put_uint8_t(buf, 12, fsr_state);
+    _mav_put_uint8_t(buf, 13, nas_state);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_FSM_TM_LEN);
+#else
+    mavlink_fsm_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.ada_state = ada_state;
+    packet.abk_state = abk_state;
+    packet.dpl_state = dpl_state;
+    packet.fmm_state = fmm_state;
+    packet.fsr_state = fsr_state;
+    packet.nas_state = nas_state;
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_FSM_TM_LEN);
+#endif
+
+    msg->msgid = MAVLINK_MSG_ID_FSM_TM;
+    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_FSM_TM_MIN_LEN, MAVLINK_MSG_ID_FSM_TM_LEN, MAVLINK_MSG_ID_FSM_TM_CRC);
+}
+
+/**
+ * @brief Encode a fsm_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 fsm_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_fsm_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_fsm_tm_t* fsm_tm)
+{
+    return mavlink_msg_fsm_tm_pack(system_id, component_id, msg, fsm_tm->timestamp, fsm_tm->ada_state, fsm_tm->abk_state, fsm_tm->dpl_state, fsm_tm->fmm_state, fsm_tm->fsr_state, fsm_tm->nas_state);
+}
+
+/**
+ * @brief Encode a fsm_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 fsm_tm C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_fsm_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_fsm_tm_t* fsm_tm)
+{
+    return mavlink_msg_fsm_tm_pack_chan(system_id, component_id, chan, msg, fsm_tm->timestamp, fsm_tm->ada_state, fsm_tm->abk_state, fsm_tm->dpl_state, fsm_tm->fmm_state, fsm_tm->fsr_state, fsm_tm->nas_state);
+}
+
+/**
+ * @brief Send a fsm_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] Timestamp
+ * @param ada_state  Apogee Detection Algorithm state
+ * @param abk_state  AirBrakes state
+ * @param dpl_state  Deployment state
+ * @param fmm_state  Flight Mode Manager state
+ * @param fsr_state  Flight Stats Recorder state
+ * @param nas_state  Navigation and Attitude State state
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_fsm_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t ada_state, uint8_t abk_state, uint8_t dpl_state, uint8_t fmm_state, uint8_t fsr_state, uint8_t nas_state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_FSM_TM_LEN];
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_uint8_t(buf, 8, ada_state);
+    _mav_put_uint8_t(buf, 9, abk_state);
+    _mav_put_uint8_t(buf, 10, dpl_state);
+    _mav_put_uint8_t(buf, 11, fmm_state);
+    _mav_put_uint8_t(buf, 12, fsr_state);
+    _mav_put_uint8_t(buf, 13, nas_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_FSM_TM, buf, MAVLINK_MSG_ID_FSM_TM_MIN_LEN, MAVLINK_MSG_ID_FSM_TM_LEN, MAVLINK_MSG_ID_FSM_TM_CRC);
+#else
+    mavlink_fsm_tm_t packet;
+    packet.timestamp = timestamp;
+    packet.ada_state = ada_state;
+    packet.abk_state = abk_state;
+    packet.dpl_state = dpl_state;
+    packet.fmm_state = fmm_state;
+    packet.fsr_state = fsr_state;
+    packet.nas_state = nas_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_FSM_TM, (const char *)&packet, MAVLINK_MSG_ID_FSM_TM_MIN_LEN, MAVLINK_MSG_ID_FSM_TM_LEN, MAVLINK_MSG_ID_FSM_TM_CRC);
+#endif
+}
+
+/**
+ * @brief Send a fsm_tm message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_fsm_tm_send_struct(mavlink_channel_t chan, const mavlink_fsm_tm_t* fsm_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    mavlink_msg_fsm_tm_send(chan, fsm_tm->timestamp, fsm_tm->ada_state, fsm_tm->abk_state, fsm_tm->dpl_state, fsm_tm->fmm_state, fsm_tm->fsr_state, fsm_tm->nas_state);
+#else
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_FSM_TM, (const char *)fsm_tm, MAVLINK_MSG_ID_FSM_TM_MIN_LEN, MAVLINK_MSG_ID_FSM_TM_LEN, MAVLINK_MSG_ID_FSM_TM_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_FSM_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_fsm_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint8_t ada_state, uint8_t abk_state, uint8_t dpl_state, uint8_t fmm_state, uint8_t fsr_state, uint8_t nas_state)
+{
+#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, ada_state);
+    _mav_put_uint8_t(buf, 9, abk_state);
+    _mav_put_uint8_t(buf, 10, dpl_state);
+    _mav_put_uint8_t(buf, 11, fmm_state);
+    _mav_put_uint8_t(buf, 12, fsr_state);
+    _mav_put_uint8_t(buf, 13, nas_state);
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_FSM_TM, buf, MAVLINK_MSG_ID_FSM_TM_MIN_LEN, MAVLINK_MSG_ID_FSM_TM_LEN, MAVLINK_MSG_ID_FSM_TM_CRC);
+#else
+    mavlink_fsm_tm_t *packet = (mavlink_fsm_tm_t *)msgbuf;
+    packet->timestamp = timestamp;
+    packet->ada_state = ada_state;
+    packet->abk_state = abk_state;
+    packet->dpl_state = dpl_state;
+    packet->fmm_state = fmm_state;
+    packet->fsr_state = fsr_state;
+    packet->nas_state = nas_state;
+
+    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_FSM_TM, (const char *)packet, MAVLINK_MSG_ID_FSM_TM_MIN_LEN, MAVLINK_MSG_ID_FSM_TM_LEN, MAVLINK_MSG_ID_FSM_TM_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE FSM_TM UNPACKING
+
+
+/**
+ * @brief Get field timestamp from fsm_tm message
+ *
+ * @return [ms] Timestamp
+ */
+static inline uint64_t mavlink_msg_fsm_tm_get_timestamp(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  0);
+}
+
+/**
+ * @brief Get field ada_state from fsm_tm message
+ *
+ * @return  Apogee Detection Algorithm state
+ */
+static inline uint8_t mavlink_msg_fsm_tm_get_ada_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  8);
+}
+
+/**
+ * @brief Get field abk_state from fsm_tm message
+ *
+ * @return  AirBrakes state
+ */
+static inline uint8_t mavlink_msg_fsm_tm_get_abk_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  9);
+}
+
+/**
+ * @brief Get field dpl_state from fsm_tm message
+ *
+ * @return  Deployment state
+ */
+static inline uint8_t mavlink_msg_fsm_tm_get_dpl_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  10);
+}
+
+/**
+ * @brief Get field fmm_state from fsm_tm message
+ *
+ * @return  Flight Mode Manager state
+ */
+static inline uint8_t mavlink_msg_fsm_tm_get_fmm_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  11);
+}
+
+/**
+ * @brief Get field fsr_state from fsm_tm message
+ *
+ * @return  Flight Stats Recorder state
+ */
+static inline uint8_t mavlink_msg_fsm_tm_get_fsr_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  12);
+}
+
+/**
+ * @brief Get field nas_state from fsm_tm message
+ *
+ * @return  Navigation and Attitude State state
+ */
+static inline uint8_t mavlink_msg_fsm_tm_get_nas_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  13);
+}
+
+/**
+ * @brief Decode a fsm_tm message into a struct
+ *
+ * @param msg The message to decode
+ * @param fsm_tm C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_fsm_tm_decode(const mavlink_message_t* msg, mavlink_fsm_tm_t* fsm_tm)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    fsm_tm->timestamp = mavlink_msg_fsm_tm_get_timestamp(msg);
+    fsm_tm->ada_state = mavlink_msg_fsm_tm_get_ada_state(msg);
+    fsm_tm->abk_state = mavlink_msg_fsm_tm_get_abk_state(msg);
+    fsm_tm->dpl_state = mavlink_msg_fsm_tm_get_dpl_state(msg);
+    fsm_tm->fmm_state = mavlink_msg_fsm_tm_get_fmm_state(msg);
+    fsm_tm->fsr_state = mavlink_msg_fsm_tm_get_fsr_state(msg);
+    fsm_tm->nas_state = mavlink_msg_fsm_tm_get_nas_state(msg);
+#else
+        uint8_t len = msg->len < MAVLINK_MSG_ID_FSM_TM_LEN? msg->len : MAVLINK_MSG_ID_FSM_TM_LEN;
+        memset(fsm_tm, 0, MAVLINK_MSG_ID_FSM_TM_LEN);
+    memcpy(fsm_tm, _MAV_PAYLOAD(msg), len);
+#endif
+}
diff --git a/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_gps_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_gps_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..38a0bc2c16df6257229f236dc2dd4c9b72adc595
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_gps_tm.h
@@ -0,0 +1,480 @@
+#pragma once
+// MESSAGE GPS_TM PACKING
+
+#define MAVLINK_MSG_ID_GPS_TM 102
+
+
+typedef struct __mavlink_gps_tm_t {
+ uint64_t timestamp; /*< [ms] 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_id[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_102_LEN 74
+#define MAVLINK_MSG_ID_102_MIN_LEN 74
+
+#define MAVLINK_MSG_ID_GPS_TM_CRC 39
+#define MAVLINK_MSG_ID_102_CRC 39
+
+#define MAVLINK_MSG_GPS_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_GPS_TM { \
+    102, \
+    "GPS_TM", \
+    12, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_gps_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 52, offsetof(mavlink_gps_tm_t, sensor_id) }, \
+         { "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_id", NULL, MAVLINK_TYPE_CHAR, 20, 52, offsetof(mavlink_gps_tm_t, sensor_id) }, \
+         { "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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id,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_id, 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_id, sensor_id, 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_id, 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_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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_id, 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_id, 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_id, 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_id, sensor_id, 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 [ms] 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_id from gps_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_gps_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 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_id(msg, gps_tm->sensor_id);
+    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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_imu_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_imu_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..ada7e01dd77133aa1ddc663f7586d1fd3deaeba8
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_imu_tm.h
@@ -0,0 +1,455 @@
+#pragma once
+// MESSAGE IMU_TM PACKING
+
+#define MAVLINK_MSG_ID_IMU_TM 103
+
+
+typedef struct __mavlink_imu_tm_t {
+ uint64_t timestamp; /*< [ms] 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_id[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_103_LEN 64
+#define MAVLINK_MSG_ID_103_MIN_LEN 64
+
+#define MAVLINK_MSG_ID_IMU_TM_CRC 178
+#define MAVLINK_MSG_ID_103_CRC 178
+
+#define MAVLINK_MSG_IMU_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_IMU_TM { \
+    103, \
+    "IMU_TM", \
+    11, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_imu_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 44, offsetof(mavlink_imu_tm_t, sensor_id) }, \
+         { "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_id", NULL, MAVLINK_TYPE_CHAR, 20, 44, offsetof(mavlink_imu_tm_t, sensor_id) }, \
+         { "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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id,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_id, 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_id, sensor_id, 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_id, 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_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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_id, 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_id, 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_id, 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_id, sensor_id, 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 [ms] 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_id from imu_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_imu_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 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_id(msg, imu_tm->sensor_id);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_load_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_load_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..c3cb3601ed978711b5676b8066a89ad8f876f7e4
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_load_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE LOAD_TM PACKING
+
+#define MAVLINK_MSG_ID_LOAD_TM 108
+
+
+typedef struct __mavlink_load_tm_t {
+ uint64_t timestamp; /*< [ms] When was this logged*/
+ float load; /*< [deg] Load force*/
+ char sensor_id[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_108_LEN 32
+#define MAVLINK_MSG_ID_108_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_LOAD_TM_CRC 233
+#define MAVLINK_MSG_ID_108_CRC 233
+
+#define MAVLINK_MSG_LOAD_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_LOAD_TM { \
+    108, \
+    "LOAD_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_load_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_load_tm_t, sensor_id) }, \
+         { "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_id", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_load_tm_t, sensor_id) }, \
+         { "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 [ms] When was this logged
+ * @param sensor_id  Sensor name
+ * @param load [deg] 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_id, 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_id, 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_id, sensor_id, 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 [ms] When was this logged
+ * @param sensor_id  Sensor name
+ * @param load [deg] 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_id,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_id, 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_id, sensor_id, 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_id, 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_id, load_tm->load);
+}
+
+/**
+ * @brief Send a load_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] When was this logged
+ * @param sensor_id  Sensor name
+ * @param load [deg] 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_id, 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_id, 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_id, sensor_id, 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_id, 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_id, 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_id, 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_id, sensor_id, 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 [ms] 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_id from load_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_load_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 20,  12);
+}
+
+/**
+ * @brief Get field load from load_tm message
+ *
+ * @return [deg] 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_id(msg, load_tm->sensor_id);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_logger_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_logger_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..df9106631679a6d6309cef53d347d1c1b75eb52f
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_logger_tm.h
@@ -0,0 +1,463 @@
+#pragma once
+// MESSAGE LOGGER_TM PACKING
+
+#define MAVLINK_MSG_ID_LOGGER_TM 202
+
+
+typedef struct __mavlink_logger_tm_t {
+ uint64_t timestamp; /*< [ms] 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_202_LEN 46
+#define MAVLINK_MSG_ID_202_MIN_LEN 46
+
+#define MAVLINK_MSG_ID_LOGGER_TM_CRC 142
+#define MAVLINK_MSG_ID_202_CRC 142
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_LOGGER_TM { \
+    202, \
+    "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 [ms] 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 [ms] 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 [ms] 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 [ms] 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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_mavlink_stats_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_mavlink_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..1d8ce90aa02cae5a16c6ce177af6d01131756181
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_mavlink_stats_tm.h
@@ -0,0 +1,513 @@
+#pragma once
+// MESSAGE MAVLINK_STATS_TM PACKING
+
+#define MAVLINK_MSG_ID_MAVLINK_STATS_TM 203
+
+
+typedef struct __mavlink_mavlink_stats_tm_t {
+ uint64_t timestamp; /*< [ms] 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_203_LEN 28
+#define MAVLINK_MSG_ID_203_MIN_LEN 28
+
+#define MAVLINK_MSG_ID_MAVLINK_STATS_TM_CRC 108
+#define MAVLINK_MSG_ID_203_CRC 108
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_MAVLINK_STATS_TM { \
+    203, \
+    "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 [ms] 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 [ms] 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 [ms] 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 [ms] 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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_nack_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_nack_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..85abd048c50911cd99ded380f566cf5c34b29322
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_nack_tm.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE NACK_TM PACKING
+
+#define MAVLINK_MSG_ID_NACK_TM 101
+
+
+typedef struct __mavlink_nack_tm_t {
+ 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 2
+#define MAVLINK_MSG_ID_NACK_TM_MIN_LEN 2
+#define MAVLINK_MSG_ID_101_LEN 2
+#define MAVLINK_MSG_ID_101_MIN_LEN 2
+
+#define MAVLINK_MSG_ID_NACK_TM_CRC 146
+#define MAVLINK_MSG_ID_101_CRC 146
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_NACK_TM { \
+    101, \
+    "NACK_TM", \
+    2, \
+    {  { "recv_msgid", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_nack_tm_t, recv_msgid) }, \
+         { "seq_ack", NULL, MAVLINK_TYPE_UINT8_T, 0, 1, offsetof(mavlink_nack_tm_t, seq_ack) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_NACK_TM { \
+    "NACK_TM", \
+    2, \
+    {  { "recv_msgid", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_nack_tm_t, recv_msgid) }, \
+         { "seq_ack", NULL, MAVLINK_TYPE_UINT8_T, 0, 1, offsetof(mavlink_nack_tm_t, seq_ack) }, \
+         } \
+}
+#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
+ * @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)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NACK_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_NACK_TM_LEN);
+#else
+    mavlink_nack_tm_t packet;
+    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
+ * @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)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NACK_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_NACK_TM_LEN);
+#else
+    mavlink_nack_tm_t packet;
+    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);
+}
+
+/**
+ * @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);
+}
+
+/**
+ * @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
+ */
+#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)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_NACK_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_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.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);
+#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)
+{
+#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_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->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,  0);
+}
+
+/**
+ * @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,  1);
+}
+
+/**
+ * @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->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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_nas_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_nas_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..1ec78e845c52ca0626d8d9c9f2ba07d5cf0aca6a
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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; /*< [ms] 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 x axis*/
+ float nas_bias_z; /*<  Navigation system gyroscope bias on x 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 [ms] 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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x 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 [ms] 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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x 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 [ms] 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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x 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 [ms] 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 x 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 x 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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_payload_flight_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_payload_flight_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..5ed2e6721e59733bc4c48630e1780227271165ae
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_payload_flight_tm.h
@@ -0,0 +1,1263 @@
+#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; /*< [ms] Timestamp in milliseconds*/
+ 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 msl_altitude; /*< [m] Altitude above mean sea level*/
+ float ada_vert_speed; /*< [m/s] Vertical speed estimated by ADA*/
+ float ada_vert_accel; /*< [m/s^2] Vertical acceleration estimated by ADA*/
+ 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 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 x axis*/
+ float nas_bias_z; /*<  Navigation system gyroscope bias on x axis*/
+ float vbat; /*< [V] Battery voltage*/
+ float vsupply_5v; /*< [V] Power supply 5V*/
+ float temperature; /*< [degC] Temperature*/
+ uint8_t ada_state; /*<  ADA Controller State*/
+ uint8_t fmm_state; /*<  Flight Mode Manager State*/
+ uint8_t nas_state; /*<  Navigation System FSM State*/
+ uint8_t gps_fix; /*<  GPS fix (1 = fix, 0 = no fix)*/
+ uint8_t pin_nosecone; /*<  Nosecone pin status (1 = connected, 0 = disconnected)*/
+ int8_t logger_error; /*<  Logger error (0 = no error)*/
+} 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 61
+#define MAVLINK_MSG_ID_209_CRC 61
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PAYLOAD_FLIGHT_TM { \
+    209, \
+    "PAYLOAD_FLIGHT_TM", \
+    43, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_payload_flight_tm_t, timestamp) }, \
+         { "ada_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 152, offsetof(mavlink_payload_flight_tm_t, ada_state) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 153, offsetof(mavlink_payload_flight_tm_t, fmm_state) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 154, offsetof(mavlink_payload_flight_tm_t, nas_state) }, \
+         { "pressure_ada", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_payload_flight_tm_t, pressure_ada) }, \
+         { "pressure_digi", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_payload_flight_tm_t, pressure_digi) }, \
+         { "pressure_static", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_payload_flight_tm_t, pressure_static) }, \
+         { "pressure_dpl", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_payload_flight_tm_t, pressure_dpl) }, \
+         { "airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_payload_flight_tm_t, airspeed_pitot) }, \
+         { "msl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_payload_flight_tm_t, msl_altitude) }, \
+         { "ada_vert_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_payload_flight_tm_t, ada_vert_speed) }, \
+         { "ada_vert_accel", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_payload_flight_tm_t, ada_vert_accel) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_payload_flight_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_payload_flight_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_payload_flight_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_payload_flight_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_payload_flight_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_payload_flight_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_payload_flight_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_payload_flight_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_payload_flight_tm_t, mag_z) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 155, offsetof(mavlink_payload_flight_tm_t, gps_fix) }, \
+         { "gps_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_payload_flight_tm_t, gps_lat) }, \
+         { "gps_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_payload_flight_tm_t, gps_lon) }, \
+         { "gps_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_payload_flight_tm_t, gps_alt) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_payload_flight_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_payload_flight_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_payload_flight_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_payload_flight_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_payload_flight_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_payload_flight_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_payload_flight_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_payload_flight_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_payload_flight_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_payload_flight_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_payload_flight_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_payload_flight_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_payload_flight_tm_t, nas_bias_z) }, \
+         { "pin_nosecone", NULL, MAVLINK_TYPE_UINT8_T, 0, 156, offsetof(mavlink_payload_flight_tm_t, pin_nosecone) }, \
+         { "vbat", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_payload_flight_tm_t, vbat) }, \
+         { "vsupply_5v", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_payload_flight_tm_t, vsupply_5v) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_payload_flight_tm_t, temperature) }, \
+         { "logger_error", NULL, MAVLINK_TYPE_INT8_T, 0, 157, offsetof(mavlink_payload_flight_tm_t, logger_error) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_PAYLOAD_FLIGHT_TM { \
+    "PAYLOAD_FLIGHT_TM", \
+    43, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_payload_flight_tm_t, timestamp) }, \
+         { "ada_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 152, offsetof(mavlink_payload_flight_tm_t, ada_state) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 153, offsetof(mavlink_payload_flight_tm_t, fmm_state) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 154, offsetof(mavlink_payload_flight_tm_t, nas_state) }, \
+         { "pressure_ada", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_payload_flight_tm_t, pressure_ada) }, \
+         { "pressure_digi", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_payload_flight_tm_t, pressure_digi) }, \
+         { "pressure_static", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_payload_flight_tm_t, pressure_static) }, \
+         { "pressure_dpl", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_payload_flight_tm_t, pressure_dpl) }, \
+         { "airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_payload_flight_tm_t, airspeed_pitot) }, \
+         { "msl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_payload_flight_tm_t, msl_altitude) }, \
+         { "ada_vert_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_payload_flight_tm_t, ada_vert_speed) }, \
+         { "ada_vert_accel", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_payload_flight_tm_t, ada_vert_accel) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_payload_flight_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_payload_flight_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_payload_flight_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_payload_flight_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_payload_flight_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_payload_flight_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_payload_flight_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_payload_flight_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_payload_flight_tm_t, mag_z) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 155, offsetof(mavlink_payload_flight_tm_t, gps_fix) }, \
+         { "gps_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_payload_flight_tm_t, gps_lat) }, \
+         { "gps_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_payload_flight_tm_t, gps_lon) }, \
+         { "gps_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_payload_flight_tm_t, gps_alt) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_payload_flight_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_payload_flight_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_payload_flight_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_payload_flight_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_payload_flight_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_payload_flight_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_payload_flight_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_payload_flight_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_payload_flight_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_payload_flight_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_payload_flight_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_payload_flight_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_payload_flight_tm_t, nas_bias_z) }, \
+         { "pin_nosecone", NULL, MAVLINK_TYPE_UINT8_T, 0, 156, offsetof(mavlink_payload_flight_tm_t, pin_nosecone) }, \
+         { "vbat", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_payload_flight_tm_t, vbat) }, \
+         { "vsupply_5v", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_payload_flight_tm_t, vsupply_5v) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_payload_flight_tm_t, temperature) }, \
+         { "logger_error", NULL, MAVLINK_TYPE_INT8_T, 0, 157, offsetof(mavlink_payload_flight_tm_t, logger_error) }, \
+         } \
+}
+#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 [ms] Timestamp in milliseconds
+ * @param ada_state  ADA Controller State
+ * @param fmm_state  Flight Mode Manager State
+ * @param nas_state  Navigation System FSM State
+ * @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 msl_altitude [m] Altitude above mean sea level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param ada_vert_accel [m/s^2] Vertical acceleration estimated by ADA
+ * @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  GPS fix (1 = fix, 0 = no fix)
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x axis
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param vbat [V] Battery voltage
+ * @param vsupply_5v [V] Power supply 5V
+ * @param temperature [degC] Temperature
+ * @param logger_error  Logger error (0 = no error)
+ * @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, uint8_t ada_state, uint8_t fmm_state, uint8_t nas_state, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float msl_altitude, float ada_vert_speed, float ada_vert_accel, 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, 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, uint8_t pin_nosecone, float vbat, float vsupply_5v, float temperature, int8_t logger_error)
+{
+#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_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, msl_altitude);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, ada_vert_accel);
+    _mav_put_float(buf, 40, acc_x);
+    _mav_put_float(buf, 44, acc_y);
+    _mav_put_float(buf, 48, acc_z);
+    _mav_put_float(buf, 52, gyro_x);
+    _mav_put_float(buf, 56, gyro_y);
+    _mav_put_float(buf, 60, gyro_z);
+    _mav_put_float(buf, 64, mag_x);
+    _mav_put_float(buf, 68, mag_y);
+    _mav_put_float(buf, 72, mag_z);
+    _mav_put_float(buf, 76, gps_lat);
+    _mav_put_float(buf, 80, gps_lon);
+    _mav_put_float(buf, 84, gps_alt);
+    _mav_put_float(buf, 88, nas_n);
+    _mav_put_float(buf, 92, nas_e);
+    _mav_put_float(buf, 96, nas_d);
+    _mav_put_float(buf, 100, nas_vn);
+    _mav_put_float(buf, 104, nas_ve);
+    _mav_put_float(buf, 108, nas_vd);
+    _mav_put_float(buf, 112, nas_qx);
+    _mav_put_float(buf, 116, nas_qy);
+    _mav_put_float(buf, 120, nas_qz);
+    _mav_put_float(buf, 124, nas_qw);
+    _mav_put_float(buf, 128, nas_bias_x);
+    _mav_put_float(buf, 132, nas_bias_y);
+    _mav_put_float(buf, 136, nas_bias_z);
+    _mav_put_float(buf, 140, vbat);
+    _mav_put_float(buf, 144, vsupply_5v);
+    _mav_put_float(buf, 148, temperature);
+    _mav_put_uint8_t(buf, 152, ada_state);
+    _mav_put_uint8_t(buf, 153, fmm_state);
+    _mav_put_uint8_t(buf, 154, nas_state);
+    _mav_put_uint8_t(buf, 155, gps_fix);
+    _mav_put_uint8_t(buf, 156, pin_nosecone);
+    _mav_put_int8_t(buf, 157, logger_error);
+
+        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_ada = pressure_ada;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dpl = pressure_dpl;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.msl_altitude = msl_altitude;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.ada_vert_accel = ada_vert_accel;
+    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.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.vbat = vbat;
+    packet.vsupply_5v = vsupply_5v;
+    packet.temperature = temperature;
+    packet.ada_state = ada_state;
+    packet.fmm_state = fmm_state;
+    packet.nas_state = nas_state;
+    packet.gps_fix = gps_fix;
+    packet.pin_nosecone = pin_nosecone;
+    packet.logger_error = logger_error;
+
+        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 [ms] Timestamp in milliseconds
+ * @param ada_state  ADA Controller State
+ * @param fmm_state  Flight Mode Manager State
+ * @param nas_state  Navigation System FSM State
+ * @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 msl_altitude [m] Altitude above mean sea level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param ada_vert_accel [m/s^2] Vertical acceleration estimated by ADA
+ * @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  GPS fix (1 = fix, 0 = no fix)
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x axis
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param vbat [V] Battery voltage
+ * @param vsupply_5v [V] Power supply 5V
+ * @param temperature [degC] Temperature
+ * @param logger_error  Logger error (0 = no error)
+ * @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,uint8_t ada_state,uint8_t fmm_state,uint8_t nas_state,float pressure_ada,float pressure_digi,float pressure_static,float pressure_dpl,float airspeed_pitot,float msl_altitude,float ada_vert_speed,float ada_vert_accel,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,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,uint8_t pin_nosecone,float vbat,float vsupply_5v,float temperature,int8_t logger_error)
+{
+#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_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, msl_altitude);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, ada_vert_accel);
+    _mav_put_float(buf, 40, acc_x);
+    _mav_put_float(buf, 44, acc_y);
+    _mav_put_float(buf, 48, acc_z);
+    _mav_put_float(buf, 52, gyro_x);
+    _mav_put_float(buf, 56, gyro_y);
+    _mav_put_float(buf, 60, gyro_z);
+    _mav_put_float(buf, 64, mag_x);
+    _mav_put_float(buf, 68, mag_y);
+    _mav_put_float(buf, 72, mag_z);
+    _mav_put_float(buf, 76, gps_lat);
+    _mav_put_float(buf, 80, gps_lon);
+    _mav_put_float(buf, 84, gps_alt);
+    _mav_put_float(buf, 88, nas_n);
+    _mav_put_float(buf, 92, nas_e);
+    _mav_put_float(buf, 96, nas_d);
+    _mav_put_float(buf, 100, nas_vn);
+    _mav_put_float(buf, 104, nas_ve);
+    _mav_put_float(buf, 108, nas_vd);
+    _mav_put_float(buf, 112, nas_qx);
+    _mav_put_float(buf, 116, nas_qy);
+    _mav_put_float(buf, 120, nas_qz);
+    _mav_put_float(buf, 124, nas_qw);
+    _mav_put_float(buf, 128, nas_bias_x);
+    _mav_put_float(buf, 132, nas_bias_y);
+    _mav_put_float(buf, 136, nas_bias_z);
+    _mav_put_float(buf, 140, vbat);
+    _mav_put_float(buf, 144, vsupply_5v);
+    _mav_put_float(buf, 148, temperature);
+    _mav_put_uint8_t(buf, 152, ada_state);
+    _mav_put_uint8_t(buf, 153, fmm_state);
+    _mav_put_uint8_t(buf, 154, nas_state);
+    _mav_put_uint8_t(buf, 155, gps_fix);
+    _mav_put_uint8_t(buf, 156, pin_nosecone);
+    _mav_put_int8_t(buf, 157, logger_error);
+
+        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_ada = pressure_ada;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dpl = pressure_dpl;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.msl_altitude = msl_altitude;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.ada_vert_accel = ada_vert_accel;
+    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.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.vbat = vbat;
+    packet.vsupply_5v = vsupply_5v;
+    packet.temperature = temperature;
+    packet.ada_state = ada_state;
+    packet.fmm_state = fmm_state;
+    packet.nas_state = nas_state;
+    packet.gps_fix = gps_fix;
+    packet.pin_nosecone = pin_nosecone;
+    packet.logger_error = logger_error;
+
+        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->ada_state, payload_flight_tm->fmm_state, payload_flight_tm->nas_state, payload_flight_tm->pressure_ada, payload_flight_tm->pressure_digi, payload_flight_tm->pressure_static, payload_flight_tm->pressure_dpl, payload_flight_tm->airspeed_pitot, payload_flight_tm->msl_altitude, payload_flight_tm->ada_vert_speed, payload_flight_tm->ada_vert_accel, 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->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->pin_nosecone, payload_flight_tm->vbat, payload_flight_tm->vsupply_5v, payload_flight_tm->temperature, payload_flight_tm->logger_error);
+}
+
+/**
+ * @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->ada_state, payload_flight_tm->fmm_state, payload_flight_tm->nas_state, payload_flight_tm->pressure_ada, payload_flight_tm->pressure_digi, payload_flight_tm->pressure_static, payload_flight_tm->pressure_dpl, payload_flight_tm->airspeed_pitot, payload_flight_tm->msl_altitude, payload_flight_tm->ada_vert_speed, payload_flight_tm->ada_vert_accel, 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->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->pin_nosecone, payload_flight_tm->vbat, payload_flight_tm->vsupply_5v, payload_flight_tm->temperature, payload_flight_tm->logger_error);
+}
+
+/**
+ * @brief Send a payload_flight_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] Timestamp in milliseconds
+ * @param ada_state  ADA Controller State
+ * @param fmm_state  Flight Mode Manager State
+ * @param nas_state  Navigation System FSM State
+ * @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 msl_altitude [m] Altitude above mean sea level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param ada_vert_accel [m/s^2] Vertical acceleration estimated by ADA
+ * @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  GPS fix (1 = fix, 0 = no fix)
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x axis
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param vbat [V] Battery voltage
+ * @param vsupply_5v [V] Power supply 5V
+ * @param temperature [degC] Temperature
+ * @param logger_error  Logger error (0 = no error)
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_payload_flight_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t ada_state, uint8_t fmm_state, uint8_t nas_state, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float msl_altitude, float ada_vert_speed, float ada_vert_accel, 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, 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, uint8_t pin_nosecone, float vbat, float vsupply_5v, float temperature, int8_t logger_error)
+{
+#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_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, msl_altitude);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, ada_vert_accel);
+    _mav_put_float(buf, 40, acc_x);
+    _mav_put_float(buf, 44, acc_y);
+    _mav_put_float(buf, 48, acc_z);
+    _mav_put_float(buf, 52, gyro_x);
+    _mav_put_float(buf, 56, gyro_y);
+    _mav_put_float(buf, 60, gyro_z);
+    _mav_put_float(buf, 64, mag_x);
+    _mav_put_float(buf, 68, mag_y);
+    _mav_put_float(buf, 72, mag_z);
+    _mav_put_float(buf, 76, gps_lat);
+    _mav_put_float(buf, 80, gps_lon);
+    _mav_put_float(buf, 84, gps_alt);
+    _mav_put_float(buf, 88, nas_n);
+    _mav_put_float(buf, 92, nas_e);
+    _mav_put_float(buf, 96, nas_d);
+    _mav_put_float(buf, 100, nas_vn);
+    _mav_put_float(buf, 104, nas_ve);
+    _mav_put_float(buf, 108, nas_vd);
+    _mav_put_float(buf, 112, nas_qx);
+    _mav_put_float(buf, 116, nas_qy);
+    _mav_put_float(buf, 120, nas_qz);
+    _mav_put_float(buf, 124, nas_qw);
+    _mav_put_float(buf, 128, nas_bias_x);
+    _mav_put_float(buf, 132, nas_bias_y);
+    _mav_put_float(buf, 136, nas_bias_z);
+    _mav_put_float(buf, 140, vbat);
+    _mav_put_float(buf, 144, vsupply_5v);
+    _mav_put_float(buf, 148, temperature);
+    _mav_put_uint8_t(buf, 152, ada_state);
+    _mav_put_uint8_t(buf, 153, fmm_state);
+    _mav_put_uint8_t(buf, 154, nas_state);
+    _mav_put_uint8_t(buf, 155, gps_fix);
+    _mav_put_uint8_t(buf, 156, pin_nosecone);
+    _mav_put_int8_t(buf, 157, logger_error);
+
+    _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_ada = pressure_ada;
+    packet.pressure_digi = pressure_digi;
+    packet.pressure_static = pressure_static;
+    packet.pressure_dpl = pressure_dpl;
+    packet.airspeed_pitot = airspeed_pitot;
+    packet.msl_altitude = msl_altitude;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.ada_vert_accel = ada_vert_accel;
+    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.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.vbat = vbat;
+    packet.vsupply_5v = vsupply_5v;
+    packet.temperature = temperature;
+    packet.ada_state = ada_state;
+    packet.fmm_state = fmm_state;
+    packet.nas_state = nas_state;
+    packet.gps_fix = gps_fix;
+    packet.pin_nosecone = pin_nosecone;
+    packet.logger_error = logger_error;
+
+    _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->ada_state, payload_flight_tm->fmm_state, payload_flight_tm->nas_state, payload_flight_tm->pressure_ada, payload_flight_tm->pressure_digi, payload_flight_tm->pressure_static, payload_flight_tm->pressure_dpl, payload_flight_tm->airspeed_pitot, payload_flight_tm->msl_altitude, payload_flight_tm->ada_vert_speed, payload_flight_tm->ada_vert_accel, 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->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->pin_nosecone, payload_flight_tm->vbat, payload_flight_tm->vsupply_5v, payload_flight_tm->temperature, payload_flight_tm->logger_error);
+#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, uint8_t ada_state, uint8_t fmm_state, uint8_t nas_state, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float msl_altitude, float ada_vert_speed, float ada_vert_accel, 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, 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, uint8_t pin_nosecone, float vbat, float vsupply_5v, float temperature, int8_t logger_error)
+{
+#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, msl_altitude);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, ada_vert_accel);
+    _mav_put_float(buf, 40, acc_x);
+    _mav_put_float(buf, 44, acc_y);
+    _mav_put_float(buf, 48, acc_z);
+    _mav_put_float(buf, 52, gyro_x);
+    _mav_put_float(buf, 56, gyro_y);
+    _mav_put_float(buf, 60, gyro_z);
+    _mav_put_float(buf, 64, mag_x);
+    _mav_put_float(buf, 68, mag_y);
+    _mav_put_float(buf, 72, mag_z);
+    _mav_put_float(buf, 76, gps_lat);
+    _mav_put_float(buf, 80, gps_lon);
+    _mav_put_float(buf, 84, gps_alt);
+    _mav_put_float(buf, 88, nas_n);
+    _mav_put_float(buf, 92, nas_e);
+    _mav_put_float(buf, 96, nas_d);
+    _mav_put_float(buf, 100, nas_vn);
+    _mav_put_float(buf, 104, nas_ve);
+    _mav_put_float(buf, 108, nas_vd);
+    _mav_put_float(buf, 112, nas_qx);
+    _mav_put_float(buf, 116, nas_qy);
+    _mav_put_float(buf, 120, nas_qz);
+    _mav_put_float(buf, 124, nas_qw);
+    _mav_put_float(buf, 128, nas_bias_x);
+    _mav_put_float(buf, 132, nas_bias_y);
+    _mav_put_float(buf, 136, nas_bias_z);
+    _mav_put_float(buf, 140, vbat);
+    _mav_put_float(buf, 144, vsupply_5v);
+    _mav_put_float(buf, 148, temperature);
+    _mav_put_uint8_t(buf, 152, ada_state);
+    _mav_put_uint8_t(buf, 153, fmm_state);
+    _mav_put_uint8_t(buf, 154, nas_state);
+    _mav_put_uint8_t(buf, 155, gps_fix);
+    _mav_put_uint8_t(buf, 156, pin_nosecone);
+    _mav_put_int8_t(buf, 157, logger_error);
+
+    _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_ada = pressure_ada;
+    packet->pressure_digi = pressure_digi;
+    packet->pressure_static = pressure_static;
+    packet->pressure_dpl = pressure_dpl;
+    packet->airspeed_pitot = airspeed_pitot;
+    packet->msl_altitude = msl_altitude;
+    packet->ada_vert_speed = ada_vert_speed;
+    packet->ada_vert_accel = ada_vert_accel;
+    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->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->vbat = vbat;
+    packet->vsupply_5v = vsupply_5v;
+    packet->temperature = temperature;
+    packet->ada_state = ada_state;
+    packet->fmm_state = fmm_state;
+    packet->nas_state = nas_state;
+    packet->gps_fix = gps_fix;
+    packet->pin_nosecone = pin_nosecone;
+    packet->logger_error = logger_error;
+
+    _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 [ms] Timestamp in milliseconds
+ */
+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 ada_state from payload_flight_tm message
+ *
+ * @return  ADA Controller State
+ */
+static inline uint8_t mavlink_msg_payload_flight_tm_get_ada_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  152);
+}
+
+/**
+ * @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,  153);
+}
+
+/**
+ * @brief Get field nas_state from payload_flight_tm message
+ *
+ * @return  Navigation System FSM State
+ */
+static inline uint8_t mavlink_msg_payload_flight_tm_get_nas_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  154);
+}
+
+/**
+ * @brief Get field pressure_ada from payload_flight_tm message
+ *
+ * @return [Pa] Atmospheric pressure estimated by ADA
+ */
+static inline float mavlink_msg_payload_flight_tm_get_pressure_ada(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @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,  12);
+}
+
+/**
+ * @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,  16);
+}
+
+/**
+ * @brief Get field pressure_dpl from payload_flight_tm message
+ *
+ * @return [Pa] Pressure from deployment vane sensor
+ */
+static inline float mavlink_msg_payload_flight_tm_get_pressure_dpl(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @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,  24);
+}
+
+/**
+ * @brief Get field msl_altitude from payload_flight_tm message
+ *
+ * @return [m] Altitude above mean sea level
+ */
+static inline float mavlink_msg_payload_flight_tm_get_msl_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  28);
+}
+
+/**
+ * @brief Get field ada_vert_speed from payload_flight_tm message
+ *
+ * @return [m/s] Vertical speed estimated by ADA
+ */
+static inline float mavlink_msg_payload_flight_tm_get_ada_vert_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  32);
+}
+
+/**
+ * @brief Get field ada_vert_accel from payload_flight_tm message
+ *
+ * @return [m/s^2] Vertical acceleration estimated by ADA
+ */
+static inline float mavlink_msg_payload_flight_tm_get_ada_vert_accel(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @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,  40);
+}
+
+/**
+ * @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,  44);
+}
+
+/**
+ * @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,  48);
+}
+
+/**
+ * @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,  52);
+}
+
+/**
+ * @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,  56);
+}
+
+/**
+ * @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,  60);
+}
+
+/**
+ * @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,  64);
+}
+
+/**
+ * @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,  68);
+}
+
+/**
+ * @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,  72);
+}
+
+/**
+ * @brief Get field gps_fix from payload_flight_tm message
+ *
+ * @return  GPS fix (1 = fix, 0 = no fix)
+ */
+static inline uint8_t mavlink_msg_payload_flight_tm_get_gps_fix(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  155);
+}
+
+/**
+ * @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,  76);
+}
+
+/**
+ * @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,  80);
+}
+
+/**
+ * @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,  84);
+}
+
+/**
+ * @brief Get field nas_n from payload_flight_tm message
+ *
+ * @return [deg] Navigation system estimated noth position
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_n(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  88);
+}
+
+/**
+ * @brief Get field nas_e from payload_flight_tm message
+ *
+ * @return [deg] Navigation system estimated east position
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_e(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  92);
+}
+
+/**
+ * @brief Get field nas_d from payload_flight_tm message
+ *
+ * @return [m] Navigation system estimated down position
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_d(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  96);
+}
+
+/**
+ * @brief Get field nas_vn from payload_flight_tm message
+ *
+ * @return [m/s] Navigation system estimated north velocity
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_vn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  100);
+}
+
+/**
+ * @brief Get field nas_ve from payload_flight_tm message
+ *
+ * @return [m/s] Navigation system estimated east velocity
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_ve(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  104);
+}
+
+/**
+ * @brief Get field nas_vd from payload_flight_tm message
+ *
+ * @return [m/s] Navigation system estimated down velocity
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_vd(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  108);
+}
+
+/**
+ * @brief Get field nas_qx from payload_flight_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qx)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_qx(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  112);
+}
+
+/**
+ * @brief Get field nas_qy from payload_flight_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qy)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_qy(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  116);
+}
+
+/**
+ * @brief Get field nas_qz from payload_flight_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qz)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_qz(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  120);
+}
+
+/**
+ * @brief Get field nas_qw from payload_flight_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qw)
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_qw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  124);
+}
+
+/**
+ * @brief Get field nas_bias_x from payload_flight_tm message
+ *
+ * @return  Navigation system 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,  128);
+}
+
+/**
+ * @brief Get field nas_bias_y from payload_flight_tm message
+ *
+ * @return  Navigation system gyroscope bias on x axis
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_bias_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  132);
+}
+
+/**
+ * @brief Get field nas_bias_z from payload_flight_tm message
+ *
+ * @return  Navigation system gyroscope bias on x axis
+ */
+static inline float mavlink_msg_payload_flight_tm_get_nas_bias_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  136);
+}
+
+/**
+ * @brief Get field pin_nosecone from payload_flight_tm message
+ *
+ * @return  Nosecone pin status (1 = connected, 0 = disconnected)
+ */
+static inline uint8_t mavlink_msg_payload_flight_tm_get_pin_nosecone(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  156);
+}
+
+/**
+ * @brief Get field vbat from payload_flight_tm message
+ *
+ * @return [V] Battery voltage
+ */
+static inline float mavlink_msg_payload_flight_tm_get_vbat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  140);
+}
+
+/**
+ * @brief Get field vsupply_5v from payload_flight_tm message
+ *
+ * @return [V] Power supply 5V
+ */
+static inline float mavlink_msg_payload_flight_tm_get_vsupply_5v(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  144);
+}
+
+/**
+ * @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,  148);
+}
+
+/**
+ * @brief Get field logger_error from payload_flight_tm message
+ *
+ * @return  Logger error (0 = no error)
+ */
+static inline int8_t mavlink_msg_payload_flight_tm_get_logger_error(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int8_t(msg,  157);
+}
+
+/**
+ * @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_ada = mavlink_msg_payload_flight_tm_get_pressure_ada(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_dpl = mavlink_msg_payload_flight_tm_get_pressure_dpl(msg);
+    payload_flight_tm->airspeed_pitot = mavlink_msg_payload_flight_tm_get_airspeed_pitot(msg);
+    payload_flight_tm->msl_altitude = mavlink_msg_payload_flight_tm_get_msl_altitude(msg);
+    payload_flight_tm->ada_vert_speed = mavlink_msg_payload_flight_tm_get_ada_vert_speed(msg);
+    payload_flight_tm->ada_vert_accel = mavlink_msg_payload_flight_tm_get_ada_vert_accel(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->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->vbat = mavlink_msg_payload_flight_tm_get_vbat(msg);
+    payload_flight_tm->vsupply_5v = mavlink_msg_payload_flight_tm_get_vsupply_5v(msg);
+    payload_flight_tm->temperature = mavlink_msg_payload_flight_tm_get_temperature(msg);
+    payload_flight_tm->ada_state = mavlink_msg_payload_flight_tm_get_ada_state(msg);
+    payload_flight_tm->fmm_state = mavlink_msg_payload_flight_tm_get_fmm_state(msg);
+    payload_flight_tm->nas_state = mavlink_msg_payload_flight_tm_get_nas_state(msg);
+    payload_flight_tm->gps_fix = mavlink_msg_payload_flight_tm_get_gps_fix(msg);
+    payload_flight_tm->pin_nosecone = mavlink_msg_payload_flight_tm_get_pin_nosecone(msg);
+    payload_flight_tm->logger_error = mavlink_msg_payload_flight_tm_get_logger_error(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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_payload_stats_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_payload_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..d461aa919dc733e19f8ed884cfa6894d85d5661d
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_payload_stats_tm.h
@@ -0,0 +1,663 @@
+#pragma once
+// MESSAGE PAYLOAD_STATS_TM PACKING
+
+#define MAVLINK_MSG_ID_PAYLOAD_STATS_TM 211
+
+
+typedef struct __mavlink_payload_stats_tm_t {
+ uint64_t liftoff_ts; /*< [ms] System clock at liftoff*/
+ uint64_t liftoff_max_acc_ts; /*< [ms] System clock at the maximum liftoff acceleration*/
+ uint64_t max_z_speed_ts; /*< [ms] System clock at ADA max vertical speed*/
+ uint64_t apogee_ts; /*< [ms] System clock at apogee*/
+ uint64_t drogue_dpl_ts; /*< [ms] System clock at drouge deployment*/
+ float liftoff_max_acc; /*< [m/s2] Maximum liftoff acceleration*/
+ float max_z_speed; /*< [m/s] Max measured vertical speed - ADA*/
+ float max_airspeed_pitot; /*< [m/s] Max speed read by the pitot tube*/
+ float max_speed_altitude; /*< [m] Altitude at max speed*/
+ float apogee_lat; /*< [deg] Apogee latitude*/
+ float apogee_lon; /*< [deg] Apogee longitude*/
+ float static_min_pressure; /*< [Pa] Apogee pressure - Static ports*/
+ float digital_min_pressure; /*< [Pa] Apogee pressure - Digital barometer*/
+ float ada_min_pressure; /*< [Pa] Apogee pressure - ADA filtered*/
+ float baro_max_altitude; /*< [m] Apogee altitude - Digital barometer*/
+ float gps_max_altitude; /*< [m] Apogee altitude - GPS*/
+ float drogue_dpl_max_acc; /*< [m/s2] Max acceleration during drouge deployment*/
+ float cpu_load; /*<  CPU load in percentage*/
+ uint32_t free_heap; /*<  Amount of available heap in memory*/
+} mavlink_payload_stats_tm_t;
+
+#define MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN 96
+#define MAVLINK_MSG_ID_PAYLOAD_STATS_TM_MIN_LEN 96
+#define MAVLINK_MSG_ID_211_LEN 96
+#define MAVLINK_MSG_ID_211_MIN_LEN 96
+
+#define MAVLINK_MSG_ID_PAYLOAD_STATS_TM_CRC 155
+#define MAVLINK_MSG_ID_211_CRC 155
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PAYLOAD_STATS_TM { \
+    211, \
+    "PAYLOAD_STATS_TM", \
+    19, \
+    {  { "liftoff_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_payload_stats_tm_t, liftoff_ts) }, \
+         { "liftoff_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_payload_stats_tm_t, liftoff_max_acc_ts) }, \
+         { "liftoff_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_payload_stats_tm_t, liftoff_max_acc) }, \
+         { "max_z_speed_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_payload_stats_tm_t, max_z_speed_ts) }, \
+         { "max_z_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_payload_stats_tm_t, max_z_speed) }, \
+         { "max_airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_payload_stats_tm_t, max_airspeed_pitot) }, \
+         { "max_speed_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_payload_stats_tm_t, max_speed_altitude) }, \
+         { "apogee_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 24, offsetof(mavlink_payload_stats_tm_t, apogee_ts) }, \
+         { "apogee_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_payload_stats_tm_t, apogee_lat) }, \
+         { "apogee_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_payload_stats_tm_t, apogee_lon) }, \
+         { "static_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_payload_stats_tm_t, static_min_pressure) }, \
+         { "digital_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_payload_stats_tm_t, digital_min_pressure) }, \
+         { "ada_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_payload_stats_tm_t, ada_min_pressure) }, \
+         { "baro_max_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_payload_stats_tm_t, baro_max_altitude) }, \
+         { "gps_max_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_payload_stats_tm_t, gps_max_altitude) }, \
+         { "drogue_dpl_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 32, offsetof(mavlink_payload_stats_tm_t, drogue_dpl_ts) }, \
+         { "drogue_dpl_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_payload_stats_tm_t, drogue_dpl_max_acc) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_payload_stats_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 92, offsetof(mavlink_payload_stats_tm_t, free_heap) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_PAYLOAD_STATS_TM { \
+    "PAYLOAD_STATS_TM", \
+    19, \
+    {  { "liftoff_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_payload_stats_tm_t, liftoff_ts) }, \
+         { "liftoff_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_payload_stats_tm_t, liftoff_max_acc_ts) }, \
+         { "liftoff_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_payload_stats_tm_t, liftoff_max_acc) }, \
+         { "max_z_speed_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_payload_stats_tm_t, max_z_speed_ts) }, \
+         { "max_z_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_payload_stats_tm_t, max_z_speed) }, \
+         { "max_airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_payload_stats_tm_t, max_airspeed_pitot) }, \
+         { "max_speed_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_payload_stats_tm_t, max_speed_altitude) }, \
+         { "apogee_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 24, offsetof(mavlink_payload_stats_tm_t, apogee_ts) }, \
+         { "apogee_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_payload_stats_tm_t, apogee_lat) }, \
+         { "apogee_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_payload_stats_tm_t, apogee_lon) }, \
+         { "static_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_payload_stats_tm_t, static_min_pressure) }, \
+         { "digital_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_payload_stats_tm_t, digital_min_pressure) }, \
+         { "ada_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_payload_stats_tm_t, ada_min_pressure) }, \
+         { "baro_max_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_payload_stats_tm_t, baro_max_altitude) }, \
+         { "gps_max_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_payload_stats_tm_t, gps_max_altitude) }, \
+         { "drogue_dpl_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 32, offsetof(mavlink_payload_stats_tm_t, drogue_dpl_ts) }, \
+         { "drogue_dpl_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_payload_stats_tm_t, drogue_dpl_max_acc) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_payload_stats_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 92, offsetof(mavlink_payload_stats_tm_t, free_heap) }, \
+         } \
+}
+#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 liftoff_ts [ms] System clock at liftoff
+ * @param liftoff_max_acc_ts [ms] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_z_speed_ts [ms] System clock at ADA max vertical speed
+ * @param max_z_speed [m/s] Max measured vertical speed - ADA
+ * @param max_airspeed_pitot [m/s] Max speed read by the pitot tube
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param apogee_ts [ms] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param static_min_pressure [Pa] Apogee pressure - Static ports
+ * @param digital_min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param ada_min_pressure [Pa] Apogee pressure - ADA filtered
+ * @param baro_max_altitude [m] Apogee altitude - Digital barometer
+ * @param gps_max_altitude [m] Apogee altitude - GPS
+ * @param drogue_dpl_ts [ms] System clock at drouge deployment
+ * @param drogue_dpl_max_acc [m/s2] Max acceleration during drouge deployment
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @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 liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_z_speed_ts, float max_z_speed, float max_airspeed_pitot, float max_speed_altitude, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float static_min_pressure, float digital_min_pressure, float ada_min_pressure, float baro_max_altitude, float gps_max_altitude, uint64_t drogue_dpl_ts, float drogue_dpl_max_acc, float cpu_load, uint32_t free_heap)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, liftoff_ts);
+    _mav_put_uint64_t(buf, 8, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 16, max_z_speed_ts);
+    _mav_put_uint64_t(buf, 24, apogee_ts);
+    _mav_put_uint64_t(buf, 32, drogue_dpl_ts);
+    _mav_put_float(buf, 40, liftoff_max_acc);
+    _mav_put_float(buf, 44, max_z_speed);
+    _mav_put_float(buf, 48, max_airspeed_pitot);
+    _mav_put_float(buf, 52, max_speed_altitude);
+    _mav_put_float(buf, 56, apogee_lat);
+    _mav_put_float(buf, 60, apogee_lon);
+    _mav_put_float(buf, 64, static_min_pressure);
+    _mav_put_float(buf, 68, digital_min_pressure);
+    _mav_put_float(buf, 72, ada_min_pressure);
+    _mav_put_float(buf, 76, baro_max_altitude);
+    _mav_put_float(buf, 80, gps_max_altitude);
+    _mav_put_float(buf, 84, drogue_dpl_max_acc);
+    _mav_put_float(buf, 88, cpu_load);
+    _mav_put_uint32_t(buf, 92, free_heap);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN);
+#else
+    mavlink_payload_stats_tm_t packet;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_z_speed_ts = max_z_speed_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.drogue_dpl_ts = drogue_dpl_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_z_speed = max_z_speed;
+    packet.max_airspeed_pitot = max_airspeed_pitot;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.static_min_pressure = static_min_pressure;
+    packet.digital_min_pressure = digital_min_pressure;
+    packet.ada_min_pressure = ada_min_pressure;
+    packet.baro_max_altitude = baro_max_altitude;
+    packet.gps_max_altitude = gps_max_altitude;
+    packet.drogue_dpl_max_acc = drogue_dpl_max_acc;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+
+        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 liftoff_ts [ms] System clock at liftoff
+ * @param liftoff_max_acc_ts [ms] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_z_speed_ts [ms] System clock at ADA max vertical speed
+ * @param max_z_speed [m/s] Max measured vertical speed - ADA
+ * @param max_airspeed_pitot [m/s] Max speed read by the pitot tube
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param apogee_ts [ms] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param static_min_pressure [Pa] Apogee pressure - Static ports
+ * @param digital_min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param ada_min_pressure [Pa] Apogee pressure - ADA filtered
+ * @param baro_max_altitude [m] Apogee altitude - Digital barometer
+ * @param gps_max_altitude [m] Apogee altitude - GPS
+ * @param drogue_dpl_ts [ms] System clock at drouge deployment
+ * @param drogue_dpl_max_acc [m/s2] Max acceleration during drouge deployment
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @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 liftoff_ts,uint64_t liftoff_max_acc_ts,float liftoff_max_acc,uint64_t max_z_speed_ts,float max_z_speed,float max_airspeed_pitot,float max_speed_altitude,uint64_t apogee_ts,float apogee_lat,float apogee_lon,float static_min_pressure,float digital_min_pressure,float ada_min_pressure,float baro_max_altitude,float gps_max_altitude,uint64_t drogue_dpl_ts,float drogue_dpl_max_acc,float cpu_load,uint32_t free_heap)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, liftoff_ts);
+    _mav_put_uint64_t(buf, 8, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 16, max_z_speed_ts);
+    _mav_put_uint64_t(buf, 24, apogee_ts);
+    _mav_put_uint64_t(buf, 32, drogue_dpl_ts);
+    _mav_put_float(buf, 40, liftoff_max_acc);
+    _mav_put_float(buf, 44, max_z_speed);
+    _mav_put_float(buf, 48, max_airspeed_pitot);
+    _mav_put_float(buf, 52, max_speed_altitude);
+    _mav_put_float(buf, 56, apogee_lat);
+    _mav_put_float(buf, 60, apogee_lon);
+    _mav_put_float(buf, 64, static_min_pressure);
+    _mav_put_float(buf, 68, digital_min_pressure);
+    _mav_put_float(buf, 72, ada_min_pressure);
+    _mav_put_float(buf, 76, baro_max_altitude);
+    _mav_put_float(buf, 80, gps_max_altitude);
+    _mav_put_float(buf, 84, drogue_dpl_max_acc);
+    _mav_put_float(buf, 88, cpu_load);
+    _mav_put_uint32_t(buf, 92, free_heap);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN);
+#else
+    mavlink_payload_stats_tm_t packet;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_z_speed_ts = max_z_speed_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.drogue_dpl_ts = drogue_dpl_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_z_speed = max_z_speed;
+    packet.max_airspeed_pitot = max_airspeed_pitot;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.static_min_pressure = static_min_pressure;
+    packet.digital_min_pressure = digital_min_pressure;
+    packet.ada_min_pressure = ada_min_pressure;
+    packet.baro_max_altitude = baro_max_altitude;
+    packet.gps_max_altitude = gps_max_altitude;
+    packet.drogue_dpl_max_acc = drogue_dpl_max_acc;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+
+        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->liftoff_ts, payload_stats_tm->liftoff_max_acc_ts, payload_stats_tm->liftoff_max_acc, payload_stats_tm->max_z_speed_ts, payload_stats_tm->max_z_speed, payload_stats_tm->max_airspeed_pitot, payload_stats_tm->max_speed_altitude, payload_stats_tm->apogee_ts, payload_stats_tm->apogee_lat, payload_stats_tm->apogee_lon, payload_stats_tm->static_min_pressure, payload_stats_tm->digital_min_pressure, payload_stats_tm->ada_min_pressure, payload_stats_tm->baro_max_altitude, payload_stats_tm->gps_max_altitude, payload_stats_tm->drogue_dpl_ts, payload_stats_tm->drogue_dpl_max_acc, payload_stats_tm->cpu_load, payload_stats_tm->free_heap);
+}
+
+/**
+ * @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->liftoff_ts, payload_stats_tm->liftoff_max_acc_ts, payload_stats_tm->liftoff_max_acc, payload_stats_tm->max_z_speed_ts, payload_stats_tm->max_z_speed, payload_stats_tm->max_airspeed_pitot, payload_stats_tm->max_speed_altitude, payload_stats_tm->apogee_ts, payload_stats_tm->apogee_lat, payload_stats_tm->apogee_lon, payload_stats_tm->static_min_pressure, payload_stats_tm->digital_min_pressure, payload_stats_tm->ada_min_pressure, payload_stats_tm->baro_max_altitude, payload_stats_tm->gps_max_altitude, payload_stats_tm->drogue_dpl_ts, payload_stats_tm->drogue_dpl_max_acc, payload_stats_tm->cpu_load, payload_stats_tm->free_heap);
+}
+
+/**
+ * @brief Send a payload_stats_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param liftoff_ts [ms] System clock at liftoff
+ * @param liftoff_max_acc_ts [ms] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_z_speed_ts [ms] System clock at ADA max vertical speed
+ * @param max_z_speed [m/s] Max measured vertical speed - ADA
+ * @param max_airspeed_pitot [m/s] Max speed read by the pitot tube
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param apogee_ts [ms] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param static_min_pressure [Pa] Apogee pressure - Static ports
+ * @param digital_min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param ada_min_pressure [Pa] Apogee pressure - ADA filtered
+ * @param baro_max_altitude [m] Apogee altitude - Digital barometer
+ * @param gps_max_altitude [m] Apogee altitude - GPS
+ * @param drogue_dpl_ts [ms] System clock at drouge deployment
+ * @param drogue_dpl_max_acc [m/s2] Max acceleration during drouge deployment
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_payload_stats_tm_send(mavlink_channel_t chan, uint64_t liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_z_speed_ts, float max_z_speed, float max_airspeed_pitot, float max_speed_altitude, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float static_min_pressure, float digital_min_pressure, float ada_min_pressure, float baro_max_altitude, float gps_max_altitude, uint64_t drogue_dpl_ts, float drogue_dpl_max_acc, float cpu_load, uint32_t free_heap)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_PAYLOAD_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, liftoff_ts);
+    _mav_put_uint64_t(buf, 8, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 16, max_z_speed_ts);
+    _mav_put_uint64_t(buf, 24, apogee_ts);
+    _mav_put_uint64_t(buf, 32, drogue_dpl_ts);
+    _mav_put_float(buf, 40, liftoff_max_acc);
+    _mav_put_float(buf, 44, max_z_speed);
+    _mav_put_float(buf, 48, max_airspeed_pitot);
+    _mav_put_float(buf, 52, max_speed_altitude);
+    _mav_put_float(buf, 56, apogee_lat);
+    _mav_put_float(buf, 60, apogee_lon);
+    _mav_put_float(buf, 64, static_min_pressure);
+    _mav_put_float(buf, 68, digital_min_pressure);
+    _mav_put_float(buf, 72, ada_min_pressure);
+    _mav_put_float(buf, 76, baro_max_altitude);
+    _mav_put_float(buf, 80, gps_max_altitude);
+    _mav_put_float(buf, 84, drogue_dpl_max_acc);
+    _mav_put_float(buf, 88, cpu_load);
+    _mav_put_uint32_t(buf, 92, free_heap);
+
+    _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.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_z_speed_ts = max_z_speed_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.drogue_dpl_ts = drogue_dpl_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_z_speed = max_z_speed;
+    packet.max_airspeed_pitot = max_airspeed_pitot;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.static_min_pressure = static_min_pressure;
+    packet.digital_min_pressure = digital_min_pressure;
+    packet.ada_min_pressure = ada_min_pressure;
+    packet.baro_max_altitude = baro_max_altitude;
+    packet.gps_max_altitude = gps_max_altitude;
+    packet.drogue_dpl_max_acc = drogue_dpl_max_acc;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+
+    _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->liftoff_ts, payload_stats_tm->liftoff_max_acc_ts, payload_stats_tm->liftoff_max_acc, payload_stats_tm->max_z_speed_ts, payload_stats_tm->max_z_speed, payload_stats_tm->max_airspeed_pitot, payload_stats_tm->max_speed_altitude, payload_stats_tm->apogee_ts, payload_stats_tm->apogee_lat, payload_stats_tm->apogee_lon, payload_stats_tm->static_min_pressure, payload_stats_tm->digital_min_pressure, payload_stats_tm->ada_min_pressure, payload_stats_tm->baro_max_altitude, payload_stats_tm->gps_max_altitude, payload_stats_tm->drogue_dpl_ts, payload_stats_tm->drogue_dpl_max_acc, payload_stats_tm->cpu_load, payload_stats_tm->free_heap);
+#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 liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_z_speed_ts, float max_z_speed, float max_airspeed_pitot, float max_speed_altitude, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float static_min_pressure, float digital_min_pressure, float ada_min_pressure, float baro_max_altitude, float gps_max_altitude, uint64_t drogue_dpl_ts, float drogue_dpl_max_acc, float cpu_load, uint32_t free_heap)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, liftoff_ts);
+    _mav_put_uint64_t(buf, 8, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 16, max_z_speed_ts);
+    _mav_put_uint64_t(buf, 24, apogee_ts);
+    _mav_put_uint64_t(buf, 32, drogue_dpl_ts);
+    _mav_put_float(buf, 40, liftoff_max_acc);
+    _mav_put_float(buf, 44, max_z_speed);
+    _mav_put_float(buf, 48, max_airspeed_pitot);
+    _mav_put_float(buf, 52, max_speed_altitude);
+    _mav_put_float(buf, 56, apogee_lat);
+    _mav_put_float(buf, 60, apogee_lon);
+    _mav_put_float(buf, 64, static_min_pressure);
+    _mav_put_float(buf, 68, digital_min_pressure);
+    _mav_put_float(buf, 72, ada_min_pressure);
+    _mav_put_float(buf, 76, baro_max_altitude);
+    _mav_put_float(buf, 80, gps_max_altitude);
+    _mav_put_float(buf, 84, drogue_dpl_max_acc);
+    _mav_put_float(buf, 88, cpu_load);
+    _mav_put_uint32_t(buf, 92, free_heap);
+
+    _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->liftoff_ts = liftoff_ts;
+    packet->liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet->max_z_speed_ts = max_z_speed_ts;
+    packet->apogee_ts = apogee_ts;
+    packet->drogue_dpl_ts = drogue_dpl_ts;
+    packet->liftoff_max_acc = liftoff_max_acc;
+    packet->max_z_speed = max_z_speed;
+    packet->max_airspeed_pitot = max_airspeed_pitot;
+    packet->max_speed_altitude = max_speed_altitude;
+    packet->apogee_lat = apogee_lat;
+    packet->apogee_lon = apogee_lon;
+    packet->static_min_pressure = static_min_pressure;
+    packet->digital_min_pressure = digital_min_pressure;
+    packet->ada_min_pressure = ada_min_pressure;
+    packet->baro_max_altitude = baro_max_altitude;
+    packet->gps_max_altitude = gps_max_altitude;
+    packet->drogue_dpl_max_acc = drogue_dpl_max_acc;
+    packet->cpu_load = cpu_load;
+    packet->free_heap = free_heap;
+
+    _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 liftoff_ts from payload_stats_tm message
+ *
+ * @return [ms] 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,  0);
+}
+
+/**
+ * @brief Get field liftoff_max_acc_ts from payload_stats_tm message
+ *
+ * @return [ms] 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,  8);
+}
+
+/**
+ * @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,  40);
+}
+
+/**
+ * @brief Get field max_z_speed_ts from payload_stats_tm message
+ *
+ * @return [ms] System clock at ADA max vertical speed
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_max_z_speed_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  16);
+}
+
+/**
+ * @brief Get field max_z_speed from payload_stats_tm message
+ *
+ * @return [m/s] Max measured vertical speed - ADA
+ */
+static inline float mavlink_msg_payload_stats_tm_get_max_z_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  44);
+}
+
+/**
+ * @brief Get field max_airspeed_pitot from payload_stats_tm message
+ *
+ * @return [m/s] Max speed read by the pitot tube
+ */
+static inline float mavlink_msg_payload_stats_tm_get_max_airspeed_pitot(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  48);
+}
+
+/**
+ * @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,  52);
+}
+
+/**
+ * @brief Get field apogee_ts from payload_stats_tm message
+ *
+ * @return [ms] 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,  24);
+}
+
+/**
+ * @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,  56);
+}
+
+/**
+ * @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,  60);
+}
+
+/**
+ * @brief Get field static_min_pressure from payload_stats_tm message
+ *
+ * @return [Pa] Apogee pressure - Static ports
+ */
+static inline float mavlink_msg_payload_stats_tm_get_static_min_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  64);
+}
+
+/**
+ * @brief Get field digital_min_pressure from payload_stats_tm message
+ *
+ * @return [Pa] Apogee pressure - Digital barometer
+ */
+static inline float mavlink_msg_payload_stats_tm_get_digital_min_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  68);
+}
+
+/**
+ * @brief Get field ada_min_pressure from payload_stats_tm message
+ *
+ * @return [Pa] Apogee pressure - ADA filtered
+ */
+static inline float mavlink_msg_payload_stats_tm_get_ada_min_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  72);
+}
+
+/**
+ * @brief Get field baro_max_altitude from payload_stats_tm message
+ *
+ * @return [m] Apogee altitude - Digital barometer
+ */
+static inline float mavlink_msg_payload_stats_tm_get_baro_max_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  76);
+}
+
+/**
+ * @brief Get field gps_max_altitude from payload_stats_tm message
+ *
+ * @return [m] Apogee altitude - GPS
+ */
+static inline float mavlink_msg_payload_stats_tm_get_gps_max_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  80);
+}
+
+/**
+ * @brief Get field drogue_dpl_ts from payload_stats_tm message
+ *
+ * @return [ms] System clock at drouge deployment
+ */
+static inline uint64_t mavlink_msg_payload_stats_tm_get_drogue_dpl_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  32);
+}
+
+/**
+ * @brief Get field drogue_dpl_max_acc from payload_stats_tm message
+ *
+ * @return [m/s2] Max acceleration during drouge deployment
+ */
+static inline float mavlink_msg_payload_stats_tm_get_drogue_dpl_max_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  84);
+}
+
+/**
+ * @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,  88);
+}
+
+/**
+ * @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,  92);
+}
+
+/**
+ * @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->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_z_speed_ts = mavlink_msg_payload_stats_tm_get_max_z_speed_ts(msg);
+    payload_stats_tm->apogee_ts = mavlink_msg_payload_stats_tm_get_apogee_ts(msg);
+    payload_stats_tm->drogue_dpl_ts = mavlink_msg_payload_stats_tm_get_drogue_dpl_ts(msg);
+    payload_stats_tm->liftoff_max_acc = mavlink_msg_payload_stats_tm_get_liftoff_max_acc(msg);
+    payload_stats_tm->max_z_speed = mavlink_msg_payload_stats_tm_get_max_z_speed(msg);
+    payload_stats_tm->max_airspeed_pitot = mavlink_msg_payload_stats_tm_get_max_airspeed_pitot(msg);
+    payload_stats_tm->max_speed_altitude = mavlink_msg_payload_stats_tm_get_max_speed_altitude(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->static_min_pressure = mavlink_msg_payload_stats_tm_get_static_min_pressure(msg);
+    payload_stats_tm->digital_min_pressure = mavlink_msg_payload_stats_tm_get_digital_min_pressure(msg);
+    payload_stats_tm->ada_min_pressure = mavlink_msg_payload_stats_tm_get_ada_min_pressure(msg);
+    payload_stats_tm->baro_max_altitude = mavlink_msg_payload_stats_tm_get_baro_max_altitude(msg);
+    payload_stats_tm->gps_max_altitude = mavlink_msg_payload_stats_tm_get_gps_max_altitude(msg);
+    payload_stats_tm->drogue_dpl_max_acc = mavlink_msg_payload_stats_tm_get_drogue_dpl_max_acc(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);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_pin_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_pin_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..9a935020691f7fc789271e17aa38b98541212ee3
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_pin_tm.h
@@ -0,0 +1,313 @@
+#pragma once
+// MESSAGE PIN_TM PACKING
+
+#define MAVLINK_MSG_ID_PIN_TM 112
+
+
+typedef struct __mavlink_pin_tm_t {
+ uint64_t timestamp; /*< [ms] 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_112_LEN 19
+#define MAVLINK_MSG_ID_112_MIN_LEN 19
+
+#define MAVLINK_MSG_ID_PIN_TM_CRC 255
+#define MAVLINK_MSG_ID_112_CRC 255
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PIN_TM { \
+    112, \
+    "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 [ms] 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 [ms] 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 [ms] 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 [ms] 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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_ping_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_ping_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..99a2895f9933675f201a98a080067ebf3b33bb66
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_pressure_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_pressure_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..109fbc7112880e3f03177c28a5199d3b358a23de
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_pressure_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE PRESSURE_TM PACKING
+
+#define MAVLINK_MSG_ID_PRESSURE_TM 104
+
+
+typedef struct __mavlink_pressure_tm_t {
+ uint64_t timestamp; /*< [ms] When was this logged*/
+ float pressure; /*< [Pa] Pressure of the digital barometer*/
+ char sensor_id[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_104_LEN 32
+#define MAVLINK_MSG_ID_104_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_PRESSURE_TM_CRC 239
+#define MAVLINK_MSG_ID_104_CRC 239
+
+#define MAVLINK_MSG_PRESSURE_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_PRESSURE_TM { \
+    104, \
+    "PRESSURE_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_pressure_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_pressure_tm_t, sensor_id) }, \
+         { "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_id", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_pressure_tm_t, sensor_id) }, \
+         { "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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id,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_id, 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_id, sensor_id, 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_id, 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_id, pressure_tm->pressure);
+}
+
+/**
+ * @brief Send a pressure_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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_id, 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_id, 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_id, 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_id, sensor_id, 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 [ms] 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_id from pressure_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_pressure_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 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_id(msg, pressure_tm->sensor_id);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_raw_event_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_raw_event_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..fe6d60a1b38e429fc0f0049aa21234613d3c8e99
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_raw_event_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE RAW_EVENT_TC PACKING
+
+#define MAVLINK_MSG_ID_RAW_EVENT_TC 13
+
+
+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_13_LEN 2
+#define MAVLINK_MSG_ID_13_MIN_LEN 2
+
+#define MAVLINK_MSG_ID_RAW_EVENT_TC_CRC 218
+#define MAVLINK_MSG_ID_13_CRC 218
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_RAW_EVENT_TC { \
+    13, \
+    "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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_reset_servo_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_reset_servo_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..3194a30241ddfb4d40efc96b727240c69f4842ac
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_reset_servo_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE RESET_SERVO_TC PACKING
+
+#define MAVLINK_MSG_ID_RESET_SERVO_TC 8
+
+
+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_8_LEN 1
+#define MAVLINK_MSG_ID_8_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_RESET_SERVO_TC_CRC 226
+#define MAVLINK_MSG_ID_8_CRC 226
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_RESET_SERVO_TC { \
+    8, \
+    "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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_rocket_flight_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_rocket_flight_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..86b980afde023af4b2b98d2727a562227a9c9cb1
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_rocket_flight_tm.h
@@ -0,0 +1,1388 @@
+#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; /*< [ms] Timestamp in milliseconds*/
+ 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 msl_altitude; /*< [m] Altitude above mean sea level*/
+ float ada_vert_speed; /*< [m/s] Vertical speed estimated by ADA*/
+ float ada_vert_accel; /*< [m/s^2] Vertical acceleration estimated by ADA*/
+ 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 ab_angle; /*< [deg] Airbrakes angle*/
+ float ab_estimated_cd; /*<  Estimated drag coefficient*/
+ 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 x axis*/
+ float nas_bias_z; /*<  Navigation system gyroscope bias on x axis*/
+ float vbat; /*< [V] Battery voltage*/
+ float temperature; /*< [degC] Temperature*/
+ uint8_t ada_state; /*<  ADA Controller State*/
+ uint8_t fmm_state; /*<  Flight Mode Manager State*/
+ uint8_t dpl_state; /*<  Deployment Controller State*/
+ uint8_t abk_state; /*<  Airbrake FSM state*/
+ uint8_t nas_state; /*<  Navigation System FSM State*/
+ uint8_t gps_fix; /*<  GPS fix (1 = fix, 0 = no fix)*/
+ uint8_t pin_launch; /*<  Launch pin status (1 = connected, 0 = disconnected)*/
+ uint8_t pin_nosecone; /*<  Nosecone pin status (1 = connected, 0 = disconnected)*/
+ uint8_t servo_sensor; /*<  Servo sensor status (1 = actuated, 0 = idle)*/
+ int8_t logger_error; /*<  Logger error (0 = no error, -1 otherwise)*/
+} mavlink_rocket_flight_tm_t;
+
+#define MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_LEN 166
+#define MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_MIN_LEN 166
+#define MAVLINK_MSG_ID_208_LEN 166
+#define MAVLINK_MSG_ID_208_MIN_LEN 166
+
+#define MAVLINK_MSG_ID_ROCKET_FLIGHT_TM_CRC 92
+#define MAVLINK_MSG_ID_208_CRC 92
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ROCKET_FLIGHT_TM { \
+    208, \
+    "ROCKET_FLIGHT_TM", \
+    48, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_rocket_flight_tm_t, timestamp) }, \
+         { "ada_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 156, offsetof(mavlink_rocket_flight_tm_t, ada_state) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 157, offsetof(mavlink_rocket_flight_tm_t, fmm_state) }, \
+         { "dpl_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 158, offsetof(mavlink_rocket_flight_tm_t, dpl_state) }, \
+         { "abk_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 159, offsetof(mavlink_rocket_flight_tm_t, abk_state) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 160, offsetof(mavlink_rocket_flight_tm_t, nas_state) }, \
+         { "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) }, \
+         { "msl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_rocket_flight_tm_t, msl_altitude) }, \
+         { "ada_vert_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_rocket_flight_tm_t, ada_vert_speed) }, \
+         { "ada_vert_accel", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_rocket_flight_tm_t, ada_vert_accel) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_rocket_flight_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_rocket_flight_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_rocket_flight_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_rocket_flight_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_rocket_flight_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_rocket_flight_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_rocket_flight_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_rocket_flight_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_rocket_flight_tm_t, mag_z) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 161, offsetof(mavlink_rocket_flight_tm_t, gps_fix) }, \
+         { "gps_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_rocket_flight_tm_t, gps_lat) }, \
+         { "gps_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_rocket_flight_tm_t, gps_lon) }, \
+         { "gps_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_rocket_flight_tm_t, gps_alt) }, \
+         { "ab_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_rocket_flight_tm_t, ab_angle) }, \
+         { "ab_estimated_cd", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_rocket_flight_tm_t, ab_estimated_cd) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_rocket_flight_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_rocket_flight_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_rocket_flight_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_rocket_flight_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_rocket_flight_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_rocket_flight_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_rocket_flight_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_rocket_flight_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_rocket_flight_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_rocket_flight_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_rocket_flight_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_rocket_flight_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_rocket_flight_tm_t, nas_bias_z) }, \
+         { "pin_launch", NULL, MAVLINK_TYPE_UINT8_T, 0, 162, offsetof(mavlink_rocket_flight_tm_t, pin_launch) }, \
+         { "pin_nosecone", NULL, MAVLINK_TYPE_UINT8_T, 0, 163, offsetof(mavlink_rocket_flight_tm_t, pin_nosecone) }, \
+         { "servo_sensor", NULL, MAVLINK_TYPE_UINT8_T, 0, 164, offsetof(mavlink_rocket_flight_tm_t, servo_sensor) }, \
+         { "vbat", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_rocket_flight_tm_t, vbat) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 152, offsetof(mavlink_rocket_flight_tm_t, temperature) }, \
+         { "logger_error", NULL, MAVLINK_TYPE_INT8_T, 0, 165, offsetof(mavlink_rocket_flight_tm_t, logger_error) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ROCKET_FLIGHT_TM { \
+    "ROCKET_FLIGHT_TM", \
+    48, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_rocket_flight_tm_t, timestamp) }, \
+         { "ada_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 156, offsetof(mavlink_rocket_flight_tm_t, ada_state) }, \
+         { "fmm_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 157, offsetof(mavlink_rocket_flight_tm_t, fmm_state) }, \
+         { "dpl_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 158, offsetof(mavlink_rocket_flight_tm_t, dpl_state) }, \
+         { "abk_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 159, offsetof(mavlink_rocket_flight_tm_t, abk_state) }, \
+         { "nas_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 160, offsetof(mavlink_rocket_flight_tm_t, nas_state) }, \
+         { "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) }, \
+         { "msl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_rocket_flight_tm_t, msl_altitude) }, \
+         { "ada_vert_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_rocket_flight_tm_t, ada_vert_speed) }, \
+         { "ada_vert_accel", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_rocket_flight_tm_t, ada_vert_accel) }, \
+         { "acc_x", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_rocket_flight_tm_t, acc_x) }, \
+         { "acc_y", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_rocket_flight_tm_t, acc_y) }, \
+         { "acc_z", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_rocket_flight_tm_t, acc_z) }, \
+         { "gyro_x", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_rocket_flight_tm_t, gyro_x) }, \
+         { "gyro_y", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_rocket_flight_tm_t, gyro_y) }, \
+         { "gyro_z", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_rocket_flight_tm_t, gyro_z) }, \
+         { "mag_x", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_rocket_flight_tm_t, mag_x) }, \
+         { "mag_y", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_rocket_flight_tm_t, mag_y) }, \
+         { "mag_z", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_rocket_flight_tm_t, mag_z) }, \
+         { "gps_fix", NULL, MAVLINK_TYPE_UINT8_T, 0, 161, offsetof(mavlink_rocket_flight_tm_t, gps_fix) }, \
+         { "gps_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_rocket_flight_tm_t, gps_lat) }, \
+         { "gps_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_rocket_flight_tm_t, gps_lon) }, \
+         { "gps_alt", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_rocket_flight_tm_t, gps_alt) }, \
+         { "ab_angle", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_rocket_flight_tm_t, ab_angle) }, \
+         { "ab_estimated_cd", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_rocket_flight_tm_t, ab_estimated_cd) }, \
+         { "nas_n", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_rocket_flight_tm_t, nas_n) }, \
+         { "nas_e", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_rocket_flight_tm_t, nas_e) }, \
+         { "nas_d", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_rocket_flight_tm_t, nas_d) }, \
+         { "nas_vn", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_rocket_flight_tm_t, nas_vn) }, \
+         { "nas_ve", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_rocket_flight_tm_t, nas_ve) }, \
+         { "nas_vd", NULL, MAVLINK_TYPE_FLOAT, 0, 116, offsetof(mavlink_rocket_flight_tm_t, nas_vd) }, \
+         { "nas_qx", NULL, MAVLINK_TYPE_FLOAT, 0, 120, offsetof(mavlink_rocket_flight_tm_t, nas_qx) }, \
+         { "nas_qy", NULL, MAVLINK_TYPE_FLOAT, 0, 124, offsetof(mavlink_rocket_flight_tm_t, nas_qy) }, \
+         { "nas_qz", NULL, MAVLINK_TYPE_FLOAT, 0, 128, offsetof(mavlink_rocket_flight_tm_t, nas_qz) }, \
+         { "nas_qw", NULL, MAVLINK_TYPE_FLOAT, 0, 132, offsetof(mavlink_rocket_flight_tm_t, nas_qw) }, \
+         { "nas_bias_x", NULL, MAVLINK_TYPE_FLOAT, 0, 136, offsetof(mavlink_rocket_flight_tm_t, nas_bias_x) }, \
+         { "nas_bias_y", NULL, MAVLINK_TYPE_FLOAT, 0, 140, offsetof(mavlink_rocket_flight_tm_t, nas_bias_y) }, \
+         { "nas_bias_z", NULL, MAVLINK_TYPE_FLOAT, 0, 144, offsetof(mavlink_rocket_flight_tm_t, nas_bias_z) }, \
+         { "pin_launch", NULL, MAVLINK_TYPE_UINT8_T, 0, 162, offsetof(mavlink_rocket_flight_tm_t, pin_launch) }, \
+         { "pin_nosecone", NULL, MAVLINK_TYPE_UINT8_T, 0, 163, offsetof(mavlink_rocket_flight_tm_t, pin_nosecone) }, \
+         { "servo_sensor", NULL, MAVLINK_TYPE_UINT8_T, 0, 164, offsetof(mavlink_rocket_flight_tm_t, servo_sensor) }, \
+         { "vbat", NULL, MAVLINK_TYPE_FLOAT, 0, 148, offsetof(mavlink_rocket_flight_tm_t, vbat) }, \
+         { "temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 152, offsetof(mavlink_rocket_flight_tm_t, temperature) }, \
+         { "logger_error", NULL, MAVLINK_TYPE_INT8_T, 0, 165, offsetof(mavlink_rocket_flight_tm_t, logger_error) }, \
+         } \
+}
+#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 [ms] Timestamp in milliseconds
+ * @param ada_state  ADA Controller State
+ * @param fmm_state  Flight Mode Manager State
+ * @param dpl_state  Deployment Controller State
+ * @param abk_state  Airbrake FSM state
+ * @param nas_state  Navigation System FSM State
+ * @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 msl_altitude [m] Altitude above mean sea level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param ada_vert_accel [m/s^2] Vertical acceleration estimated by ADA
+ * @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  GPS fix (1 = fix, 0 = no fix)
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param ab_angle [deg] Airbrakes angle
+ * @param ab_estimated_cd  Estimated drag coefficient
+ * @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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x axis
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param servo_sensor  Servo sensor status (1 = actuated, 0 = idle)
+ * @param vbat [V] Battery voltage
+ * @param temperature [degC] Temperature
+ * @param logger_error  Logger error (0 = no error, -1 otherwise)
+ * @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, uint8_t ada_state, uint8_t fmm_state, uint8_t dpl_state, uint8_t abk_state, uint8_t nas_state, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float msl_altitude, float ada_vert_speed, float ada_vert_accel, 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, float ab_angle, float ab_estimated_cd, 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, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t servo_sensor, float vbat, float temperature, int8_t logger_error)
+{
+#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, msl_altitude);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, ada_vert_accel);
+    _mav_put_float(buf, 40, acc_x);
+    _mav_put_float(buf, 44, acc_y);
+    _mav_put_float(buf, 48, acc_z);
+    _mav_put_float(buf, 52, gyro_x);
+    _mav_put_float(buf, 56, gyro_y);
+    _mav_put_float(buf, 60, gyro_z);
+    _mav_put_float(buf, 64, mag_x);
+    _mav_put_float(buf, 68, mag_y);
+    _mav_put_float(buf, 72, mag_z);
+    _mav_put_float(buf, 76, gps_lat);
+    _mav_put_float(buf, 80, gps_lon);
+    _mav_put_float(buf, 84, gps_alt);
+    _mav_put_float(buf, 88, ab_angle);
+    _mav_put_float(buf, 92, ab_estimated_cd);
+    _mav_put_float(buf, 96, nas_n);
+    _mav_put_float(buf, 100, nas_e);
+    _mav_put_float(buf, 104, nas_d);
+    _mav_put_float(buf, 108, nas_vn);
+    _mav_put_float(buf, 112, nas_ve);
+    _mav_put_float(buf, 116, nas_vd);
+    _mav_put_float(buf, 120, nas_qx);
+    _mav_put_float(buf, 124, nas_qy);
+    _mav_put_float(buf, 128, nas_qz);
+    _mav_put_float(buf, 132, nas_qw);
+    _mav_put_float(buf, 136, nas_bias_x);
+    _mav_put_float(buf, 140, nas_bias_y);
+    _mav_put_float(buf, 144, nas_bias_z);
+    _mav_put_float(buf, 148, vbat);
+    _mav_put_float(buf, 152, temperature);
+    _mav_put_uint8_t(buf, 156, ada_state);
+    _mav_put_uint8_t(buf, 157, fmm_state);
+    _mav_put_uint8_t(buf, 158, dpl_state);
+    _mav_put_uint8_t(buf, 159, abk_state);
+    _mav_put_uint8_t(buf, 160, nas_state);
+    _mav_put_uint8_t(buf, 161, gps_fix);
+    _mav_put_uint8_t(buf, 162, pin_launch);
+    _mav_put_uint8_t(buf, 163, pin_nosecone);
+    _mav_put_uint8_t(buf, 164, servo_sensor);
+    _mav_put_int8_t(buf, 165, logger_error);
+
+        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.msl_altitude = msl_altitude;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.ada_vert_accel = ada_vert_accel;
+    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.ab_angle = ab_angle;
+    packet.ab_estimated_cd = ab_estimated_cd;
+    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.vbat = vbat;
+    packet.temperature = temperature;
+    packet.ada_state = ada_state;
+    packet.fmm_state = fmm_state;
+    packet.dpl_state = dpl_state;
+    packet.abk_state = abk_state;
+    packet.nas_state = nas_state;
+    packet.gps_fix = gps_fix;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.servo_sensor = servo_sensor;
+    packet.logger_error = logger_error;
+
+        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 [ms] Timestamp in milliseconds
+ * @param ada_state  ADA Controller State
+ * @param fmm_state  Flight Mode Manager State
+ * @param dpl_state  Deployment Controller State
+ * @param abk_state  Airbrake FSM state
+ * @param nas_state  Navigation System FSM State
+ * @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 msl_altitude [m] Altitude above mean sea level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param ada_vert_accel [m/s^2] Vertical acceleration estimated by ADA
+ * @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  GPS fix (1 = fix, 0 = no fix)
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param ab_angle [deg] Airbrakes angle
+ * @param ab_estimated_cd  Estimated drag coefficient
+ * @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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x axis
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param servo_sensor  Servo sensor status (1 = actuated, 0 = idle)
+ * @param vbat [V] Battery voltage
+ * @param temperature [degC] Temperature
+ * @param logger_error  Logger error (0 = no error, -1 otherwise)
+ * @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,uint8_t ada_state,uint8_t fmm_state,uint8_t dpl_state,uint8_t abk_state,uint8_t nas_state,float pressure_ada,float pressure_digi,float pressure_static,float pressure_dpl,float airspeed_pitot,float msl_altitude,float ada_vert_speed,float ada_vert_accel,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,float ab_angle,float ab_estimated_cd,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,uint8_t pin_launch,uint8_t pin_nosecone,uint8_t servo_sensor,float vbat,float temperature,int8_t logger_error)
+{
+#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, msl_altitude);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, ada_vert_accel);
+    _mav_put_float(buf, 40, acc_x);
+    _mav_put_float(buf, 44, acc_y);
+    _mav_put_float(buf, 48, acc_z);
+    _mav_put_float(buf, 52, gyro_x);
+    _mav_put_float(buf, 56, gyro_y);
+    _mav_put_float(buf, 60, gyro_z);
+    _mav_put_float(buf, 64, mag_x);
+    _mav_put_float(buf, 68, mag_y);
+    _mav_put_float(buf, 72, mag_z);
+    _mav_put_float(buf, 76, gps_lat);
+    _mav_put_float(buf, 80, gps_lon);
+    _mav_put_float(buf, 84, gps_alt);
+    _mav_put_float(buf, 88, ab_angle);
+    _mav_put_float(buf, 92, ab_estimated_cd);
+    _mav_put_float(buf, 96, nas_n);
+    _mav_put_float(buf, 100, nas_e);
+    _mav_put_float(buf, 104, nas_d);
+    _mav_put_float(buf, 108, nas_vn);
+    _mav_put_float(buf, 112, nas_ve);
+    _mav_put_float(buf, 116, nas_vd);
+    _mav_put_float(buf, 120, nas_qx);
+    _mav_put_float(buf, 124, nas_qy);
+    _mav_put_float(buf, 128, nas_qz);
+    _mav_put_float(buf, 132, nas_qw);
+    _mav_put_float(buf, 136, nas_bias_x);
+    _mav_put_float(buf, 140, nas_bias_y);
+    _mav_put_float(buf, 144, nas_bias_z);
+    _mav_put_float(buf, 148, vbat);
+    _mav_put_float(buf, 152, temperature);
+    _mav_put_uint8_t(buf, 156, ada_state);
+    _mav_put_uint8_t(buf, 157, fmm_state);
+    _mav_put_uint8_t(buf, 158, dpl_state);
+    _mav_put_uint8_t(buf, 159, abk_state);
+    _mav_put_uint8_t(buf, 160, nas_state);
+    _mav_put_uint8_t(buf, 161, gps_fix);
+    _mav_put_uint8_t(buf, 162, pin_launch);
+    _mav_put_uint8_t(buf, 163, pin_nosecone);
+    _mav_put_uint8_t(buf, 164, servo_sensor);
+    _mav_put_int8_t(buf, 165, logger_error);
+
+        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.msl_altitude = msl_altitude;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.ada_vert_accel = ada_vert_accel;
+    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.ab_angle = ab_angle;
+    packet.ab_estimated_cd = ab_estimated_cd;
+    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.vbat = vbat;
+    packet.temperature = temperature;
+    packet.ada_state = ada_state;
+    packet.fmm_state = fmm_state;
+    packet.dpl_state = dpl_state;
+    packet.abk_state = abk_state;
+    packet.nas_state = nas_state;
+    packet.gps_fix = gps_fix;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.servo_sensor = servo_sensor;
+    packet.logger_error = logger_error;
+
+        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->ada_state, rocket_flight_tm->fmm_state, rocket_flight_tm->dpl_state, rocket_flight_tm->abk_state, rocket_flight_tm->nas_state, 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->msl_altitude, rocket_flight_tm->ada_vert_speed, rocket_flight_tm->ada_vert_accel, 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->gps_fix, rocket_flight_tm->gps_lat, rocket_flight_tm->gps_lon, rocket_flight_tm->gps_alt, rocket_flight_tm->ab_angle, rocket_flight_tm->ab_estimated_cd, 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->pin_launch, rocket_flight_tm->pin_nosecone, rocket_flight_tm->servo_sensor, rocket_flight_tm->vbat, rocket_flight_tm->temperature, rocket_flight_tm->logger_error);
+}
+
+/**
+ * @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->ada_state, rocket_flight_tm->fmm_state, rocket_flight_tm->dpl_state, rocket_flight_tm->abk_state, rocket_flight_tm->nas_state, 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->msl_altitude, rocket_flight_tm->ada_vert_speed, rocket_flight_tm->ada_vert_accel, 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->gps_fix, rocket_flight_tm->gps_lat, rocket_flight_tm->gps_lon, rocket_flight_tm->gps_alt, rocket_flight_tm->ab_angle, rocket_flight_tm->ab_estimated_cd, 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->pin_launch, rocket_flight_tm->pin_nosecone, rocket_flight_tm->servo_sensor, rocket_flight_tm->vbat, rocket_flight_tm->temperature, rocket_flight_tm->logger_error);
+}
+
+/**
+ * @brief Send a rocket_flight_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] Timestamp in milliseconds
+ * @param ada_state  ADA Controller State
+ * @param fmm_state  Flight Mode Manager State
+ * @param dpl_state  Deployment Controller State
+ * @param abk_state  Airbrake FSM state
+ * @param nas_state  Navigation System FSM State
+ * @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 msl_altitude [m] Altitude above mean sea level
+ * @param ada_vert_speed [m/s] Vertical speed estimated by ADA
+ * @param ada_vert_accel [m/s^2] Vertical acceleration estimated by ADA
+ * @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  GPS fix (1 = fix, 0 = no fix)
+ * @param gps_lat [deg] Latitude
+ * @param gps_lon [deg] Longitude
+ * @param gps_alt [m] GPS Altitude
+ * @param ab_angle [deg] Airbrakes angle
+ * @param ab_estimated_cd  Estimated drag coefficient
+ * @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 x axis
+ * @param nas_bias_z  Navigation system gyroscope bias on x axis
+ * @param pin_launch  Launch pin status (1 = connected, 0 = disconnected)
+ * @param pin_nosecone  Nosecone pin status (1 = connected, 0 = disconnected)
+ * @param servo_sensor  Servo sensor status (1 = actuated, 0 = idle)
+ * @param vbat [V] Battery voltage
+ * @param temperature [degC] Temperature
+ * @param logger_error  Logger error (0 = no error, -1 otherwise)
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_rocket_flight_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t ada_state, uint8_t fmm_state, uint8_t dpl_state, uint8_t abk_state, uint8_t nas_state, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float msl_altitude, float ada_vert_speed, float ada_vert_accel, 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, float ab_angle, float ab_estimated_cd, 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, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t servo_sensor, float vbat, float temperature, int8_t logger_error)
+{
+#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, msl_altitude);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, ada_vert_accel);
+    _mav_put_float(buf, 40, acc_x);
+    _mav_put_float(buf, 44, acc_y);
+    _mav_put_float(buf, 48, acc_z);
+    _mav_put_float(buf, 52, gyro_x);
+    _mav_put_float(buf, 56, gyro_y);
+    _mav_put_float(buf, 60, gyro_z);
+    _mav_put_float(buf, 64, mag_x);
+    _mav_put_float(buf, 68, mag_y);
+    _mav_put_float(buf, 72, mag_z);
+    _mav_put_float(buf, 76, gps_lat);
+    _mav_put_float(buf, 80, gps_lon);
+    _mav_put_float(buf, 84, gps_alt);
+    _mav_put_float(buf, 88, ab_angle);
+    _mav_put_float(buf, 92, ab_estimated_cd);
+    _mav_put_float(buf, 96, nas_n);
+    _mav_put_float(buf, 100, nas_e);
+    _mav_put_float(buf, 104, nas_d);
+    _mav_put_float(buf, 108, nas_vn);
+    _mav_put_float(buf, 112, nas_ve);
+    _mav_put_float(buf, 116, nas_vd);
+    _mav_put_float(buf, 120, nas_qx);
+    _mav_put_float(buf, 124, nas_qy);
+    _mav_put_float(buf, 128, nas_qz);
+    _mav_put_float(buf, 132, nas_qw);
+    _mav_put_float(buf, 136, nas_bias_x);
+    _mav_put_float(buf, 140, nas_bias_y);
+    _mav_put_float(buf, 144, nas_bias_z);
+    _mav_put_float(buf, 148, vbat);
+    _mav_put_float(buf, 152, temperature);
+    _mav_put_uint8_t(buf, 156, ada_state);
+    _mav_put_uint8_t(buf, 157, fmm_state);
+    _mav_put_uint8_t(buf, 158, dpl_state);
+    _mav_put_uint8_t(buf, 159, abk_state);
+    _mav_put_uint8_t(buf, 160, nas_state);
+    _mav_put_uint8_t(buf, 161, gps_fix);
+    _mav_put_uint8_t(buf, 162, pin_launch);
+    _mav_put_uint8_t(buf, 163, pin_nosecone);
+    _mav_put_uint8_t(buf, 164, servo_sensor);
+    _mav_put_int8_t(buf, 165, logger_error);
+
+    _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.msl_altitude = msl_altitude;
+    packet.ada_vert_speed = ada_vert_speed;
+    packet.ada_vert_accel = ada_vert_accel;
+    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.ab_angle = ab_angle;
+    packet.ab_estimated_cd = ab_estimated_cd;
+    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.vbat = vbat;
+    packet.temperature = temperature;
+    packet.ada_state = ada_state;
+    packet.fmm_state = fmm_state;
+    packet.dpl_state = dpl_state;
+    packet.abk_state = abk_state;
+    packet.nas_state = nas_state;
+    packet.gps_fix = gps_fix;
+    packet.pin_launch = pin_launch;
+    packet.pin_nosecone = pin_nosecone;
+    packet.servo_sensor = servo_sensor;
+    packet.logger_error = logger_error;
+
+    _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->ada_state, rocket_flight_tm->fmm_state, rocket_flight_tm->dpl_state, rocket_flight_tm->abk_state, rocket_flight_tm->nas_state, 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->msl_altitude, rocket_flight_tm->ada_vert_speed, rocket_flight_tm->ada_vert_accel, 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->gps_fix, rocket_flight_tm->gps_lat, rocket_flight_tm->gps_lon, rocket_flight_tm->gps_alt, rocket_flight_tm->ab_angle, rocket_flight_tm->ab_estimated_cd, 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->pin_launch, rocket_flight_tm->pin_nosecone, rocket_flight_tm->servo_sensor, rocket_flight_tm->vbat, rocket_flight_tm->temperature, rocket_flight_tm->logger_error);
+#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, uint8_t ada_state, uint8_t fmm_state, uint8_t dpl_state, uint8_t abk_state, uint8_t nas_state, float pressure_ada, float pressure_digi, float pressure_static, float pressure_dpl, float airspeed_pitot, float msl_altitude, float ada_vert_speed, float ada_vert_accel, 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, float ab_angle, float ab_estimated_cd, 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, uint8_t pin_launch, uint8_t pin_nosecone, uint8_t servo_sensor, float vbat, float temperature, int8_t logger_error)
+{
+#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, msl_altitude);
+    _mav_put_float(buf, 32, ada_vert_speed);
+    _mav_put_float(buf, 36, ada_vert_accel);
+    _mav_put_float(buf, 40, acc_x);
+    _mav_put_float(buf, 44, acc_y);
+    _mav_put_float(buf, 48, acc_z);
+    _mav_put_float(buf, 52, gyro_x);
+    _mav_put_float(buf, 56, gyro_y);
+    _mav_put_float(buf, 60, gyro_z);
+    _mav_put_float(buf, 64, mag_x);
+    _mav_put_float(buf, 68, mag_y);
+    _mav_put_float(buf, 72, mag_z);
+    _mav_put_float(buf, 76, gps_lat);
+    _mav_put_float(buf, 80, gps_lon);
+    _mav_put_float(buf, 84, gps_alt);
+    _mav_put_float(buf, 88, ab_angle);
+    _mav_put_float(buf, 92, ab_estimated_cd);
+    _mav_put_float(buf, 96, nas_n);
+    _mav_put_float(buf, 100, nas_e);
+    _mav_put_float(buf, 104, nas_d);
+    _mav_put_float(buf, 108, nas_vn);
+    _mav_put_float(buf, 112, nas_ve);
+    _mav_put_float(buf, 116, nas_vd);
+    _mav_put_float(buf, 120, nas_qx);
+    _mav_put_float(buf, 124, nas_qy);
+    _mav_put_float(buf, 128, nas_qz);
+    _mav_put_float(buf, 132, nas_qw);
+    _mav_put_float(buf, 136, nas_bias_x);
+    _mav_put_float(buf, 140, nas_bias_y);
+    _mav_put_float(buf, 144, nas_bias_z);
+    _mav_put_float(buf, 148, vbat);
+    _mav_put_float(buf, 152, temperature);
+    _mav_put_uint8_t(buf, 156, ada_state);
+    _mav_put_uint8_t(buf, 157, fmm_state);
+    _mav_put_uint8_t(buf, 158, dpl_state);
+    _mav_put_uint8_t(buf, 159, abk_state);
+    _mav_put_uint8_t(buf, 160, nas_state);
+    _mav_put_uint8_t(buf, 161, gps_fix);
+    _mav_put_uint8_t(buf, 162, pin_launch);
+    _mav_put_uint8_t(buf, 163, pin_nosecone);
+    _mav_put_uint8_t(buf, 164, servo_sensor);
+    _mav_put_int8_t(buf, 165, logger_error);
+
+    _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->msl_altitude = msl_altitude;
+    packet->ada_vert_speed = ada_vert_speed;
+    packet->ada_vert_accel = ada_vert_accel;
+    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->ab_angle = ab_angle;
+    packet->ab_estimated_cd = ab_estimated_cd;
+    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->vbat = vbat;
+    packet->temperature = temperature;
+    packet->ada_state = ada_state;
+    packet->fmm_state = fmm_state;
+    packet->dpl_state = dpl_state;
+    packet->abk_state = abk_state;
+    packet->nas_state = nas_state;
+    packet->gps_fix = gps_fix;
+    packet->pin_launch = pin_launch;
+    packet->pin_nosecone = pin_nosecone;
+    packet->servo_sensor = servo_sensor;
+    packet->logger_error = logger_error;
+
+    _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 [ms] Timestamp in milliseconds
+ */
+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 ada_state from rocket_flight_tm message
+ *
+ * @return  ADA Controller State
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_ada_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  156);
+}
+
+/**
+ * @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,  157);
+}
+
+/**
+ * @brief Get field dpl_state from rocket_flight_tm message
+ *
+ * @return  Deployment Controller State
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_dpl_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  158);
+}
+
+/**
+ * @brief Get field abk_state from rocket_flight_tm message
+ *
+ * @return  Airbrake FSM state
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_abk_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  159);
+}
+
+/**
+ * @brief Get field nas_state from rocket_flight_tm message
+ *
+ * @return  Navigation System FSM State
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_nas_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  160);
+}
+
+/**
+ * @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 msl_altitude from rocket_flight_tm message
+ *
+ * @return [m] Altitude above mean sea level
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_msl_altitude(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 ada_vert_accel from rocket_flight_tm message
+ *
+ * @return [m/s^2] Vertical acceleration estimated by ADA
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_ada_vert_accel(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  36);
+}
+
+/**
+ * @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,  40);
+}
+
+/**
+ * @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,  44);
+}
+
+/**
+ * @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,  48);
+}
+
+/**
+ * @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,  52);
+}
+
+/**
+ * @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,  56);
+}
+
+/**
+ * @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,  60);
+}
+
+/**
+ * @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,  64);
+}
+
+/**
+ * @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,  68);
+}
+
+/**
+ * @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,  72);
+}
+
+/**
+ * @brief Get field gps_fix from rocket_flight_tm message
+ *
+ * @return  GPS fix (1 = fix, 0 = no fix)
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_gps_fix(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  161);
+}
+
+/**
+ * @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,  76);
+}
+
+/**
+ * @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,  80);
+}
+
+/**
+ * @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,  84);
+}
+
+/**
+ * @brief Get field ab_angle from rocket_flight_tm message
+ *
+ * @return [deg] Airbrakes angle
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_ab_angle(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  88);
+}
+
+/**
+ * @brief Get field ab_estimated_cd from rocket_flight_tm message
+ *
+ * @return  Estimated drag coefficient
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_ab_estimated_cd(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  92);
+}
+
+/**
+ * @brief Get field nas_n from rocket_flight_tm message
+ *
+ * @return [deg] Navigation system estimated noth position
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_n(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  96);
+}
+
+/**
+ * @brief Get field nas_e from rocket_flight_tm message
+ *
+ * @return [deg] Navigation system estimated east position
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_e(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  100);
+}
+
+/**
+ * @brief Get field nas_d from rocket_flight_tm message
+ *
+ * @return [m] Navigation system estimated down position
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_d(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  104);
+}
+
+/**
+ * @brief Get field nas_vn from rocket_flight_tm message
+ *
+ * @return [m/s] Navigation system estimated north velocity
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_vn(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  108);
+}
+
+/**
+ * @brief Get field nas_ve from rocket_flight_tm message
+ *
+ * @return [m/s] Navigation system estimated east velocity
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_ve(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  112);
+}
+
+/**
+ * @brief Get field nas_vd from rocket_flight_tm message
+ *
+ * @return [m/s] Navigation system estimated down velocity
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_vd(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  116);
+}
+
+/**
+ * @brief Get field nas_qx from rocket_flight_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qx)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_qx(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  120);
+}
+
+/**
+ * @brief Get field nas_qy from rocket_flight_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qy)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_qy(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  124);
+}
+
+/**
+ * @brief Get field nas_qz from rocket_flight_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qz)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_qz(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  128);
+}
+
+/**
+ * @brief Get field nas_qw from rocket_flight_tm message
+ *
+ * @return [deg] Navigation system estimated attitude (qw)
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_qw(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  132);
+}
+
+/**
+ * @brief Get field nas_bias_x from rocket_flight_tm message
+ *
+ * @return  Navigation system 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,  136);
+}
+
+/**
+ * @brief Get field nas_bias_y from rocket_flight_tm message
+ *
+ * @return  Navigation system gyroscope bias on x axis
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_bias_y(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  140);
+}
+
+/**
+ * @brief Get field nas_bias_z from rocket_flight_tm message
+ *
+ * @return  Navigation system gyroscope bias on x axis
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_nas_bias_z(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  144);
+}
+
+/**
+ * @brief Get field pin_launch from rocket_flight_tm message
+ *
+ * @return  Launch pin status (1 = connected, 0 = disconnected)
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_pin_launch(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  162);
+}
+
+/**
+ * @brief Get field pin_nosecone from rocket_flight_tm message
+ *
+ * @return  Nosecone pin status (1 = connected, 0 = disconnected)
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_pin_nosecone(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  163);
+}
+
+/**
+ * @brief Get field servo_sensor from rocket_flight_tm message
+ *
+ * @return  Servo sensor status (1 = actuated, 0 = idle)
+ */
+static inline uint8_t mavlink_msg_rocket_flight_tm_get_servo_sensor(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  164);
+}
+
+/**
+ * @brief Get field vbat from rocket_flight_tm message
+ *
+ * @return [V] Battery voltage
+ */
+static inline float mavlink_msg_rocket_flight_tm_get_vbat(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  148);
+}
+
+/**
+ * @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,  152);
+}
+
+/**
+ * @brief Get field logger_error from rocket_flight_tm message
+ *
+ * @return  Logger error (0 = no error, -1 otherwise)
+ */
+static inline int8_t mavlink_msg_rocket_flight_tm_get_logger_error(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_int8_t(msg,  165);
+}
+
+/**
+ * @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->msl_altitude = mavlink_msg_rocket_flight_tm_get_msl_altitude(msg);
+    rocket_flight_tm->ada_vert_speed = mavlink_msg_rocket_flight_tm_get_ada_vert_speed(msg);
+    rocket_flight_tm->ada_vert_accel = mavlink_msg_rocket_flight_tm_get_ada_vert_accel(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->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->ab_angle = mavlink_msg_rocket_flight_tm_get_ab_angle(msg);
+    rocket_flight_tm->ab_estimated_cd = mavlink_msg_rocket_flight_tm_get_ab_estimated_cd(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->vbat = mavlink_msg_rocket_flight_tm_get_vbat(msg);
+    rocket_flight_tm->temperature = mavlink_msg_rocket_flight_tm_get_temperature(msg);
+    rocket_flight_tm->ada_state = mavlink_msg_rocket_flight_tm_get_ada_state(msg);
+    rocket_flight_tm->fmm_state = mavlink_msg_rocket_flight_tm_get_fmm_state(msg);
+    rocket_flight_tm->dpl_state = mavlink_msg_rocket_flight_tm_get_dpl_state(msg);
+    rocket_flight_tm->abk_state = mavlink_msg_rocket_flight_tm_get_abk_state(msg);
+    rocket_flight_tm->nas_state = mavlink_msg_rocket_flight_tm_get_nas_state(msg);
+    rocket_flight_tm->gps_fix = mavlink_msg_rocket_flight_tm_get_gps_fix(msg);
+    rocket_flight_tm->pin_launch = mavlink_msg_rocket_flight_tm_get_pin_launch(msg);
+    rocket_flight_tm->pin_nosecone = mavlink_msg_rocket_flight_tm_get_pin_nosecone(msg);
+    rocket_flight_tm->servo_sensor = mavlink_msg_rocket_flight_tm_get_servo_sensor(msg);
+    rocket_flight_tm->logger_error = mavlink_msg_rocket_flight_tm_get_logger_error(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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_rocket_stats_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_rocket_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..bf80eda87f768a6bfe8384d783d43c151741ff8e
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_rocket_stats_tm.h
@@ -0,0 +1,788 @@
+#pragma once
+// MESSAGE ROCKET_STATS_TM PACKING
+
+#define MAVLINK_MSG_ID_ROCKET_STATS_TM 210
+
+
+typedef struct __mavlink_rocket_stats_tm_t {
+ uint64_t liftoff_ts; /*< [ms] System clock at liftoff*/
+ uint64_t liftoff_max_acc_ts; /*< [ms] System clock at the maximum liftoff acceleration*/
+ uint64_t max_z_speed_ts; /*< [ms] System clock at ADA max vertical speed*/
+ uint64_t apogee_ts; /*< [ms] System clock at apogee*/
+ uint64_t drogue_dpl_ts; /*< [ms] System clock at drouge deployment*/
+ uint64_t main_dpl_altitude_ts; /*< [ms] System clock at main chute deployment*/
+ float liftoff_max_acc; /*< [m/s2] Maximum liftoff acceleration*/
+ float max_z_speed; /*< [m/s] Max measured vertical speed - ADA*/
+ float max_airspeed_pitot; /*< [m/s] Max speed read by the pitot tube*/
+ float max_speed_altitude; /*< [m] Altitude at max speed*/
+ float apogee_lat; /*< [deg] Apogee latitude*/
+ float apogee_lon; /*< [deg] Apogee longitude*/
+ float static_min_pressure; /*< [Pa] Apogee pressure - Static ports*/
+ float digital_min_pressure; /*< [Pa] Apogee pressure - Digital barometer*/
+ float ada_min_pressure; /*< [Pa] Apogee pressure - ADA filtered*/
+ float baro_max_altitude; /*< [m] Apogee altitude - Digital barometer*/
+ float gps_max_altitude; /*< [m] Apogee altitude - GPS*/
+ float drogue_dpl_max_acc; /*< [m/s2] Max acceleration during drouge deployment*/
+ float dpl_vane_max_pressure; /*< [Pa] Max pressure in the deployment bay during drogue deployment*/
+ float main_dpl_altitude; /*< [m] Altittude at main deployment (m.s.l)*/
+ float main_dpl_zspeed; /*< [m/s] Vertical speed at main deployment (sensor z axis)*/
+ float main_dpl_acc; /*< [m/s2] Max measured vertical acceleration (sensor z axis) after main parachute deployment*/
+ float cpu_load; /*<  CPU load in percentage*/
+ uint32_t free_heap; /*<  Amount of available heap in memory*/
+} mavlink_rocket_stats_tm_t;
+
+#define MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN 120
+#define MAVLINK_MSG_ID_ROCKET_STATS_TM_MIN_LEN 120
+#define MAVLINK_MSG_ID_210_LEN 120
+#define MAVLINK_MSG_ID_210_MIN_LEN 120
+
+#define MAVLINK_MSG_ID_ROCKET_STATS_TM_CRC 169
+#define MAVLINK_MSG_ID_210_CRC 169
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_ROCKET_STATS_TM { \
+    210, \
+    "ROCKET_STATS_TM", \
+    24, \
+    {  { "liftoff_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_rocket_stats_tm_t, liftoff_ts) }, \
+         { "liftoff_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_rocket_stats_tm_t, liftoff_max_acc_ts) }, \
+         { "liftoff_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_rocket_stats_tm_t, liftoff_max_acc) }, \
+         { "max_z_speed_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_rocket_stats_tm_t, max_z_speed_ts) }, \
+         { "max_z_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_rocket_stats_tm_t, max_z_speed) }, \
+         { "max_airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_rocket_stats_tm_t, max_airspeed_pitot) }, \
+         { "max_speed_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_rocket_stats_tm_t, max_speed_altitude) }, \
+         { "apogee_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 24, offsetof(mavlink_rocket_stats_tm_t, apogee_ts) }, \
+         { "apogee_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_rocket_stats_tm_t, apogee_lat) }, \
+         { "apogee_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_rocket_stats_tm_t, apogee_lon) }, \
+         { "static_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_rocket_stats_tm_t, static_min_pressure) }, \
+         { "digital_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_rocket_stats_tm_t, digital_min_pressure) }, \
+         { "ada_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_rocket_stats_tm_t, ada_min_pressure) }, \
+         { "baro_max_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_rocket_stats_tm_t, baro_max_altitude) }, \
+         { "gps_max_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_rocket_stats_tm_t, gps_max_altitude) }, \
+         { "drogue_dpl_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 32, offsetof(mavlink_rocket_stats_tm_t, drogue_dpl_ts) }, \
+         { "drogue_dpl_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_rocket_stats_tm_t, drogue_dpl_max_acc) }, \
+         { "dpl_vane_max_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_rocket_stats_tm_t, dpl_vane_max_pressure) }, \
+         { "main_dpl_altitude_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 40, offsetof(mavlink_rocket_stats_tm_t, main_dpl_altitude_ts) }, \
+         { "main_dpl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_rocket_stats_tm_t, main_dpl_altitude) }, \
+         { "main_dpl_zspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_rocket_stats_tm_t, main_dpl_zspeed) }, \
+         { "main_dpl_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_rocket_stats_tm_t, main_dpl_acc) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_rocket_stats_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 116, offsetof(mavlink_rocket_stats_tm_t, free_heap) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_ROCKET_STATS_TM { \
+    "ROCKET_STATS_TM", \
+    24, \
+    {  { "liftoff_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_rocket_stats_tm_t, liftoff_ts) }, \
+         { "liftoff_max_acc_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_rocket_stats_tm_t, liftoff_max_acc_ts) }, \
+         { "liftoff_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_rocket_stats_tm_t, liftoff_max_acc) }, \
+         { "max_z_speed_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_rocket_stats_tm_t, max_z_speed_ts) }, \
+         { "max_z_speed", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_rocket_stats_tm_t, max_z_speed) }, \
+         { "max_airspeed_pitot", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_rocket_stats_tm_t, max_airspeed_pitot) }, \
+         { "max_speed_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_rocket_stats_tm_t, max_speed_altitude) }, \
+         { "apogee_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 24, offsetof(mavlink_rocket_stats_tm_t, apogee_ts) }, \
+         { "apogee_lat", NULL, MAVLINK_TYPE_FLOAT, 0, 64, offsetof(mavlink_rocket_stats_tm_t, apogee_lat) }, \
+         { "apogee_lon", NULL, MAVLINK_TYPE_FLOAT, 0, 68, offsetof(mavlink_rocket_stats_tm_t, apogee_lon) }, \
+         { "static_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 72, offsetof(mavlink_rocket_stats_tm_t, static_min_pressure) }, \
+         { "digital_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 76, offsetof(mavlink_rocket_stats_tm_t, digital_min_pressure) }, \
+         { "ada_min_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 80, offsetof(mavlink_rocket_stats_tm_t, ada_min_pressure) }, \
+         { "baro_max_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 84, offsetof(mavlink_rocket_stats_tm_t, baro_max_altitude) }, \
+         { "gps_max_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_rocket_stats_tm_t, gps_max_altitude) }, \
+         { "drogue_dpl_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 32, offsetof(mavlink_rocket_stats_tm_t, drogue_dpl_ts) }, \
+         { "drogue_dpl_max_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_rocket_stats_tm_t, drogue_dpl_max_acc) }, \
+         { "dpl_vane_max_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_rocket_stats_tm_t, dpl_vane_max_pressure) }, \
+         { "main_dpl_altitude_ts", NULL, MAVLINK_TYPE_UINT64_T, 0, 40, offsetof(mavlink_rocket_stats_tm_t, main_dpl_altitude_ts) }, \
+         { "main_dpl_altitude", NULL, MAVLINK_TYPE_FLOAT, 0, 100, offsetof(mavlink_rocket_stats_tm_t, main_dpl_altitude) }, \
+         { "main_dpl_zspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 104, offsetof(mavlink_rocket_stats_tm_t, main_dpl_zspeed) }, \
+         { "main_dpl_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 108, offsetof(mavlink_rocket_stats_tm_t, main_dpl_acc) }, \
+         { "cpu_load", NULL, MAVLINK_TYPE_FLOAT, 0, 112, offsetof(mavlink_rocket_stats_tm_t, cpu_load) }, \
+         { "free_heap", NULL, MAVLINK_TYPE_UINT32_T, 0, 116, offsetof(mavlink_rocket_stats_tm_t, free_heap) }, \
+         } \
+}
+#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 liftoff_ts [ms] System clock at liftoff
+ * @param liftoff_max_acc_ts [ms] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_z_speed_ts [ms] System clock at ADA max vertical speed
+ * @param max_z_speed [m/s] Max measured vertical speed - ADA
+ * @param max_airspeed_pitot [m/s] Max speed read by the pitot tube
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param apogee_ts [ms] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param static_min_pressure [Pa] Apogee pressure - Static ports
+ * @param digital_min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param ada_min_pressure [Pa] Apogee pressure - ADA filtered
+ * @param baro_max_altitude [m] Apogee altitude - Digital barometer
+ * @param gps_max_altitude [m] Apogee altitude - GPS
+ * @param drogue_dpl_ts [ms] System clock at drouge deployment
+ * @param drogue_dpl_max_acc [m/s2] Max acceleration during drouge deployment
+ * @param dpl_vane_max_pressure [Pa] Max pressure in the deployment bay during drogue deployment
+ * @param main_dpl_altitude_ts [ms] System clock at main chute deployment
+ * @param main_dpl_altitude [m] Altittude at main deployment (m.s.l)
+ * @param main_dpl_zspeed [m/s] Vertical speed at main deployment (sensor z axis)
+ * @param main_dpl_acc [m/s2] Max measured vertical acceleration (sensor z axis) after main parachute deployment
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @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 liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_z_speed_ts, float max_z_speed, float max_airspeed_pitot, float max_speed_altitude, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float static_min_pressure, float digital_min_pressure, float ada_min_pressure, float baro_max_altitude, float gps_max_altitude, uint64_t drogue_dpl_ts, float drogue_dpl_max_acc, float dpl_vane_max_pressure, uint64_t main_dpl_altitude_ts, float main_dpl_altitude, float main_dpl_zspeed, float main_dpl_acc, float cpu_load, uint32_t free_heap)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, liftoff_ts);
+    _mav_put_uint64_t(buf, 8, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 16, max_z_speed_ts);
+    _mav_put_uint64_t(buf, 24, apogee_ts);
+    _mav_put_uint64_t(buf, 32, drogue_dpl_ts);
+    _mav_put_uint64_t(buf, 40, main_dpl_altitude_ts);
+    _mav_put_float(buf, 48, liftoff_max_acc);
+    _mav_put_float(buf, 52, max_z_speed);
+    _mav_put_float(buf, 56, max_airspeed_pitot);
+    _mav_put_float(buf, 60, max_speed_altitude);
+    _mav_put_float(buf, 64, apogee_lat);
+    _mav_put_float(buf, 68, apogee_lon);
+    _mav_put_float(buf, 72, static_min_pressure);
+    _mav_put_float(buf, 76, digital_min_pressure);
+    _mav_put_float(buf, 80, ada_min_pressure);
+    _mav_put_float(buf, 84, baro_max_altitude);
+    _mav_put_float(buf, 88, gps_max_altitude);
+    _mav_put_float(buf, 92, drogue_dpl_max_acc);
+    _mav_put_float(buf, 96, dpl_vane_max_pressure);
+    _mav_put_float(buf, 100, main_dpl_altitude);
+    _mav_put_float(buf, 104, main_dpl_zspeed);
+    _mav_put_float(buf, 108, main_dpl_acc);
+    _mav_put_float(buf, 112, cpu_load);
+    _mav_put_uint32_t(buf, 116, free_heap);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN);
+#else
+    mavlink_rocket_stats_tm_t packet;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_z_speed_ts = max_z_speed_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.drogue_dpl_ts = drogue_dpl_ts;
+    packet.main_dpl_altitude_ts = main_dpl_altitude_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_z_speed = max_z_speed;
+    packet.max_airspeed_pitot = max_airspeed_pitot;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.static_min_pressure = static_min_pressure;
+    packet.digital_min_pressure = digital_min_pressure;
+    packet.ada_min_pressure = ada_min_pressure;
+    packet.baro_max_altitude = baro_max_altitude;
+    packet.gps_max_altitude = gps_max_altitude;
+    packet.drogue_dpl_max_acc = drogue_dpl_max_acc;
+    packet.dpl_vane_max_pressure = dpl_vane_max_pressure;
+    packet.main_dpl_altitude = main_dpl_altitude;
+    packet.main_dpl_zspeed = main_dpl_zspeed;
+    packet.main_dpl_acc = main_dpl_acc;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+
+        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 liftoff_ts [ms] System clock at liftoff
+ * @param liftoff_max_acc_ts [ms] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_z_speed_ts [ms] System clock at ADA max vertical speed
+ * @param max_z_speed [m/s] Max measured vertical speed - ADA
+ * @param max_airspeed_pitot [m/s] Max speed read by the pitot tube
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param apogee_ts [ms] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param static_min_pressure [Pa] Apogee pressure - Static ports
+ * @param digital_min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param ada_min_pressure [Pa] Apogee pressure - ADA filtered
+ * @param baro_max_altitude [m] Apogee altitude - Digital barometer
+ * @param gps_max_altitude [m] Apogee altitude - GPS
+ * @param drogue_dpl_ts [ms] System clock at drouge deployment
+ * @param drogue_dpl_max_acc [m/s2] Max acceleration during drouge deployment
+ * @param dpl_vane_max_pressure [Pa] Max pressure in the deployment bay during drogue deployment
+ * @param main_dpl_altitude_ts [ms] System clock at main chute deployment
+ * @param main_dpl_altitude [m] Altittude at main deployment (m.s.l)
+ * @param main_dpl_zspeed [m/s] Vertical speed at main deployment (sensor z axis)
+ * @param main_dpl_acc [m/s2] Max measured vertical acceleration (sensor z axis) after main parachute deployment
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ * @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 liftoff_ts,uint64_t liftoff_max_acc_ts,float liftoff_max_acc,uint64_t max_z_speed_ts,float max_z_speed,float max_airspeed_pitot,float max_speed_altitude,uint64_t apogee_ts,float apogee_lat,float apogee_lon,float static_min_pressure,float digital_min_pressure,float ada_min_pressure,float baro_max_altitude,float gps_max_altitude,uint64_t drogue_dpl_ts,float drogue_dpl_max_acc,float dpl_vane_max_pressure,uint64_t main_dpl_altitude_ts,float main_dpl_altitude,float main_dpl_zspeed,float main_dpl_acc,float cpu_load,uint32_t free_heap)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, liftoff_ts);
+    _mav_put_uint64_t(buf, 8, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 16, max_z_speed_ts);
+    _mav_put_uint64_t(buf, 24, apogee_ts);
+    _mav_put_uint64_t(buf, 32, drogue_dpl_ts);
+    _mav_put_uint64_t(buf, 40, main_dpl_altitude_ts);
+    _mav_put_float(buf, 48, liftoff_max_acc);
+    _mav_put_float(buf, 52, max_z_speed);
+    _mav_put_float(buf, 56, max_airspeed_pitot);
+    _mav_put_float(buf, 60, max_speed_altitude);
+    _mav_put_float(buf, 64, apogee_lat);
+    _mav_put_float(buf, 68, apogee_lon);
+    _mav_put_float(buf, 72, static_min_pressure);
+    _mav_put_float(buf, 76, digital_min_pressure);
+    _mav_put_float(buf, 80, ada_min_pressure);
+    _mav_put_float(buf, 84, baro_max_altitude);
+    _mav_put_float(buf, 88, gps_max_altitude);
+    _mav_put_float(buf, 92, drogue_dpl_max_acc);
+    _mav_put_float(buf, 96, dpl_vane_max_pressure);
+    _mav_put_float(buf, 100, main_dpl_altitude);
+    _mav_put_float(buf, 104, main_dpl_zspeed);
+    _mav_put_float(buf, 108, main_dpl_acc);
+    _mav_put_float(buf, 112, cpu_load);
+    _mav_put_uint32_t(buf, 116, free_heap);
+
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN);
+#else
+    mavlink_rocket_stats_tm_t packet;
+    packet.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_z_speed_ts = max_z_speed_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.drogue_dpl_ts = drogue_dpl_ts;
+    packet.main_dpl_altitude_ts = main_dpl_altitude_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_z_speed = max_z_speed;
+    packet.max_airspeed_pitot = max_airspeed_pitot;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.static_min_pressure = static_min_pressure;
+    packet.digital_min_pressure = digital_min_pressure;
+    packet.ada_min_pressure = ada_min_pressure;
+    packet.baro_max_altitude = baro_max_altitude;
+    packet.gps_max_altitude = gps_max_altitude;
+    packet.drogue_dpl_max_acc = drogue_dpl_max_acc;
+    packet.dpl_vane_max_pressure = dpl_vane_max_pressure;
+    packet.main_dpl_altitude = main_dpl_altitude;
+    packet.main_dpl_zspeed = main_dpl_zspeed;
+    packet.main_dpl_acc = main_dpl_acc;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+
+        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->liftoff_ts, rocket_stats_tm->liftoff_max_acc_ts, rocket_stats_tm->liftoff_max_acc, rocket_stats_tm->max_z_speed_ts, rocket_stats_tm->max_z_speed, rocket_stats_tm->max_airspeed_pitot, rocket_stats_tm->max_speed_altitude, rocket_stats_tm->apogee_ts, rocket_stats_tm->apogee_lat, rocket_stats_tm->apogee_lon, rocket_stats_tm->static_min_pressure, rocket_stats_tm->digital_min_pressure, rocket_stats_tm->ada_min_pressure, rocket_stats_tm->baro_max_altitude, rocket_stats_tm->gps_max_altitude, rocket_stats_tm->drogue_dpl_ts, rocket_stats_tm->drogue_dpl_max_acc, rocket_stats_tm->dpl_vane_max_pressure, rocket_stats_tm->main_dpl_altitude_ts, rocket_stats_tm->main_dpl_altitude, rocket_stats_tm->main_dpl_zspeed, rocket_stats_tm->main_dpl_acc, rocket_stats_tm->cpu_load, rocket_stats_tm->free_heap);
+}
+
+/**
+ * @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->liftoff_ts, rocket_stats_tm->liftoff_max_acc_ts, rocket_stats_tm->liftoff_max_acc, rocket_stats_tm->max_z_speed_ts, rocket_stats_tm->max_z_speed, rocket_stats_tm->max_airspeed_pitot, rocket_stats_tm->max_speed_altitude, rocket_stats_tm->apogee_ts, rocket_stats_tm->apogee_lat, rocket_stats_tm->apogee_lon, rocket_stats_tm->static_min_pressure, rocket_stats_tm->digital_min_pressure, rocket_stats_tm->ada_min_pressure, rocket_stats_tm->baro_max_altitude, rocket_stats_tm->gps_max_altitude, rocket_stats_tm->drogue_dpl_ts, rocket_stats_tm->drogue_dpl_max_acc, rocket_stats_tm->dpl_vane_max_pressure, rocket_stats_tm->main_dpl_altitude_ts, rocket_stats_tm->main_dpl_altitude, rocket_stats_tm->main_dpl_zspeed, rocket_stats_tm->main_dpl_acc, rocket_stats_tm->cpu_load, rocket_stats_tm->free_heap);
+}
+
+/**
+ * @brief Send a rocket_stats_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param liftoff_ts [ms] System clock at liftoff
+ * @param liftoff_max_acc_ts [ms] System clock at the maximum liftoff acceleration
+ * @param liftoff_max_acc [m/s2] Maximum liftoff acceleration
+ * @param max_z_speed_ts [ms] System clock at ADA max vertical speed
+ * @param max_z_speed [m/s] Max measured vertical speed - ADA
+ * @param max_airspeed_pitot [m/s] Max speed read by the pitot tube
+ * @param max_speed_altitude [m] Altitude at max speed
+ * @param apogee_ts [ms] System clock at apogee
+ * @param apogee_lat [deg] Apogee latitude
+ * @param apogee_lon [deg] Apogee longitude
+ * @param static_min_pressure [Pa] Apogee pressure - Static ports
+ * @param digital_min_pressure [Pa] Apogee pressure - Digital barometer
+ * @param ada_min_pressure [Pa] Apogee pressure - ADA filtered
+ * @param baro_max_altitude [m] Apogee altitude - Digital barometer
+ * @param gps_max_altitude [m] Apogee altitude - GPS
+ * @param drogue_dpl_ts [ms] System clock at drouge deployment
+ * @param drogue_dpl_max_acc [m/s2] Max acceleration during drouge deployment
+ * @param dpl_vane_max_pressure [Pa] Max pressure in the deployment bay during drogue deployment
+ * @param main_dpl_altitude_ts [ms] System clock at main chute deployment
+ * @param main_dpl_altitude [m] Altittude at main deployment (m.s.l)
+ * @param main_dpl_zspeed [m/s] Vertical speed at main deployment (sensor z axis)
+ * @param main_dpl_acc [m/s2] Max measured vertical acceleration (sensor z axis) after main parachute deployment
+ * @param cpu_load  CPU load in percentage
+ * @param free_heap  Amount of available heap in memory
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_rocket_stats_tm_send(mavlink_channel_t chan, uint64_t liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_z_speed_ts, float max_z_speed, float max_airspeed_pitot, float max_speed_altitude, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float static_min_pressure, float digital_min_pressure, float ada_min_pressure, float baro_max_altitude, float gps_max_altitude, uint64_t drogue_dpl_ts, float drogue_dpl_max_acc, float dpl_vane_max_pressure, uint64_t main_dpl_altitude_ts, float main_dpl_altitude, float main_dpl_zspeed, float main_dpl_acc, float cpu_load, uint32_t free_heap)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_ROCKET_STATS_TM_LEN];
+    _mav_put_uint64_t(buf, 0, liftoff_ts);
+    _mav_put_uint64_t(buf, 8, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 16, max_z_speed_ts);
+    _mav_put_uint64_t(buf, 24, apogee_ts);
+    _mav_put_uint64_t(buf, 32, drogue_dpl_ts);
+    _mav_put_uint64_t(buf, 40, main_dpl_altitude_ts);
+    _mav_put_float(buf, 48, liftoff_max_acc);
+    _mav_put_float(buf, 52, max_z_speed);
+    _mav_put_float(buf, 56, max_airspeed_pitot);
+    _mav_put_float(buf, 60, max_speed_altitude);
+    _mav_put_float(buf, 64, apogee_lat);
+    _mav_put_float(buf, 68, apogee_lon);
+    _mav_put_float(buf, 72, static_min_pressure);
+    _mav_put_float(buf, 76, digital_min_pressure);
+    _mav_put_float(buf, 80, ada_min_pressure);
+    _mav_put_float(buf, 84, baro_max_altitude);
+    _mav_put_float(buf, 88, gps_max_altitude);
+    _mav_put_float(buf, 92, drogue_dpl_max_acc);
+    _mav_put_float(buf, 96, dpl_vane_max_pressure);
+    _mav_put_float(buf, 100, main_dpl_altitude);
+    _mav_put_float(buf, 104, main_dpl_zspeed);
+    _mav_put_float(buf, 108, main_dpl_acc);
+    _mav_put_float(buf, 112, cpu_load);
+    _mav_put_uint32_t(buf, 116, free_heap);
+
+    _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.liftoff_ts = liftoff_ts;
+    packet.liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet.max_z_speed_ts = max_z_speed_ts;
+    packet.apogee_ts = apogee_ts;
+    packet.drogue_dpl_ts = drogue_dpl_ts;
+    packet.main_dpl_altitude_ts = main_dpl_altitude_ts;
+    packet.liftoff_max_acc = liftoff_max_acc;
+    packet.max_z_speed = max_z_speed;
+    packet.max_airspeed_pitot = max_airspeed_pitot;
+    packet.max_speed_altitude = max_speed_altitude;
+    packet.apogee_lat = apogee_lat;
+    packet.apogee_lon = apogee_lon;
+    packet.static_min_pressure = static_min_pressure;
+    packet.digital_min_pressure = digital_min_pressure;
+    packet.ada_min_pressure = ada_min_pressure;
+    packet.baro_max_altitude = baro_max_altitude;
+    packet.gps_max_altitude = gps_max_altitude;
+    packet.drogue_dpl_max_acc = drogue_dpl_max_acc;
+    packet.dpl_vane_max_pressure = dpl_vane_max_pressure;
+    packet.main_dpl_altitude = main_dpl_altitude;
+    packet.main_dpl_zspeed = main_dpl_zspeed;
+    packet.main_dpl_acc = main_dpl_acc;
+    packet.cpu_load = cpu_load;
+    packet.free_heap = free_heap;
+
+    _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->liftoff_ts, rocket_stats_tm->liftoff_max_acc_ts, rocket_stats_tm->liftoff_max_acc, rocket_stats_tm->max_z_speed_ts, rocket_stats_tm->max_z_speed, rocket_stats_tm->max_airspeed_pitot, rocket_stats_tm->max_speed_altitude, rocket_stats_tm->apogee_ts, rocket_stats_tm->apogee_lat, rocket_stats_tm->apogee_lon, rocket_stats_tm->static_min_pressure, rocket_stats_tm->digital_min_pressure, rocket_stats_tm->ada_min_pressure, rocket_stats_tm->baro_max_altitude, rocket_stats_tm->gps_max_altitude, rocket_stats_tm->drogue_dpl_ts, rocket_stats_tm->drogue_dpl_max_acc, rocket_stats_tm->dpl_vane_max_pressure, rocket_stats_tm->main_dpl_altitude_ts, rocket_stats_tm->main_dpl_altitude, rocket_stats_tm->main_dpl_zspeed, rocket_stats_tm->main_dpl_acc, rocket_stats_tm->cpu_load, rocket_stats_tm->free_heap);
+#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 liftoff_ts, uint64_t liftoff_max_acc_ts, float liftoff_max_acc, uint64_t max_z_speed_ts, float max_z_speed, float max_airspeed_pitot, float max_speed_altitude, uint64_t apogee_ts, float apogee_lat, float apogee_lon, float static_min_pressure, float digital_min_pressure, float ada_min_pressure, float baro_max_altitude, float gps_max_altitude, uint64_t drogue_dpl_ts, float drogue_dpl_max_acc, float dpl_vane_max_pressure, uint64_t main_dpl_altitude_ts, float main_dpl_altitude, float main_dpl_zspeed, float main_dpl_acc, float cpu_load, uint32_t free_heap)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, liftoff_ts);
+    _mav_put_uint64_t(buf, 8, liftoff_max_acc_ts);
+    _mav_put_uint64_t(buf, 16, max_z_speed_ts);
+    _mav_put_uint64_t(buf, 24, apogee_ts);
+    _mav_put_uint64_t(buf, 32, drogue_dpl_ts);
+    _mav_put_uint64_t(buf, 40, main_dpl_altitude_ts);
+    _mav_put_float(buf, 48, liftoff_max_acc);
+    _mav_put_float(buf, 52, max_z_speed);
+    _mav_put_float(buf, 56, max_airspeed_pitot);
+    _mav_put_float(buf, 60, max_speed_altitude);
+    _mav_put_float(buf, 64, apogee_lat);
+    _mav_put_float(buf, 68, apogee_lon);
+    _mav_put_float(buf, 72, static_min_pressure);
+    _mav_put_float(buf, 76, digital_min_pressure);
+    _mav_put_float(buf, 80, ada_min_pressure);
+    _mav_put_float(buf, 84, baro_max_altitude);
+    _mav_put_float(buf, 88, gps_max_altitude);
+    _mav_put_float(buf, 92, drogue_dpl_max_acc);
+    _mav_put_float(buf, 96, dpl_vane_max_pressure);
+    _mav_put_float(buf, 100, main_dpl_altitude);
+    _mav_put_float(buf, 104, main_dpl_zspeed);
+    _mav_put_float(buf, 108, main_dpl_acc);
+    _mav_put_float(buf, 112, cpu_load);
+    _mav_put_uint32_t(buf, 116, free_heap);
+
+    _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->liftoff_ts = liftoff_ts;
+    packet->liftoff_max_acc_ts = liftoff_max_acc_ts;
+    packet->max_z_speed_ts = max_z_speed_ts;
+    packet->apogee_ts = apogee_ts;
+    packet->drogue_dpl_ts = drogue_dpl_ts;
+    packet->main_dpl_altitude_ts = main_dpl_altitude_ts;
+    packet->liftoff_max_acc = liftoff_max_acc;
+    packet->max_z_speed = max_z_speed;
+    packet->max_airspeed_pitot = max_airspeed_pitot;
+    packet->max_speed_altitude = max_speed_altitude;
+    packet->apogee_lat = apogee_lat;
+    packet->apogee_lon = apogee_lon;
+    packet->static_min_pressure = static_min_pressure;
+    packet->digital_min_pressure = digital_min_pressure;
+    packet->ada_min_pressure = ada_min_pressure;
+    packet->baro_max_altitude = baro_max_altitude;
+    packet->gps_max_altitude = gps_max_altitude;
+    packet->drogue_dpl_max_acc = drogue_dpl_max_acc;
+    packet->dpl_vane_max_pressure = dpl_vane_max_pressure;
+    packet->main_dpl_altitude = main_dpl_altitude;
+    packet->main_dpl_zspeed = main_dpl_zspeed;
+    packet->main_dpl_acc = main_dpl_acc;
+    packet->cpu_load = cpu_load;
+    packet->free_heap = free_heap;
+
+    _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 liftoff_ts from rocket_stats_tm message
+ *
+ * @return [ms] 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,  0);
+}
+
+/**
+ * @brief Get field liftoff_max_acc_ts from rocket_stats_tm message
+ *
+ * @return [ms] 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,  8);
+}
+
+/**
+ * @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,  48);
+}
+
+/**
+ * @brief Get field max_z_speed_ts from rocket_stats_tm message
+ *
+ * @return [ms] System clock at ADA max vertical speed
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_max_z_speed_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  16);
+}
+
+/**
+ * @brief Get field max_z_speed from rocket_stats_tm message
+ *
+ * @return [m/s] Max measured vertical speed - ADA
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_max_z_speed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  52);
+}
+
+/**
+ * @brief Get field max_airspeed_pitot from rocket_stats_tm message
+ *
+ * @return [m/s] Max speed read by the pitot tube
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_max_airspeed_pitot(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  56);
+}
+
+/**
+ * @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,  60);
+}
+
+/**
+ * @brief Get field apogee_ts from rocket_stats_tm message
+ *
+ * @return [ms] 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,  24);
+}
+
+/**
+ * @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,  64);
+}
+
+/**
+ * @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,  68);
+}
+
+/**
+ * @brief Get field static_min_pressure from rocket_stats_tm message
+ *
+ * @return [Pa] Apogee pressure - Static ports
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_static_min_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  72);
+}
+
+/**
+ * @brief Get field digital_min_pressure from rocket_stats_tm message
+ *
+ * @return [Pa] Apogee pressure - Digital barometer
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_digital_min_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  76);
+}
+
+/**
+ * @brief Get field ada_min_pressure from rocket_stats_tm message
+ *
+ * @return [Pa] Apogee pressure - ADA filtered
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_ada_min_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  80);
+}
+
+/**
+ * @brief Get field baro_max_altitude from rocket_stats_tm message
+ *
+ * @return [m] Apogee altitude - Digital barometer
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_baro_max_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  84);
+}
+
+/**
+ * @brief Get field gps_max_altitude from rocket_stats_tm message
+ *
+ * @return [m] Apogee altitude - GPS
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_gps_max_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  88);
+}
+
+/**
+ * @brief Get field drogue_dpl_ts from rocket_stats_tm message
+ *
+ * @return [ms] System clock at drouge deployment
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_drogue_dpl_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  32);
+}
+
+/**
+ * @brief Get field drogue_dpl_max_acc from rocket_stats_tm message
+ *
+ * @return [m/s2] Max acceleration during drouge deployment
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_drogue_dpl_max_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  92);
+}
+
+/**
+ * @brief Get field dpl_vane_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_vane_max_pressure(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  96);
+}
+
+/**
+ * @brief Get field main_dpl_altitude_ts from rocket_stats_tm message
+ *
+ * @return [ms] System clock at main chute deployment
+ */
+static inline uint64_t mavlink_msg_rocket_stats_tm_get_main_dpl_altitude_ts(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint64_t(msg,  40);
+}
+
+/**
+ * @brief Get field main_dpl_altitude from rocket_stats_tm message
+ *
+ * @return [m] Altittude at main deployment (m.s.l)
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_main_dpl_altitude(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  100);
+}
+
+/**
+ * @brief Get field main_dpl_zspeed from rocket_stats_tm message
+ *
+ * @return [m/s] Vertical speed at main deployment (sensor z axis)
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_main_dpl_zspeed(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  104);
+}
+
+/**
+ * @brief Get field main_dpl_acc from rocket_stats_tm message
+ *
+ * @return [m/s2] Max measured vertical acceleration (sensor z axis) after main parachute deployment
+ */
+static inline float mavlink_msg_rocket_stats_tm_get_main_dpl_acc(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  108);
+}
+
+/**
+ * @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,  112);
+}
+
+/**
+ * @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,  116);
+}
+
+/**
+ * @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->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_z_speed_ts = mavlink_msg_rocket_stats_tm_get_max_z_speed_ts(msg);
+    rocket_stats_tm->apogee_ts = mavlink_msg_rocket_stats_tm_get_apogee_ts(msg);
+    rocket_stats_tm->drogue_dpl_ts = mavlink_msg_rocket_stats_tm_get_drogue_dpl_ts(msg);
+    rocket_stats_tm->main_dpl_altitude_ts = mavlink_msg_rocket_stats_tm_get_main_dpl_altitude_ts(msg);
+    rocket_stats_tm->liftoff_max_acc = mavlink_msg_rocket_stats_tm_get_liftoff_max_acc(msg);
+    rocket_stats_tm->max_z_speed = mavlink_msg_rocket_stats_tm_get_max_z_speed(msg);
+    rocket_stats_tm->max_airspeed_pitot = mavlink_msg_rocket_stats_tm_get_max_airspeed_pitot(msg);
+    rocket_stats_tm->max_speed_altitude = mavlink_msg_rocket_stats_tm_get_max_speed_altitude(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->static_min_pressure = mavlink_msg_rocket_stats_tm_get_static_min_pressure(msg);
+    rocket_stats_tm->digital_min_pressure = mavlink_msg_rocket_stats_tm_get_digital_min_pressure(msg);
+    rocket_stats_tm->ada_min_pressure = mavlink_msg_rocket_stats_tm_get_ada_min_pressure(msg);
+    rocket_stats_tm->baro_max_altitude = mavlink_msg_rocket_stats_tm_get_baro_max_altitude(msg);
+    rocket_stats_tm->gps_max_altitude = mavlink_msg_rocket_stats_tm_get_gps_max_altitude(msg);
+    rocket_stats_tm->drogue_dpl_max_acc = mavlink_msg_rocket_stats_tm_get_drogue_dpl_max_acc(msg);
+    rocket_stats_tm->dpl_vane_max_pressure = mavlink_msg_rocket_stats_tm_get_dpl_vane_max_pressure(msg);
+    rocket_stats_tm->main_dpl_altitude = mavlink_msg_rocket_stats_tm_get_main_dpl_altitude(msg);
+    rocket_stats_tm->main_dpl_zspeed = mavlink_msg_rocket_stats_tm_get_main_dpl_zspeed(msg);
+    rocket_stats_tm->main_dpl_acc = mavlink_msg_rocket_stats_tm_get_main_dpl_acc(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);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_sensor_state_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_sensor_state_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..4cd3ad123114b14dff21be0dd4fd69c96c402054
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_sensor_state_tm.h
@@ -0,0 +1,230 @@
+#pragma once
+// MESSAGE SENSOR_STATE_TM PACKING
+
+#define MAVLINK_MSG_ID_SENSOR_STATE_TM 110
+
+
+typedef struct __mavlink_sensor_state_tm_t {
+ char sensor_id[20]; /*<  Sensor name*/
+ uint8_t state; /*<  Boolean that represents the init state*/
+} mavlink_sensor_state_tm_t;
+
+#define MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN 21
+#define MAVLINK_MSG_ID_SENSOR_STATE_TM_MIN_LEN 21
+#define MAVLINK_MSG_ID_110_LEN 21
+#define MAVLINK_MSG_ID_110_MIN_LEN 21
+
+#define MAVLINK_MSG_ID_SENSOR_STATE_TM_CRC 42
+#define MAVLINK_MSG_ID_110_CRC 42
+
+#define MAVLINK_MSG_SENSOR_STATE_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SENSOR_STATE_TM { \
+    110, \
+    "SENSOR_STATE_TM", \
+    2, \
+    {  { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 0, offsetof(mavlink_sensor_state_tm_t, sensor_id) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 20, offsetof(mavlink_sensor_state_tm_t, state) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SENSOR_STATE_TM { \
+    "SENSOR_STATE_TM", \
+    2, \
+    {  { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 0, offsetof(mavlink_sensor_state_tm_t, sensor_id) }, \
+         { "state", NULL, MAVLINK_TYPE_UINT8_T, 0, 20, offsetof(mavlink_sensor_state_tm_t, state) }, \
+         } \
+}
+#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_id  Sensor name
+ * @param state  Boolean that represents the init 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_id, uint8_t state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN];
+    _mav_put_uint8_t(buf, 20, state);
+    _mav_put_char_array(buf, 0, sensor_id, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN);
+#else
+    mavlink_sensor_state_tm_t packet;
+    packet.state = state;
+    mav_array_memcpy(packet.sensor_id, sensor_id, 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_id  Sensor name
+ * @param state  Boolean that represents the init 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_id,uint8_t state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN];
+    _mav_put_uint8_t(buf, 20, state);
+    _mav_put_char_array(buf, 0, sensor_id, 20);
+        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN);
+#else
+    mavlink_sensor_state_tm_t packet;
+    packet.state = state;
+    mav_array_memcpy(packet.sensor_id, sensor_id, 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_id, sensor_state_tm->state);
+}
+
+/**
+ * @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_id, sensor_state_tm->state);
+}
+
+/**
+ * @brief Send a sensor_state_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param sensor_id  Sensor name
+ * @param state  Boolean that represents the init state
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_sensor_state_tm_send(mavlink_channel_t chan, const char *sensor_id, uint8_t state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char buf[MAVLINK_MSG_ID_SENSOR_STATE_TM_LEN];
+    _mav_put_uint8_t(buf, 20, state);
+    _mav_put_char_array(buf, 0, sensor_id, 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.state = state;
+    mav_array_memcpy(packet.sensor_id, sensor_id, 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_id, sensor_state_tm->state);
+#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_id, uint8_t state)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 20, state);
+    _mav_put_char_array(buf, 0, sensor_id, 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->state = state;
+    mav_array_memcpy(packet->sensor_id, sensor_id, 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_id from sensor_state_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_sensor_state_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 20,  0);
+}
+
+/**
+ * @brief Get field state from sensor_state_tm message
+ *
+ * @return  Boolean that represents the init state
+ */
+static inline uint8_t mavlink_msg_sensor_state_tm_get_state(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  20);
+}
+
+/**
+ * @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_id(msg, sensor_state_tm->sensor_id);
+    sensor_state_tm->state = mavlink_msg_sensor_state_tm_get_state(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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_sensor_tm_request_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_sensor_tm_request_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..0deb0024310dcc80b876c1a4013c98891341c034
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_id; /*<  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 103
+#define MAVLINK_MSG_ID_4_CRC 103
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SENSOR_TM_REQUEST_TC { \
+    4, \
+    "SENSOR_TM_REQUEST_TC", \
+    1, \
+    {  { "sensor_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_sensor_tm_request_tc_t, sensor_id) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SENSOR_TM_REQUEST_TC { \
+    "SENSOR_TM_REQUEST_TC", \
+    1, \
+    {  { "sensor_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 0, offsetof(mavlink_sensor_tm_request_tc_t, sensor_id) }, \
+         } \
+}
+#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_id  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_id)
+{
+#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_id);
+
+        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_id = sensor_id;
+
+        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_id  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_id)
+{
+#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_id);
+
+        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_id = sensor_id;
+
+        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_id);
+}
+
+/**
+ * @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_id);
+}
+
+/**
+ * @brief Send a sensor_tm_request_tc message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param sensor_id  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_id)
+{
+#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_id);
+
+    _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_id = sensor_id;
+
+    _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_id);
+#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_id)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint8_t(buf, 0, sensor_id);
+
+    _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_id = sensor_id;
+
+    _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_id 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_id(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_id = mavlink_msg_sensor_tm_request_tc_get_sensor_id(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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_servo_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_servo_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..87036fdd5f19880ccf808615fdd3c6f03994ae40
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_servo_tm.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SERVO_TM PACKING
+
+#define MAVLINK_MSG_ID_SERVO_TM 111
+
+
+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_111_LEN 5
+#define MAVLINK_MSG_ID_111_MIN_LEN 5
+
+#define MAVLINK_MSG_ID_SERVO_TM_CRC 87
+#define MAVLINK_MSG_ID_111_CRC 87
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SERVO_TM { \
+    111, \
+    "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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_servo_tm_request_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_servo_tm_request_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..6ac27824c3a9ac7df9d8bf0a0983c552f689cb71
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_algorithm_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_algorithm_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..68de47900b54c4ba2dd2d8243250d5a1474d57e2
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_algorithm_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE SET_ALGORITHM_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_ALGORITHM_TC 16
+
+
+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_16_LEN 1
+#define MAVLINK_MSG_ID_16_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_SET_ALGORITHM_TC_CRC 181
+#define MAVLINK_MSG_ID_16_CRC 181
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_ALGORITHM_TC { \
+    16, \
+    "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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_coordinates_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_coordinates_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..827f0ec42e8f8ca2cc283732f06ebc1f9a966af0
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_coordinates_tc.h
@@ -0,0 +1,238 @@
+#pragma once
+// MESSAGE SET_COORDINATES_TC PACKING
+
+#define MAVLINK_MSG_ID_SET_COORDINATES_TC 12
+
+
+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_12_LEN 8
+#define MAVLINK_MSG_ID_12_MIN_LEN 8
+
+#define MAVLINK_MSG_ID_SET_COORDINATES_TC_CRC 67
+#define MAVLINK_MSG_ID_12_CRC 67
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_COORDINATES_TC { \
+    12, \
+    "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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_deployment_altitude_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_deployment_altitude_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..38c61267d4498fb5f1924eaf8a83b701d0d37677
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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 14
+
+
+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_14_LEN 4
+#define MAVLINK_MSG_ID_14_MIN_LEN 4
+
+#define MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC_CRC 44
+#define MAVLINK_MSG_ID_14_CRC 44
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_DEPLOYMENT_ALTITUDE_TC { \
+    14, \
+    "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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_orientation_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_orientation_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..5169814cd4c7a7afbe6e204bf82fb2d049078fc7
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_reference_altitude_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_reference_altitude_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..a291b0b8da0d1d60e7e30767ade22abc5f35402a
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_reference_temperature_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_reference_temperature_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..5bb1c529477606617b93eca65726e9580259f832
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_servo_angle_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_servo_angle_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..a9e3fa6e354c97e420ba4a778f8e11dc9c9c0848
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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; /*< [deg] Servo angle*/
+ 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 [deg] Servo angle
+ * @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 [deg] Servo angle
+ * @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 [deg] Servo angle
+ */
+#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 [deg] Servo angle
+ */
+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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_target_coordinates_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_set_target_coordinates_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..40394b728f76ebb99dfb689a467c28474a457fee
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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 15
+
+
+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_15_LEN 8
+#define MAVLINK_MSG_ID_15_MIN_LEN 8
+
+#define MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC_CRC 81
+#define MAVLINK_MSG_ID_15_CRC 81
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SET_TARGET_COORDINATES_TC { \
+    15, \
+    "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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_sys_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_sys_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..3714091a13b24ccd8a62b045d596ff3fc48b4f9f
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_sys_tm.h
@@ -0,0 +1,363 @@
+#pragma once
+// MESSAGE SYS_TM PACKING
+
+#define MAVLINK_MSG_ID_SYS_TM 200
+
+
+typedef struct __mavlink_sys_tm_t {
+ uint64_t timestamp; /*< [ms] 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 pin_observer; /*<  True if the pin observer started correctly*/
+ uint8_t sensors; /*<  True if the sensors started correctly*/
+ uint8_t board_scheduler; /*<  True if the board scheduler is running*/
+} mavlink_sys_tm_t;
+
+#define MAVLINK_MSG_ID_SYS_TM_LEN 14
+#define MAVLINK_MSG_ID_SYS_TM_MIN_LEN 14
+#define MAVLINK_MSG_ID_200_LEN 14
+#define MAVLINK_MSG_ID_200_MIN_LEN 14
+
+#define MAVLINK_MSG_ID_SYS_TM_CRC 183
+#define MAVLINK_MSG_ID_200_CRC 183
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_SYS_TM { \
+    200, \
+    "SYS_TM", \
+    7, \
+    {  { "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) }, \
+         { "pin_observer", NULL, MAVLINK_TYPE_UINT8_T, 0, 11, offsetof(mavlink_sys_tm_t, pin_observer) }, \
+         { "sensors", NULL, MAVLINK_TYPE_UINT8_T, 0, 12, offsetof(mavlink_sys_tm_t, sensors) }, \
+         { "board_scheduler", NULL, MAVLINK_TYPE_UINT8_T, 0, 13, offsetof(mavlink_sys_tm_t, board_scheduler) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_SYS_TM { \
+    "SYS_TM", \
+    7, \
+    {  { "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) }, \
+         { "pin_observer", NULL, MAVLINK_TYPE_UINT8_T, 0, 11, offsetof(mavlink_sys_tm_t, pin_observer) }, \
+         { "sensors", NULL, MAVLINK_TYPE_UINT8_T, 0, 12, offsetof(mavlink_sys_tm_t, sensors) }, \
+         { "board_scheduler", NULL, MAVLINK_TYPE_UINT8_T, 0, 13, offsetof(mavlink_sys_tm_t, board_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 [ms] 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 pin_observer  True if the pin observer started correctly
+ * @param sensors  True if the sensors started correctly
+ * @param board_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 pin_observer, uint8_t sensors, uint8_t board_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, pin_observer);
+    _mav_put_uint8_t(buf, 12, sensors);
+    _mav_put_uint8_t(buf, 13, board_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.pin_observer = pin_observer;
+    packet.sensors = sensors;
+    packet.board_scheduler = board_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 [ms] 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 pin_observer  True if the pin observer started correctly
+ * @param sensors  True if the sensors started correctly
+ * @param board_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 pin_observer,uint8_t sensors,uint8_t board_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, pin_observer);
+    _mav_put_uint8_t(buf, 12, sensors);
+    _mav_put_uint8_t(buf, 13, board_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.pin_observer = pin_observer;
+    packet.sensors = sensors;
+    packet.board_scheduler = board_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->pin_observer, sys_tm->sensors, sys_tm->board_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->pin_observer, sys_tm->sensors, sys_tm->board_scheduler);
+}
+
+/**
+ * @brief Send a sys_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] 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 pin_observer  True if the pin observer started correctly
+ * @param sensors  True if the sensors started correctly
+ * @param board_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 pin_observer, uint8_t sensors, uint8_t board_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, pin_observer);
+    _mav_put_uint8_t(buf, 12, sensors);
+    _mav_put_uint8_t(buf, 13, board_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.pin_observer = pin_observer;
+    packet.sensors = sensors;
+    packet.board_scheduler = board_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->pin_observer, sys_tm->sensors, sys_tm->board_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 pin_observer, uint8_t sensors, uint8_t board_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, pin_observer);
+    _mav_put_uint8_t(buf, 12, sensors);
+    _mav_put_uint8_t(buf, 13, board_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->pin_observer = pin_observer;
+    packet->sensors = sensors;
+    packet->board_scheduler = board_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 [ms] 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 pin_observer from sys_tm message
+ *
+ * @return  True if the pin observer started correctly
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_pin_observer(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  11);
+}
+
+/**
+ * @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,  12);
+}
+
+/**
+ * @brief Get field board_scheduler from sys_tm message
+ *
+ * @return  True if the board scheduler is running
+ */
+static inline uint8_t mavlink_msg_sys_tm_get_board_scheduler(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  13);
+}
+
+/**
+ * @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->pin_observer = mavlink_msg_sys_tm_get_pin_observer(msg);
+    sys_tm->sensors = mavlink_msg_sys_tm_get_sensors(msg);
+    sys_tm->board_scheduler = mavlink_msg_sys_tm_get_board_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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_system_tm_request_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_system_tm_request_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..de5a083eed2404c27df5ad34524fcac401fe3b6f
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_task_stats_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_task_stats_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..72be686fefe607f74b5b04cc9315eb6099ac9aa3
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_task_stats_tm.h
@@ -0,0 +1,363 @@
+#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; /*< [ms] When was this logged */
+ float task_min; /*<  Task min period*/
+ float task_max; /*<  Task max period*/
+ float task_mean; /*<  Task mean period*/
+ float task_stddev; /*<  Task period std deviation*/
+ uint16_t task_period; /*< [ms] Period of the task*/
+ uint8_t task_id; /*<  Task ID*/
+} mavlink_task_stats_tm_t;
+
+#define MAVLINK_MSG_ID_TASK_STATS_TM_LEN 27
+#define MAVLINK_MSG_ID_TASK_STATS_TM_MIN_LEN 27
+#define MAVLINK_MSG_ID_204_LEN 27
+#define MAVLINK_MSG_ID_204_MIN_LEN 27
+
+#define MAVLINK_MSG_ID_TASK_STATS_TM_CRC 133
+#define MAVLINK_MSG_ID_204_CRC 133
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_TASK_STATS_TM { \
+    204, \
+    "TASK_STATS_TM", \
+    7, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_task_stats_tm_t, timestamp) }, \
+         { "task_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 26, offsetof(mavlink_task_stats_tm_t, task_id) }, \
+         { "task_period", NULL, MAVLINK_TYPE_UINT16_T, 0, 24, offsetof(mavlink_task_stats_tm_t, task_period) }, \
+         { "task_min", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_task_stats_tm_t, task_min) }, \
+         { "task_max", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_task_stats_tm_t, task_max) }, \
+         { "task_mean", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_task_stats_tm_t, task_mean) }, \
+         { "task_stddev", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_task_stats_tm_t, task_stddev) }, \
+         } \
+}
+#else
+#define MAVLINK_MESSAGE_INFO_TASK_STATS_TM { \
+    "TASK_STATS_TM", \
+    7, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_task_stats_tm_t, timestamp) }, \
+         { "task_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 26, offsetof(mavlink_task_stats_tm_t, task_id) }, \
+         { "task_period", NULL, MAVLINK_TYPE_UINT16_T, 0, 24, offsetof(mavlink_task_stats_tm_t, task_period) }, \
+         { "task_min", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_task_stats_tm_t, task_min) }, \
+         { "task_max", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_task_stats_tm_t, task_max) }, \
+         { "task_mean", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_task_stats_tm_t, task_mean) }, \
+         { "task_stddev", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_task_stats_tm_t, task_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 [ms] When was this logged 
+ * @param task_id  Task ID
+ * @param task_period [ms] Period of the task
+ * @param task_min  Task min period
+ * @param task_max  Task max period
+ * @param task_mean  Task mean period
+ * @param task_stddev  Task period std 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, uint8_t task_id, uint16_t task_period, float task_min, float task_max, float task_mean, float task_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_float(buf, 8, task_min);
+    _mav_put_float(buf, 12, task_max);
+    _mav_put_float(buf, 16, task_mean);
+    _mav_put_float(buf, 20, task_stddev);
+    _mav_put_uint16_t(buf, 24, task_period);
+    _mav_put_uint8_t(buf, 26, task_id);
+
+        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_min = task_min;
+    packet.task_max = task_max;
+    packet.task_mean = task_mean;
+    packet.task_stddev = task_stddev;
+    packet.task_period = task_period;
+    packet.task_id = task_id;
+
+        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 [ms] When was this logged 
+ * @param task_id  Task ID
+ * @param task_period [ms] Period of the task
+ * @param task_min  Task min period
+ * @param task_max  Task max period
+ * @param task_mean  Task mean period
+ * @param task_stddev  Task period std 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,uint8_t task_id,uint16_t task_period,float task_min,float task_max,float task_mean,float task_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_float(buf, 8, task_min);
+    _mav_put_float(buf, 12, task_max);
+    _mav_put_float(buf, 16, task_mean);
+    _mav_put_float(buf, 20, task_stddev);
+    _mav_put_uint16_t(buf, 24, task_period);
+    _mav_put_uint8_t(buf, 26, task_id);
+
+        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_min = task_min;
+    packet.task_max = task_max;
+    packet.task_mean = task_mean;
+    packet.task_stddev = task_stddev;
+    packet.task_period = task_period;
+    packet.task_id = task_id;
+
+        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_min, task_stats_tm->task_max, task_stats_tm->task_mean, task_stats_tm->task_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_min, task_stats_tm->task_max, task_stats_tm->task_mean, task_stats_tm->task_stddev);
+}
+
+/**
+ * @brief Send a task_stats_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] When was this logged 
+ * @param task_id  Task ID
+ * @param task_period [ms] Period of the task
+ * @param task_min  Task min period
+ * @param task_max  Task max period
+ * @param task_mean  Task mean period
+ * @param task_stddev  Task period std deviation
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_task_stats_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t task_id, uint16_t task_period, float task_min, float task_max, float task_mean, float task_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_float(buf, 8, task_min);
+    _mav_put_float(buf, 12, task_max);
+    _mav_put_float(buf, 16, task_mean);
+    _mav_put_float(buf, 20, task_stddev);
+    _mav_put_uint16_t(buf, 24, task_period);
+    _mav_put_uint8_t(buf, 26, task_id);
+
+    _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_min = task_min;
+    packet.task_max = task_max;
+    packet.task_mean = task_mean;
+    packet.task_stddev = task_stddev;
+    packet.task_period = task_period;
+    packet.task_id = task_id;
+
+    _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_min, task_stats_tm->task_max, task_stats_tm->task_mean, task_stats_tm->task_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, uint8_t task_id, uint16_t task_period, float task_min, float task_max, float task_mean, float task_stddev)
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+    char *buf = (char *)msgbuf;
+    _mav_put_uint64_t(buf, 0, timestamp);
+    _mav_put_float(buf, 8, task_min);
+    _mav_put_float(buf, 12, task_max);
+    _mav_put_float(buf, 16, task_mean);
+    _mav_put_float(buf, 20, task_stddev);
+    _mav_put_uint16_t(buf, 24, task_period);
+    _mav_put_uint8_t(buf, 26, task_id);
+
+    _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_min = task_min;
+    packet->task_max = task_max;
+    packet->task_mean = task_mean;
+    packet->task_stddev = task_stddev;
+    packet->task_period = task_period;
+    packet->task_id = task_id;
+
+    _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 [ms] 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 uint8_t mavlink_msg_task_stats_tm_get_task_id(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  26);
+}
+
+/**
+ * @brief Get field task_period from task_stats_tm message
+ *
+ * @return [ms] 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,  24);
+}
+
+/**
+ * @brief Get field task_min from task_stats_tm message
+ *
+ * @return  Task min period
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_min(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field task_max from task_stats_tm message
+ *
+ * @return  Task max period
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_max(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field task_mean from task_stats_tm message
+ *
+ * @return  Task mean period
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_mean(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field task_stddev from task_stats_tm message
+ *
+ * @return  Task period std deviation
+ */
+static inline float mavlink_msg_task_stats_tm_get_task_stddev(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
+}
+
+/**
+ * @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_min = mavlink_msg_task_stats_tm_get_task_min(msg);
+    task_stats_tm->task_max = mavlink_msg_task_stats_tm_get_task_max(msg);
+    task_stats_tm->task_mean = mavlink_msg_task_stats_tm_get_task_mean(msg);
+    task_stats_tm->task_stddev = mavlink_msg_task_stats_tm_get_task_stddev(msg);
+    task_stats_tm->task_period = mavlink_msg_task_stats_tm_get_task_period(msg);
+    task_stats_tm->task_id = mavlink_msg_task_stats_tm_get_task_id(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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_temp_tm.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_temp_tm.h
new file mode 100644
index 0000000000000000000000000000000000000000..3b4dfa9bcb771b85a0456b75c65a87551542b215
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_temp_tm.h
@@ -0,0 +1,255 @@
+#pragma once
+// MESSAGE TEMP_TM PACKING
+
+#define MAVLINK_MSG_ID_TEMP_TM 107
+
+
+typedef struct __mavlink_temp_tm_t {
+ uint64_t timestamp; /*< [ms] When was this logged*/
+ float temperature; /*< [deg] Temperature*/
+ char sensor_id[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_107_LEN 32
+#define MAVLINK_MSG_ID_107_MIN_LEN 32
+
+#define MAVLINK_MSG_ID_TEMP_TM_CRC 128
+#define MAVLINK_MSG_ID_107_CRC 128
+
+#define MAVLINK_MSG_TEMP_TM_FIELD_SENSOR_ID_LEN 20
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_TEMP_TM { \
+    107, \
+    "TEMP_TM", \
+    3, \
+    {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_temp_tm_t, timestamp) }, \
+         { "sensor_id", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_temp_tm_t, sensor_id) }, \
+         { "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_id", NULL, MAVLINK_TYPE_CHAR, 20, 12, offsetof(mavlink_temp_tm_t, sensor_id) }, \
+         { "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 [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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 [ms] When was this logged
+ * @param sensor_id  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_id,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_id, 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_id, sensor_id, 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_id, 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_id, temp_tm->temperature);
+}
+
+/**
+ * @brief Send a temp_tm message
+ * @param chan MAVLink channel to send the message
+ *
+ * @param timestamp [ms] When was this logged
+ * @param sensor_id  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_id, 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_id, 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_id, sensor_id, 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_id, 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_id, 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_id, 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_id, sensor_id, 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 [ms] 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_id from temp_tm message
+ *
+ * @return  Sensor name
+ */
+static inline uint16_t mavlink_msg_temp_tm_get_sensor_id(const mavlink_message_t* msg, char *sensor_id)
+{
+    return _MAV_RETURN_char_array(msg, sensor_id, 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_id(msg, temp_tm->sensor_id);
+#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_skyward_lib/mavlink_lib/pyxis/mavlink_msg_wiggle_servo_tc.h b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_wiggle_servo_tc.h
new file mode 100644
index 0000000000000000000000000000000000000000..b9e333c4ed5bde71c947b204fee64987ed98b2ad
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/mavlink_msg_wiggle_servo_tc.h
@@ -0,0 +1,213 @@
+#pragma once
+// MESSAGE WIGGLE_SERVO_TC PACKING
+
+#define MAVLINK_MSG_ID_WIGGLE_SERVO_TC 7
+
+
+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_7_LEN 1
+#define MAVLINK_MSG_ID_7_MIN_LEN 1
+
+#define MAVLINK_MSG_ID_WIGGLE_SERVO_TC_CRC 160
+#define MAVLINK_MSG_ID_7_CRC 160
+
+
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_WIGGLE_SERVO_TC { \
+    7, \
+    "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_skyward_lib/mavlink_lib/pyxis/pyxis.h b/mavlink_skyward_lib/mavlink_lib/pyxis/pyxis.h
new file mode 100644
index 0000000000000000000000000000000000000000..c21763205e7e1b3ddcee8191be184d705202ac3f
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/pyxis.h
@@ -0,0 +1,201 @@
+/** @file
+ *  @brief MAVLink comm protocol generated from pyxis.xml
+ *  @see http://mavlink.org
+ */
+#pragma once
+#ifndef MAVLINK_PYXIS_H
+#define MAVLINK_PYXIS_H
+
+#ifndef MAVLINK_H
+    #error Wrong include order: MAVLINK_PYXIS.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 4877622037329606464
+
+#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, 8, 2, 4, 8, 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, 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, 2, 2, 74, 64, 32, 44, 32, 32, 32, 56, 21, 5, 19, 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, 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, 14, 14, 46, 28, 27, 49, 77, 30, 166, 158, 120, 96, 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}
+#endif
+
+#ifndef MAVLINK_MESSAGE_CRCS
+#define MAVLINK_MESSAGE_CRCS {0, 136, 198, 165, 103, 184, 215, 160, 226, 113, 38, 71, 67, 218, 44, 81, 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, 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, 50, 146, 39, 178, 239, 104, 222, 128, 233, 170, 42, 87, 255, 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, 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, 183, 69, 142, 108, 133, 79, 66, 169, 92, 61, 169, 155, 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}
+#endif
+
+#include "../protocol.h"
+
+#define MAVLINK_ENABLED_PYXIS
+
+// ENUM DEFINITIONS
+
+
+/** @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_FSM_ID=2, /* States of all On-Board FSMs | */
+   MAV_PIN_OBS_ID=3, /* Pin observer data | */
+   MAV_LOGGER_ID=4, /* SD Logger stats | */
+   MAV_MAVLINK_STATS=5, /* Mavlink driver stats | */
+   MAV_TASK_STATS_ID=6, /* Task scheduler statistics answer: n mavlink messages where n is the number of tasks | */
+   MAV_ADA_ID=8, /* ADA Status | */
+   MAV_NAS_ID=9, /* NavigationSystem data | */
+   MAV_CAN_ID=10, /* Canbus stats | */
+   MAV_FLIGHT_ID=11, /* Flight telemetry | */
+   MAV_STATS_ID=12, /* Satistics telemetry | */
+   MAV_SENSORS_STATE_ID=13, /* Sensors init state telemetry | */
+   SystemTMList_ENUM_END=14, /*  | */
+} 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_GPS_ID=1, /* GPS data | */
+   MAV_BMX160_ID=2, /* BM180 IMU data | */
+   MAV_VN100_ID=3, /* VN100 IMU data | */
+   MAV_MPU9250_ID=4, /* MPU9250 IMU data | */
+   MAV_ADS_ID=5, /* ADS 4 channel ADC data | */
+   MAV_MS5803_ID=6, /* MS5803 barometer data | */
+   MAV_BME280_ID=7, /* BME280 barometer data | */
+   MAV_CURRENT_SENSE_ID=8, /* Electrical current sensors data | */
+   MAV_LIS3MDL_ID=9, /* LIS3MDL compass data | */
+   MAV_DPL_PRESS_ID=10, /* Deployment pressure data | */
+   MAV_STATIC_PRESS_ID=11, /* Static pressure data | */
+   MAV_PITOT_PRESS_ID=12, /* Pitot pressure data | */
+   MAV_BATTERY_VOLTAGE_ID=13, /* Battery voltage data | */
+   MAV_STRAIN_GAUGE_ID=14, /* Strain gauge data | */
+   SensorsTMList_ENUM_END=15, /*  | */
+} 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_FORCE_INIT=4, /* Command to init the rocket | */
+   MAV_CMD_FORCE_LAUNCH=5, /* Command to launch the rocket | */
+   MAV_CMD_FORCE_LANDING=6, /* Command to communicate the end of the mission and close the file descriptors in the SD card | */
+   MAV_CMD_FORCE_APOGEE=7, /* Command to trigger the apogee event | */
+   MAV_CMD_FORCE_EXPULSION=8, /* Command to open the nosecone | */
+   MAV_CMD_FORCE_MAIN=9, /* Command to activate the thermal cutters and cut the drogue, activating both thermal cutters sequentially | */
+   MAV_CMD_START_LOGGING=10, /* Command to enable sensor logging | */
+   MAV_CMD_CLOSE_LOG=11, /* Command to permanently close the log file | */
+   MAV_CMD_FORCE_REBOOT=12, /* Command to reset the board from test status | */
+   MAV_CMD_TEST_MODE=13, /* Command to enter the test mode | */
+   MAV_CMD_START_RECORDING=14, /* Command to start the internal cameras recordings | */
+   MAV_CMD_STOP_RECORDING=15, /* Command to stop the internal cameras recordings | */
+   MavCommandList_ENUM_END=16, /*  | */
+} MavCommandList;
+#endif
+
+/** @brief Enum of all the servos used on Pyxis */
+#ifndef HAVE_ENUM_ServosList
+#define HAVE_ENUM_ServosList
+typedef enum ServosList
+{
+   AIRBRAKES_SERVO=1, /*  | */
+   EXPULSION_SERVO=2, /*  | */
+   PARAFOIL_SERVO1=3, /*  | */
+   PARAFOIL_SERVO2=4, /*  | */
+   ServosList_ENUM_END=5, /*  | */
+} ServosList;
+#endif
+
+/** @brief Enum of all the pins used on Pyxis */
+#ifndef HAVE_ENUM_PinsList
+#define HAVE_ENUM_PinsList
+typedef enum PinsList
+{
+   LAUNCH_PIN=1, /*  | */
+   NOSECONE_PIN=2, /*  | */
+   DEPLOYMENT_PIN=3, /*  | */
+   PinsList_ENUM_END=4, /*  | */
+} 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_wiggle_servo_tc.h"
+#include "./mavlink_msg_reset_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_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_ack_tm.h"
+#include "./mavlink_msg_nack_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_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_sys_tm.h"
+#include "./mavlink_msg_fsm_tm.h"
+#include "./mavlink_msg_logger_tm.h"
+#include "./mavlink_msg_mavlink_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_can_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"
+
+// base include
+
+
+#undef MAVLINK_THIS_XML_HASH
+#define MAVLINK_THIS_XML_HASH 4877622037329606464
+
+#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_WIGGLE_SERVO_TC, MAVLINK_MESSAGE_INFO_RESET_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_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, {"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}}}, {"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_GPS_TM, MAVLINK_MESSAGE_INFO_IMU_TM, MAVLINK_MESSAGE_INFO_PRESSURE_TM, MAVLINK_MESSAGE_INFO_ADC_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, {"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}}}, {"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_FSM_TM, MAVLINK_MESSAGE_INFO_LOGGER_TM, MAVLINK_MESSAGE_INFO_MAVLINK_STATS_TM, MAVLINK_MESSAGE_INFO_TASK_STATS_TM, MAVLINK_MESSAGE_INFO_ADA_TM, MAVLINK_MESSAGE_INFO_NAS_TM, MAVLINK_MESSAGE_INFO_CAN_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, {"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}}}}
+# define MAVLINK_MESSAGE_NAMES {{ "ACK_TM", 100 }, { "ADA_TM", 205 }, { "ADC_TM", 105 }, { "ATTITUDE_TM", 109 }, { "CAN_TM", 207 }, { "COMMAND_TC", 2 }, { "CURRENT_TM", 106 }, { "FSM_TM", 201 }, { "GPS_TM", 102 }, { "IMU_TM", 103 }, { "LOAD_TM", 108 }, { "LOGGER_TM", 202 }, { "MAVLINK_STATS_TM", 203 }, { "NACK_TM", 101 }, { "NAS_TM", 206 }, { "PAYLOAD_FLIGHT_TM", 209 }, { "PAYLOAD_STATS_TM", 211 }, { "PING_TC", 1 }, { "PIN_TM", 112 }, { "PRESSURE_TM", 104 }, { "RAW_EVENT_TC", 13 }, { "RESET_SERVO_TC", 8 }, { "ROCKET_FLIGHT_TM", 208 }, { "ROCKET_STATS_TM", 210 }, { "SENSOR_STATE_TM", 110 }, { "SENSOR_TM_REQUEST_TC", 4 }, { "SERVO_TM", 111 }, { "SERVO_TM_REQUEST_TC", 5 }, { "SET_ALGORITHM_TC", 16 }, { "SET_COORDINATES_TC", 12 }, { "SET_DEPLOYMENT_ALTITUDE_TC", 14 }, { "SET_ORIENTATION_TC", 11 }, { "SET_REFERENCE_ALTITUDE_TC", 9 }, { "SET_REFERENCE_TEMPERATURE_TC", 10 }, { "SET_SERVO_ANGLE_TC", 6 }, { "SET_TARGET_COORDINATES_TC", 15 }, { "SYSTEM_TM_REQUEST_TC", 3 }, { "SYS_TM", 200 }, { "TASK_STATS_TM", 204 }, { "TEMP_TM", 107 }, { "WIGGLE_SERVO_TC", 7 }}
+# if MAVLINK_COMMAND_24BIT
+#  include "../mavlink_get_info.h"
+# endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+#endif // MAVLINK_PYXIS_H
diff --git a/mavlink_skyward_lib/mavlink_lib/pyxis/testsuite.h b/mavlink_skyward_lib/mavlink_lib/pyxis/testsuite.h
new file mode 100644
index 0000000000000000000000000000000000000000..edb56c6571c4c5bcb67d416210cec73db1be708f
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/testsuite.h
@@ -0,0 +1,2756 @@
+/** @file
+ *    @brief MAVLink comm protocol testsuite generated from pyxis.xml
+ *    @see https://mavlink.io/en/
+ */
+#pragma once
+#ifndef PYXIS_TESTSUITE_H
+#define PYXIS_TESTSUITE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef MAVLINK_TEST_ALL
+#define MAVLINK_TEST_ALL
+
+static void mavlink_test_pyxis(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_pyxis(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_id = packet_in.sensor_id;
+        
+        
+#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_id );
+    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_id );
+    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_id );
+    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_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_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_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_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_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 = {
+        5,72
+    };
+    mavlink_nack_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_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 );
+    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 );
+    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 );
+    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_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_id, packet_in.sensor_id, 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_id , 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_id , 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_id , 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_id, packet_in.sensor_id, 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_id , 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_id , 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_id , 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_id, packet_in.sensor_id, 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_id , 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_id , 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_id , 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,"YZABCDEFGHIJKLMNOPQ"
+    };
+    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;
+        
+        mav_array_memcpy(packet1.sensor_id, packet_in.sensor_id, 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_id , packet1.channel_0 , packet1.channel_1 , packet1.channel_2 , packet1.channel_3 );
+    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_id , packet1.channel_0 , packet1.channel_1 , packet1.channel_2 , packet1.channel_3 );
+    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_id , packet1.channel_0 , packet1.channel_1 , packet1.channel_2 , packet1.channel_3 );
+    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_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_id, packet_in.sensor_id, 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_id , 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_id , 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_id , 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_id, packet_in.sensor_id, 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_id , 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_id , 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_id , 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_id, packet_in.sensor_id, 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_id , 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_id , 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_id , 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_id, packet_in.sensor_id, 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_id , 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_id , 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_id , 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
+    };
+    mavlink_sensor_state_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.state = packet_in.state;
+        
+        mav_array_memcpy(packet1.sensor_id, packet_in.sensor_id, 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_id , packet1.state );
+    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_id , packet1.state );
+    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_id , packet1.state );
+    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_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
+    };
+    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.pin_observer = packet_in.pin_observer;
+        packet1.sensors = packet_in.sensors;
+        packet1.board_scheduler = packet_in.board_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.pin_observer , packet1.sensors , packet1.board_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.pin_observer , packet1.sensors , packet1.board_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.pin_observer , packet1.sensors , packet1.board_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_fsm_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_FSM_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_fsm_tm_t packet_in = {
+        93372036854775807ULL,29,96,163,230,41,108
+    };
+    mavlink_fsm_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.ada_state = packet_in.ada_state;
+        packet1.abk_state = packet_in.abk_state;
+        packet1.dpl_state = packet_in.dpl_state;
+        packet1.fmm_state = packet_in.fmm_state;
+        packet1.fsr_state = packet_in.fsr_state;
+        packet1.nas_state = packet_in.nas_state;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_FSM_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_FSM_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_fsm_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_fsm_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_fsm_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.ada_state , packet1.abk_state , packet1.dpl_state , packet1.fmm_state , packet1.fsr_state , packet1.nas_state );
+    mavlink_msg_fsm_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_fsm_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.ada_state , packet1.abk_state , packet1.dpl_state , packet1.fmm_state , packet1.fsr_state , packet1.nas_state );
+    mavlink_msg_fsm_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_fsm_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_fsm_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.ada_state , packet1.abk_state , packet1.dpl_state , packet1.fmm_state , packet1.fsr_state , packet1.nas_state );
+    mavlink_msg_fsm_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("FSM_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_FSM_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_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,73.0,101.0,129.0,157.0,18483,211
+    };
+    mavlink_task_stats_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.task_min = packet_in.task_min;
+        packet1.task_max = packet_in.task_max;
+        packet1.task_mean = packet_in.task_mean;
+        packet1.task_stddev = packet_in.task_stddev;
+        packet1.task_period = packet_in.task_period;
+        packet1.task_id = packet_in.task_id;
+        
+        
+#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_min , packet1.task_max , packet1.task_mean , packet1.task_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_min , packet1.task_max , packet1.task_mean , packet1.task_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_min , packet1.task_max , packet1.task_mean , packet1.task_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,149
+    };
+    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.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 );
+    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 );
+    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 );
+    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_can_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_TM >= 256) {
+            return;
+        }
+#endif
+    mavlink_message_t msg;
+        uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+        uint16_t i;
+    mavlink_can_tm_t packet_in = {
+        93372036854775807ULL,93372036854776311ULL,93372036854776815ULL,18483,18587,89,156
+    };
+    mavlink_can_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.timestamp = packet_in.timestamp;
+        packet1.last_sent_ts = packet_in.last_sent_ts;
+        packet1.last_rcv_ts = packet_in.last_rcv_ts;
+        packet1.n_sent = packet_in.n_sent;
+        packet1.n_rcv = packet_in.n_rcv;
+        packet1.last_sent = packet_in.last_sent;
+        packet1.last_rcv = packet_in.last_rcv;
+        
+        
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+        if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+           // cope with extensions
+           memset(MAVLINK_MSG_ID_CAN_TM_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_CAN_TM_MIN_LEN);
+        }
+#endif
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_can_tm_encode(system_id, component_id, &msg, &packet1);
+    mavlink_msg_can_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_can_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.n_sent , packet1.n_rcv , packet1.last_sent , packet1.last_rcv , packet1.last_sent_ts , packet1.last_rcv_ts );
+    mavlink_msg_can_tm_decode(&msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_can_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.n_sent , packet1.n_rcv , packet1.last_sent , packet1.last_rcv , packet1.last_sent_ts , packet1.last_rcv_ts );
+    mavlink_msg_can_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_tm_decode(last_msg, &packet2);
+        MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+        
+        memset(&packet2, 0, sizeof(packet2));
+    mavlink_msg_can_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.n_sent , packet1.n_rcv , packet1.last_sent , packet1.last_rcv , packet1.last_sent_ts , packet1.last_rcv_ts );
+    mavlink_msg_can_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_TM") != NULL);
+    MAVLINK_ASSERT(mavlink_get_message_info_by_id(MAVLINK_MSG_ID_CAN_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,217,28,95,162,229,40,107,174,241,52
+    };
+    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.msl_altitude = packet_in.msl_altitude;
+        packet1.ada_vert_speed = packet_in.ada_vert_speed;
+        packet1.ada_vert_accel = packet_in.ada_vert_accel;
+        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.ab_angle = packet_in.ab_angle;
+        packet1.ab_estimated_cd = packet_in.ab_estimated_cd;
+        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.vbat = packet_in.vbat;
+        packet1.temperature = packet_in.temperature;
+        packet1.ada_state = packet_in.ada_state;
+        packet1.fmm_state = packet_in.fmm_state;
+        packet1.dpl_state = packet_in.dpl_state;
+        packet1.abk_state = packet_in.abk_state;
+        packet1.nas_state = packet_in.nas_state;
+        packet1.gps_fix = packet_in.gps_fix;
+        packet1.pin_launch = packet_in.pin_launch;
+        packet1.pin_nosecone = packet_in.pin_nosecone;
+        packet1.servo_sensor = packet_in.servo_sensor;
+        packet1.logger_error = packet_in.logger_error;
+        
+        
+#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.ada_state , packet1.fmm_state , packet1.dpl_state , packet1.abk_state , packet1.nas_state , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.msl_altitude , packet1.ada_vert_speed , packet1.ada_vert_accel , 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.ab_angle , packet1.ab_estimated_cd , 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.pin_launch , packet1.pin_nosecone , packet1.servo_sensor , packet1.vbat , packet1.temperature , packet1.logger_error );
+    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.ada_state , packet1.fmm_state , packet1.dpl_state , packet1.abk_state , packet1.nas_state , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.msl_altitude , packet1.ada_vert_speed , packet1.ada_vert_accel , 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.ab_angle , packet1.ab_estimated_cd , 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.pin_launch , packet1.pin_nosecone , packet1.servo_sensor , packet1.vbat , packet1.temperature , packet1.logger_error );
+    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.ada_state , packet1.fmm_state , packet1.dpl_state , packet1.abk_state , packet1.nas_state , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.msl_altitude , packet1.ada_vert_speed , packet1.ada_vert_accel , 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.ab_angle , packet1.ab_estimated_cd , 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.pin_launch , packet1.pin_nosecone , packet1.servo_sensor , packet1.vbat , packet1.temperature , packet1.logger_error );
+    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,205,16,83,150,217,28
+    };
+    mavlink_payload_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.msl_altitude = packet_in.msl_altitude;
+        packet1.ada_vert_speed = packet_in.ada_vert_speed;
+        packet1.ada_vert_accel = packet_in.ada_vert_accel;
+        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.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.vbat = packet_in.vbat;
+        packet1.vsupply_5v = packet_in.vsupply_5v;
+        packet1.temperature = packet_in.temperature;
+        packet1.ada_state = packet_in.ada_state;
+        packet1.fmm_state = packet_in.fmm_state;
+        packet1.nas_state = packet_in.nas_state;
+        packet1.gps_fix = packet_in.gps_fix;
+        packet1.pin_nosecone = packet_in.pin_nosecone;
+        packet1.logger_error = packet_in.logger_error;
+        
+        
+#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.ada_state , packet1.fmm_state , packet1.nas_state , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.msl_altitude , packet1.ada_vert_speed , packet1.ada_vert_accel , 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.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.pin_nosecone , packet1.vbat , packet1.vsupply_5v , packet1.temperature , packet1.logger_error );
+    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.ada_state , packet1.fmm_state , packet1.nas_state , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.msl_altitude , packet1.ada_vert_speed , packet1.ada_vert_accel , 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.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.pin_nosecone , packet1.vbat , packet1.vsupply_5v , packet1.temperature , packet1.logger_error );
+    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.ada_state , packet1.fmm_state , packet1.nas_state , packet1.pressure_ada , packet1.pressure_digi , packet1.pressure_static , packet1.pressure_dpl , packet1.airspeed_pitot , packet1.msl_altitude , packet1.ada_vert_speed , packet1.ada_vert_accel , 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.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.pin_nosecone , packet1.vbat , packet1.vsupply_5v , packet1.temperature , packet1.logger_error );
+    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,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,963503496
+    };
+    mavlink_rocket_stats_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.liftoff_ts = packet_in.liftoff_ts;
+        packet1.liftoff_max_acc_ts = packet_in.liftoff_max_acc_ts;
+        packet1.max_z_speed_ts = packet_in.max_z_speed_ts;
+        packet1.apogee_ts = packet_in.apogee_ts;
+        packet1.drogue_dpl_ts = packet_in.drogue_dpl_ts;
+        packet1.main_dpl_altitude_ts = packet_in.main_dpl_altitude_ts;
+        packet1.liftoff_max_acc = packet_in.liftoff_max_acc;
+        packet1.max_z_speed = packet_in.max_z_speed;
+        packet1.max_airspeed_pitot = packet_in.max_airspeed_pitot;
+        packet1.max_speed_altitude = packet_in.max_speed_altitude;
+        packet1.apogee_lat = packet_in.apogee_lat;
+        packet1.apogee_lon = packet_in.apogee_lon;
+        packet1.static_min_pressure = packet_in.static_min_pressure;
+        packet1.digital_min_pressure = packet_in.digital_min_pressure;
+        packet1.ada_min_pressure = packet_in.ada_min_pressure;
+        packet1.baro_max_altitude = packet_in.baro_max_altitude;
+        packet1.gps_max_altitude = packet_in.gps_max_altitude;
+        packet1.drogue_dpl_max_acc = packet_in.drogue_dpl_max_acc;
+        packet1.dpl_vane_max_pressure = packet_in.dpl_vane_max_pressure;
+        packet1.main_dpl_altitude = packet_in.main_dpl_altitude;
+        packet1.main_dpl_zspeed = packet_in.main_dpl_zspeed;
+        packet1.main_dpl_acc = packet_in.main_dpl_acc;
+        packet1.cpu_load = packet_in.cpu_load;
+        packet1.free_heap = packet_in.free_heap;
+        
+        
+#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.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_z_speed_ts , packet1.max_z_speed , packet1.max_airspeed_pitot , packet1.max_speed_altitude , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.static_min_pressure , packet1.digital_min_pressure , packet1.ada_min_pressure , packet1.baro_max_altitude , packet1.gps_max_altitude , packet1.drogue_dpl_ts , packet1.drogue_dpl_max_acc , packet1.dpl_vane_max_pressure , packet1.main_dpl_altitude_ts , packet1.main_dpl_altitude , packet1.main_dpl_zspeed , packet1.main_dpl_acc , packet1.cpu_load , packet1.free_heap );
+    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.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_z_speed_ts , packet1.max_z_speed , packet1.max_airspeed_pitot , packet1.max_speed_altitude , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.static_min_pressure , packet1.digital_min_pressure , packet1.ada_min_pressure , packet1.baro_max_altitude , packet1.gps_max_altitude , packet1.drogue_dpl_ts , packet1.drogue_dpl_max_acc , packet1.dpl_vane_max_pressure , packet1.main_dpl_altitude_ts , packet1.main_dpl_altitude , packet1.main_dpl_zspeed , packet1.main_dpl_acc , packet1.cpu_load , packet1.free_heap );
+    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.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_z_speed_ts , packet1.max_z_speed , packet1.max_airspeed_pitot , packet1.max_speed_altitude , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.static_min_pressure , packet1.digital_min_pressure , packet1.ada_min_pressure , packet1.baro_max_altitude , packet1.gps_max_altitude , packet1.drogue_dpl_ts , packet1.drogue_dpl_max_acc , packet1.dpl_vane_max_pressure , packet1.main_dpl_altitude_ts , packet1.main_dpl_altitude , packet1.main_dpl_zspeed , packet1.main_dpl_acc , packet1.cpu_load , packet1.free_heap );
+    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,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,963502248
+    };
+    mavlink_payload_stats_tm_t packet1, packet2;
+        memset(&packet1, 0, sizeof(packet1));
+        packet1.liftoff_ts = packet_in.liftoff_ts;
+        packet1.liftoff_max_acc_ts = packet_in.liftoff_max_acc_ts;
+        packet1.max_z_speed_ts = packet_in.max_z_speed_ts;
+        packet1.apogee_ts = packet_in.apogee_ts;
+        packet1.drogue_dpl_ts = packet_in.drogue_dpl_ts;
+        packet1.liftoff_max_acc = packet_in.liftoff_max_acc;
+        packet1.max_z_speed = packet_in.max_z_speed;
+        packet1.max_airspeed_pitot = packet_in.max_airspeed_pitot;
+        packet1.max_speed_altitude = packet_in.max_speed_altitude;
+        packet1.apogee_lat = packet_in.apogee_lat;
+        packet1.apogee_lon = packet_in.apogee_lon;
+        packet1.static_min_pressure = packet_in.static_min_pressure;
+        packet1.digital_min_pressure = packet_in.digital_min_pressure;
+        packet1.ada_min_pressure = packet_in.ada_min_pressure;
+        packet1.baro_max_altitude = packet_in.baro_max_altitude;
+        packet1.gps_max_altitude = packet_in.gps_max_altitude;
+        packet1.drogue_dpl_max_acc = packet_in.drogue_dpl_max_acc;
+        packet1.cpu_load = packet_in.cpu_load;
+        packet1.free_heap = packet_in.free_heap;
+        
+        
+#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.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_z_speed_ts , packet1.max_z_speed , packet1.max_airspeed_pitot , packet1.max_speed_altitude , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.static_min_pressure , packet1.digital_min_pressure , packet1.ada_min_pressure , packet1.baro_max_altitude , packet1.gps_max_altitude , packet1.drogue_dpl_ts , packet1.drogue_dpl_max_acc , packet1.cpu_load , packet1.free_heap );
+    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.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_z_speed_ts , packet1.max_z_speed , packet1.max_airspeed_pitot , packet1.max_speed_altitude , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.static_min_pressure , packet1.digital_min_pressure , packet1.ada_min_pressure , packet1.baro_max_altitude , packet1.gps_max_altitude , packet1.drogue_dpl_ts , packet1.drogue_dpl_max_acc , packet1.cpu_load , packet1.free_heap );
+    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.liftoff_ts , packet1.liftoff_max_acc_ts , packet1.liftoff_max_acc , packet1.max_z_speed_ts , packet1.max_z_speed , packet1.max_airspeed_pitot , packet1.max_speed_altitude , packet1.apogee_ts , packet1.apogee_lat , packet1.apogee_lon , packet1.static_min_pressure , packet1.digital_min_pressure , packet1.ada_min_pressure , packet1.baro_max_altitude , packet1.gps_max_altitude , packet1.drogue_dpl_ts , packet1.drogue_dpl_max_acc , packet1.cpu_load , packet1.free_heap );
+    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_pyxis(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_wiggle_servo_tc(system_id, component_id, last_msg);
+    mavlink_test_reset_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_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_ack_tm(system_id, component_id, last_msg);
+    mavlink_test_nack_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_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_sys_tm(system_id, component_id, last_msg);
+    mavlink_test_fsm_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_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_can_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);
+}
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+#endif // PYXIS_TESTSUITE_H
diff --git a/mavlink_skyward_lib/mavlink_lib/pyxis/version.h b/mavlink_skyward_lib/mavlink_lib/pyxis/version.h
new file mode 100644
index 0000000000000000000000000000000000000000..40a12088f41167aa8dfc49c6ffc351c301af6eb3
--- /dev/null
+++ b/mavlink_skyward_lib/mavlink_lib/pyxis/version.h
@@ -0,0 +1,14 @@
+/** @file
+ *  @brief MAVLink comm protocol built from pyxis.xml
+ *  @see http://mavlink.org
+ */
+#pragma once
+ 
+#ifndef MAVLINK_VERSION_H
+#define MAVLINK_VERSION_H
+
+#define MAVLINK_BUILD_DATE "Fri Aug 12 2022"
+#define MAVLINK_WIRE_PROTOCOL_VERSION "1.0"
+#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 166
+ 
+#endif // MAVLINK_VERSION_H
diff --git a/message_definitions/pyxis.xml b/message_definitions/pyxis.xml
index 042faf1341b46bb98c90479cb5b649e0c49113a8..259c239015f978ce1c4bc5950624c38575279b60 100644
--- a/message_definitions/pyxis.xml
+++ b/message_definitions/pyxis.xml
@@ -94,34 +94,43 @@
             <entry name="MAV_CMD_DISARM" value="2">
                 <description>Command to disarm the rocket</description>
             </entry>
-            <entry name="MAV_CMD_FORCE_LAUNCH" value="3">
-                <description>Command to disarm the rocket</description>
+            <entry name="MAV_CMD_CALIBRATE" value="3">
+                <description>Command to trigger the calibration </description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_INIT" value="4">
+                <description>Command to init the rocket</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_LAUNCH" value="5">
+                <description>Command to launch the rocket</description>
             </entry>
-            <entry name="MAV_CMD_FORCE_LANDING" value="4">
+            <entry name="MAV_CMD_FORCE_LANDING" value="6">
                 <description>Command to communicate the end of the mission and close the file descriptors in the SD card</description>
             </entry>
-            <entry name="MAV_CMD_FORCE_EXPULSION" value="5">
+            <entry name="MAV_CMD_FORCE_APOGEE" value="7">
+                <description>Command to trigger the apogee event</description>
+            </entry>
+            <entry name="MAV_CMD_FORCE_EXPULSION" value="8">
                 <description>Command to open the nosecone</description>
             </entry>
-            <entry name="MAV_CMD_FORCE_MAIN" value="6">
+            <entry name="MAV_CMD_FORCE_MAIN" value="9">
                 <description>Command to activate the thermal cutters and cut the drogue, activating both thermal cutters sequentially</description>
             </entry>
-            <entry name="MAV_CMD_START_LOGGING" value="7">
+            <entry name="MAV_CMD_START_LOGGING" value="10">
                 <description>Command to enable sensor logging</description>
             </entry>
-            <entry name="MAV_CMD_CLOSE_LOG" value="8">
+            <entry name="MAV_CMD_CLOSE_LOG" value="11">
                 <description>Command to permanently close the log file</description>
             </entry>
-            <entry name="MAV_CMD_FORCE_REBOOT" value="9">
+            <entry name="MAV_CMD_FORCE_REBOOT" value="12">
                 <description>Command to reset the board from test status</description>
             </entry>
-            <entry name="MAV_CMD_TEST_MODE" value="10">
+            <entry name="MAV_CMD_TEST_MODE" value="13">
                 <description>Command to enter the test mode</description>
             </entry>
-            <entry name="MAV_CMD_START_RECORDING" value="11">
+            <entry name="MAV_CMD_START_RECORDING" value="14">
                 <description>Command to start the internal cameras recordings</description>
             </entry>
-            <entry name="MAV_CMD_STOP_RECORDING" value="12">
+            <entry name="MAV_CMD_STOP_RECORDING" value="15">
                 <description>Command to stop the internal cameras recordings</description>
             </entry>
         </enum>
@@ -182,26 +191,26 @@
             <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_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="12" name="SET_INITIAL_ORIENTATION_TC">
-            <description>Sets the initial orientation for the navigation system</description>
+        <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="13" name="SET_INITIAL_COORDINATES_TC">
-            <description>Sets the initial launchpad coordinates</description>
-            <field name="latitude" type="float" units="deg">Launchpad latitude</field>
-            <field name="longitude" type="float" units="deg">Launchpad longitude</field>
+        <message id="12" 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">
+        <message id="13" 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="14" 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="15" name="SET_TARGET_COORDINATES_TC">
             <description>Sets the target coordinates</description>
             <field name="latitude" type="float" units="deg">Latitude</field>