diff --git a/generate.sh b/generate.sh
index fb45a12f098e6b14103af7ba152dbac41986b715..b58ca54d4b111922c6d8a9e3874926c711b0f176 100755
--- a/generate.sh
+++ b/generate.sh
@@ -1,2 +1,3 @@
 cd  mavlink
 python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=1.0 --output=../mavlink_lib ../message_definitions/gemini.xml
+python3 -m pymavlink.tools.mavgen --lang=Python --wire-protocol=1.0 --output=../mavlink_lib ../message_definitions/gemini.xml
\ No newline at end of file
diff --git a/mavlink_lib.py b/mavlink_lib.py
new file mode 100644
index 0000000000000000000000000000000000000000..1494d9eafe9423a09fcd065a625c214476e0a138
--- /dev/null
+++ b/mavlink_lib.py
@@ -0,0 +1,4267 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: gemini.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+from __future__ import print_function
+from builtins import range
+from builtins import object
+import struct, array, time, json, os, sys, platform
+
+from pymavlink.generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'mavlink_lib'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+    try:
+        import mavnative
+    except ImportError:
+        print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+        native_supported = False
+else:
+    # mavnative isn't supported for MAVLink2 yet
+    native_supported = False
+
+# allow MAV_IGNORE_CRC=1 to ignore CRC, allowing some
+# corrupted msgs to be seen
+MAVLINK_IGNORE_CRC = os.environ.get("MAV_IGNORE_CRC",0)
+
+# some base types from mavlink_types.h
+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
+
+
+# swiped from DFReader.py
+def to_string(s):
+    '''desperate attempt to convert a string regardless of what garbage we get'''
+    try:
+        return s.decode("utf-8")
+    except Exception as e:
+        pass
+    try:
+        s2 = s.encode('utf-8', 'ignore')
+        x = u"%s" % s2
+        return s2
+    except Exception:
+        pass
+    # so it's a nasty one. Let's grab as many characters as we can
+    r = ''
+    try:
+        for c in s:
+            r2 = r + c
+            r2 = r2.encode('ascii', 'ignore')
+            x = u"%s" % r2
+            r = r2
+    except Exception:
+        pass
+    return r + '_XXX'
+
+
+class MAVLink_header(object):
+    '''MAVLink message header'''
+    def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+        self.mlen = mlen
+        self.seq = seq
+        self.srcSystem = srcSystem
+        self.srcComponent = srcComponent
+        self.msgId = msgId
+        self.incompat_flags = incompat_flags
+        self.compat_flags = compat_flags
+
+    def pack(self, force_mavlink1=False):
+        if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+            return struct.pack('<BBBBBBBHB', 254, self.mlen,
+                               self.incompat_flags, self.compat_flags,
+                               self.seq, self.srcSystem, self.srcComponent,
+                               self.msgId&0xFFFF, self.msgId>>16)
+        return struct.pack('<BBBBBB', PROTOCOL_MARKER_V1, self.mlen, self.seq,
+                           self.srcSystem, self.srcComponent, self.msgId)
+
+class MAVLink_message(object):
+    '''base MAVLink message class'''
+    def __init__(self, msgId, name):
+        self._header     = MAVLink_header(msgId)
+        self._payload    = None
+        self._msgbuf     = None
+        self._crc        = None
+        self._fieldnames = []
+        self._type       = name
+        self._signed     = False
+        self._link_id    = None
+        self._instances  = None
+        self._instance_field = None
+
+    def format_attr(self, field):
+        '''override field getter'''
+        raw_attr = getattr(self,field)
+        if isinstance(raw_attr, bytes):
+            raw_attr = to_string(raw_attr).rstrip("\00")
+        return raw_attr
+
+    def get_msgbuf(self):
+        if isinstance(self._msgbuf, bytearray):
+            return self._msgbuf
+        return bytearray(self._msgbuf)
+
+    def get_header(self):
+        return self._header
+
+    def get_payload(self):
+        return self._payload
+
+    def get_crc(self):
+        return self._crc
+
+    def get_fieldnames(self):
+        return self._fieldnames
+
+    def get_type(self):
+        return self._type
+
+    def get_msgId(self):
+        return self._header.msgId
+
+    def get_srcSystem(self):
+        return self._header.srcSystem
+
+    def get_srcComponent(self):
+        return self._header.srcComponent
+
+    def get_seq(self):
+        return self._header.seq
+
+    def get_signed(self):
+        return self._signed
+
+    def get_link_id(self):
+        return self._link_id
+
+    def __str__(self):
+        ret = '%s {' % self._type
+        for a in self._fieldnames:
+            v = self.format_attr(a)
+            ret += '%s : %s, ' % (a, v)
+        ret = ret[0:-2] + '}'
+        return ret
+
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
+    def __eq__(self, other):
+        if other is None:
+            return False
+
+        if self.get_type() != other.get_type():
+            return False
+
+        # We do not compare CRC because native code doesn't provide it
+        #if self.get_crc() != other.get_crc():
+        #    return False
+
+        if self.get_seq() != other.get_seq():
+            return False
+
+        if self.get_srcSystem() != other.get_srcSystem():
+            return False
+
+        if self.get_srcComponent() != other.get_srcComponent():
+            return False
+
+        for a in self._fieldnames:
+            if self.format_attr(a) != other.format_attr(a):
+                return False
+
+        return True
+
+    def to_dict(self):
+        d = dict({})
+        d['mavpackettype'] = self._type
+        for a in self._fieldnames:
+          d[a] = self.format_attr(a)
+        return d
+
+    def to_json(self):
+        return json.dumps(self.to_dict())
+
+    def sign_packet(self, mav):
+        h = hashlib.new('sha256')
+        self._msgbuf += struct.pack('<BQ', mav.signing.link_id, mav.signing.timestamp)[:7]
+        h.update(mav.signing.secret_key)
+        h.update(self._msgbuf)
+        sig = h.digest()[:6]
+        self._msgbuf += sig
+        mav.signing.timestamp += 1
+
+    def pack(self, mav, crc_extra, payload, force_mavlink1=False):
+        plen = len(payload)
+        if WIRE_PROTOCOL_VERSION != '1.0' and not force_mavlink1:
+            # in MAVLink2 we can strip trailing zeros off payloads. This allows for simple
+            # variable length arrays and smaller packets
+            nullbyte = chr(0)
+            # in Python2, type("fred') is str but also type("fred")==bytes
+            if str(type(payload)) == "<class 'bytes'>":
+                nullbyte = 0
+            while plen > 1 and payload[plen-1] == nullbyte:
+                plen -= 1
+        self._payload = payload[:plen]
+        incompat_flags = 0
+        if mav.signing.sign_outgoing:
+            incompat_flags |= MAVLINK_IFLAG_SIGNED
+        self._header  = MAVLink_header(self._header.msgId,
+                                       incompat_flags=incompat_flags, compat_flags=0,
+                                       mlen=len(self._payload), seq=mav.seq,
+                                       srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+        self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+        crc = x25crc(self._msgbuf[1:])
+        if True: # using CRC extra
+            crc.accumulate_str(struct.pack('B', crc_extra))
+        self._crc = crc.crc
+        self._msgbuf += struct.pack('<H', self._crc)
+        if mav.signing.sign_outgoing and not force_mavlink1:
+            self.sign_packet(mav)
+        return self._msgbuf
+
+    def __getitem__(self, key):
+        '''support indexing, allowing for multi-instance sensors in one message'''
+        if self._instances is None:
+            raise IndexError()
+        if not key in self._instances:
+            raise IndexError()
+        return self._instances[key]
+
+
+# enums
+
+class EnumEntry(object):
+    def __init__(self, name, description):
+        self.name = name
+        self.description = description
+        self.param = {}
+
+enums = {}
+
+# SystemTMList
+enums['SystemTMList'] = {}
+MAV_SYS_ID = 1 # State of init results about system hardware/software components
+enums['SystemTMList'][1] = EnumEntry('MAV_SYS_ID', '''State of init results about system hardware/software components''')
+MAV_FSM_ID = 2 # States of all On-Board FSMs
+enums['SystemTMList'][2] = EnumEntry('MAV_FSM_ID', '''States of all On-Board FSMs''')
+MAV_PIN_OBS_ID = 3 # Pin observer data
+enums['SystemTMList'][3] = EnumEntry('MAV_PIN_OBS_ID', '''Pin observer data''')
+MAV_LOGGER_ID = 4 # SD Logger stats
+enums['SystemTMList'][4] = EnumEntry('MAV_LOGGER_ID', '''SD Logger stats''')
+MAV_MAVLINK_STATS = 5 # Mavlink driver stats
+enums['SystemTMList'][5] = EnumEntry('MAV_MAVLINK_STATS', '''Mavlink driver stats''')
+MAV_TASK_STATS_ID = 6 # Task scheduler statistics answer: n mavlink messages where n is the
+                        # number of tasks
+enums['SystemTMList'][6] = EnumEntry('MAV_TASK_STATS_ID', '''Task scheduler statistics answer: n mavlink messages where n is the number of tasks''')
+MAV_ADA_ID = 7 # ADA Status
+enums['SystemTMList'][7] = EnumEntry('MAV_ADA_ID', '''ADA Status''')
+MAV_NAS_ID = 8 # NavigationSystem data
+enums['SystemTMList'][8] = EnumEntry('MAV_NAS_ID', '''NavigationSystem data''')
+MAV_CAN_ID = 9 # Canbus stats
+enums['SystemTMList'][9] = EnumEntry('MAV_CAN_ID', '''Canbus stats''')
+MAV_FLIGHT_ID = 10 # Flight telemetry
+enums['SystemTMList'][10] = EnumEntry('MAV_FLIGHT_ID', '''Flight telemetry''')
+MAV_STATS_ID = 11 # Satistics telemetry
+enums['SystemTMList'][11] = EnumEntry('MAV_STATS_ID', '''Satistics telemetry''')
+MAV_SENSORS_STATE_ID = 12 # Sensors init state telemetry
+enums['SystemTMList'][12] = EnumEntry('MAV_SENSORS_STATE_ID', '''Sensors init state telemetry''')
+MAV_GSE_ID = 13 # Ground Segnement Equipment
+enums['SystemTMList'][13] = EnumEntry('MAV_GSE_ID', '''Ground Segnement Equipment''')
+MAV_MOTOR_ID = 14 # Rocket Motor data
+enums['SystemTMList'][14] = EnumEntry('MAV_MOTOR_ID', '''Rocket Motor data''')
+MAV_TARS_ID = 15 # TARS data
+enums['SystemTMList'][15] = EnumEntry('MAV_TARS_ID', '''TARS data''')
+SystemTMList_ENUM_END = 16 # 
+enums['SystemTMList'][16] = EnumEntry('SystemTMList_ENUM_END', '''''')
+
+# SensorsTMList
+enums['SensorsTMList'] = {}
+MAV_GPS_ID = 1 # GPS data
+enums['SensorsTMList'][1] = EnumEntry('MAV_GPS_ID', '''GPS data''')
+MAV_BMX160_ID = 2 # BMX160 IMU data
+enums['SensorsTMList'][2] = EnumEntry('MAV_BMX160_ID', '''BMX160 IMU data''')
+MAV_VN100_ID = 3 # VN100 IMU data
+enums['SensorsTMList'][3] = EnumEntry('MAV_VN100_ID', '''VN100 IMU data''')
+MAV_MPU9250_ID = 4 # MPU9250 IMU data
+enums['SensorsTMList'][4] = EnumEntry('MAV_MPU9250_ID', '''MPU9250 IMU data''')
+MAV_ADS_ID = 5 # ADS 4 channel ADC data
+enums['SensorsTMList'][5] = EnumEntry('MAV_ADS_ID', '''ADS 4 channel ADC data''')
+MAV_MS5803_ID = 6 # MS5803 barometer data
+enums['SensorsTMList'][6] = EnumEntry('MAV_MS5803_ID', '''MS5803 barometer data''')
+MAV_BME280_ID = 7 # BME280 barometer data
+enums['SensorsTMList'][7] = EnumEntry('MAV_BME280_ID', '''BME280 barometer data''')
+MAV_CURRENT_SENSE_ID = 8 # Electrical current sensors data
+enums['SensorsTMList'][8] = EnumEntry('MAV_CURRENT_SENSE_ID', '''Electrical current sensors data''')
+MAV_LIS3MDL_ID = 9 # LIS3MDL compass data
+enums['SensorsTMList'][9] = EnumEntry('MAV_LIS3MDL_ID', '''LIS3MDL compass data''')
+MAV_DPL_PRESS_ID = 10 # Deployment pressure data
+enums['SensorsTMList'][10] = EnumEntry('MAV_DPL_PRESS_ID', '''Deployment pressure data''')
+MAV_STATIC_PRESS_ID = 11 # Static pressure data
+enums['SensorsTMList'][11] = EnumEntry('MAV_STATIC_PRESS_ID', '''Static pressure data''')
+MAV_PITOT_PRESS_ID = 12 # Pitot pressure data
+enums['SensorsTMList'][12] = EnumEntry('MAV_PITOT_PRESS_ID', '''Pitot pressure data''')
+MAV_BATTERY_VOLTAGE_ID = 13 # Battery voltage data
+enums['SensorsTMList'][13] = EnumEntry('MAV_BATTERY_VOLTAGE_ID', '''Battery voltage data''')
+MAV_LOAD_CELL_ID = 14 # Load cell data
+enums['SensorsTMList'][14] = EnumEntry('MAV_LOAD_CELL_ID', '''Load cell data''')
+MAV_FILLING_PRESS_ID = 15 # Filling line pressure
+enums['SensorsTMList'][15] = EnumEntry('MAV_FILLING_PRESS_ID', '''Filling line pressure''')
+MAV_TANK_TOP_PRESS_ID = 16 # Top tank pressure
+enums['SensorsTMList'][16] = EnumEntry('MAV_TANK_TOP_PRESS_ID', '''Top tank pressure''')
+MAV_TANK_BOTTOM_PRESS_ID = 17 # Bottom tank pressure
+enums['SensorsTMList'][17] = EnumEntry('MAV_TANK_BOTTOM_PRESS_ID', '''Bottom tank pressure''')
+MAV_TANK_TEMP_ID = 18 # Tank temperature
+enums['SensorsTMList'][18] = EnumEntry('MAV_TANK_TEMP_ID', '''Tank temperature''')
+MAV_COMBUSTION_PRESS_ID = 19 # Combustion chamber pressure
+enums['SensorsTMList'][19] = EnumEntry('MAV_COMBUSTION_PRESS_ID', '''Combustion chamber pressure''')
+MAV_VESSEL_PRESS_ID = 20 # Vessel pressure
+enums['SensorsTMList'][20] = EnumEntry('MAV_VESSEL_PRESS_ID', '''Vessel pressure''')
+MAV_LOAD_CELL_VESSEL_ID = 21 # Vessel tank weight
+enums['SensorsTMList'][21] = EnumEntry('MAV_LOAD_CELL_VESSEL_ID', '''Vessel tank weight''')
+MAV_LOAD_CELL_TANK_ID = 22 # Tank weight
+enums['SensorsTMList'][22] = EnumEntry('MAV_LOAD_CELL_TANK_ID', '''Tank weight''')
+MAV_LIS2MDL_ID = 23 # Magnetometer data
+enums['SensorsTMList'][23] = EnumEntry('MAV_LIS2MDL_ID', '''Magnetometer data''')
+MAV_LPS28DFW_ID = 24 # Pressure sensor data
+enums['SensorsTMList'][24] = EnumEntry('MAV_LPS28DFW_ID', '''Pressure sensor data''')
+MAV_LSM6DSRX_ID = 25 # IMU data
+enums['SensorsTMList'][25] = EnumEntry('MAV_LSM6DSRX_ID', '''IMU data''')
+MAV_H3LIS331DL_ID = 26 # 400G accelerometer
+enums['SensorsTMList'][26] = EnumEntry('MAV_H3LIS331DL_ID', '''400G accelerometer''')
+MAV_LPS22DF_ID = 27 # Pressure sensor data
+enums['SensorsTMList'][27] = EnumEntry('MAV_LPS22DF_ID', '''Pressure sensor data''')
+SensorsTMList_ENUM_END = 28 # 
+enums['SensorsTMList'][28] = EnumEntry('SensorsTMList_ENUM_END', '''''')
+
+# MavCommandList
+enums['MavCommandList'] = {}
+MAV_CMD_ARM = 1 # Command to arm the rocket
+enums['MavCommandList'][1] = EnumEntry('MAV_CMD_ARM', '''Command to arm the rocket''')
+MAV_CMD_DISARM = 2 # Command to disarm the rocket
+enums['MavCommandList'][2] = EnumEntry('MAV_CMD_DISARM', '''Command to disarm the rocket''')
+MAV_CMD_CALIBRATE = 3 # Command to trigger the calibration
+enums['MavCommandList'][3] = EnumEntry('MAV_CMD_CALIBRATE', '''Command to trigger the calibration''')
+MAV_CMD_SAVE_CALIBRATION = 4 # Command to save the current calibration into a file
+enums['MavCommandList'][4] = EnumEntry('MAV_CMD_SAVE_CALIBRATION', '''Command to save the current calibration into a file''')
+MAV_CMD_FORCE_INIT = 5 # Command to init the rocket
+enums['MavCommandList'][5] = EnumEntry('MAV_CMD_FORCE_INIT', '''Command to init the rocket''')
+MAV_CMD_FORCE_LAUNCH = 6 # Command to force the launch state on the rocket
+enums['MavCommandList'][6] = EnumEntry('MAV_CMD_FORCE_LAUNCH', '''Command to force the launch state on the rocket''')
+MAV_CMD_FORCE_LANDING = 7 # Command to communicate the end of the mission and close the file
+                        # descriptors in the SD card
+enums['MavCommandList'][7] = EnumEntry('MAV_CMD_FORCE_LANDING', '''Command to communicate the end of the mission and close the file descriptors in the SD card''')
+MAV_CMD_FORCE_APOGEE = 8 # Command to trigger the apogee event
+enums['MavCommandList'][8] = EnumEntry('MAV_CMD_FORCE_APOGEE', '''Command to trigger the apogee event''')
+MAV_CMD_FORCE_EXPULSION = 9 # Command to open the nosecone
+enums['MavCommandList'][9] = EnumEntry('MAV_CMD_FORCE_EXPULSION', '''Command to open the nosecone''')
+MAV_CMD_FORCE_DEPLOYMENT = 10 # Command to activate the thermal cutters and cut the drogue, activating
+                        # both thermal cutters sequentially
+enums['MavCommandList'][10] = EnumEntry('MAV_CMD_FORCE_DEPLOYMENT', '''Command to activate the thermal cutters and cut the drogue, activating both thermal cutters sequentially''')
+MAV_CMD_START_LOGGING = 11 # Command to enable sensor logging
+enums['MavCommandList'][11] = EnumEntry('MAV_CMD_START_LOGGING', '''Command to enable sensor logging''')
+MAV_CMD_STOP_LOGGING = 12 # Command to permanently close the log file
+enums['MavCommandList'][12] = EnumEntry('MAV_CMD_STOP_LOGGING', '''Command to permanently close the log file''')
+MAV_CMD_FORCE_REBOOT = 13 # Command to reset the board from test status
+enums['MavCommandList'][13] = EnumEntry('MAV_CMD_FORCE_REBOOT', '''Command to reset the board from test status''')
+MAV_CMD_ENTER_TEST_MODE = 14 # Command to enter the test mode
+enums['MavCommandList'][14] = EnumEntry('MAV_CMD_ENTER_TEST_MODE', '''Command to enter the test mode''')
+MAV_CMD_EXIT_TEST_MODE = 15 # Command to exit the test mode
+enums['MavCommandList'][15] = EnumEntry('MAV_CMD_EXIT_TEST_MODE', '''Command to exit the test mode''')
+MAV_CMD_START_RECORDING = 16 # Command to start the internal cameras recordings
+enums['MavCommandList'][16] = EnumEntry('MAV_CMD_START_RECORDING', '''Command to start the internal cameras recordings''')
+MAV_CMD_STOP_RECORDING = 17 # Command to stop the internal cameras recordings
+enums['MavCommandList'][17] = EnumEntry('MAV_CMD_STOP_RECORDING', '''Command to stop the internal cameras recordings''')
+MavCommandList_ENUM_END = 18 # 
+enums['MavCommandList'][18] = EnumEntry('MavCommandList_ENUM_END', '''''')
+
+# ServosList
+enums['ServosList'] = {}
+AIR_BRAKES_SERVO = 1 # 
+enums['ServosList'][1] = EnumEntry('AIR_BRAKES_SERVO', '''''')
+EXPULSION_SERVO = 2 # 
+enums['ServosList'][2] = EnumEntry('EXPULSION_SERVO', '''''')
+PARAFOIL_LEFT_SERVO = 3 # 
+enums['ServosList'][3] = EnumEntry('PARAFOIL_LEFT_SERVO', '''''')
+PARAFOIL_RIGHT_SERVO = 4 # 
+enums['ServosList'][4] = EnumEntry('PARAFOIL_RIGHT_SERVO', '''''')
+MAIN_VALVE = 5 # 
+enums['ServosList'][5] = EnumEntry('MAIN_VALVE', '''''')
+VENTING_VALVE = 6 # 
+enums['ServosList'][6] = EnumEntry('VENTING_VALVE', '''''')
+RELEASE_VALVE = 7 # 
+enums['ServosList'][7] = EnumEntry('RELEASE_VALVE', '''''')
+FILLING_VALVE = 8 # 
+enums['ServosList'][8] = EnumEntry('FILLING_VALVE', '''''')
+DISCONNECT_SERVO = 9 # 
+enums['ServosList'][9] = EnumEntry('DISCONNECT_SERVO', '''''')
+ServosList_ENUM_END = 10 # 
+enums['ServosList'][10] = EnumEntry('ServosList_ENUM_END', '''''')
+
+# PinsList
+enums['PinsList'] = {}
+LAUNCH_PIN = 1 # 
+enums['PinsList'][1] = EnumEntry('LAUNCH_PIN', '''''')
+NOSECONE_PIN = 2 # 
+enums['PinsList'][2] = EnumEntry('NOSECONE_PIN', '''''')
+DEPLOYMENT_PIN = 3 # 
+enums['PinsList'][3] = EnumEntry('DEPLOYMENT_PIN', '''''')
+QUICK_CONNECTOR_PIN = 4 # 
+enums['PinsList'][4] = EnumEntry('QUICK_CONNECTOR_PIN', '''''')
+PinsList_ENUM_END = 5 # 
+enums['PinsList'][5] = EnumEntry('PinsList_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_UNKNOWN = -2
+MAVLINK_MSG_ID_PING_TC = 1
+MAVLINK_MSG_ID_COMMAND_TC = 2
+MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC = 3
+MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC = 4
+MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC = 5
+MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC = 6
+MAVLINK_MSG_ID_WIGGLE_SERVO_TC = 7
+MAVLINK_MSG_ID_RESET_SERVO_TC = 8
+MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC = 9
+MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC = 10
+MAVLINK_MSG_ID_SET_ORIENTATION_TC = 11
+MAVLINK_MSG_ID_SET_COORDINATES_TC = 12
+MAVLINK_MSG_ID_RAW_EVENT_TC = 13
+MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC = 14
+MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC = 15
+MAVLINK_MSG_ID_SET_ALGORITHM_TC = 16
+MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC = 17
+MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC = 18
+MAVLINK_MSG_ID_CONRIG_STATE_TC = 19
+MAVLINK_MSG_ID_SET_IGNITION_TIME_TC = 20
+MAVLINK_MSG_ID_ACK_TM = 100
+MAVLINK_MSG_ID_NACK_TM = 101
+MAVLINK_MSG_ID_GPS_TM = 102
+MAVLINK_MSG_ID_IMU_TM = 103
+MAVLINK_MSG_ID_PRESSURE_TM = 104
+MAVLINK_MSG_ID_ADC_TM = 105
+MAVLINK_MSG_ID_VOLTAGE_TM = 106
+MAVLINK_MSG_ID_CURRENT_TM = 107
+MAVLINK_MSG_ID_TEMP_TM = 108
+MAVLINK_MSG_ID_LOAD_TM = 109
+MAVLINK_MSG_ID_ATTITUDE_TM = 110
+MAVLINK_MSG_ID_SENSOR_STATE_TM = 111
+MAVLINK_MSG_ID_SERVO_TM = 112
+MAVLINK_MSG_ID_PIN_TM = 113
+MAVLINK_MSG_ID_RECEIVER_TM = 150
+MAVLINK_MSG_ID_SYS_TM = 200
+MAVLINK_MSG_ID_FSM_TM = 201
+MAVLINK_MSG_ID_LOGGER_TM = 202
+MAVLINK_MSG_ID_MAVLINK_STATS_TM = 203
+MAVLINK_MSG_ID_TASK_STATS_TM = 204
+MAVLINK_MSG_ID_ADA_TM = 205
+MAVLINK_MSG_ID_NAS_TM = 206
+MAVLINK_MSG_ID_ROCKET_FLIGHT_TM = 208
+MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM = 209
+MAVLINK_MSG_ID_ROCKET_STATS_TM = 210
+MAVLINK_MSG_ID_PAYLOAD_STATS_TM = 211
+MAVLINK_MSG_ID_GSE_TM = 212
+MAVLINK_MSG_ID_MOTOR_TM = 213
+
+class MAVLink_ping_tc_message(MAVLink_message):
+        '''
+        TC to ping the rocket (expects an ACK message as a response)
+        '''
+        id = MAVLINK_MSG_ID_PING_TC
+        name = 'PING_TC'
+        fieldnames = ['timestamp']
+        ordered_fieldnames = ['timestamp']
+        fieldtypes = ['uint64_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<Q'
+        native_format = bytearray('<Q', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 136
+        unpacker = struct.Struct('<Q')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp):
+                MAVLink_message.__init__(self, MAVLink_ping_tc_message.id, MAVLink_ping_tc_message.name)
+                self._fieldnames = MAVLink_ping_tc_message.fieldnames
+                self._instance_field = MAVLink_ping_tc_message.instance_field
+                self._instance_offset = MAVLink_ping_tc_message.instance_offset
+                self.timestamp = timestamp
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 136, struct.pack('<Q', self.timestamp), force_mavlink1=force_mavlink1)
+
+class MAVLink_command_tc_message(MAVLink_message):
+        '''
+        TC containing a command with no parameters that trigger some
+        action
+        '''
+        id = MAVLINK_MSG_ID_COMMAND_TC
+        name = 'COMMAND_TC'
+        fieldnames = ['command_id']
+        ordered_fieldnames = ['command_id']
+        fieldtypes = ['uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<B'
+        native_format = bytearray('<B', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 198
+        unpacker = struct.Struct('<B')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, command_id):
+                MAVLink_message.__init__(self, MAVLink_command_tc_message.id, MAVLink_command_tc_message.name)
+                self._fieldnames = MAVLink_command_tc_message.fieldnames
+                self._instance_field = MAVLink_command_tc_message.instance_field
+                self._instance_offset = MAVLink_command_tc_message.instance_offset
+                self.command_id = command_id
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 198, struct.pack('<B', self.command_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_system_tm_request_tc_message(MAVLink_message):
+        '''
+        TC containing a request for the status of a board
+        '''
+        id = MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC
+        name = 'SYSTEM_TM_REQUEST_TC'
+        fieldnames = ['tm_id']
+        ordered_fieldnames = ['tm_id']
+        fieldtypes = ['uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<B'
+        native_format = bytearray('<B', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 165
+        unpacker = struct.Struct('<B')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, tm_id):
+                MAVLink_message.__init__(self, MAVLink_system_tm_request_tc_message.id, MAVLink_system_tm_request_tc_message.name)
+                self._fieldnames = MAVLink_system_tm_request_tc_message.fieldnames
+                self._instance_field = MAVLink_system_tm_request_tc_message.instance_field
+                self._instance_offset = MAVLink_system_tm_request_tc_message.instance_offset
+                self.tm_id = tm_id
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 165, struct.pack('<B', self.tm_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_sensor_tm_request_tc_message(MAVLink_message):
+        '''
+        TC containing a request for sensors telemetry
+        '''
+        id = MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC
+        name = 'SENSOR_TM_REQUEST_TC'
+        fieldnames = ['sensor_name']
+        ordered_fieldnames = ['sensor_name']
+        fieldtypes = ['uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<B'
+        native_format = bytearray('<B', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 248
+        unpacker = struct.Struct('<B')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, sensor_name):
+                MAVLink_message.__init__(self, MAVLink_sensor_tm_request_tc_message.id, MAVLink_sensor_tm_request_tc_message.name)
+                self._fieldnames = MAVLink_sensor_tm_request_tc_message.fieldnames
+                self._instance_field = MAVLink_sensor_tm_request_tc_message.instance_field
+                self._instance_offset = MAVLink_sensor_tm_request_tc_message.instance_offset
+                self.sensor_name = sensor_name
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 248, struct.pack('<B', self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_servo_tm_request_tc_message(MAVLink_message):
+        '''
+        TC containing a request for servo telemetry
+        '''
+        id = MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC
+        name = 'SERVO_TM_REQUEST_TC'
+        fieldnames = ['servo_id']
+        ordered_fieldnames = ['servo_id']
+        fieldtypes = ['uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<B'
+        native_format = bytearray('<B', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 184
+        unpacker = struct.Struct('<B')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, servo_id):
+                MAVLink_message.__init__(self, MAVLink_servo_tm_request_tc_message.id, MAVLink_servo_tm_request_tc_message.name)
+                self._fieldnames = MAVLink_servo_tm_request_tc_message.fieldnames
+                self._instance_field = MAVLink_servo_tm_request_tc_message.instance_field
+                self._instance_offset = MAVLink_servo_tm_request_tc_message.instance_offset
+                self.servo_id = servo_id
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 184, struct.pack('<B', self.servo_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_servo_angle_tc_message(MAVLink_message):
+        '''
+        Sets the angle of a certain servo
+        '''
+        id = MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC
+        name = 'SET_SERVO_ANGLE_TC'
+        fieldnames = ['servo_id', 'angle']
+        ordered_fieldnames = ['angle', 'servo_id']
+        fieldtypes = ['uint8_t', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<fB'
+        native_format = bytearray('<fB', 'ascii')
+        orders = [1, 0]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 215
+        unpacker = struct.Struct('<fB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, servo_id, angle):
+                MAVLink_message.__init__(self, MAVLink_set_servo_angle_tc_message.id, MAVLink_set_servo_angle_tc_message.name)
+                self._fieldnames = MAVLink_set_servo_angle_tc_message.fieldnames
+                self._instance_field = MAVLink_set_servo_angle_tc_message.instance_field
+                self._instance_offset = MAVLink_set_servo_angle_tc_message.instance_offset
+                self.servo_id = servo_id
+                self.angle = angle
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 215, struct.pack('<fB', self.angle, self.servo_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_wiggle_servo_tc_message(MAVLink_message):
+        '''
+        Wiggles the specified servo
+        '''
+        id = MAVLINK_MSG_ID_WIGGLE_SERVO_TC
+        name = 'WIGGLE_SERVO_TC'
+        fieldnames = ['servo_id']
+        ordered_fieldnames = ['servo_id']
+        fieldtypes = ['uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<B'
+        native_format = bytearray('<B', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 160
+        unpacker = struct.Struct('<B')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, servo_id):
+                MAVLink_message.__init__(self, MAVLink_wiggle_servo_tc_message.id, MAVLink_wiggle_servo_tc_message.name)
+                self._fieldnames = MAVLink_wiggle_servo_tc_message.fieldnames
+                self._instance_field = MAVLink_wiggle_servo_tc_message.instance_field
+                self._instance_offset = MAVLink_wiggle_servo_tc_message.instance_offset
+                self.servo_id = servo_id
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 160, struct.pack('<B', self.servo_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_reset_servo_tc_message(MAVLink_message):
+        '''
+        Resets the specified servo
+        '''
+        id = MAVLINK_MSG_ID_RESET_SERVO_TC
+        name = 'RESET_SERVO_TC'
+        fieldnames = ['servo_id']
+        ordered_fieldnames = ['servo_id']
+        fieldtypes = ['uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<B'
+        native_format = bytearray('<B', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 226
+        unpacker = struct.Struct('<B')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, servo_id):
+                MAVLink_message.__init__(self, MAVLink_reset_servo_tc_message.id, MAVLink_reset_servo_tc_message.name)
+                self._fieldnames = MAVLink_reset_servo_tc_message.fieldnames
+                self._instance_field = MAVLink_reset_servo_tc_message.instance_field
+                self._instance_offset = MAVLink_reset_servo_tc_message.instance_offset
+                self.servo_id = servo_id
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 226, struct.pack('<B', self.servo_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_reference_altitude_tc_message(MAVLink_message):
+        '''
+        Sets the reference altitude for the altimeter
+        '''
+        id = MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC
+        name = 'SET_REFERENCE_ALTITUDE_TC'
+        fieldnames = ['ref_altitude']
+        ordered_fieldnames = ['ref_altitude']
+        fieldtypes = ['float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"ref_altitude": "m"}
+        format = '<f'
+        native_format = bytearray('<f', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 113
+        unpacker = struct.Struct('<f')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, ref_altitude):
+                MAVLink_message.__init__(self, MAVLink_set_reference_altitude_tc_message.id, MAVLink_set_reference_altitude_tc_message.name)
+                self._fieldnames = MAVLink_set_reference_altitude_tc_message.fieldnames
+                self._instance_field = MAVLink_set_reference_altitude_tc_message.instance_field
+                self._instance_offset = MAVLink_set_reference_altitude_tc_message.instance_offset
+                self.ref_altitude = ref_altitude
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 113, struct.pack('<f', self.ref_altitude), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_reference_temperature_tc_message(MAVLink_message):
+        '''
+        Sets the reference temperature for the altimeter
+        '''
+        id = MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC
+        name = 'SET_REFERENCE_TEMPERATURE_TC'
+        fieldnames = ['ref_temp']
+        ordered_fieldnames = ['ref_temp']
+        fieldtypes = ['float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"ref_temp": "degC"}
+        format = '<f'
+        native_format = bytearray('<f', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 38
+        unpacker = struct.Struct('<f')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, ref_temp):
+                MAVLink_message.__init__(self, MAVLink_set_reference_temperature_tc_message.id, MAVLink_set_reference_temperature_tc_message.name)
+                self._fieldnames = MAVLink_set_reference_temperature_tc_message.fieldnames
+                self._instance_field = MAVLink_set_reference_temperature_tc_message.instance_field
+                self._instance_offset = MAVLink_set_reference_temperature_tc_message.instance_offset
+                self.ref_temp = ref_temp
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 38, struct.pack('<f', self.ref_temp), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_orientation_tc_message(MAVLink_message):
+        '''
+        Sets current orientation for the navigation system
+        '''
+        id = MAVLINK_MSG_ID_SET_ORIENTATION_TC
+        name = 'SET_ORIENTATION_TC'
+        fieldnames = ['yaw', 'pitch', 'roll']
+        ordered_fieldnames = ['yaw', 'pitch', 'roll']
+        fieldtypes = ['float', 'float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"yaw": "deg", "pitch": "deg", "roll": "deg"}
+        format = '<fff'
+        native_format = bytearray('<fff', 'ascii')
+        orders = [0, 1, 2]
+        lengths = [1, 1, 1]
+        array_lengths = [0, 0, 0]
+        crc_extra = 71
+        unpacker = struct.Struct('<fff')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, yaw, pitch, roll):
+                MAVLink_message.__init__(self, MAVLink_set_orientation_tc_message.id, MAVLink_set_orientation_tc_message.name)
+                self._fieldnames = MAVLink_set_orientation_tc_message.fieldnames
+                self._instance_field = MAVLink_set_orientation_tc_message.instance_field
+                self._instance_offset = MAVLink_set_orientation_tc_message.instance_offset
+                self.yaw = yaw
+                self.pitch = pitch
+                self.roll = roll
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 71, struct.pack('<fff', self.yaw, self.pitch, self.roll), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_coordinates_tc_message(MAVLink_message):
+        '''
+        Sets current coordinates
+        '''
+        id = MAVLINK_MSG_ID_SET_COORDINATES_TC
+        name = 'SET_COORDINATES_TC'
+        fieldnames = ['latitude', 'longitude']
+        ordered_fieldnames = ['latitude', 'longitude']
+        fieldtypes = ['float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"latitude": "deg", "longitude": "deg"}
+        format = '<ff'
+        native_format = bytearray('<ff', 'ascii')
+        orders = [0, 1]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 67
+        unpacker = struct.Struct('<ff')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, latitude, longitude):
+                MAVLink_message.__init__(self, MAVLink_set_coordinates_tc_message.id, MAVLink_set_coordinates_tc_message.name)
+                self._fieldnames = MAVLink_set_coordinates_tc_message.fieldnames
+                self._instance_field = MAVLink_set_coordinates_tc_message.instance_field
+                self._instance_offset = MAVLink_set_coordinates_tc_message.instance_offset
+                self.latitude = latitude
+                self.longitude = longitude
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 67, struct.pack('<ff', self.latitude, self.longitude), force_mavlink1=force_mavlink1)
+
+class MAVLink_raw_event_tc_message(MAVLink_message):
+        '''
+        TC containing a raw event to be posted directly in the
+        EventBroker
+        '''
+        id = MAVLINK_MSG_ID_RAW_EVENT_TC
+        name = 'RAW_EVENT_TC'
+        fieldnames = ['topic_id', 'event_id']
+        ordered_fieldnames = ['topic_id', 'event_id']
+        fieldtypes = ['uint8_t', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<BB'
+        native_format = bytearray('<BB', 'ascii')
+        orders = [0, 1]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 218
+        unpacker = struct.Struct('<BB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, topic_id, event_id):
+                MAVLink_message.__init__(self, MAVLink_raw_event_tc_message.id, MAVLink_raw_event_tc_message.name)
+                self._fieldnames = MAVLink_raw_event_tc_message.fieldnames
+                self._instance_field = MAVLink_raw_event_tc_message.instance_field
+                self._instance_offset = MAVLink_raw_event_tc_message.instance_offset
+                self.topic_id = topic_id
+                self.event_id = event_id
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 218, struct.pack('<BB', self.topic_id, self.event_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_deployment_altitude_tc_message(MAVLink_message):
+        '''
+        Sets the deployment altitude for the main parachute
+        '''
+        id = MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC
+        name = 'SET_DEPLOYMENT_ALTITUDE_TC'
+        fieldnames = ['dpl_altitude']
+        ordered_fieldnames = ['dpl_altitude']
+        fieldtypes = ['float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"dpl_altitude": "m"}
+        format = '<f'
+        native_format = bytearray('<f', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 44
+        unpacker = struct.Struct('<f')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, dpl_altitude):
+                MAVLink_message.__init__(self, MAVLink_set_deployment_altitude_tc_message.id, MAVLink_set_deployment_altitude_tc_message.name)
+                self._fieldnames = MAVLink_set_deployment_altitude_tc_message.fieldnames
+                self._instance_field = MAVLink_set_deployment_altitude_tc_message.instance_field
+                self._instance_offset = MAVLink_set_deployment_altitude_tc_message.instance_offset
+                self.dpl_altitude = dpl_altitude
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 44, struct.pack('<f', self.dpl_altitude), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_target_coordinates_tc_message(MAVLink_message):
+        '''
+        Sets the target coordinates
+        '''
+        id = MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC
+        name = 'SET_TARGET_COORDINATES_TC'
+        fieldnames = ['latitude', 'longitude']
+        ordered_fieldnames = ['latitude', 'longitude']
+        fieldtypes = ['float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"latitude": "deg", "longitude": "deg"}
+        format = '<ff'
+        native_format = bytearray('<ff', 'ascii')
+        orders = [0, 1]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 81
+        unpacker = struct.Struct('<ff')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, latitude, longitude):
+                MAVLink_message.__init__(self, MAVLink_set_target_coordinates_tc_message.id, MAVLink_set_target_coordinates_tc_message.name)
+                self._fieldnames = MAVLink_set_target_coordinates_tc_message.fieldnames
+                self._instance_field = MAVLink_set_target_coordinates_tc_message.instance_field
+                self._instance_offset = MAVLink_set_target_coordinates_tc_message.instance_offset
+                self.latitude = latitude
+                self.longitude = longitude
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 81, struct.pack('<ff', self.latitude, self.longitude), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_algorithm_tc_message(MAVLink_message):
+        '''
+        Sets the algorithm number (for parafoil guidance and GSE tars)
+        '''
+        id = MAVLINK_MSG_ID_SET_ALGORITHM_TC
+        name = 'SET_ALGORITHM_TC'
+        fieldnames = ['algorithm_number']
+        ordered_fieldnames = ['algorithm_number']
+        fieldtypes = ['uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<B'
+        native_format = bytearray('<B', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 181
+        unpacker = struct.Struct('<B')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, algorithm_number):
+                MAVLink_message.__init__(self, MAVLink_set_algorithm_tc_message.id, MAVLink_set_algorithm_tc_message.name)
+                self._fieldnames = MAVLink_set_algorithm_tc_message.fieldnames
+                self._instance_field = MAVLink_set_algorithm_tc_message.instance_field
+                self._instance_offset = MAVLink_set_algorithm_tc_message.instance_offset
+                self.algorithm_number = algorithm_number
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 181, struct.pack('<B', self.algorithm_number), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_atomic_valve_timing_tc_message(MAVLink_message):
+        '''
+        Sets the maximum time that the valves can be open atomically
+        '''
+        id = MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC
+        name = 'SET_ATOMIC_VALVE_TIMING_TC'
+        fieldnames = ['servo_id', 'maximum_timing']
+        ordered_fieldnames = ['maximum_timing', 'servo_id']
+        fieldtypes = ['uint8_t', 'uint32_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"maximum_timing": "ms"}
+        format = '<IB'
+        native_format = bytearray('<IB', 'ascii')
+        orders = [1, 0]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 110
+        unpacker = struct.Struct('<IB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, servo_id, maximum_timing):
+                MAVLink_message.__init__(self, MAVLink_set_atomic_valve_timing_tc_message.id, MAVLink_set_atomic_valve_timing_tc_message.name)
+                self._fieldnames = MAVLink_set_atomic_valve_timing_tc_message.fieldnames
+                self._instance_field = MAVLink_set_atomic_valve_timing_tc_message.instance_field
+                self._instance_offset = MAVLink_set_atomic_valve_timing_tc_message.instance_offset
+                self.servo_id = servo_id
+                self.maximum_timing = maximum_timing
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 110, struct.pack('<IB', self.maximum_timing, self.servo_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_valve_maximum_aperture_tc_message(MAVLink_message):
+        '''
+        Sets the maximum aperture of the specified valve. Set as value
+        from 0 to 1
+        '''
+        id = MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC
+        name = 'SET_VALVE_MAXIMUM_APERTURE_TC'
+        fieldnames = ['servo_id', 'maximum_aperture']
+        ordered_fieldnames = ['maximum_aperture', 'servo_id']
+        fieldtypes = ['uint8_t', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<fB'
+        native_format = bytearray('<fB', 'ascii')
+        orders = [1, 0]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 22
+        unpacker = struct.Struct('<fB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, servo_id, maximum_aperture):
+                MAVLink_message.__init__(self, MAVLink_set_valve_maximum_aperture_tc_message.id, MAVLink_set_valve_maximum_aperture_tc_message.name)
+                self._fieldnames = MAVLink_set_valve_maximum_aperture_tc_message.fieldnames
+                self._instance_field = MAVLink_set_valve_maximum_aperture_tc_message.instance_field
+                self._instance_offset = MAVLink_set_valve_maximum_aperture_tc_message.instance_offset
+                self.servo_id = servo_id
+                self.maximum_aperture = maximum_aperture
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 22, struct.pack('<fB', self.maximum_aperture, self.servo_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_conrig_state_tc_message(MAVLink_message):
+        '''
+        Send the state of the conrig buttons
+        '''
+        id = MAVLINK_MSG_ID_CONRIG_STATE_TC
+        name = 'CONRIG_STATE_TC'
+        fieldnames = ['ignition_btn', 'filling_valve_btn', 'venting_valve_btn', 'release_pressure_btn', 'quick_connector_btn', 'start_tars_btn', 'arm_switch']
+        ordered_fieldnames = ['ignition_btn', 'filling_valve_btn', 'venting_valve_btn', 'release_pressure_btn', 'quick_connector_btn', 'start_tars_btn', 'arm_switch']
+        fieldtypes = ['uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<BBBBBBB'
+        native_format = bytearray('<BBBBBBB', 'ascii')
+        orders = [0, 1, 2, 3, 4, 5, 6]
+        lengths = [1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 65
+        unpacker = struct.Struct('<BBBBBBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, ignition_btn, filling_valve_btn, venting_valve_btn, release_pressure_btn, quick_connector_btn, start_tars_btn, arm_switch):
+                MAVLink_message.__init__(self, MAVLink_conrig_state_tc_message.id, MAVLink_conrig_state_tc_message.name)
+                self._fieldnames = MAVLink_conrig_state_tc_message.fieldnames
+                self._instance_field = MAVLink_conrig_state_tc_message.instance_field
+                self._instance_offset = MAVLink_conrig_state_tc_message.instance_offset
+                self.ignition_btn = ignition_btn
+                self.filling_valve_btn = filling_valve_btn
+                self.venting_valve_btn = venting_valve_btn
+                self.release_pressure_btn = release_pressure_btn
+                self.quick_connector_btn = quick_connector_btn
+                self.start_tars_btn = start_tars_btn
+                self.arm_switch = arm_switch
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 65, struct.pack('<BBBBBBB', self.ignition_btn, self.filling_valve_btn, self.venting_valve_btn, self.release_pressure_btn, self.quick_connector_btn, self.start_tars_btn, self.arm_switch), force_mavlink1=force_mavlink1)
+
+class MAVLink_set_ignition_time_tc_message(MAVLink_message):
+        '''
+        Sets the time in ms that the igniter stays on before the
+        oxidant valve is opened
+        '''
+        id = MAVLINK_MSG_ID_SET_IGNITION_TIME_TC
+        name = 'SET_IGNITION_TIME_TC'
+        fieldnames = ['timing']
+        ordered_fieldnames = ['timing']
+        fieldtypes = ['uint32_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timing": "ms"}
+        format = '<I'
+        native_format = bytearray('<I', 'ascii')
+        orders = [0]
+        lengths = [1]
+        array_lengths = [0]
+        crc_extra = 79
+        unpacker = struct.Struct('<I')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timing):
+                MAVLink_message.__init__(self, MAVLink_set_ignition_time_tc_message.id, MAVLink_set_ignition_time_tc_message.name)
+                self._fieldnames = MAVLink_set_ignition_time_tc_message.fieldnames
+                self._instance_field = MAVLink_set_ignition_time_tc_message.instance_field
+                self._instance_offset = MAVLink_set_ignition_time_tc_message.instance_offset
+                self.timing = timing
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 79, struct.pack('<I', self.timing), force_mavlink1=force_mavlink1)
+
+class MAVLink_ack_tm_message(MAVLink_message):
+        '''
+        TM containing an ACK message to notify that the message has
+        been received
+        '''
+        id = MAVLINK_MSG_ID_ACK_TM
+        name = 'ACK_TM'
+        fieldnames = ['recv_msgid', 'seq_ack']
+        ordered_fieldnames = ['recv_msgid', 'seq_ack']
+        fieldtypes = ['uint8_t', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<BB'
+        native_format = bytearray('<BB', 'ascii')
+        orders = [0, 1]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 50
+        unpacker = struct.Struct('<BB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, recv_msgid, seq_ack):
+                MAVLink_message.__init__(self, MAVLink_ack_tm_message.id, MAVLink_ack_tm_message.name)
+                self._fieldnames = MAVLink_ack_tm_message.fieldnames
+                self._instance_field = MAVLink_ack_tm_message.instance_field
+                self._instance_offset = MAVLink_ack_tm_message.instance_offset
+                self.recv_msgid = recv_msgid
+                self.seq_ack = seq_ack
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 50, struct.pack('<BB', self.recv_msgid, self.seq_ack), force_mavlink1=force_mavlink1)
+
+class MAVLink_nack_tm_message(MAVLink_message):
+        '''
+        TM containing a NACK message to notify that the received
+        message was invalid
+        '''
+        id = MAVLINK_MSG_ID_NACK_TM
+        name = 'NACK_TM'
+        fieldnames = ['recv_msgid', 'seq_ack']
+        ordered_fieldnames = ['recv_msgid', 'seq_ack']
+        fieldtypes = ['uint8_t', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<BB'
+        native_format = bytearray('<BB', 'ascii')
+        orders = [0, 1]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 146
+        unpacker = struct.Struct('<BB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, recv_msgid, seq_ack):
+                MAVLink_message.__init__(self, MAVLink_nack_tm_message.id, MAVLink_nack_tm_message.name)
+                self._fieldnames = MAVLink_nack_tm_message.fieldnames
+                self._instance_field = MAVLink_nack_tm_message.instance_field
+                self._instance_offset = MAVLink_nack_tm_message.instance_offset
+                self.recv_msgid = recv_msgid
+                self.seq_ack = seq_ack
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 146, struct.pack('<BB', self.recv_msgid, self.seq_ack), force_mavlink1=force_mavlink1)
+
+class MAVLink_gps_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_GPS_TM
+        name = 'GPS_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'fix', 'latitude', 'longitude', 'height', 'vel_north', 'vel_east', 'vel_down', 'speed', 'track', 'n_satellites']
+        ordered_fieldnames = ['timestamp', 'latitude', 'longitude', 'height', 'vel_north', 'vel_east', 'vel_down', 'speed', 'track', 'sensor_name', 'fix', 'n_satellites']
+        fieldtypes = ['uint64_t', 'char', 'uint8_t', 'double', 'double', 'double', 'float', 'float', 'float', 'float', 'float', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "latitude": "deg", "longitude": "deg", "height": "m", "vel_north": "m/s", "vel_east": "m/s", "vel_down": "m/s", "speed": "m/s", "track": "deg"}
+        format = '<Qdddfffff20sBB'
+        native_format = bytearray('<QdddfffffcBB', 'ascii')
+        orders = [0, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 11]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0]
+        crc_extra = 57
+        unpacker = struct.Struct('<Qdddfffff20sBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, fix, latitude, longitude, height, vel_north, vel_east, vel_down, speed, track, n_satellites):
+                MAVLink_message.__init__(self, MAVLink_gps_tm_message.id, MAVLink_gps_tm_message.name)
+                self._fieldnames = MAVLink_gps_tm_message.fieldnames
+                self._instance_field = MAVLink_gps_tm_message.instance_field
+                self._instance_offset = MAVLink_gps_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.fix = fix
+                self.latitude = latitude
+                self.longitude = longitude
+                self.height = height
+                self.vel_north = vel_north
+                self.vel_east = vel_east
+                self.vel_down = vel_down
+                self.speed = speed
+                self.track = track
+                self.n_satellites = n_satellites
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 57, struct.pack('<Qdddfffff20sBB', self.timestamp, self.latitude, self.longitude, self.height, self.vel_north, self.vel_east, self.vel_down, self.speed, self.track, self.sensor_name, self.fix, self.n_satellites), force_mavlink1=force_mavlink1)
+
+class MAVLink_imu_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_IMU_TM
+        name = 'IMU_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'acc_x', 'acc_y', 'acc_z', 'gyro_x', 'gyro_y', 'gyro_z', 'mag_x', 'mag_y', 'mag_z']
+        ordered_fieldnames = ['timestamp', 'acc_x', 'acc_y', 'acc_z', 'gyro_x', 'gyro_y', 'gyro_z', 'mag_x', 'mag_y', 'mag_z', 'sensor_name']
+        fieldtypes = ['uint64_t', 'char', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "acc_x": "m/s2", "acc_y": "m/s2", "acc_z": "m/s2", "gyro_x": "rad/s", "gyro_y": "rad/s", "gyro_z": "rad/s", "mag_x": "uT", "mag_y": "uT", "mag_z": "uT"}
+        format = '<Qfffffffff20s'
+        native_format = bytearray('<Qfffffffffc', 'ascii')
+        orders = [0, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20]
+        crc_extra = 72
+        unpacker = struct.Struct('<Qfffffffff20s')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z):
+                MAVLink_message.__init__(self, MAVLink_imu_tm_message.id, MAVLink_imu_tm_message.name)
+                self._fieldnames = MAVLink_imu_tm_message.fieldnames
+                self._instance_field = MAVLink_imu_tm_message.instance_field
+                self._instance_offset = MAVLink_imu_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.acc_x = acc_x
+                self.acc_y = acc_y
+                self.acc_z = acc_z
+                self.gyro_x = gyro_x
+                self.gyro_y = gyro_y
+                self.gyro_z = gyro_z
+                self.mag_x = mag_x
+                self.mag_y = mag_y
+                self.mag_z = mag_z
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 72, struct.pack('<Qfffffffff20s', self.timestamp, self.acc_x, self.acc_y, self.acc_z, self.gyro_x, self.gyro_y, self.gyro_z, self.mag_x, self.mag_y, self.mag_z, self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_pressure_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_PRESSURE_TM
+        name = 'PRESSURE_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'pressure']
+        ordered_fieldnames = ['timestamp', 'pressure', 'sensor_name']
+        fieldtypes = ['uint64_t', 'char', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "pressure": "Pa"}
+        format = '<Qf20s'
+        native_format = bytearray('<Qfc', 'ascii')
+        orders = [0, 2, 1]
+        lengths = [1, 1, 1]
+        array_lengths = [0, 0, 20]
+        crc_extra = 87
+        unpacker = struct.Struct('<Qf20s')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, pressure):
+                MAVLink_message.__init__(self, MAVLink_pressure_tm_message.id, MAVLink_pressure_tm_message.name)
+                self._fieldnames = MAVLink_pressure_tm_message.fieldnames
+                self._instance_field = MAVLink_pressure_tm_message.instance_field
+                self._instance_offset = MAVLink_pressure_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.pressure = pressure
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 87, struct.pack('<Qf20s', self.timestamp, self.pressure, self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_adc_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_ADC_TM
+        name = 'ADC_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'channel_0', 'channel_1', 'channel_2', 'channel_3']
+        ordered_fieldnames = ['timestamp', 'channel_0', 'channel_1', 'channel_2', 'channel_3', 'sensor_name']
+        fieldtypes = ['uint64_t', 'char', 'float', 'float', 'float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "channel_0": "V", "channel_1": "V", "channel_2": "V", "channel_3": "V"}
+        format = '<Qffff20s'
+        native_format = bytearray('<Qffffc', 'ascii')
+        orders = [0, 5, 1, 2, 3, 4]
+        lengths = [1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 20]
+        crc_extra = 223
+        unpacker = struct.Struct('<Qffff20s')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, channel_0, channel_1, channel_2, channel_3):
+                MAVLink_message.__init__(self, MAVLink_adc_tm_message.id, MAVLink_adc_tm_message.name)
+                self._fieldnames = MAVLink_adc_tm_message.fieldnames
+                self._instance_field = MAVLink_adc_tm_message.instance_field
+                self._instance_offset = MAVLink_adc_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.channel_0 = channel_0
+                self.channel_1 = channel_1
+                self.channel_2 = channel_2
+                self.channel_3 = channel_3
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 223, struct.pack('<Qffff20s', self.timestamp, self.channel_0, self.channel_1, self.channel_2, self.channel_3, self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_voltage_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_VOLTAGE_TM
+        name = 'VOLTAGE_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'voltage']
+        ordered_fieldnames = ['timestamp', 'voltage', 'sensor_name']
+        fieldtypes = ['uint64_t', 'char', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "voltage": "V"}
+        format = '<Qf20s'
+        native_format = bytearray('<Qfc', 'ascii')
+        orders = [0, 2, 1]
+        lengths = [1, 1, 1]
+        array_lengths = [0, 0, 20]
+        crc_extra = 245
+        unpacker = struct.Struct('<Qf20s')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, voltage):
+                MAVLink_message.__init__(self, MAVLink_voltage_tm_message.id, MAVLink_voltage_tm_message.name)
+                self._fieldnames = MAVLink_voltage_tm_message.fieldnames
+                self._instance_field = MAVLink_voltage_tm_message.instance_field
+                self._instance_offset = MAVLink_voltage_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.voltage = voltage
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 245, struct.pack('<Qf20s', self.timestamp, self.voltage, self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_current_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_CURRENT_TM
+        name = 'CURRENT_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'current']
+        ordered_fieldnames = ['timestamp', 'current', 'sensor_name']
+        fieldtypes = ['uint64_t', 'char', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "current": "A"}
+        format = '<Qf20s'
+        native_format = bytearray('<Qfc', 'ascii')
+        orders = [0, 2, 1]
+        lengths = [1, 1, 1]
+        array_lengths = [0, 0, 20]
+        crc_extra = 212
+        unpacker = struct.Struct('<Qf20s')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, current):
+                MAVLink_message.__init__(self, MAVLink_current_tm_message.id, MAVLink_current_tm_message.name)
+                self._fieldnames = MAVLink_current_tm_message.fieldnames
+                self._instance_field = MAVLink_current_tm_message.instance_field
+                self._instance_offset = MAVLink_current_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.current = current
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 212, struct.pack('<Qf20s', self.timestamp, self.current, self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_temp_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_TEMP_TM
+        name = 'TEMP_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'temperature']
+        ordered_fieldnames = ['timestamp', 'temperature', 'sensor_name']
+        fieldtypes = ['uint64_t', 'char', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "temperature": "deg"}
+        format = '<Qf20s'
+        native_format = bytearray('<Qfc', 'ascii')
+        orders = [0, 2, 1]
+        lengths = [1, 1, 1]
+        array_lengths = [0, 0, 20]
+        crc_extra = 140
+        unpacker = struct.Struct('<Qf20s')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, temperature):
+                MAVLink_message.__init__(self, MAVLink_temp_tm_message.id, MAVLink_temp_tm_message.name)
+                self._fieldnames = MAVLink_temp_tm_message.fieldnames
+                self._instance_field = MAVLink_temp_tm_message.instance_field
+                self._instance_offset = MAVLink_temp_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.temperature = temperature
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 140, struct.pack('<Qf20s', self.timestamp, self.temperature, self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_load_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_LOAD_TM
+        name = 'LOAD_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'load']
+        ordered_fieldnames = ['timestamp', 'load', 'sensor_name']
+        fieldtypes = ['uint64_t', 'char', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "load": "kg"}
+        format = '<Qf20s'
+        native_format = bytearray('<Qfc', 'ascii')
+        orders = [0, 2, 1]
+        lengths = [1, 1, 1]
+        array_lengths = [0, 0, 20]
+        crc_extra = 148
+        unpacker = struct.Struct('<Qf20s')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, load):
+                MAVLink_message.__init__(self, MAVLink_load_tm_message.id, MAVLink_load_tm_message.name)
+                self._fieldnames = MAVLink_load_tm_message.fieldnames
+                self._instance_field = MAVLink_load_tm_message.instance_field
+                self._instance_offset = MAVLink_load_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.load = load
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 148, struct.pack('<Qf20s', self.timestamp, self.load, self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_attitude_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_ATTITUDE_TM
+        name = 'ATTITUDE_TM'
+        fieldnames = ['timestamp', 'sensor_name', 'roll', 'pitch', 'yaw', 'quat_x', 'quat_y', 'quat_z', 'quat_w']
+        ordered_fieldnames = ['timestamp', 'roll', 'pitch', 'yaw', 'quat_x', 'quat_y', 'quat_z', 'quat_w', 'sensor_name']
+        fieldtypes = ['uint64_t', 'char', 'float', 'float', 'float', 'float', 'float', 'float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "roll": "deg", "pitch": "deg", "yaw": "deg"}
+        format = '<Qfffffff20s'
+        native_format = bytearray('<Qfffffffc', 'ascii')
+        orders = [0, 8, 1, 2, 3, 4, 5, 6, 7]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 20]
+        crc_extra = 6
+        unpacker = struct.Struct('<Qfffffff20s')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, sensor_name, roll, pitch, yaw, quat_x, quat_y, quat_z, quat_w):
+                MAVLink_message.__init__(self, MAVLink_attitude_tm_message.id, MAVLink_attitude_tm_message.name)
+                self._fieldnames = MAVLink_attitude_tm_message.fieldnames
+                self._instance_field = MAVLink_attitude_tm_message.instance_field
+                self._instance_offset = MAVLink_attitude_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.sensor_name = sensor_name
+                self.roll = roll
+                self.pitch = pitch
+                self.yaw = yaw
+                self.quat_x = quat_x
+                self.quat_y = quat_y
+                self.quat_z = quat_z
+                self.quat_w = quat_w
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 6, struct.pack('<Qfffffff20s', self.timestamp, self.roll, self.pitch, self.yaw, self.quat_x, self.quat_y, self.quat_z, self.quat_w, self.sensor_name), force_mavlink1=force_mavlink1)
+
+class MAVLink_sensor_state_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_SENSOR_STATE_TM
+        name = 'SENSOR_STATE_TM'
+        fieldnames = ['sensor_name', 'state']
+        ordered_fieldnames = ['sensor_name', 'state']
+        fieldtypes = ['char', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<20sB'
+        native_format = bytearray('<cB', 'ascii')
+        orders = [0, 1]
+        lengths = [1, 1]
+        array_lengths = [20, 0]
+        crc_extra = 155
+        unpacker = struct.Struct('<20sB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, sensor_name, state):
+                MAVLink_message.__init__(self, MAVLink_sensor_state_tm_message.id, MAVLink_sensor_state_tm_message.name)
+                self._fieldnames = MAVLink_sensor_state_tm_message.fieldnames
+                self._instance_field = MAVLink_sensor_state_tm_message.instance_field
+                self._instance_offset = MAVLink_sensor_state_tm_message.instance_offset
+                self.sensor_name = sensor_name
+                self.state = state
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 155, struct.pack('<20sB', self.sensor_name, self.state), force_mavlink1=force_mavlink1)
+
+class MAVLink_servo_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_SERVO_TM
+        name = 'SERVO_TM'
+        fieldnames = ['servo_id', 'servo_position']
+        ordered_fieldnames = ['servo_position', 'servo_id']
+        fieldtypes = ['uint8_t', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {}
+        format = '<fB'
+        native_format = bytearray('<fB', 'ascii')
+        orders = [1, 0]
+        lengths = [1, 1]
+        array_lengths = [0, 0]
+        crc_extra = 87
+        unpacker = struct.Struct('<fB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, servo_id, servo_position):
+                MAVLink_message.__init__(self, MAVLink_servo_tm_message.id, MAVLink_servo_tm_message.name)
+                self._fieldnames = MAVLink_servo_tm_message.fieldnames
+                self._instance_field = MAVLink_servo_tm_message.instance_field
+                self._instance_offset = MAVLink_servo_tm_message.instance_offset
+                self.servo_id = servo_id
+                self.servo_position = servo_position
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 87, struct.pack('<fB', self.servo_position, self.servo_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_pin_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_PIN_TM
+        name = 'PIN_TM'
+        fieldnames = ['timestamp', 'pin_id', 'last_change_timestamp', 'changes_counter', 'current_state']
+        ordered_fieldnames = ['timestamp', 'last_change_timestamp', 'pin_id', 'changes_counter', 'current_state']
+        fieldtypes = ['uint64_t', 'uint8_t', 'uint64_t', 'uint8_t', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us"}
+        format = '<QQBBB'
+        native_format = bytearray('<QQBBB', 'ascii')
+        orders = [0, 2, 1, 3, 4]
+        lengths = [1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0]
+        crc_extra = 255
+        unpacker = struct.Struct('<QQBBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, pin_id, last_change_timestamp, changes_counter, current_state):
+                MAVLink_message.__init__(self, MAVLink_pin_tm_message.id, MAVLink_pin_tm_message.name)
+                self._fieldnames = MAVLink_pin_tm_message.fieldnames
+                self._instance_field = MAVLink_pin_tm_message.instance_field
+                self._instance_offset = MAVLink_pin_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.pin_id = pin_id
+                self.last_change_timestamp = last_change_timestamp
+                self.changes_counter = changes_counter
+                self.current_state = current_state
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 255, struct.pack('<QQBBB', self.timestamp, self.last_change_timestamp, self.pin_id, self.changes_counter, self.current_state), force_mavlink1=force_mavlink1)
+
+class MAVLink_receiver_tm_message(MAVLink_message):
+        '''
+
+        '''
+        id = MAVLINK_MSG_ID_RECEIVER_TM
+        name = 'RECEIVER_TM'
+        fieldnames = ['timestamp', 'main_radio_present', 'main_packet_tx_error_count', 'main_tx_bitrate', 'main_packet_rx_success_count', 'main_packet_rx_drop_count', 'main_rx_bitrate', 'main_rx_rssi', 'main_rx_fei', 'payload_radio_present', 'payload_packet_tx_error_count', 'payload_tx_bitrate', 'payload_packet_rx_success_count', 'payload_packet_rx_drop_count', 'payload_rx_bitrate', 'payload_rx_rssi', 'payload_rx_fei']
+        ordered_fieldnames = ['timestamp', 'main_rx_rssi', 'main_rx_fei', 'payload_rx_rssi', 'payload_rx_fei', 'main_packet_tx_error_count', 'main_tx_bitrate', 'main_packet_rx_success_count', 'main_packet_rx_drop_count', 'main_rx_bitrate', 'payload_packet_tx_error_count', 'payload_tx_bitrate', 'payload_packet_rx_success_count', 'payload_packet_rx_drop_count', 'payload_rx_bitrate', 'main_radio_present', 'payload_radio_present']
+        fieldtypes = ['uint64_t', 'uint8_t', 'uint16_t', 'uint16_t', 'uint16_t', 'uint16_t', 'uint16_t', 'float', 'float', 'uint8_t', 'uint16_t', 'uint16_t', 'uint16_t', 'uint16_t', 'uint16_t', 'float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "main_tx_bitrate": "b/s", "main_rx_bitrate": "b/s", "main_rx_rssi": "dBm", "main_rx_fei": "Hz", "payload_tx_bitrate": "b/s", "payload_rx_bitrate": "b/s", "payload_rx_rssi": "dBm", "payload_rx_fei": "Hz"}
+        format = '<QffffHHHHHHHHHHBB'
+        native_format = bytearray('<QffffHHHHHHHHHHBB', 'ascii')
+        orders = [0, 15, 5, 6, 7, 8, 9, 1, 2, 16, 10, 11, 12, 13, 14, 3, 4]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 104
+        unpacker = struct.Struct('<QffffHHHHHHHHHHBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, main_radio_present, main_packet_tx_error_count, main_tx_bitrate, main_packet_rx_success_count, main_packet_rx_drop_count, main_rx_bitrate, main_rx_rssi, main_rx_fei, payload_radio_present, payload_packet_tx_error_count, payload_tx_bitrate, payload_packet_rx_success_count, payload_packet_rx_drop_count, payload_rx_bitrate, payload_rx_rssi, payload_rx_fei):
+                MAVLink_message.__init__(self, MAVLink_receiver_tm_message.id, MAVLink_receiver_tm_message.name)
+                self._fieldnames = MAVLink_receiver_tm_message.fieldnames
+                self._instance_field = MAVLink_receiver_tm_message.instance_field
+                self._instance_offset = MAVLink_receiver_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.main_radio_present = main_radio_present
+                self.main_packet_tx_error_count = main_packet_tx_error_count
+                self.main_tx_bitrate = main_tx_bitrate
+                self.main_packet_rx_success_count = main_packet_rx_success_count
+                self.main_packet_rx_drop_count = main_packet_rx_drop_count
+                self.main_rx_bitrate = main_rx_bitrate
+                self.main_rx_rssi = main_rx_rssi
+                self.main_rx_fei = main_rx_fei
+                self.payload_radio_present = payload_radio_present
+                self.payload_packet_tx_error_count = payload_packet_tx_error_count
+                self.payload_tx_bitrate = payload_tx_bitrate
+                self.payload_packet_rx_success_count = payload_packet_rx_success_count
+                self.payload_packet_rx_drop_count = payload_packet_rx_drop_count
+                self.payload_rx_bitrate = payload_rx_bitrate
+                self.payload_rx_rssi = payload_rx_rssi
+                self.payload_rx_fei = payload_rx_fei
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 104, struct.pack('<QffffHHHHHHHHHHBB', self.timestamp, self.main_rx_rssi, self.main_rx_fei, self.payload_rx_rssi, self.payload_rx_fei, self.main_packet_tx_error_count, self.main_tx_bitrate, self.main_packet_rx_success_count, self.main_packet_rx_drop_count, self.main_rx_bitrate, self.payload_packet_tx_error_count, self.payload_tx_bitrate, self.payload_packet_rx_success_count, self.payload_packet_rx_drop_count, self.payload_rx_bitrate, self.main_radio_present, self.payload_radio_present), force_mavlink1=force_mavlink1)
+
+class MAVLink_sys_tm_message(MAVLink_message):
+        '''
+        System status telemetry
+        '''
+        id = MAVLINK_MSG_ID_SYS_TM
+        name = 'SYS_TM'
+        fieldnames = ['timestamp', 'logger', 'event_broker', 'radio', 'pin_observer', 'sensors', 'board_scheduler']
+        ordered_fieldnames = ['timestamp', 'logger', 'event_broker', 'radio', 'pin_observer', 'sensors', 'board_scheduler']
+        fieldtypes = ['uint64_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us"}
+        format = '<QBBBBBB'
+        native_format = bytearray('<QBBBBBB', 'ascii')
+        orders = [0, 1, 2, 3, 4, 5, 6]
+        lengths = [1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 183
+        unpacker = struct.Struct('<QBBBBBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, logger, event_broker, radio, pin_observer, sensors, board_scheduler):
+                MAVLink_message.__init__(self, MAVLink_sys_tm_message.id, MAVLink_sys_tm_message.name)
+                self._fieldnames = MAVLink_sys_tm_message.fieldnames
+                self._instance_field = MAVLink_sys_tm_message.instance_field
+                self._instance_offset = MAVLink_sys_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.logger = logger
+                self.event_broker = event_broker
+                self.radio = radio
+                self.pin_observer = pin_observer
+                self.sensors = sensors
+                self.board_scheduler = board_scheduler
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 183, struct.pack('<QBBBBBB', self.timestamp, self.logger, self.event_broker, self.radio, self.pin_observer, self.sensors, self.board_scheduler), force_mavlink1=force_mavlink1)
+
+class MAVLink_fsm_tm_message(MAVLink_message):
+        '''
+        Flight State Machine status telemetry
+        '''
+        id = MAVLINK_MSG_ID_FSM_TM
+        name = 'FSM_TM'
+        fieldnames = ['timestamp', 'ada_state', 'abk_state', 'dpl_state', 'fmm_state', 'nas_state', 'wes_state']
+        ordered_fieldnames = ['timestamp', 'ada_state', 'abk_state', 'dpl_state', 'fmm_state', 'nas_state', 'wes_state']
+        fieldtypes = ['uint64_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us"}
+        format = '<QBBBBBB'
+        native_format = bytearray('<QBBBBBB', 'ascii')
+        orders = [0, 1, 2, 3, 4, 5, 6]
+        lengths = [1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 242
+        unpacker = struct.Struct('<QBBBBBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, ada_state, abk_state, dpl_state, fmm_state, nas_state, wes_state):
+                MAVLink_message.__init__(self, MAVLink_fsm_tm_message.id, MAVLink_fsm_tm_message.name)
+                self._fieldnames = MAVLink_fsm_tm_message.fieldnames
+                self._instance_field = MAVLink_fsm_tm_message.instance_field
+                self._instance_offset = MAVLink_fsm_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.ada_state = ada_state
+                self.abk_state = abk_state
+                self.dpl_state = dpl_state
+                self.fmm_state = fmm_state
+                self.nas_state = nas_state
+                self.wes_state = wes_state
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 242, struct.pack('<QBBBBBB', self.timestamp, self.ada_state, self.abk_state, self.dpl_state, self.fmm_state, self.nas_state, self.wes_state), force_mavlink1=force_mavlink1)
+
+class MAVLink_logger_tm_message(MAVLink_message):
+        '''
+        Logger status telemetry
+        '''
+        id = MAVLINK_MSG_ID_LOGGER_TM
+        name = 'LOGGER_TM'
+        fieldnames = ['timestamp', 'log_number', 'too_large_samples', 'dropped_samples', 'queued_samples', 'buffers_filled', 'buffers_written', 'writes_failed', 'last_write_error', 'average_write_time', 'max_write_time']
+        ordered_fieldnames = ['timestamp', 'too_large_samples', 'dropped_samples', 'queued_samples', 'buffers_filled', 'buffers_written', 'writes_failed', 'last_write_error', 'average_write_time', 'max_write_time', 'log_number']
+        fieldtypes = ['uint64_t', 'int16_t', 'int32_t', 'int32_t', 'int32_t', 'int32_t', 'int32_t', 'int32_t', 'int32_t', 'int32_t', 'int32_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us"}
+        format = '<Qiiiiiiiiih'
+        native_format = bytearray('<Qiiiiiiiiih', 'ascii')
+        orders = [0, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 142
+        unpacker = struct.Struct('<Qiiiiiiiiih')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, log_number, too_large_samples, dropped_samples, queued_samples, buffers_filled, buffers_written, writes_failed, last_write_error, average_write_time, max_write_time):
+                MAVLink_message.__init__(self, MAVLink_logger_tm_message.id, MAVLink_logger_tm_message.name)
+                self._fieldnames = MAVLink_logger_tm_message.fieldnames
+                self._instance_field = MAVLink_logger_tm_message.instance_field
+                self._instance_offset = MAVLink_logger_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.log_number = log_number
+                self.too_large_samples = too_large_samples
+                self.dropped_samples = dropped_samples
+                self.queued_samples = queued_samples
+                self.buffers_filled = buffers_filled
+                self.buffers_written = buffers_written
+                self.writes_failed = writes_failed
+                self.last_write_error = last_write_error
+                self.average_write_time = average_write_time
+                self.max_write_time = max_write_time
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 142, struct.pack('<Qiiiiiiiiih', self.timestamp, self.too_large_samples, self.dropped_samples, self.queued_samples, self.buffers_filled, self.buffers_written, self.writes_failed, self.last_write_error, self.average_write_time, self.max_write_time, self.log_number), force_mavlink1=force_mavlink1)
+
+class MAVLink_mavlink_stats_tm_message(MAVLink_message):
+        '''
+        Status of the TMTCManager telemetry
+        '''
+        id = MAVLINK_MSG_ID_MAVLINK_STATS_TM
+        name = 'MAVLINK_STATS_TM'
+        fieldnames = ['timestamp', 'n_send_queue', 'max_send_queue', 'n_send_errors', 'msg_received', 'buffer_overrun', 'parse_error', 'parse_state', 'packet_idx', 'current_rx_seq', 'current_tx_seq', 'packet_rx_success_count', 'packet_rx_drop_count']
+        ordered_fieldnames = ['timestamp', 'parse_state', 'n_send_queue', 'max_send_queue', 'n_send_errors', 'packet_rx_success_count', 'packet_rx_drop_count', 'msg_received', 'buffer_overrun', 'parse_error', 'packet_idx', 'current_rx_seq', 'current_tx_seq']
+        fieldtypes = ['uint64_t', 'uint16_t', 'uint16_t', 'uint16_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint32_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint16_t', 'uint16_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us"}
+        format = '<QIHHHHHBBBBBB'
+        native_format = bytearray('<QIHHHHHBBBBBB', 'ascii')
+        orders = [0, 2, 3, 4, 7, 8, 9, 1, 10, 11, 12, 5, 6]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 108
+        unpacker = struct.Struct('<QIHHHHHBBBBBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, n_send_queue, max_send_queue, n_send_errors, msg_received, buffer_overrun, parse_error, parse_state, packet_idx, current_rx_seq, current_tx_seq, packet_rx_success_count, packet_rx_drop_count):
+                MAVLink_message.__init__(self, MAVLink_mavlink_stats_tm_message.id, MAVLink_mavlink_stats_tm_message.name)
+                self._fieldnames = MAVLink_mavlink_stats_tm_message.fieldnames
+                self._instance_field = MAVLink_mavlink_stats_tm_message.instance_field
+                self._instance_offset = MAVLink_mavlink_stats_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.n_send_queue = n_send_queue
+                self.max_send_queue = max_send_queue
+                self.n_send_errors = n_send_errors
+                self.msg_received = msg_received
+                self.buffer_overrun = buffer_overrun
+                self.parse_error = parse_error
+                self.parse_state = parse_state
+                self.packet_idx = packet_idx
+                self.current_rx_seq = current_rx_seq
+                self.current_tx_seq = current_tx_seq
+                self.packet_rx_success_count = packet_rx_success_count
+                self.packet_rx_drop_count = packet_rx_drop_count
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 108, struct.pack('<QIHHHHHBBBBBB', self.timestamp, self.parse_state, self.n_send_queue, self.max_send_queue, self.n_send_errors, self.packet_rx_success_count, self.packet_rx_drop_count, self.msg_received, self.buffer_overrun, self.parse_error, self.packet_idx, self.current_rx_seq, self.current_tx_seq), force_mavlink1=force_mavlink1)
+
+class MAVLink_task_stats_tm_message(MAVLink_message):
+        '''
+        Statistics of the Task Scheduler
+        '''
+        id = MAVLINK_MSG_ID_TASK_STATS_TM
+        name = 'TASK_STATS_TM'
+        fieldnames = ['timestamp', 'task_id', 'task_period', 'task_min', 'task_max', 'task_mean', 'task_stddev']
+        ordered_fieldnames = ['timestamp', 'task_min', 'task_max', 'task_mean', 'task_stddev', 'task_period', 'task_id']
+        fieldtypes = ['uint64_t', 'uint8_t', 'uint16_t', 'float', 'float', 'float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "task_period": "ms"}
+        format = '<QffffHB'
+        native_format = bytearray('<QffffHB', 'ascii')
+        orders = [0, 6, 5, 1, 2, 3, 4]
+        lengths = [1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 133
+        unpacker = struct.Struct('<QffffHB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, task_id, task_period, task_min, task_max, task_mean, task_stddev):
+                MAVLink_message.__init__(self, MAVLink_task_stats_tm_message.id, MAVLink_task_stats_tm_message.name)
+                self._fieldnames = MAVLink_task_stats_tm_message.fieldnames
+                self._instance_field = MAVLink_task_stats_tm_message.instance_field
+                self._instance_offset = MAVLink_task_stats_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.task_id = task_id
+                self.task_period = task_period
+                self.task_min = task_min
+                self.task_max = task_max
+                self.task_mean = task_mean
+                self.task_stddev = task_stddev
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 133, struct.pack('<QffffHB', self.timestamp, self.task_min, self.task_max, self.task_mean, self.task_stddev, self.task_period, self.task_id), force_mavlink1=force_mavlink1)
+
+class MAVLink_ada_tm_message(MAVLink_message):
+        '''
+        Apogee Detection Algorithm status telemetry
+        '''
+        id = MAVLINK_MSG_ID_ADA_TM
+        name = 'ADA_TM'
+        fieldnames = ['timestamp', 'state', 'kalman_x0', 'kalman_x1', 'kalman_x2', 'vertical_speed', 'msl_altitude', 'ref_pressure', 'ref_altitude', 'ref_temperature', 'msl_pressure', 'msl_temperature', 'dpl_altitude']
+        ordered_fieldnames = ['timestamp', 'kalman_x0', 'kalman_x1', 'kalman_x2', 'vertical_speed', 'msl_altitude', 'ref_pressure', 'ref_altitude', 'ref_temperature', 'msl_pressure', 'msl_temperature', 'dpl_altitude', 'state']
+        fieldtypes = ['uint64_t', 'uint8_t', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "vertical_speed": "m/s", "msl_altitude": "m", "ref_pressure": "Pa", "ref_altitude": "m", "ref_temperature": "degC", "msl_pressure": "Pa", "msl_temperature": "degC", "dpl_altitude": "m"}
+        format = '<QfffffffffffB'
+        native_format = bytearray('<QfffffffffffB', 'ascii')
+        orders = [0, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 234
+        unpacker = struct.Struct('<QfffffffffffB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, state, kalman_x0, kalman_x1, kalman_x2, vertical_speed, msl_altitude, ref_pressure, ref_altitude, ref_temperature, msl_pressure, msl_temperature, dpl_altitude):
+                MAVLink_message.__init__(self, MAVLink_ada_tm_message.id, MAVLink_ada_tm_message.name)
+                self._fieldnames = MAVLink_ada_tm_message.fieldnames
+                self._instance_field = MAVLink_ada_tm_message.instance_field
+                self._instance_offset = MAVLink_ada_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.state = state
+                self.kalman_x0 = kalman_x0
+                self.kalman_x1 = kalman_x1
+                self.kalman_x2 = kalman_x2
+                self.vertical_speed = vertical_speed
+                self.msl_altitude = msl_altitude
+                self.ref_pressure = ref_pressure
+                self.ref_altitude = ref_altitude
+                self.ref_temperature = ref_temperature
+                self.msl_pressure = msl_pressure
+                self.msl_temperature = msl_temperature
+                self.dpl_altitude = dpl_altitude
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 234, struct.pack('<QfffffffffffB', self.timestamp, self.kalman_x0, self.kalman_x1, self.kalman_x2, self.vertical_speed, self.msl_altitude, self.ref_pressure, self.ref_altitude, self.ref_temperature, self.msl_pressure, self.msl_temperature, self.dpl_altitude, self.state), force_mavlink1=force_mavlink1)
+
+class MAVLink_nas_tm_message(MAVLink_message):
+        '''
+        Navigation System status telemetry
+        '''
+        id = MAVLINK_MSG_ID_NAS_TM
+        name = 'NAS_TM'
+        fieldnames = ['timestamp', 'state', 'nas_n', 'nas_e', 'nas_d', 'nas_vn', 'nas_ve', 'nas_vd', 'nas_qx', 'nas_qy', 'nas_qz', 'nas_qw', 'nas_bias_x', 'nas_bias_y', 'nas_bias_z', 'ref_pressure', 'ref_temperature', 'ref_latitude', 'ref_longitude']
+        ordered_fieldnames = ['timestamp', 'nas_n', 'nas_e', 'nas_d', 'nas_vn', 'nas_ve', 'nas_vd', 'nas_qx', 'nas_qy', 'nas_qz', 'nas_qw', 'nas_bias_x', 'nas_bias_y', 'nas_bias_z', 'ref_pressure', 'ref_temperature', 'ref_latitude', 'ref_longitude', 'state']
+        fieldtypes = ['uint64_t', 'uint8_t', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "nas_n": "deg", "nas_e": "deg", "nas_d": "m", "nas_vn": "m/s", "nas_ve": "m/s", "nas_vd": "m/s", "nas_qx": "deg", "nas_qy": "deg", "nas_qz": "deg", "nas_qw": "deg", "ref_pressure": "Pa", "ref_temperature": "degC", "ref_latitude": "deg", "ref_longitude": "deg"}
+        format = '<QfffffffffffffffffB'
+        native_format = bytearray('<QfffffffffffffffffB', 'ascii')
+        orders = [0, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 66
+        unpacker = struct.Struct('<QfffffffffffffffffB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, state, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, ref_pressure, ref_temperature, ref_latitude, ref_longitude):
+                MAVLink_message.__init__(self, MAVLink_nas_tm_message.id, MAVLink_nas_tm_message.name)
+                self._fieldnames = MAVLink_nas_tm_message.fieldnames
+                self._instance_field = MAVLink_nas_tm_message.instance_field
+                self._instance_offset = MAVLink_nas_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.state = state
+                self.nas_n = nas_n
+                self.nas_e = nas_e
+                self.nas_d = nas_d
+                self.nas_vn = nas_vn
+                self.nas_ve = nas_ve
+                self.nas_vd = nas_vd
+                self.nas_qx = nas_qx
+                self.nas_qy = nas_qy
+                self.nas_qz = nas_qz
+                self.nas_qw = nas_qw
+                self.nas_bias_x = nas_bias_x
+                self.nas_bias_y = nas_bias_y
+                self.nas_bias_z = nas_bias_z
+                self.ref_pressure = ref_pressure
+                self.ref_temperature = ref_temperature
+                self.ref_latitude = ref_latitude
+                self.ref_longitude = ref_longitude
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 66, struct.pack('<QfffffffffffffffffB', self.timestamp, self.nas_n, self.nas_e, self.nas_d, self.nas_vn, self.nas_ve, self.nas_vd, self.nas_qx, self.nas_qy, self.nas_qz, self.nas_qw, self.nas_bias_x, self.nas_bias_y, self.nas_bias_z, self.ref_pressure, self.ref_temperature, self.ref_latitude, self.ref_longitude, self.state), force_mavlink1=force_mavlink1)
+
+class MAVLink_rocket_flight_tm_message(MAVLink_message):
+        '''
+        High Rate Telemetry
+        '''
+        id = MAVLINK_MSG_ID_ROCKET_FLIGHT_TM
+        name = 'ROCKET_FLIGHT_TM'
+        fieldnames = ['timestamp', 'ada_state', 'fmm_state', 'dpl_state', 'abk_state', 'nas_state', 'pressure_ada', 'pressure_digi', 'pressure_static', 'pressure_dpl', 'airspeed_pitot', 'altitude_agl', 'ada_vert_speed', 'acc_x', 'acc_y', 'acc_z', 'gyro_x', 'gyro_y', 'gyro_z', 'mag_x', 'mag_y', 'mag_z', 'gps_fix', 'gps_lat', 'gps_lon', 'gps_alt', 'abk_angle', 'abk_estimated_cd', 'parachute_load', 'nas_n', 'nas_e', 'nas_d', 'nas_vn', 'nas_ve', 'nas_vd', 'nas_qx', 'nas_qy', 'nas_qz', 'nas_qw', 'nas_bias_x', 'nas_bias_y', 'nas_bias_z', 'pin_launch', 'pin_nosecone', 'pin_expulsion', 'cutter_presence', 'estimated_thrust', 'vbat', 'temperature', 'logger_error']
+        ordered_fieldnames = ['timestamp', 'pressure_ada', 'pressure_digi', 'pressure_static', 'pressure_dpl', 'airspeed_pitot', 'altitude_agl', 'ada_vert_speed', 'acc_x', 'acc_y', 'acc_z', 'gyro_x', 'gyro_y', 'gyro_z', 'mag_x', 'mag_y', 'mag_z', 'gps_lat', 'gps_lon', 'gps_alt', 'abk_angle', 'abk_estimated_cd', 'parachute_load', 'nas_n', 'nas_e', 'nas_d', 'nas_vn', 'nas_ve', 'nas_vd', 'nas_qx', 'nas_qy', 'nas_qz', 'nas_qw', 'nas_bias_x', 'nas_bias_y', 'nas_bias_z', 'estimated_thrust', 'vbat', 'temperature', 'ada_state', 'fmm_state', 'dpl_state', 'abk_state', 'nas_state', 'gps_fix', 'pin_launch', 'pin_nosecone', 'pin_expulsion', 'cutter_presence', 'logger_error']
+        fieldtypes = ['uint64_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'uint8_t', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'float', 'float', 'float', 'int8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "pressure_ada": "Pa", "pressure_digi": "Pa", "pressure_static": "Pa", "pressure_dpl": "Pa", "airspeed_pitot": "m/s", "altitude_agl": "m", "ada_vert_speed": "m/s", "acc_x": "m/s^2", "acc_y": "m/s^2", "acc_z": "m/s^2", "gyro_x": "rad/s", "gyro_y": "rad/s", "gyro_z": "rad/s", "mag_x": "uT", "mag_y": "uT", "mag_z": "uT", "gps_lat": "deg", "gps_lon": "deg", "gps_alt": "m", "abk_angle": "deg", "nas_n": "deg", "nas_e": "deg", "nas_d": "m", "nas_vn": "m/s", "nas_ve": "m/s", "nas_vd": "m/s", "nas_qx": "deg", "nas_qy": "deg", "nas_qz": "deg", "nas_qw": "deg", "vbat": "V", "temperature": "degC"}
+        format = '<QffffffffffffffffffffffffffffffffffffffBBBBBBBBBBb'
+        native_format = bytearray('<QffffffffffffffffffffffffffffffffffffffBBBBBBBBBBb', 'ascii')
+        orders = [0, 39, 40, 41, 42, 43, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 44, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 45, 46, 47, 48, 36, 37, 38, 49]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 141
+        unpacker = struct.Struct('<QffffffffffffffffffffffffffffffffffffffBBBBBBBBBBb')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, ada_state, fmm_state, dpl_state, abk_state, nas_state, pressure_ada, pressure_digi, pressure_static, pressure_dpl, airspeed_pitot, altitude_agl, ada_vert_speed, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, abk_angle, abk_estimated_cd, parachute_load, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, pin_launch, pin_nosecone, pin_expulsion, cutter_presence, estimated_thrust, vbat, temperature, logger_error):
+                MAVLink_message.__init__(self, MAVLink_rocket_flight_tm_message.id, MAVLink_rocket_flight_tm_message.name)
+                self._fieldnames = MAVLink_rocket_flight_tm_message.fieldnames
+                self._instance_field = MAVLink_rocket_flight_tm_message.instance_field
+                self._instance_offset = MAVLink_rocket_flight_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.ada_state = ada_state
+                self.fmm_state = fmm_state
+                self.dpl_state = dpl_state
+                self.abk_state = abk_state
+                self.nas_state = nas_state
+                self.pressure_ada = pressure_ada
+                self.pressure_digi = pressure_digi
+                self.pressure_static = pressure_static
+                self.pressure_dpl = pressure_dpl
+                self.airspeed_pitot = airspeed_pitot
+                self.altitude_agl = altitude_agl
+                self.ada_vert_speed = ada_vert_speed
+                self.acc_x = acc_x
+                self.acc_y = acc_y
+                self.acc_z = acc_z
+                self.gyro_x = gyro_x
+                self.gyro_y = gyro_y
+                self.gyro_z = gyro_z
+                self.mag_x = mag_x
+                self.mag_y = mag_y
+                self.mag_z = mag_z
+                self.gps_fix = gps_fix
+                self.gps_lat = gps_lat
+                self.gps_lon = gps_lon
+                self.gps_alt = gps_alt
+                self.abk_angle = abk_angle
+                self.abk_estimated_cd = abk_estimated_cd
+                self.parachute_load = parachute_load
+                self.nas_n = nas_n
+                self.nas_e = nas_e
+                self.nas_d = nas_d
+                self.nas_vn = nas_vn
+                self.nas_ve = nas_ve
+                self.nas_vd = nas_vd
+                self.nas_qx = nas_qx
+                self.nas_qy = nas_qy
+                self.nas_qz = nas_qz
+                self.nas_qw = nas_qw
+                self.nas_bias_x = nas_bias_x
+                self.nas_bias_y = nas_bias_y
+                self.nas_bias_z = nas_bias_z
+                self.pin_launch = pin_launch
+                self.pin_nosecone = pin_nosecone
+                self.pin_expulsion = pin_expulsion
+                self.cutter_presence = cutter_presence
+                self.estimated_thrust = estimated_thrust
+                self.vbat = vbat
+                self.temperature = temperature
+                self.logger_error = logger_error
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 141, struct.pack('<QffffffffffffffffffffffffffffffffffffffBBBBBBBBBBb', self.timestamp, self.pressure_ada, self.pressure_digi, self.pressure_static, self.pressure_dpl, self.airspeed_pitot, self.altitude_agl, self.ada_vert_speed, self.acc_x, self.acc_y, self.acc_z, self.gyro_x, self.gyro_y, self.gyro_z, self.mag_x, self.mag_y, self.mag_z, self.gps_lat, self.gps_lon, self.gps_alt, self.abk_angle, self.abk_estimated_cd, self.parachute_load, self.nas_n, self.nas_e, self.nas_d, self.nas_vn, self.nas_ve, self.nas_vd, self.nas_qx, self.nas_qy, self.nas_qz, self.nas_qw, self.nas_bias_x, self.nas_bias_y, self.nas_bias_z, self.estimated_thrust, self.vbat, self.temperature, self.ada_state, self.fmm_state, self.dpl_state, self.abk_state, self.nas_state, self.gps_fix, self.pin_launch, self.pin_nosecone, self.pin_expulsion, self.cutter_presence, self.logger_error), force_mavlink1=force_mavlink1)
+
+class MAVLink_payload_flight_tm_message(MAVLink_message):
+        '''
+        High Rate Telemetry
+        '''
+        id = MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM
+        name = 'PAYLOAD_FLIGHT_TM'
+        fieldnames = ['timestamp', 'fmm_state', 'nas_state', 'wes_state', 'pressure_digi', 'pressure_static', 'airspeed_pitot', 'altitude_agl', 'acc_x', 'acc_y', 'acc_z', 'gyro_x', 'gyro_y', 'gyro_z', 'mag_x', 'mag_y', 'mag_z', 'gps_fix', 'gps_lat', 'gps_lon', 'gps_alt', 'left_servo_angle', 'right_servo_angle', 'nas_n', 'nas_e', 'nas_d', 'nas_vn', 'nas_ve', 'nas_vd', 'nas_qx', 'nas_qy', 'nas_qz', 'nas_qw', 'nas_bias_x', 'nas_bias_y', 'nas_bias_z', 'wes_n', 'wes_e', 'pin_nosecone', 'vbat', 'vsupply_5v', 'temperature', 'logger_error']
+        ordered_fieldnames = ['timestamp', 'pressure_digi', 'pressure_static', 'airspeed_pitot', 'altitude_agl', 'acc_x', 'acc_y', 'acc_z', 'gyro_x', 'gyro_y', 'gyro_z', 'mag_x', 'mag_y', 'mag_z', 'gps_lat', 'gps_lon', 'gps_alt', 'left_servo_angle', 'right_servo_angle', 'nas_n', 'nas_e', 'nas_d', 'nas_vn', 'nas_ve', 'nas_vd', 'nas_qx', 'nas_qy', 'nas_qz', 'nas_qw', 'nas_bias_x', 'nas_bias_y', 'nas_bias_z', 'wes_n', 'wes_e', 'vbat', 'vsupply_5v', 'temperature', 'fmm_state', 'nas_state', 'wes_state', 'gps_fix', 'pin_nosecone', 'logger_error']
+        fieldtypes = ['uint64_t', 'uint8_t', 'uint8_t', 'uint8_t', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'uint8_t', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'uint8_t', 'float', 'float', 'float', 'int8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "pressure_digi": "Pa", "pressure_static": "Pa", "airspeed_pitot": "m/s", "altitude_agl": "m", "acc_x": "m/s^2", "acc_y": "m/s^2", "acc_z": "m/s^2", "gyro_x": "rad/s", "gyro_y": "rad/s", "gyro_z": "rad/s", "mag_x": "uT", "mag_y": "uT", "mag_z": "uT", "gps_lat": "deg", "gps_lon": "deg", "gps_alt": "m", "left_servo_angle": "deg", "right_servo_angle": "deg", "nas_n": "deg", "nas_e": "deg", "nas_d": "m", "nas_vn": "m/s", "nas_ve": "m/s", "nas_vd": "m/s", "nas_qx": "deg", "nas_qy": "deg", "nas_qz": "deg", "nas_qw": "deg", "wes_n": "m/s", "wes_e": "m/s", "vbat": "V", "vsupply_5v": "V", "temperature": "degC"}
+        format = '<QffffffffffffffffffffffffffffffffffffBBBBBb'
+        native_format = bytearray('<QffffffffffffffffffffffffffffffffffffBBBBBb', 'ascii')
+        orders = [0, 37, 38, 39, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 40, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 41, 34, 35, 36, 42]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 229
+        unpacker = struct.Struct('<QffffffffffffffffffffffffffffffffffffBBBBBb')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, fmm_state, nas_state, wes_state, pressure_digi, pressure_static, airspeed_pitot, altitude_agl, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, left_servo_angle, right_servo_angle, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, wes_n, wes_e, pin_nosecone, vbat, vsupply_5v, temperature, logger_error):
+                MAVLink_message.__init__(self, MAVLink_payload_flight_tm_message.id, MAVLink_payload_flight_tm_message.name)
+                self._fieldnames = MAVLink_payload_flight_tm_message.fieldnames
+                self._instance_field = MAVLink_payload_flight_tm_message.instance_field
+                self._instance_offset = MAVLink_payload_flight_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.fmm_state = fmm_state
+                self.nas_state = nas_state
+                self.wes_state = wes_state
+                self.pressure_digi = pressure_digi
+                self.pressure_static = pressure_static
+                self.airspeed_pitot = airspeed_pitot
+                self.altitude_agl = altitude_agl
+                self.acc_x = acc_x
+                self.acc_y = acc_y
+                self.acc_z = acc_z
+                self.gyro_x = gyro_x
+                self.gyro_y = gyro_y
+                self.gyro_z = gyro_z
+                self.mag_x = mag_x
+                self.mag_y = mag_y
+                self.mag_z = mag_z
+                self.gps_fix = gps_fix
+                self.gps_lat = gps_lat
+                self.gps_lon = gps_lon
+                self.gps_alt = gps_alt
+                self.left_servo_angle = left_servo_angle
+                self.right_servo_angle = right_servo_angle
+                self.nas_n = nas_n
+                self.nas_e = nas_e
+                self.nas_d = nas_d
+                self.nas_vn = nas_vn
+                self.nas_ve = nas_ve
+                self.nas_vd = nas_vd
+                self.nas_qx = nas_qx
+                self.nas_qy = nas_qy
+                self.nas_qz = nas_qz
+                self.nas_qw = nas_qw
+                self.nas_bias_x = nas_bias_x
+                self.nas_bias_y = nas_bias_y
+                self.nas_bias_z = nas_bias_z
+                self.wes_n = wes_n
+                self.wes_e = wes_e
+                self.pin_nosecone = pin_nosecone
+                self.vbat = vbat
+                self.vsupply_5v = vsupply_5v
+                self.temperature = temperature
+                self.logger_error = logger_error
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 229, struct.pack('<QffffffffffffffffffffffffffffffffffffBBBBBb', self.timestamp, self.pressure_digi, self.pressure_static, self.airspeed_pitot, self.altitude_agl, self.acc_x, self.acc_y, self.acc_z, self.gyro_x, self.gyro_y, self.gyro_z, self.mag_x, self.mag_y, self.mag_z, self.gps_lat, self.gps_lon, self.gps_alt, self.left_servo_angle, self.right_servo_angle, self.nas_n, self.nas_e, self.nas_d, self.nas_vn, self.nas_ve, self.nas_vd, self.nas_qx, self.nas_qy, self.nas_qz, self.nas_qw, self.nas_bias_x, self.nas_bias_y, self.nas_bias_z, self.wes_n, self.wes_e, self.vbat, self.vsupply_5v, self.temperature, self.fmm_state, self.nas_state, self.wes_state, self.gps_fix, self.pin_nosecone, self.logger_error), force_mavlink1=force_mavlink1)
+
+class MAVLink_rocket_stats_tm_message(MAVLink_message):
+        '''
+        Low Rate Telemetry
+        '''
+        id = MAVLINK_MSG_ID_ROCKET_STATS_TM
+        name = 'ROCKET_STATS_TM'
+        fieldnames = ['liftoff_ts', 'liftoff_max_acc_ts', 'liftoff_max_acc', 'dpl_ts', 'dpl_max_acc', 'max_z_speed_ts', 'max_z_speed', 'max_airspeed_pitot', 'max_speed_altitude', 'apogee_ts', 'apogee_lat', 'apogee_lon', 'apogee_alt', 'min_pressure', 'ada_min_pressure', 'dpl_vane_max_pressure', 'cpu_load', 'free_heap']
+        ordered_fieldnames = ['liftoff_ts', 'liftoff_max_acc_ts', 'dpl_ts', 'max_z_speed_ts', 'apogee_ts', 'liftoff_max_acc', 'dpl_max_acc', 'max_z_speed', 'max_airspeed_pitot', 'max_speed_altitude', 'apogee_lat', 'apogee_lon', 'apogee_alt', 'min_pressure', 'ada_min_pressure', 'dpl_vane_max_pressure', 'cpu_load', 'free_heap']
+        fieldtypes = ['uint64_t', 'uint64_t', 'float', 'uint64_t', 'float', 'uint64_t', 'float', 'float', 'float', 'uint64_t', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'uint32_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"liftoff_ts": "us", "liftoff_max_acc_ts": "us", "liftoff_max_acc": "m/s2", "dpl_ts": "us", "dpl_max_acc": "m/s2", "max_z_speed_ts": "us", "max_z_speed": "m/s", "max_airspeed_pitot": "m/s", "max_speed_altitude": "m", "apogee_ts": "us", "apogee_lat": "deg", "apogee_lon": "deg", "apogee_alt": "m", "min_pressure": "Pa", "ada_min_pressure": "Pa", "dpl_vane_max_pressure": "Pa"}
+        format = '<QQQQQffffffffffffI'
+        native_format = bytearray('<QQQQQffffffffffffI', 'ascii')
+        orders = [0, 1, 5, 2, 6, 3, 7, 8, 9, 4, 10, 11, 12, 13, 14, 15, 16, 17]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 245
+        unpacker = struct.Struct('<QQQQQffffffffffffI')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, liftoff_ts, liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, ada_min_pressure, dpl_vane_max_pressure, cpu_load, free_heap):
+                MAVLink_message.__init__(self, MAVLink_rocket_stats_tm_message.id, MAVLink_rocket_stats_tm_message.name)
+                self._fieldnames = MAVLink_rocket_stats_tm_message.fieldnames
+                self._instance_field = MAVLink_rocket_stats_tm_message.instance_field
+                self._instance_offset = MAVLink_rocket_stats_tm_message.instance_offset
+                self.liftoff_ts = liftoff_ts
+                self.liftoff_max_acc_ts = liftoff_max_acc_ts
+                self.liftoff_max_acc = liftoff_max_acc
+                self.dpl_ts = dpl_ts
+                self.dpl_max_acc = dpl_max_acc
+                self.max_z_speed_ts = max_z_speed_ts
+                self.max_z_speed = max_z_speed
+                self.max_airspeed_pitot = max_airspeed_pitot
+                self.max_speed_altitude = max_speed_altitude
+                self.apogee_ts = apogee_ts
+                self.apogee_lat = apogee_lat
+                self.apogee_lon = apogee_lon
+                self.apogee_alt = apogee_alt
+                self.min_pressure = min_pressure
+                self.ada_min_pressure = ada_min_pressure
+                self.dpl_vane_max_pressure = dpl_vane_max_pressure
+                self.cpu_load = cpu_load
+                self.free_heap = free_heap
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 245, struct.pack('<QQQQQffffffffffffI', self.liftoff_ts, self.liftoff_max_acc_ts, self.dpl_ts, self.max_z_speed_ts, self.apogee_ts, self.liftoff_max_acc, self.dpl_max_acc, self.max_z_speed, self.max_airspeed_pitot, self.max_speed_altitude, self.apogee_lat, self.apogee_lon, self.apogee_alt, self.min_pressure, self.ada_min_pressure, self.dpl_vane_max_pressure, self.cpu_load, self.free_heap), force_mavlink1=force_mavlink1)
+
+class MAVLink_payload_stats_tm_message(MAVLink_message):
+        '''
+        Low Rate Telemetry
+        '''
+        id = MAVLINK_MSG_ID_PAYLOAD_STATS_TM
+        name = 'PAYLOAD_STATS_TM'
+        fieldnames = ['liftoff_max_acc_ts', 'liftoff_max_acc', 'dpl_ts', 'dpl_max_acc', 'max_z_speed_ts', 'max_z_speed', 'max_airspeed_pitot', 'max_speed_altitude', 'apogee_ts', 'apogee_lat', 'apogee_lon', 'apogee_alt', 'min_pressure', 'cpu_load', 'free_heap']
+        ordered_fieldnames = ['liftoff_max_acc_ts', 'dpl_ts', 'max_z_speed_ts', 'apogee_ts', 'liftoff_max_acc', 'dpl_max_acc', 'max_z_speed', 'max_airspeed_pitot', 'max_speed_altitude', 'apogee_lat', 'apogee_lon', 'apogee_alt', 'min_pressure', 'cpu_load', 'free_heap']
+        fieldtypes = ['uint64_t', 'float', 'uint64_t', 'float', 'uint64_t', 'float', 'float', 'float', 'uint64_t', 'float', 'float', 'float', 'float', 'float', 'uint32_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"liftoff_max_acc_ts": "us", "liftoff_max_acc": "m/s2", "dpl_ts": "us", "dpl_max_acc": "m/s2", "max_z_speed_ts": "us", "max_z_speed": "m/s", "max_airspeed_pitot": "m/s", "max_speed_altitude": "m", "apogee_ts": "us", "apogee_lat": "deg", "apogee_lon": "deg", "apogee_alt": "m", "min_pressure": "Pa"}
+        format = '<QQQQffffffffffI'
+        native_format = bytearray('<QQQQffffffffffI', 'ascii')
+        orders = [0, 4, 1, 5, 2, 6, 7, 8, 3, 9, 10, 11, 12, 13, 14]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 115
+        unpacker = struct.Struct('<QQQQffffffffffI')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, cpu_load, free_heap):
+                MAVLink_message.__init__(self, MAVLink_payload_stats_tm_message.id, MAVLink_payload_stats_tm_message.name)
+                self._fieldnames = MAVLink_payload_stats_tm_message.fieldnames
+                self._instance_field = MAVLink_payload_stats_tm_message.instance_field
+                self._instance_offset = MAVLink_payload_stats_tm_message.instance_offset
+                self.liftoff_max_acc_ts = liftoff_max_acc_ts
+                self.liftoff_max_acc = liftoff_max_acc
+                self.dpl_ts = dpl_ts
+                self.dpl_max_acc = dpl_max_acc
+                self.max_z_speed_ts = max_z_speed_ts
+                self.max_z_speed = max_z_speed
+                self.max_airspeed_pitot = max_airspeed_pitot
+                self.max_speed_altitude = max_speed_altitude
+                self.apogee_ts = apogee_ts
+                self.apogee_lat = apogee_lat
+                self.apogee_lon = apogee_lon
+                self.apogee_alt = apogee_alt
+                self.min_pressure = min_pressure
+                self.cpu_load = cpu_load
+                self.free_heap = free_heap
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 115, struct.pack('<QQQQffffffffffI', self.liftoff_max_acc_ts, self.dpl_ts, self.max_z_speed_ts, self.apogee_ts, self.liftoff_max_acc, self.dpl_max_acc, self.max_z_speed, self.max_airspeed_pitot, self.max_speed_altitude, self.apogee_lat, self.apogee_lon, self.apogee_alt, self.min_pressure, self.cpu_load, self.free_heap), force_mavlink1=force_mavlink1)
+
+class MAVLink_gse_tm_message(MAVLink_message):
+        '''
+        Ground Segment Equipment telemetry
+        '''
+        id = MAVLINK_MSG_ID_GSE_TM
+        name = 'GSE_TM'
+        fieldnames = ['timestamp', 'loadcell_tank', 'loadcell_vessel', 'filling_pressure', 'vessel_pressure', 'arming_state', 'filling_valve_state', 'venting_valve_state', 'release_valve_state', 'main_valve_state', 'ignition_state', 'tars_state', 'battery_voltage', 'current_consumption', 'main_board_status', 'payload_board_status', 'motor_board_status']
+        ordered_fieldnames = ['timestamp', 'loadcell_tank', 'loadcell_vessel', 'filling_pressure', 'vessel_pressure', 'battery_voltage', 'current_consumption', 'arming_state', 'filling_valve_state', 'venting_valve_state', 'release_valve_state', 'main_valve_state', 'ignition_state', 'tars_state', 'main_board_status', 'payload_board_status', 'motor_board_status']
+        fieldtypes = ['uint64_t', 'float', 'float', 'float', 'float', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 'float', 'float', 'uint8_t', 'uint8_t', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "loadcell_tank": "kg", "loadcell_vessel": "kg", "filling_pressure": "Bar", "vessel_pressure": "Bar"}
+        format = '<QffffffBBBBBBBBBB'
+        native_format = bytearray('<QffffffBBBBBBBBBB', 'ascii')
+        orders = [0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 5, 6, 14, 15, 16]
+        lengths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 89
+        unpacker = struct.Struct('<QffffffBBBBBBBBBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, loadcell_tank, loadcell_vessel, filling_pressure, vessel_pressure, arming_state, filling_valve_state, venting_valve_state, release_valve_state, main_valve_state, ignition_state, tars_state, battery_voltage, current_consumption, main_board_status, payload_board_status, motor_board_status):
+                MAVLink_message.__init__(self, MAVLink_gse_tm_message.id, MAVLink_gse_tm_message.name)
+                self._fieldnames = MAVLink_gse_tm_message.fieldnames
+                self._instance_field = MAVLink_gse_tm_message.instance_field
+                self._instance_offset = MAVLink_gse_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.loadcell_tank = loadcell_tank
+                self.loadcell_vessel = loadcell_vessel
+                self.filling_pressure = filling_pressure
+                self.vessel_pressure = vessel_pressure
+                self.arming_state = arming_state
+                self.filling_valve_state = filling_valve_state
+                self.venting_valve_state = venting_valve_state
+                self.release_valve_state = release_valve_state
+                self.main_valve_state = main_valve_state
+                self.ignition_state = ignition_state
+                self.tars_state = tars_state
+                self.battery_voltage = battery_voltage
+                self.current_consumption = current_consumption
+                self.main_board_status = main_board_status
+                self.payload_board_status = payload_board_status
+                self.motor_board_status = motor_board_status
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 89, struct.pack('<QffffffBBBBBBBBBB', self.timestamp, self.loadcell_tank, self.loadcell_vessel, self.filling_pressure, self.vessel_pressure, self.battery_voltage, self.current_consumption, self.arming_state, self.filling_valve_state, self.venting_valve_state, self.release_valve_state, self.main_valve_state, self.ignition_state, self.tars_state, self.main_board_status, self.payload_board_status, self.motor_board_status), force_mavlink1=force_mavlink1)
+
+class MAVLink_motor_tm_message(MAVLink_message):
+        '''
+        Motor rocket telemetry
+        '''
+        id = MAVLINK_MSG_ID_MOTOR_TM
+        name = 'MOTOR_TM'
+        fieldnames = ['timestamp', 'top_tank_pressure', 'bottom_tank_pressure', 'combustion_chamber_pressure', 'floating_level', 'tank_temperature', 'main_valve_state']
+        ordered_fieldnames = ['timestamp', 'top_tank_pressure', 'bottom_tank_pressure', 'combustion_chamber_pressure', 'tank_temperature', 'floating_level', 'main_valve_state']
+        fieldtypes = ['uint64_t', 'float', 'float', 'float', 'uint8_t', 'float', 'uint8_t']
+        fielddisplays_by_name = {}
+        fieldenums_by_name = {}
+        fieldunits_by_name = {"timestamp": "us", "top_tank_pressure": "Bar", "bottom_tank_pressure": "Bar", "combustion_chamber_pressure": "Bar"}
+        format = '<QffffBB'
+        native_format = bytearray('<QffffBB', 'ascii')
+        orders = [0, 1, 2, 3, 5, 4, 6]
+        lengths = [1, 1, 1, 1, 1, 1, 1]
+        array_lengths = [0, 0, 0, 0, 0, 0, 0]
+        crc_extra = 241
+        unpacker = struct.Struct('<QffffBB')
+        instance_field = None
+        instance_offset = -1
+
+        def __init__(self, timestamp, top_tank_pressure, bottom_tank_pressure, combustion_chamber_pressure, floating_level, tank_temperature, main_valve_state):
+                MAVLink_message.__init__(self, MAVLink_motor_tm_message.id, MAVLink_motor_tm_message.name)
+                self._fieldnames = MAVLink_motor_tm_message.fieldnames
+                self._instance_field = MAVLink_motor_tm_message.instance_field
+                self._instance_offset = MAVLink_motor_tm_message.instance_offset
+                self.timestamp = timestamp
+                self.top_tank_pressure = top_tank_pressure
+                self.bottom_tank_pressure = bottom_tank_pressure
+                self.combustion_chamber_pressure = combustion_chamber_pressure
+                self.floating_level = floating_level
+                self.tank_temperature = tank_temperature
+                self.main_valve_state = main_valve_state
+
+        def pack(self, mav, force_mavlink1=False):
+                return MAVLink_message.pack(self, mav, 241, struct.pack('<QffffBB', self.timestamp, self.top_tank_pressure, self.bottom_tank_pressure, self.combustion_chamber_pressure, self.tank_temperature, self.floating_level, self.main_valve_state), force_mavlink1=force_mavlink1)
+
+
+mavlink_map = {
+        MAVLINK_MSG_ID_PING_TC : MAVLink_ping_tc_message,
+        MAVLINK_MSG_ID_COMMAND_TC : MAVLink_command_tc_message,
+        MAVLINK_MSG_ID_SYSTEM_TM_REQUEST_TC : MAVLink_system_tm_request_tc_message,
+        MAVLINK_MSG_ID_SENSOR_TM_REQUEST_TC : MAVLink_sensor_tm_request_tc_message,
+        MAVLINK_MSG_ID_SERVO_TM_REQUEST_TC : MAVLink_servo_tm_request_tc_message,
+        MAVLINK_MSG_ID_SET_SERVO_ANGLE_TC : MAVLink_set_servo_angle_tc_message,
+        MAVLINK_MSG_ID_WIGGLE_SERVO_TC : MAVLink_wiggle_servo_tc_message,
+        MAVLINK_MSG_ID_RESET_SERVO_TC : MAVLink_reset_servo_tc_message,
+        MAVLINK_MSG_ID_SET_REFERENCE_ALTITUDE_TC : MAVLink_set_reference_altitude_tc_message,
+        MAVLINK_MSG_ID_SET_REFERENCE_TEMPERATURE_TC : MAVLink_set_reference_temperature_tc_message,
+        MAVLINK_MSG_ID_SET_ORIENTATION_TC : MAVLink_set_orientation_tc_message,
+        MAVLINK_MSG_ID_SET_COORDINATES_TC : MAVLink_set_coordinates_tc_message,
+        MAVLINK_MSG_ID_RAW_EVENT_TC : MAVLink_raw_event_tc_message,
+        MAVLINK_MSG_ID_SET_DEPLOYMENT_ALTITUDE_TC : MAVLink_set_deployment_altitude_tc_message,
+        MAVLINK_MSG_ID_SET_TARGET_COORDINATES_TC : MAVLink_set_target_coordinates_tc_message,
+        MAVLINK_MSG_ID_SET_ALGORITHM_TC : MAVLink_set_algorithm_tc_message,
+        MAVLINK_MSG_ID_SET_ATOMIC_VALVE_TIMING_TC : MAVLink_set_atomic_valve_timing_tc_message,
+        MAVLINK_MSG_ID_SET_VALVE_MAXIMUM_APERTURE_TC : MAVLink_set_valve_maximum_aperture_tc_message,
+        MAVLINK_MSG_ID_CONRIG_STATE_TC : MAVLink_conrig_state_tc_message,
+        MAVLINK_MSG_ID_SET_IGNITION_TIME_TC : MAVLink_set_ignition_time_tc_message,
+        MAVLINK_MSG_ID_ACK_TM : MAVLink_ack_tm_message,
+        MAVLINK_MSG_ID_NACK_TM : MAVLink_nack_tm_message,
+        MAVLINK_MSG_ID_GPS_TM : MAVLink_gps_tm_message,
+        MAVLINK_MSG_ID_IMU_TM : MAVLink_imu_tm_message,
+        MAVLINK_MSG_ID_PRESSURE_TM : MAVLink_pressure_tm_message,
+        MAVLINK_MSG_ID_ADC_TM : MAVLink_adc_tm_message,
+        MAVLINK_MSG_ID_VOLTAGE_TM : MAVLink_voltage_tm_message,
+        MAVLINK_MSG_ID_CURRENT_TM : MAVLink_current_tm_message,
+        MAVLINK_MSG_ID_TEMP_TM : MAVLink_temp_tm_message,
+        MAVLINK_MSG_ID_LOAD_TM : MAVLink_load_tm_message,
+        MAVLINK_MSG_ID_ATTITUDE_TM : MAVLink_attitude_tm_message,
+        MAVLINK_MSG_ID_SENSOR_STATE_TM : MAVLink_sensor_state_tm_message,
+        MAVLINK_MSG_ID_SERVO_TM : MAVLink_servo_tm_message,
+        MAVLINK_MSG_ID_PIN_TM : MAVLink_pin_tm_message,
+        MAVLINK_MSG_ID_RECEIVER_TM : MAVLink_receiver_tm_message,
+        MAVLINK_MSG_ID_SYS_TM : MAVLink_sys_tm_message,
+        MAVLINK_MSG_ID_FSM_TM : MAVLink_fsm_tm_message,
+        MAVLINK_MSG_ID_LOGGER_TM : MAVLink_logger_tm_message,
+        MAVLINK_MSG_ID_MAVLINK_STATS_TM : MAVLink_mavlink_stats_tm_message,
+        MAVLINK_MSG_ID_TASK_STATS_TM : MAVLink_task_stats_tm_message,
+        MAVLINK_MSG_ID_ADA_TM : MAVLink_ada_tm_message,
+        MAVLINK_MSG_ID_NAS_TM : MAVLink_nas_tm_message,
+        MAVLINK_MSG_ID_ROCKET_FLIGHT_TM : MAVLink_rocket_flight_tm_message,
+        MAVLINK_MSG_ID_PAYLOAD_FLIGHT_TM : MAVLink_payload_flight_tm_message,
+        MAVLINK_MSG_ID_ROCKET_STATS_TM : MAVLink_rocket_stats_tm_message,
+        MAVLINK_MSG_ID_PAYLOAD_STATS_TM : MAVLink_payload_stats_tm_message,
+        MAVLINK_MSG_ID_GSE_TM : MAVLink_gse_tm_message,
+        MAVLINK_MSG_ID_MOTOR_TM : MAVLink_motor_tm_message,
+}
+
+class MAVError(Exception):
+        '''MAVLink error class'''
+        def __init__(self, msg):
+            Exception.__init__(self, msg)
+            self.message = msg
+
+class MAVString(str):
+        '''NUL terminated string'''
+        def __init__(self, s):
+                str.__init__(self)
+        def __str__(self):
+            i = self.find(chr(0))
+            if i == -1:
+                return self[:]
+            return self[0:i]
+
+class MAVLink_bad_data(MAVLink_message):
+        '''
+        a piece of bad data in a mavlink stream
+        '''
+        def __init__(self, data, reason):
+                MAVLink_message.__init__(self, MAVLINK_MSG_ID_BAD_DATA, 'BAD_DATA')
+                self._fieldnames = ['data', 'reason']
+                self.data = data
+                self.reason = reason
+                self._msgbuf = data
+                self._instance_field = None
+
+        def __str__(self):
+            '''Override the __str__ function from MAVLink_messages because non-printable characters are common in to be the reason for this message to exist.'''
+            return '%s {%s, data:%s}' % (self._type, self.reason, [('%x' % ord(i) if isinstance(i, str) else '%x' % i) for i in self.data])
+
+class MAVLink_unknown(MAVLink_message):
+        '''
+        a message that we don't have in the XML used when built
+        '''
+        def __init__(self, msgid, data):
+                MAVLink_message.__init__(self, MAVLINK_MSG_ID_UNKNOWN, 'UNKNOWN_%u' % msgid)
+                self._fieldnames = ['data']
+                self.data = data
+                self._msgbuf = data
+                self._instance_field = None
+
+        def __str__(self):
+            '''Override the __str__ function from MAVLink_messages because non-printable characters are common.'''
+            return '%s {data:%s}' % (self._type, [('%x' % ord(i) if isinstance(i, str) else '%x' % i) for i in self.data])
+
+class MAVLinkSigning(object):
+    '''MAVLink signing state class'''
+    def __init__(self):
+        self.secret_key = None
+        self.timestamp = 0
+        self.link_id = 0
+        self.sign_outgoing = False
+        self.allow_unsigned_callback = None
+        self.stream_timestamps = {}
+        self.sig_count = 0
+        self.badsig_count = 0
+        self.goodsig_count = 0
+        self.unsigned_count = 0
+        self.reject_count = 0
+
+class MAVLink(object):
+        '''MAVLink protocol handling class'''
+        def __init__(self, file, srcSystem=0, srcComponent=0, use_native=False):
+                self.seq = 0
+                self.file = file
+                self.srcSystem = srcSystem
+                self.srcComponent = srcComponent
+                self.callback = None
+                self.callback_args = None
+                self.callback_kwargs = None
+                self.send_callback = None
+                self.send_callback_args = None
+                self.send_callback_kwargs = None
+                self.buf = bytearray()
+                self.buf_index = 0
+                self.expected_length = HEADER_LEN_V1+2
+                self.have_prefix_error = False
+                self.robust_parsing = False
+                self.protocol_marker = 254
+                self.little_endian = True
+                self.crc_extra = True
+                self.sort_fields = True
+                self.total_packets_sent = 0
+                self.total_bytes_sent = 0
+                self.total_packets_received = 0
+                self.total_bytes_received = 0
+                self.total_receive_errors = 0
+                self.startup_time = time.time()
+                self.signing = MAVLinkSigning()
+                if native_supported and (use_native or native_testing or native_force):
+                    print("NOTE: mavnative is currently beta-test code")
+                    self.native = mavnative.NativeConnection(MAVLink_message, mavlink_map)
+                else:
+                    self.native = None
+                if native_testing:
+                    self.test_buf = bytearray()
+                self.mav20_unpacker = struct.Struct('<cBBBBBBHB')
+                self.mav10_unpacker = struct.Struct('<cBBBBB')
+                self.mav20_h3_unpacker = struct.Struct('BBB')
+                self.mav_csum_unpacker = struct.Struct('<H')
+                self.mav_sign_unpacker = struct.Struct('<IH')
+
+        def set_callback(self, callback, *args, **kwargs):
+            self.callback = callback
+            self.callback_args = args
+            self.callback_kwargs = kwargs
+
+        def set_send_callback(self, callback, *args, **kwargs):
+            self.send_callback = callback
+            self.send_callback_args = args
+            self.send_callback_kwargs = kwargs
+
+        def send(self, mavmsg, force_mavlink1=False):
+                '''send a MAVLink message'''
+                buf = mavmsg.pack(self, force_mavlink1=force_mavlink1)
+                self.file.write(buf)
+                self.seq = (self.seq + 1) % 256
+                self.total_packets_sent += 1
+                self.total_bytes_sent += len(buf)
+                if self.send_callback:
+                    self.send_callback(mavmsg, *self.send_callback_args, **self.send_callback_kwargs)
+
+        def buf_len(self):
+            return len(self.buf) - self.buf_index
+
+        def bytes_needed(self):
+            '''return number of bytes needed for next parsing stage'''
+            if self.native:
+                ret = self.native.expected_length - self.buf_len()
+            else:
+                ret = self.expected_length - self.buf_len()
+
+            if ret <= 0:
+                return 1
+            return ret
+
+        def __parse_char_native(self, c):
+            '''this method exists only to see in profiling results'''
+            m = self.native.parse_chars(c)
+            return m
+
+        def __callbacks(self, msg):
+            '''this method exists only to make profiling results easier to read'''
+            if self.callback:
+                self.callback(msg, *self.callback_args, **self.callback_kwargs)
+
+        def parse_char(self, c):
+            '''input some data bytes, possibly returning a new message'''
+            self.buf.extend(c)
+
+            self.total_bytes_received += len(c)
+
+            if self.native:
+                if native_testing:
+                    self.test_buf.extend(c)
+                    m = self.__parse_char_native(self.test_buf)
+                    m2 = self.__parse_char_legacy()
+                    if m2 != m:
+                        print("Native: %s\nLegacy: %s\n" % (m, m2))
+                        raise Exception('Native vs. Legacy mismatch')
+                else:
+                    m = self.__parse_char_native(self.buf)
+            else:
+                m = self.__parse_char_legacy()
+
+            if m is not None:
+                self.total_packets_received += 1
+                self.__callbacks(m)
+            else:
+                # XXX The idea here is if we've read something and there's nothing left in
+                # the buffer, reset it to 0 which frees the memory
+                if self.buf_len() == 0 and self.buf_index != 0:
+                    self.buf = bytearray()
+                    self.buf_index = 0
+
+            return m
+
+        def __parse_char_legacy(self):
+            '''input some data bytes, possibly returning a new message (uses no native code)'''
+            header_len = HEADER_LEN_V1
+            if self.buf_len() >= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+                header_len = HEADER_LEN_V2
+
+            if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+                magic = self.buf[self.buf_index]
+                self.buf_index += 1
+                if self.robust_parsing:
+                    m = MAVLink_bad_data(bytearray([magic]), 'Bad prefix')
+                    self.expected_length = header_len+2
+                    self.total_receive_errors += 1
+                    return m
+                if self.have_prefix_error:
+                    return None
+                self.have_prefix_error = True
+                self.total_receive_errors += 1
+                raise MAVError("invalid MAVLink prefix '%s'" % magic)
+            self.have_prefix_error = False
+            if self.buf_len() >= 3:
+                sbuf = self.buf[self.buf_index:3+self.buf_index]
+                if sys.version_info.major < 3:
+                    sbuf = str(sbuf)
+                (magic, self.expected_length, incompat_flags) = self.mav20_h3_unpacker.unpack(sbuf)
+                if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+                        self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+                self.expected_length += header_len + 2
+            if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+                mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+                self.buf_index += self.expected_length
+                self.expected_length = header_len+2
+                if self.robust_parsing:
+                    try:
+                        if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+                            raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+                        m = self.decode(mbuf)
+                    except MAVError as reason:
+                        m = MAVLink_bad_data(mbuf, reason.message)
+                        self.total_receive_errors += 1
+                else:
+                    if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+                        raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+                    m = self.decode(mbuf)
+                return m
+            return None
+
+        def parse_buffer(self, s):
+            '''input some data bytes, possibly returning a list of new messages'''
+            m = self.parse_char(s)
+            if m is None:
+                return None
+            ret = [m]
+            while True:
+                m = self.parse_char("")
+                if m is None:
+                    return ret
+                ret.append(m)
+            return ret
+
+        def check_signature(self, msgbuf, srcSystem, srcComponent):
+            '''check signature on incoming message'''
+            if isinstance(msgbuf, array.array):
+                try:
+                    msgbuf = msgbuf.tostring()
+                except:
+                    msgbuf = msgbuf.tobytes()
+            timestamp_buf = msgbuf[-12:-6]
+            link_id = msgbuf[-13]
+            (tlow, thigh) = self.mav_sign_unpacker.unpack(timestamp_buf)
+            timestamp = tlow + (thigh<<32)
+
+            # see if the timestamp is acceptable
+            stream_key = (link_id,srcSystem,srcComponent)
+            if stream_key in self.signing.stream_timestamps:
+                if timestamp <= self.signing.stream_timestamps[stream_key]:
+                    # reject old timestamp
+                    # print('old timestamp')
+                    return False
+            else:
+                # a new stream has appeared. Accept the timestamp if it is at most
+                # one minute behind our current timestamp
+                if timestamp + 6000*1000 < self.signing.timestamp:
+                    # print('bad new stream ', timestamp/(100.0*1000*60*60*24*365), self.signing.timestamp/(100.0*1000*60*60*24*365))
+                    return False
+                self.signing.stream_timestamps[stream_key] = timestamp
+                # print('new stream')
+
+            h = hashlib.new('sha256')
+            h.update(self.signing.secret_key)
+            h.update(msgbuf[:-6])
+            if str(type(msgbuf)) == "<class 'bytes'>" or str(type(msgbuf)) == "<class 'bytearray'>":
+                # Python 3
+                sig1 = h.digest()[:6]
+                sig2 = msgbuf[-6:]
+            else:
+                sig1 = str(h.digest())[:6]
+                sig2 = str(msgbuf)[-6:]
+            if sig1 != sig2:
+                # print('sig mismatch')
+                return False
+
+            # the timestamp we next send with is the max of the received timestamp and
+            # our current timestamp
+            self.signing.timestamp = max(self.signing.timestamp, timestamp)
+            return True
+
+        def decode(self, msgbuf):
+                '''decode a buffer as a MAVLink message'''
+                # decode the header
+                if msgbuf[0] != PROTOCOL_MARKER_V1:
+                    headerlen = 10
+                    try:
+                        magic, mlen, incompat_flags, compat_flags, seq, srcSystem, srcComponent, msgIdlow, msgIdhigh = self.mav20_unpacker.unpack(msgbuf[:headerlen])
+                    except struct.error as emsg:
+                        raise MAVError('Unable to unpack MAVLink header: %s' % emsg)
+                    msgId = msgIdlow | (msgIdhigh<<16)
+                    mapkey = msgId
+                else:
+                    headerlen = 6
+                    try:
+                        magic, mlen, seq, srcSystem, srcComponent, msgId = self.mav10_unpacker.unpack(msgbuf[:headerlen])
+                        incompat_flags = 0
+                        compat_flags = 0
+                    except struct.error as emsg:
+                        raise MAVError('Unable to unpack MAVLink header: %s' % emsg)
+                    mapkey = msgId
+                if (incompat_flags & MAVLINK_IFLAG_SIGNED) != 0:
+                    signature_len = MAVLINK_SIGNATURE_BLOCK_LEN
+                else:
+                    signature_len = 0
+
+                if ord(magic) != PROTOCOL_MARKER_V1 and ord(magic) != PROTOCOL_MARKER_V2:
+                    raise MAVError("invalid MAVLink prefix '%s'" % magic)
+                if mlen != len(msgbuf)-(headerlen+2+signature_len):
+                    raise MAVError('invalid MAVLink message length. Got %u expected %u, msgId=%u headerlen=%u' % (len(msgbuf)-(headerlen+2+signature_len), mlen, msgId, headerlen))
+
+                if not mapkey in mavlink_map:
+                    return MAVLink_unknown(msgId, msgbuf)
+
+                # decode the payload
+                type = mavlink_map[mapkey]
+                fmt = type.format
+                order_map = type.orders
+                len_map = type.lengths
+                crc_extra = type.crc_extra
+
+                # decode the checksum
+                try:
+                    crc, = self.mav_csum_unpacker.unpack(msgbuf[-(2+signature_len):][:2])
+                except struct.error as emsg:
+                    raise MAVError('Unable to unpack MAVLink CRC: %s' % emsg)
+                crcbuf = msgbuf[1:-(2+signature_len)]
+                if True: # using CRC extra
+                    crcbuf.append(crc_extra)
+                crc2 = x25crc(crcbuf)
+                if crc != crc2.crc and not MAVLINK_IGNORE_CRC:
+                    raise MAVError('invalid MAVLink CRC in msgID %u 0x%04x should be 0x%04x' % (msgId, crc, crc2.crc))
+
+                sig_ok = False
+                if signature_len == MAVLINK_SIGNATURE_BLOCK_LEN:
+                    self.signing.sig_count += 1
+                if self.signing.secret_key is not None:
+                    accept_signature = False
+                    if signature_len == MAVLINK_SIGNATURE_BLOCK_LEN:
+                        sig_ok = self.check_signature(msgbuf, srcSystem, srcComponent)
+                        accept_signature = sig_ok
+                        if sig_ok:
+                            self.signing.goodsig_count += 1
+                        else:
+                            self.signing.badsig_count += 1
+                        if not accept_signature and self.signing.allow_unsigned_callback is not None:
+                            accept_signature = self.signing.allow_unsigned_callback(self, msgId)
+                            if accept_signature:
+                                self.signing.unsigned_count += 1
+                            else:
+                                self.signing.reject_count += 1
+                    elif self.signing.allow_unsigned_callback is not None:
+                        accept_signature = self.signing.allow_unsigned_callback(self, msgId)
+                        if accept_signature:
+                            self.signing.unsigned_count += 1
+                        else:
+                            self.signing.reject_count += 1
+                    if not accept_signature:
+                        raise MAVError('Invalid signature')
+
+                csize = type.unpacker.size
+                mbuf = msgbuf[headerlen:-(2+signature_len)]
+                if len(mbuf) < csize:
+                    # zero pad to give right size
+                    mbuf.extend([0]*(csize - len(mbuf)))
+                if len(mbuf) < csize:
+                    raise MAVError('Bad message of type %s length %u needs %s' % (
+                        type, len(mbuf), csize))
+                mbuf = mbuf[:csize]
+                try:
+                    t = type.unpacker.unpack(mbuf)
+                except struct.error as emsg:
+                    raise MAVError('Unable to unpack MAVLink payload type=%s fmt=%s payloadLength=%u: %s' % (
+                        type, fmt, len(mbuf), emsg))
+
+                tlist = list(t)
+                # handle sorted fields
+                if True:
+                    t = tlist[:]
+                    if sum(len_map) == len(len_map):
+                        # message has no arrays in it
+                        for i in range(0, len(tlist)):
+                            tlist[i] = t[order_map[i]]
+                    else:
+                        # message has some arrays
+                        tlist = []
+                        for i in range(0, len(order_map)):
+                            order = order_map[i]
+                            L = len_map[order]
+                            tip = sum(len_map[:order])
+                            field = t[tip]
+                            if L == 1 or isinstance(field, str):
+                                tlist.append(field)
+                            else:
+                                tlist.append(t[tip:(tip + L)])
+
+                # terminate any strings
+                for i in range(0, len(tlist)):
+                    if type.fieldtypes[i] == 'char':
+                        if sys.version_info.major >= 3:
+                            tlist[i] = to_string(tlist[i])
+                        tlist[i] = str(MAVString(tlist[i]))
+                t = tuple(tlist)
+                # construct the message object
+                try:
+                    m = type(*t)
+                except Exception as emsg:
+                    raise MAVError('Unable to instantiate MAVLink message of type %s : %s' % (type, emsg))
+                m._signed = sig_ok
+                if m._signed:
+                    m._link_id = msgbuf[-13]
+                m._msgbuf = msgbuf
+                m._payload = msgbuf[6:-(2+signature_len)]
+                m._crc = crc
+                m._header = MAVLink_header(msgId, incompat_flags, compat_flags, mlen, seq, srcSystem, srcComponent)
+                return m
+        def ping_tc_encode(self, timestamp):
+                '''
+                TC to ping the rocket (expects an ACK message as a response)
+
+                timestamp                 : Timestamp to identify when it was sent (type:uint64_t)
+
+                '''
+                return MAVLink_ping_tc_message(timestamp)
+
+        def ping_tc_send(self, timestamp, force_mavlink1=False):
+                '''
+                TC to ping the rocket (expects an ACK message as a response)
+
+                timestamp                 : Timestamp to identify when it was sent (type:uint64_t)
+
+                '''
+                return self.send(self.ping_tc_encode(timestamp), force_mavlink1=force_mavlink1)
+
+        def command_tc_encode(self, command_id):
+                '''
+                TC containing a command with no parameters that trigger some action
+
+                command_id                : A member of the MavCommandList enum (type:uint8_t)
+
+                '''
+                return MAVLink_command_tc_message(command_id)
+
+        def command_tc_send(self, command_id, force_mavlink1=False):
+                '''
+                TC containing a command with no parameters that trigger some action
+
+                command_id                : A member of the MavCommandList enum (type:uint8_t)
+
+                '''
+                return self.send(self.command_tc_encode(command_id), force_mavlink1=force_mavlink1)
+
+        def system_tm_request_tc_encode(self, tm_id):
+                '''
+                TC containing a request for the status of a board
+
+                tm_id                     : A member of the SystemTMList enum (type:uint8_t)
+
+                '''
+                return MAVLink_system_tm_request_tc_message(tm_id)
+
+        def system_tm_request_tc_send(self, tm_id, force_mavlink1=False):
+                '''
+                TC containing a request for the status of a board
+
+                tm_id                     : A member of the SystemTMList enum (type:uint8_t)
+
+                '''
+                return self.send(self.system_tm_request_tc_encode(tm_id), force_mavlink1=force_mavlink1)
+
+        def sensor_tm_request_tc_encode(self, sensor_name):
+                '''
+                TC containing a request for sensors telemetry
+
+                sensor_name               : A member of the SensorTMList enum (type:uint8_t)
+
+                '''
+                return MAVLink_sensor_tm_request_tc_message(sensor_name)
+
+        def sensor_tm_request_tc_send(self, sensor_name, force_mavlink1=False):
+                '''
+                TC containing a request for sensors telemetry
+
+                sensor_name               : A member of the SensorTMList enum (type:uint8_t)
+
+                '''
+                return self.send(self.sensor_tm_request_tc_encode(sensor_name), force_mavlink1=force_mavlink1)
+
+        def servo_tm_request_tc_encode(self, servo_id):
+                '''
+                TC containing a request for servo telemetry
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+
+                '''
+                return MAVLink_servo_tm_request_tc_message(servo_id)
+
+        def servo_tm_request_tc_send(self, servo_id, force_mavlink1=False):
+                '''
+                TC containing a request for servo telemetry
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+
+                '''
+                return self.send(self.servo_tm_request_tc_encode(servo_id), force_mavlink1=force_mavlink1)
+
+        def set_servo_angle_tc_encode(self, servo_id, angle):
+                '''
+                Sets the angle of a certain servo
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+                angle                     : Servo angle in normalized value [0-1] (type:float)
+
+                '''
+                return MAVLink_set_servo_angle_tc_message(servo_id, angle)
+
+        def set_servo_angle_tc_send(self, servo_id, angle, force_mavlink1=False):
+                '''
+                Sets the angle of a certain servo
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+                angle                     : Servo angle in normalized value [0-1] (type:float)
+
+                '''
+                return self.send(self.set_servo_angle_tc_encode(servo_id, angle), force_mavlink1=force_mavlink1)
+
+        def wiggle_servo_tc_encode(self, servo_id):
+                '''
+                Wiggles the specified servo
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+
+                '''
+                return MAVLink_wiggle_servo_tc_message(servo_id)
+
+        def wiggle_servo_tc_send(self, servo_id, force_mavlink1=False):
+                '''
+                Wiggles the specified servo
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+
+                '''
+                return self.send(self.wiggle_servo_tc_encode(servo_id), force_mavlink1=force_mavlink1)
+
+        def reset_servo_tc_encode(self, servo_id):
+                '''
+                Resets the specified servo
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+
+                '''
+                return MAVLink_reset_servo_tc_message(servo_id)
+
+        def reset_servo_tc_send(self, servo_id, force_mavlink1=False):
+                '''
+                Resets the specified servo
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+
+                '''
+                return self.send(self.reset_servo_tc_encode(servo_id), force_mavlink1=force_mavlink1)
+
+        def set_reference_altitude_tc_encode(self, ref_altitude):
+                '''
+                Sets the reference altitude for the altimeter
+
+                ref_altitude              : Reference altitude [m] (type:float)
+
+                '''
+                return MAVLink_set_reference_altitude_tc_message(ref_altitude)
+
+        def set_reference_altitude_tc_send(self, ref_altitude, force_mavlink1=False):
+                '''
+                Sets the reference altitude for the altimeter
+
+                ref_altitude              : Reference altitude [m] (type:float)
+
+                '''
+                return self.send(self.set_reference_altitude_tc_encode(ref_altitude), force_mavlink1=force_mavlink1)
+
+        def set_reference_temperature_tc_encode(self, ref_temp):
+                '''
+                Sets the reference temperature for the altimeter
+
+                ref_temp                  : Reference temperature [degC] (type:float)
+
+                '''
+                return MAVLink_set_reference_temperature_tc_message(ref_temp)
+
+        def set_reference_temperature_tc_send(self, ref_temp, force_mavlink1=False):
+                '''
+                Sets the reference temperature for the altimeter
+
+                ref_temp                  : Reference temperature [degC] (type:float)
+
+                '''
+                return self.send(self.set_reference_temperature_tc_encode(ref_temp), force_mavlink1=force_mavlink1)
+
+        def set_orientation_tc_encode(self, yaw, pitch, roll):
+                '''
+                Sets current orientation for the navigation system
+
+                yaw                       : Yaw angle [deg] (type:float)
+                pitch                     : Pitch angle [deg] (type:float)
+                roll                      : Roll angle [deg] (type:float)
+
+                '''
+                return MAVLink_set_orientation_tc_message(yaw, pitch, roll)
+
+        def set_orientation_tc_send(self, yaw, pitch, roll, force_mavlink1=False):
+                '''
+                Sets current orientation for the navigation system
+
+                yaw                       : Yaw angle [deg] (type:float)
+                pitch                     : Pitch angle [deg] (type:float)
+                roll                      : Roll angle [deg] (type:float)
+
+                '''
+                return self.send(self.set_orientation_tc_encode(yaw, pitch, roll), force_mavlink1=force_mavlink1)
+
+        def set_coordinates_tc_encode(self, latitude, longitude):
+                '''
+                Sets current coordinates
+
+                latitude                  : Latitude [deg] (type:float)
+                longitude                 : Longitude [deg] (type:float)
+
+                '''
+                return MAVLink_set_coordinates_tc_message(latitude, longitude)
+
+        def set_coordinates_tc_send(self, latitude, longitude, force_mavlink1=False):
+                '''
+                Sets current coordinates
+
+                latitude                  : Latitude [deg] (type:float)
+                longitude                 : Longitude [deg] (type:float)
+
+                '''
+                return self.send(self.set_coordinates_tc_encode(latitude, longitude), force_mavlink1=force_mavlink1)
+
+        def raw_event_tc_encode(self, topic_id, event_id):
+                '''
+                TC containing a raw event to be posted directly in the EventBroker
+
+                topic_id                  : Id of the topic to which the event should be posted (type:uint8_t)
+                event_id                  : Id of the event to be posted (type:uint8_t)
+
+                '''
+                return MAVLink_raw_event_tc_message(topic_id, event_id)
+
+        def raw_event_tc_send(self, topic_id, event_id, force_mavlink1=False):
+                '''
+                TC containing a raw event to be posted directly in the EventBroker
+
+                topic_id                  : Id of the topic to which the event should be posted (type:uint8_t)
+                event_id                  : Id of the event to be posted (type:uint8_t)
+
+                '''
+                return self.send(self.raw_event_tc_encode(topic_id, event_id), force_mavlink1=force_mavlink1)
+
+        def set_deployment_altitude_tc_encode(self, dpl_altitude):
+                '''
+                Sets the deployment altitude for the main parachute
+
+                dpl_altitude              : Deployment altitude [m] (type:float)
+
+                '''
+                return MAVLink_set_deployment_altitude_tc_message(dpl_altitude)
+
+        def set_deployment_altitude_tc_send(self, dpl_altitude, force_mavlink1=False):
+                '''
+                Sets the deployment altitude for the main parachute
+
+                dpl_altitude              : Deployment altitude [m] (type:float)
+
+                '''
+                return self.send(self.set_deployment_altitude_tc_encode(dpl_altitude), force_mavlink1=force_mavlink1)
+
+        def set_target_coordinates_tc_encode(self, latitude, longitude):
+                '''
+                Sets the target coordinates
+
+                latitude                  : Latitude [deg] (type:float)
+                longitude                 : Longitude [deg] (type:float)
+
+                '''
+                return MAVLink_set_target_coordinates_tc_message(latitude, longitude)
+
+        def set_target_coordinates_tc_send(self, latitude, longitude, force_mavlink1=False):
+                '''
+                Sets the target coordinates
+
+                latitude                  : Latitude [deg] (type:float)
+                longitude                 : Longitude [deg] (type:float)
+
+                '''
+                return self.send(self.set_target_coordinates_tc_encode(latitude, longitude), force_mavlink1=force_mavlink1)
+
+        def set_algorithm_tc_encode(self, algorithm_number):
+                '''
+                Sets the algorithm number (for parafoil guidance and GSE tars)
+
+                algorithm_number          : Algorithm number (type:uint8_t)
+
+                '''
+                return MAVLink_set_algorithm_tc_message(algorithm_number)
+
+        def set_algorithm_tc_send(self, algorithm_number, force_mavlink1=False):
+                '''
+                Sets the algorithm number (for parafoil guidance and GSE tars)
+
+                algorithm_number          : Algorithm number (type:uint8_t)
+
+                '''
+                return self.send(self.set_algorithm_tc_encode(algorithm_number), force_mavlink1=force_mavlink1)
+
+        def set_atomic_valve_timing_tc_encode(self, servo_id, maximum_timing):
+                '''
+                Sets the maximum time that the valves can be open atomically
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+                maximum_timing            : Maximum timing in [ms] [ms] (type:uint32_t)
+
+                '''
+                return MAVLink_set_atomic_valve_timing_tc_message(servo_id, maximum_timing)
+
+        def set_atomic_valve_timing_tc_send(self, servo_id, maximum_timing, force_mavlink1=False):
+                '''
+                Sets the maximum time that the valves can be open atomically
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+                maximum_timing            : Maximum timing in [ms] [ms] (type:uint32_t)
+
+                '''
+                return self.send(self.set_atomic_valve_timing_tc_encode(servo_id, maximum_timing), force_mavlink1=force_mavlink1)
+
+        def set_valve_maximum_aperture_tc_encode(self, servo_id, maximum_aperture):
+                '''
+                Sets the maximum aperture of the specified valve. Set as value from 0
+                to 1
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+                maximum_aperture          : Maximum aperture (type:float)
+
+                '''
+                return MAVLink_set_valve_maximum_aperture_tc_message(servo_id, maximum_aperture)
+
+        def set_valve_maximum_aperture_tc_send(self, servo_id, maximum_aperture, force_mavlink1=False):
+                '''
+                Sets the maximum aperture of the specified valve. Set as value from 0
+                to 1
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+                maximum_aperture          : Maximum aperture (type:float)
+
+                '''
+                return self.send(self.set_valve_maximum_aperture_tc_encode(servo_id, maximum_aperture), force_mavlink1=force_mavlink1)
+
+        def conrig_state_tc_encode(self, ignition_btn, filling_valve_btn, venting_valve_btn, release_pressure_btn, quick_connector_btn, start_tars_btn, arm_switch):
+                '''
+                Send the state of the conrig buttons
+
+                ignition_btn              : Ignition button pressed (type:uint8_t)
+                filling_valve_btn         : Open filling valve pressed (type:uint8_t)
+                venting_valve_btn         : Open venting valve pressed (type:uint8_t)
+                release_pressure_btn        : Release filling line pressure pressed (type:uint8_t)
+                quick_connector_btn        : Detach quick connector pressed (type:uint8_t)
+                start_tars_btn            : Startup TARS pressed (type:uint8_t)
+                arm_switch                : Arming switch state (type:uint8_t)
+
+                '''
+                return MAVLink_conrig_state_tc_message(ignition_btn, filling_valve_btn, venting_valve_btn, release_pressure_btn, quick_connector_btn, start_tars_btn, arm_switch)
+
+        def conrig_state_tc_send(self, ignition_btn, filling_valve_btn, venting_valve_btn, release_pressure_btn, quick_connector_btn, start_tars_btn, arm_switch, force_mavlink1=False):
+                '''
+                Send the state of the conrig buttons
+
+                ignition_btn              : Ignition button pressed (type:uint8_t)
+                filling_valve_btn         : Open filling valve pressed (type:uint8_t)
+                venting_valve_btn         : Open venting valve pressed (type:uint8_t)
+                release_pressure_btn        : Release filling line pressure pressed (type:uint8_t)
+                quick_connector_btn        : Detach quick connector pressed (type:uint8_t)
+                start_tars_btn            : Startup TARS pressed (type:uint8_t)
+                arm_switch                : Arming switch state (type:uint8_t)
+
+                '''
+                return self.send(self.conrig_state_tc_encode(ignition_btn, filling_valve_btn, venting_valve_btn, release_pressure_btn, quick_connector_btn, start_tars_btn, arm_switch), force_mavlink1=force_mavlink1)
+
+        def set_ignition_time_tc_encode(self, timing):
+                '''
+                Sets the time in ms that the igniter stays on before the oxidant valve
+                is opened
+
+                timing                    : Timing in [ms] [ms] (type:uint32_t)
+
+                '''
+                return MAVLink_set_ignition_time_tc_message(timing)
+
+        def set_ignition_time_tc_send(self, timing, force_mavlink1=False):
+                '''
+                Sets the time in ms that the igniter stays on before the oxidant valve
+                is opened
+
+                timing                    : Timing in [ms] [ms] (type:uint32_t)
+
+                '''
+                return self.send(self.set_ignition_time_tc_encode(timing), force_mavlink1=force_mavlink1)
+
+        def ack_tm_encode(self, recv_msgid, seq_ack):
+                '''
+                TM containing an ACK message to notify that the message has been
+                received
+
+                recv_msgid                : Message id of the received message (type:uint8_t)
+                seq_ack                   : Sequence number of the received message (type:uint8_t)
+
+                '''
+                return MAVLink_ack_tm_message(recv_msgid, seq_ack)
+
+        def ack_tm_send(self, recv_msgid, seq_ack, force_mavlink1=False):
+                '''
+                TM containing an ACK message to notify that the message has been
+                received
+
+                recv_msgid                : Message id of the received message (type:uint8_t)
+                seq_ack                   : Sequence number of the received message (type:uint8_t)
+
+                '''
+                return self.send(self.ack_tm_encode(recv_msgid, seq_ack), force_mavlink1=force_mavlink1)
+
+        def nack_tm_encode(self, recv_msgid, seq_ack):
+                '''
+                TM containing a NACK message to notify that the received message was
+                invalid
+
+                recv_msgid                : Message id of the received message (type:uint8_t)
+                seq_ack                   : Sequence number of the received message (type:uint8_t)
+
+                '''
+                return MAVLink_nack_tm_message(recv_msgid, seq_ack)
+
+        def nack_tm_send(self, recv_msgid, seq_ack, force_mavlink1=False):
+                '''
+                TM containing a NACK message to notify that the received message was
+                invalid
+
+                recv_msgid                : Message id of the received message (type:uint8_t)
+                seq_ack                   : Sequence number of the received message (type:uint8_t)
+
+                '''
+                return self.send(self.nack_tm_encode(recv_msgid, seq_ack), force_mavlink1=force_mavlink1)
+
+        def gps_tm_encode(self, timestamp, sensor_name, fix, latitude, longitude, height, vel_north, vel_east, vel_down, speed, track, n_satellites):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                fix                       : Wether the GPS has a FIX (type:uint8_t)
+                latitude                  : Latitude [deg] (type:double)
+                longitude                 : Longitude [deg] (type:double)
+                height                    : Altitude [m] (type:double)
+                vel_north                 : Velocity in NED frame (north) [m/s] (type:float)
+                vel_east                  : Velocity in NED frame (east) [m/s] (type:float)
+                vel_down                  : Velocity in NED frame (down) [m/s] (type:float)
+                speed                     : Speed [m/s] (type:float)
+                track                     : Track [deg] (type:float)
+                n_satellites              : Number of connected satellites (type:uint8_t)
+
+                '''
+                return MAVLink_gps_tm_message(timestamp, sensor_name, fix, latitude, longitude, height, vel_north, vel_east, vel_down, speed, track, n_satellites)
+
+        def gps_tm_send(self, timestamp, sensor_name, fix, latitude, longitude, height, vel_north, vel_east, vel_down, speed, track, n_satellites, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                fix                       : Wether the GPS has a FIX (type:uint8_t)
+                latitude                  : Latitude [deg] (type:double)
+                longitude                 : Longitude [deg] (type:double)
+                height                    : Altitude [m] (type:double)
+                vel_north                 : Velocity in NED frame (north) [m/s] (type:float)
+                vel_east                  : Velocity in NED frame (east) [m/s] (type:float)
+                vel_down                  : Velocity in NED frame (down) [m/s] (type:float)
+                speed                     : Speed [m/s] (type:float)
+                track                     : Track [deg] (type:float)
+                n_satellites              : Number of connected satellites (type:uint8_t)
+
+                '''
+                return self.send(self.gps_tm_encode(timestamp, sensor_name, fix, latitude, longitude, height, vel_north, vel_east, vel_down, speed, track, n_satellites), force_mavlink1=force_mavlink1)
+
+        def imu_tm_encode(self, timestamp, sensor_name, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                acc_x                     : X axis acceleration [m/s2] (type:float)
+                acc_y                     : Y axis acceleration [m/s2] (type:float)
+                acc_z                     : Z axis acceleration [m/s2] (type:float)
+                gyro_x                    : X axis gyro [rad/s] (type:float)
+                gyro_y                    : Y axis gyro [rad/s] (type:float)
+                gyro_z                    : Z axis gyro [rad/s] (type:float)
+                mag_x                     : X axis compass [uT] (type:float)
+                mag_y                     : Y axis compass [uT] (type:float)
+                mag_z                     : Z axis compass [uT] (type:float)
+
+                '''
+                return MAVLink_imu_tm_message(timestamp, sensor_name, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z)
+
+        def imu_tm_send(self, timestamp, sensor_name, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                acc_x                     : X axis acceleration [m/s2] (type:float)
+                acc_y                     : Y axis acceleration [m/s2] (type:float)
+                acc_z                     : Z axis acceleration [m/s2] (type:float)
+                gyro_x                    : X axis gyro [rad/s] (type:float)
+                gyro_y                    : Y axis gyro [rad/s] (type:float)
+                gyro_z                    : Z axis gyro [rad/s] (type:float)
+                mag_x                     : X axis compass [uT] (type:float)
+                mag_y                     : Y axis compass [uT] (type:float)
+                mag_z                     : Z axis compass [uT] (type:float)
+
+                '''
+                return self.send(self.imu_tm_encode(timestamp, sensor_name, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z), force_mavlink1=force_mavlink1)
+
+        def pressure_tm_encode(self, timestamp, sensor_name, pressure):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                pressure                  : Pressure of the digital barometer [Pa] (type:float)
+
+                '''
+                return MAVLink_pressure_tm_message(timestamp, sensor_name, pressure)
+
+        def pressure_tm_send(self, timestamp, sensor_name, pressure, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                pressure                  : Pressure of the digital barometer [Pa] (type:float)
+
+                '''
+                return self.send(self.pressure_tm_encode(timestamp, sensor_name, pressure), force_mavlink1=force_mavlink1)
+
+        def adc_tm_encode(self, timestamp, sensor_name, channel_0, channel_1, channel_2, channel_3):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                channel_0                 : ADC voltage measured on channel 0 [V] (type:float)
+                channel_1                 : ADC voltage measured on channel 1 [V] (type:float)
+                channel_2                 : ADC voltage measured on channel 2 [V] (type:float)
+                channel_3                 : ADC voltage measured on channel 3 [V] (type:float)
+
+                '''
+                return MAVLink_adc_tm_message(timestamp, sensor_name, channel_0, channel_1, channel_2, channel_3)
+
+        def adc_tm_send(self, timestamp, sensor_name, channel_0, channel_1, channel_2, channel_3, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                channel_0                 : ADC voltage measured on channel 0 [V] (type:float)
+                channel_1                 : ADC voltage measured on channel 1 [V] (type:float)
+                channel_2                 : ADC voltage measured on channel 2 [V] (type:float)
+                channel_3                 : ADC voltage measured on channel 3 [V] (type:float)
+
+                '''
+                return self.send(self.adc_tm_encode(timestamp, sensor_name, channel_0, channel_1, channel_2, channel_3), force_mavlink1=force_mavlink1)
+
+        def voltage_tm_encode(self, timestamp, sensor_name, voltage):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                voltage                   : Voltage [V] (type:float)
+
+                '''
+                return MAVLink_voltage_tm_message(timestamp, sensor_name, voltage)
+
+        def voltage_tm_send(self, timestamp, sensor_name, voltage, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                voltage                   : Voltage [V] (type:float)
+
+                '''
+                return self.send(self.voltage_tm_encode(timestamp, sensor_name, voltage), force_mavlink1=force_mavlink1)
+
+        def current_tm_encode(self, timestamp, sensor_name, current):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                current                   : Current [A] (type:float)
+
+                '''
+                return MAVLink_current_tm_message(timestamp, sensor_name, current)
+
+        def current_tm_send(self, timestamp, sensor_name, current, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                current                   : Current [A] (type:float)
+
+                '''
+                return self.send(self.current_tm_encode(timestamp, sensor_name, current), force_mavlink1=force_mavlink1)
+
+        def temp_tm_encode(self, timestamp, sensor_name, temperature):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                temperature               : Temperature [deg] (type:float)
+
+                '''
+                return MAVLink_temp_tm_message(timestamp, sensor_name, temperature)
+
+        def temp_tm_send(self, timestamp, sensor_name, temperature, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                temperature               : Temperature [deg] (type:float)
+
+                '''
+                return self.send(self.temp_tm_encode(timestamp, sensor_name, temperature), force_mavlink1=force_mavlink1)
+
+        def load_tm_encode(self, timestamp, sensor_name, load):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                load                      : Load force [kg] (type:float)
+
+                '''
+                return MAVLink_load_tm_message(timestamp, sensor_name, load)
+
+        def load_tm_send(self, timestamp, sensor_name, load, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                load                      : Load force [kg] (type:float)
+
+                '''
+                return self.send(self.load_tm_encode(timestamp, sensor_name, load), force_mavlink1=force_mavlink1)
+
+        def attitude_tm_encode(self, timestamp, sensor_name, roll, pitch, yaw, quat_x, quat_y, quat_z, quat_w):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                roll                      : Roll angle [deg] (type:float)
+                pitch                     : Pitch angle [deg] (type:float)
+                yaw                       : Yaw angle [deg] (type:float)
+                quat_x                    : Quaternion x component (type:float)
+                quat_y                    : Quaternion y component (type:float)
+                quat_z                    : Quaternion z component (type:float)
+                quat_w                    : Quaternion w component (type:float)
+
+                '''
+                return MAVLink_attitude_tm_message(timestamp, sensor_name, roll, pitch, yaw, quat_x, quat_y, quat_z, quat_w)
+
+        def attitude_tm_send(self, timestamp, sensor_name, roll, pitch, yaw, quat_x, quat_y, quat_z, quat_w, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                sensor_name               : Sensor name (type:char)
+                roll                      : Roll angle [deg] (type:float)
+                pitch                     : Pitch angle [deg] (type:float)
+                yaw                       : Yaw angle [deg] (type:float)
+                quat_x                    : Quaternion x component (type:float)
+                quat_y                    : Quaternion y component (type:float)
+                quat_z                    : Quaternion z component (type:float)
+                quat_w                    : Quaternion w component (type:float)
+
+                '''
+                return self.send(self.attitude_tm_encode(timestamp, sensor_name, roll, pitch, yaw, quat_x, quat_y, quat_z, quat_w), force_mavlink1=force_mavlink1)
+
+        def sensor_state_tm_encode(self, sensor_name, state):
+                '''
+                
+
+                sensor_name               : Sensor name (type:char)
+                state                     : Boolean that represents the init state (type:uint8_t)
+
+                '''
+                return MAVLink_sensor_state_tm_message(sensor_name, state)
+
+        def sensor_state_tm_send(self, sensor_name, state, force_mavlink1=False):
+                '''
+                
+
+                sensor_name               : Sensor name (type:char)
+                state                     : Boolean that represents the init state (type:uint8_t)
+
+                '''
+                return self.send(self.sensor_state_tm_encode(sensor_name, state), force_mavlink1=force_mavlink1)
+
+        def servo_tm_encode(self, servo_id, servo_position):
+                '''
+                
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+                servo_position            : Position of the servo [0-1] (type:float)
+
+                '''
+                return MAVLink_servo_tm_message(servo_id, servo_position)
+
+        def servo_tm_send(self, servo_id, servo_position, force_mavlink1=False):
+                '''
+                
+
+                servo_id                  : A member of the ServosList enum (type:uint8_t)
+                servo_position            : Position of the servo [0-1] (type:float)
+
+                '''
+                return self.send(self.servo_tm_encode(servo_id, servo_position), force_mavlink1=force_mavlink1)
+
+        def pin_tm_encode(self, timestamp, pin_id, last_change_timestamp, changes_counter, current_state):
+                '''
+                
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                pin_id                    : A member of the PinsList enum (type:uint8_t)
+                last_change_timestamp        : Last change timestamp of pin (type:uint64_t)
+                changes_counter           : Number of changes of pin (type:uint8_t)
+                current_state             : Current state of pin (type:uint8_t)
+
+                '''
+                return MAVLink_pin_tm_message(timestamp, pin_id, last_change_timestamp, changes_counter, current_state)
+
+        def pin_tm_send(self, timestamp, pin_id, last_change_timestamp, changes_counter, current_state, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                pin_id                    : A member of the PinsList enum (type:uint8_t)
+                last_change_timestamp        : Last change timestamp of pin (type:uint64_t)
+                changes_counter           : Number of changes of pin (type:uint8_t)
+                current_state             : Current state of pin (type:uint8_t)
+
+                '''
+                return self.send(self.pin_tm_encode(timestamp, pin_id, last_change_timestamp, changes_counter, current_state), force_mavlink1=force_mavlink1)
+
+        def receiver_tm_encode(self, timestamp, main_radio_present, main_packet_tx_error_count, main_tx_bitrate, main_packet_rx_success_count, main_packet_rx_drop_count, main_rx_bitrate, main_rx_rssi, main_rx_fei, payload_radio_present, payload_packet_tx_error_count, payload_tx_bitrate, payload_packet_rx_success_count, payload_packet_rx_drop_count, payload_rx_bitrate, payload_rx_rssi, payload_rx_fei):
+                '''
+                
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                main_radio_present        : Boolean indicating the presence of the main radio (type:uint8_t)
+                main_packet_tx_error_count        : Number of errors during send (type:uint16_t)
+                main_tx_bitrate           : Send bitrate [b/s] (type:uint16_t)
+                main_packet_rx_success_count        : Number of succesfull received mavlink packets (type:uint16_t)
+                main_packet_rx_drop_count        : Number of dropped mavlink packets (type:uint16_t)
+                main_rx_bitrate           : Receive bitrate [b/s] (type:uint16_t)
+                main_rx_rssi              : Receive RSSI [dBm] (type:float)
+                main_rx_fei               : Receive frequency error index [Hz] (type:float)
+                payload_radio_present        : Boolean indicating the presence of the payload radio (type:uint8_t)
+                payload_packet_tx_error_count        : Number of errors during send (type:uint16_t)
+                payload_tx_bitrate        : Send bitrate [b/s] (type:uint16_t)
+                payload_packet_rx_success_count        : Number of succesfull received mavlink packets (type:uint16_t)
+                payload_packet_rx_drop_count        : Number of dropped mavlink packets (type:uint16_t)
+                payload_rx_bitrate        : Receive bitrate [b/s] (type:uint16_t)
+                payload_rx_rssi           : Receive RSSI [dBm] (type:float)
+                payload_rx_fei            : Receive frequency error index [Hz] (type:float)
+
+                '''
+                return MAVLink_receiver_tm_message(timestamp, main_radio_present, main_packet_tx_error_count, main_tx_bitrate, main_packet_rx_success_count, main_packet_rx_drop_count, main_rx_bitrate, main_rx_rssi, main_rx_fei, payload_radio_present, payload_packet_tx_error_count, payload_tx_bitrate, payload_packet_rx_success_count, payload_packet_rx_drop_count, payload_rx_bitrate, payload_rx_rssi, payload_rx_fei)
+
+        def receiver_tm_send(self, timestamp, main_radio_present, main_packet_tx_error_count, main_tx_bitrate, main_packet_rx_success_count, main_packet_rx_drop_count, main_rx_bitrate, main_rx_rssi, main_rx_fei, payload_radio_present, payload_packet_tx_error_count, payload_tx_bitrate, payload_packet_rx_success_count, payload_packet_rx_drop_count, payload_rx_bitrate, payload_rx_rssi, payload_rx_fei, force_mavlink1=False):
+                '''
+                
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                main_radio_present        : Boolean indicating the presence of the main radio (type:uint8_t)
+                main_packet_tx_error_count        : Number of errors during send (type:uint16_t)
+                main_tx_bitrate           : Send bitrate [b/s] (type:uint16_t)
+                main_packet_rx_success_count        : Number of succesfull received mavlink packets (type:uint16_t)
+                main_packet_rx_drop_count        : Number of dropped mavlink packets (type:uint16_t)
+                main_rx_bitrate           : Receive bitrate [b/s] (type:uint16_t)
+                main_rx_rssi              : Receive RSSI [dBm] (type:float)
+                main_rx_fei               : Receive frequency error index [Hz] (type:float)
+                payload_radio_present        : Boolean indicating the presence of the payload radio (type:uint8_t)
+                payload_packet_tx_error_count        : Number of errors during send (type:uint16_t)
+                payload_tx_bitrate        : Send bitrate [b/s] (type:uint16_t)
+                payload_packet_rx_success_count        : Number of succesfull received mavlink packets (type:uint16_t)
+                payload_packet_rx_drop_count        : Number of dropped mavlink packets (type:uint16_t)
+                payload_rx_bitrate        : Receive bitrate [b/s] (type:uint16_t)
+                payload_rx_rssi           : Receive RSSI [dBm] (type:float)
+                payload_rx_fei            : Receive frequency error index [Hz] (type:float)
+
+                '''
+                return self.send(self.receiver_tm_encode(timestamp, main_radio_present, main_packet_tx_error_count, main_tx_bitrate, main_packet_rx_success_count, main_packet_rx_drop_count, main_rx_bitrate, main_rx_rssi, main_rx_fei, payload_radio_present, payload_packet_tx_error_count, payload_tx_bitrate, payload_packet_rx_success_count, payload_packet_rx_drop_count, payload_rx_bitrate, payload_rx_rssi, payload_rx_fei), force_mavlink1=force_mavlink1)
+
+        def sys_tm_encode(self, timestamp, logger, event_broker, radio, pin_observer, sensors, board_scheduler):
+                '''
+                System status telemetry
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                logger                    : True if the logger started correctly (type:uint8_t)
+                event_broker              : True if the event broker started correctly (type:uint8_t)
+                radio                     : True if the radio started correctly (type:uint8_t)
+                pin_observer              : True if the pin observer started correctly (type:uint8_t)
+                sensors                   : True if the sensors started correctly (type:uint8_t)
+                board_scheduler           : True if the board scheduler is running (type:uint8_t)
+
+                '''
+                return MAVLink_sys_tm_message(timestamp, logger, event_broker, radio, pin_observer, sensors, board_scheduler)
+
+        def sys_tm_send(self, timestamp, logger, event_broker, radio, pin_observer, sensors, board_scheduler, force_mavlink1=False):
+                '''
+                System status telemetry
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                logger                    : True if the logger started correctly (type:uint8_t)
+                event_broker              : True if the event broker started correctly (type:uint8_t)
+                radio                     : True if the radio started correctly (type:uint8_t)
+                pin_observer              : True if the pin observer started correctly (type:uint8_t)
+                sensors                   : True if the sensors started correctly (type:uint8_t)
+                board_scheduler           : True if the board scheduler is running (type:uint8_t)
+
+                '''
+                return self.send(self.sys_tm_encode(timestamp, logger, event_broker, radio, pin_observer, sensors, board_scheduler), force_mavlink1=force_mavlink1)
+
+        def fsm_tm_encode(self, timestamp, ada_state, abk_state, dpl_state, fmm_state, nas_state, wes_state):
+                '''
+                Flight State Machine status telemetry
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                ada_state                 : Apogee Detection Algorithm state (type:uint8_t)
+                abk_state                 : Air Brakes state (type:uint8_t)
+                dpl_state                 : Deployment state (type:uint8_t)
+                fmm_state                 : Flight Mode Manager state (type:uint8_t)
+                nas_state                 : Navigation and Attitude System state (type:uint8_t)
+                wes_state                 : Wind Estimation System state (type:uint8_t)
+
+                '''
+                return MAVLink_fsm_tm_message(timestamp, ada_state, abk_state, dpl_state, fmm_state, nas_state, wes_state)
+
+        def fsm_tm_send(self, timestamp, ada_state, abk_state, dpl_state, fmm_state, nas_state, wes_state, force_mavlink1=False):
+                '''
+                Flight State Machine status telemetry
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                ada_state                 : Apogee Detection Algorithm state (type:uint8_t)
+                abk_state                 : Air Brakes state (type:uint8_t)
+                dpl_state                 : Deployment state (type:uint8_t)
+                fmm_state                 : Flight Mode Manager state (type:uint8_t)
+                nas_state                 : Navigation and Attitude System state (type:uint8_t)
+                wes_state                 : Wind Estimation System state (type:uint8_t)
+
+                '''
+                return self.send(self.fsm_tm_encode(timestamp, ada_state, abk_state, dpl_state, fmm_state, nas_state, wes_state), force_mavlink1=force_mavlink1)
+
+        def logger_tm_encode(self, timestamp, log_number, too_large_samples, dropped_samples, queued_samples, buffers_filled, buffers_written, writes_failed, last_write_error, average_write_time, max_write_time):
+                '''
+                Logger status telemetry
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                log_number                : Currently active log file, -1 if the logger is inactive (type:int16_t)
+                too_large_samples         : Number of dropped samples because too large (type:int32_t)
+                dropped_samples           : Number of dropped samples due to fifo full (type:int32_t)
+                queued_samples            : Number of samples written to buffer (type:int32_t)
+                buffers_filled            : Number of buffers filled (type:int32_t)
+                buffers_written           : Number of buffers written to disk (type:int32_t)
+                writes_failed             : Number of fwrite() that failed (type:int32_t)
+                last_write_error          : Error of the last fwrite() that failed (type:int32_t)
+                average_write_time        : Average time to perform an fwrite() of a buffer (type:int32_t)
+                max_write_time            : Max time to perform an fwrite() of a buffer (type:int32_t)
+
+                '''
+                return MAVLink_logger_tm_message(timestamp, log_number, too_large_samples, dropped_samples, queued_samples, buffers_filled, buffers_written, writes_failed, last_write_error, average_write_time, max_write_time)
+
+        def logger_tm_send(self, timestamp, log_number, too_large_samples, dropped_samples, queued_samples, buffers_filled, buffers_written, writes_failed, last_write_error, average_write_time, max_write_time, force_mavlink1=False):
+                '''
+                Logger status telemetry
+
+                timestamp                 : Timestamp [us] (type:uint64_t)
+                log_number                : Currently active log file, -1 if the logger is inactive (type:int16_t)
+                too_large_samples         : Number of dropped samples because too large (type:int32_t)
+                dropped_samples           : Number of dropped samples due to fifo full (type:int32_t)
+                queued_samples            : Number of samples written to buffer (type:int32_t)
+                buffers_filled            : Number of buffers filled (type:int32_t)
+                buffers_written           : Number of buffers written to disk (type:int32_t)
+                writes_failed             : Number of fwrite() that failed (type:int32_t)
+                last_write_error          : Error of the last fwrite() that failed (type:int32_t)
+                average_write_time        : Average time to perform an fwrite() of a buffer (type:int32_t)
+                max_write_time            : Max time to perform an fwrite() of a buffer (type:int32_t)
+
+                '''
+                return self.send(self.logger_tm_encode(timestamp, log_number, too_large_samples, dropped_samples, queued_samples, buffers_filled, buffers_written, writes_failed, last_write_error, average_write_time, max_write_time), force_mavlink1=force_mavlink1)
+
+        def mavlink_stats_tm_encode(self, timestamp, n_send_queue, max_send_queue, n_send_errors, msg_received, buffer_overrun, parse_error, parse_state, packet_idx, current_rx_seq, current_tx_seq, packet_rx_success_count, packet_rx_drop_count):
+                '''
+                Status of the TMTCManager telemetry
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                n_send_queue              : Current len of the occupied portion of the queue (type:uint16_t)
+                max_send_queue            : Max occupied len of the queue (type:uint16_t)
+                n_send_errors             : Number of packet not sent correctly by the TMTC (type:uint16_t)
+                msg_received              : Number of received messages (type:uint8_t)
+                buffer_overrun            : Number of buffer overruns (type:uint8_t)
+                parse_error               : Number of parse errors (type:uint8_t)
+                parse_state               : Parsing state machine (type:uint32_t)
+                packet_idx                : Index in current packet (type:uint8_t)
+                current_rx_seq            : Sequence number of last packet received (type:uint8_t)
+                current_tx_seq            : Sequence number of last packet sent (type:uint8_t)
+                packet_rx_success_count        : Received packets (type:uint16_t)
+                packet_rx_drop_count        : Number of packet drops (type:uint16_t)
+
+                '''
+                return MAVLink_mavlink_stats_tm_message(timestamp, n_send_queue, max_send_queue, n_send_errors, msg_received, buffer_overrun, parse_error, parse_state, packet_idx, current_rx_seq, current_tx_seq, packet_rx_success_count, packet_rx_drop_count)
+
+        def mavlink_stats_tm_send(self, timestamp, n_send_queue, max_send_queue, n_send_errors, msg_received, buffer_overrun, parse_error, parse_state, packet_idx, current_rx_seq, current_tx_seq, packet_rx_success_count, packet_rx_drop_count, force_mavlink1=False):
+                '''
+                Status of the TMTCManager telemetry
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                n_send_queue              : Current len of the occupied portion of the queue (type:uint16_t)
+                max_send_queue            : Max occupied len of the queue (type:uint16_t)
+                n_send_errors             : Number of packet not sent correctly by the TMTC (type:uint16_t)
+                msg_received              : Number of received messages (type:uint8_t)
+                buffer_overrun            : Number of buffer overruns (type:uint8_t)
+                parse_error               : Number of parse errors (type:uint8_t)
+                parse_state               : Parsing state machine (type:uint32_t)
+                packet_idx                : Index in current packet (type:uint8_t)
+                current_rx_seq            : Sequence number of last packet received (type:uint8_t)
+                current_tx_seq            : Sequence number of last packet sent (type:uint8_t)
+                packet_rx_success_count        : Received packets (type:uint16_t)
+                packet_rx_drop_count        : Number of packet drops (type:uint16_t)
+
+                '''
+                return self.send(self.mavlink_stats_tm_encode(timestamp, n_send_queue, max_send_queue, n_send_errors, msg_received, buffer_overrun, parse_error, parse_state, packet_idx, current_rx_seq, current_tx_seq, packet_rx_success_count, packet_rx_drop_count), force_mavlink1=force_mavlink1)
+
+        def task_stats_tm_encode(self, timestamp, task_id, task_period, task_min, task_max, task_mean, task_stddev):
+                '''
+                Statistics of the Task Scheduler
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                task_id                   : Task ID (type:uint8_t)
+                task_period               : Period of the task [ms] (type:uint16_t)
+                task_min                  : Task min period (type:float)
+                task_max                  : Task max period (type:float)
+                task_mean                 : Task mean period (type:float)
+                task_stddev               : Task period std deviation (type:float)
+
+                '''
+                return MAVLink_task_stats_tm_message(timestamp, task_id, task_period, task_min, task_max, task_mean, task_stddev)
+
+        def task_stats_tm_send(self, timestamp, task_id, task_period, task_min, task_max, task_mean, task_stddev, force_mavlink1=False):
+                '''
+                Statistics of the Task Scheduler
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                task_id                   : Task ID (type:uint8_t)
+                task_period               : Period of the task [ms] (type:uint16_t)
+                task_min                  : Task min period (type:float)
+                task_max                  : Task max period (type:float)
+                task_mean                 : Task mean period (type:float)
+                task_stddev               : Task period std deviation (type:float)
+
+                '''
+                return self.send(self.task_stats_tm_encode(timestamp, task_id, task_period, task_min, task_max, task_mean, task_stddev), force_mavlink1=force_mavlink1)
+
+        def ada_tm_encode(self, timestamp, state, kalman_x0, kalman_x1, kalman_x2, vertical_speed, msl_altitude, ref_pressure, ref_altitude, ref_temperature, msl_pressure, msl_temperature, dpl_altitude):
+                '''
+                Apogee Detection Algorithm status telemetry
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                state                     : ADA current state (type:uint8_t)
+                kalman_x0                 : Kalman state variable 0 (pressure) (type:float)
+                kalman_x1                 : Kalman state variable 1 (pressure velocity) (type:float)
+                kalman_x2                 : Kalman state variable 2 (pressure acceleration) (type:float)
+                vertical_speed            : Vertical speed computed by the ADA [m/s] (type:float)
+                msl_altitude              : Altitude w.r.t. mean sea level [m] (type:float)
+                ref_pressure              : Calibration pressure [Pa] (type:float)
+                ref_altitude              : Calibration altitude [m] (type:float)
+                ref_temperature           : Calibration temperature [degC] (type:float)
+                msl_pressure              : Expected pressure at mean sea level [Pa] (type:float)
+                msl_temperature           : Expected temperature at mean sea level [degC] (type:float)
+                dpl_altitude              : Main parachute deployment altituyde [m] (type:float)
+
+                '''
+                return MAVLink_ada_tm_message(timestamp, state, kalman_x0, kalman_x1, kalman_x2, vertical_speed, msl_altitude, ref_pressure, ref_altitude, ref_temperature, msl_pressure, msl_temperature, dpl_altitude)
+
+        def ada_tm_send(self, timestamp, state, kalman_x0, kalman_x1, kalman_x2, vertical_speed, msl_altitude, ref_pressure, ref_altitude, ref_temperature, msl_pressure, msl_temperature, dpl_altitude, force_mavlink1=False):
+                '''
+                Apogee Detection Algorithm status telemetry
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                state                     : ADA current state (type:uint8_t)
+                kalman_x0                 : Kalman state variable 0 (pressure) (type:float)
+                kalman_x1                 : Kalman state variable 1 (pressure velocity) (type:float)
+                kalman_x2                 : Kalman state variable 2 (pressure acceleration) (type:float)
+                vertical_speed            : Vertical speed computed by the ADA [m/s] (type:float)
+                msl_altitude              : Altitude w.r.t. mean sea level [m] (type:float)
+                ref_pressure              : Calibration pressure [Pa] (type:float)
+                ref_altitude              : Calibration altitude [m] (type:float)
+                ref_temperature           : Calibration temperature [degC] (type:float)
+                msl_pressure              : Expected pressure at mean sea level [Pa] (type:float)
+                msl_temperature           : Expected temperature at mean sea level [degC] (type:float)
+                dpl_altitude              : Main parachute deployment altituyde [m] (type:float)
+
+                '''
+                return self.send(self.ada_tm_encode(timestamp, state, kalman_x0, kalman_x1, kalman_x2, vertical_speed, msl_altitude, ref_pressure, ref_altitude, ref_temperature, msl_pressure, msl_temperature, dpl_altitude), force_mavlink1=force_mavlink1)
+
+        def nas_tm_encode(self, timestamp, state, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, ref_pressure, ref_temperature, ref_latitude, ref_longitude):
+                '''
+                Navigation System status telemetry
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                state                     : NAS current state (type:uint8_t)
+                nas_n                     : Navigation system estimated noth position [deg] (type:float)
+                nas_e                     : Navigation system estimated east position [deg] (type:float)
+                nas_d                     : Navigation system estimated down position [m] (type:float)
+                nas_vn                    : Navigation system estimated north velocity [m/s] (type:float)
+                nas_ve                    : Navigation system estimated east velocity [m/s] (type:float)
+                nas_vd                    : Navigation system estimated down velocity [m/s] (type:float)
+                nas_qx                    : Navigation system estimated attitude (qx) [deg] (type:float)
+                nas_qy                    : Navigation system estimated attitude (qy) [deg] (type:float)
+                nas_qz                    : Navigation system estimated attitude (qz) [deg] (type:float)
+                nas_qw                    : Navigation system estimated attitude (qw) [deg] (type:float)
+                nas_bias_x                : Navigation system gyroscope bias on x axis (type:float)
+                nas_bias_y                : Navigation system gyroscope bias on y axis (type:float)
+                nas_bias_z                : Navigation system gyroscope bias on z axis (type:float)
+                ref_pressure              : Calibration pressure [Pa] (type:float)
+                ref_temperature           : Calibration temperature [degC] (type:float)
+                ref_latitude              : Calibration latitude [deg] (type:float)
+                ref_longitude             : Calibration longitude [deg] (type:float)
+
+                '''
+                return MAVLink_nas_tm_message(timestamp, state, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, ref_pressure, ref_temperature, ref_latitude, ref_longitude)
+
+        def nas_tm_send(self, timestamp, state, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, ref_pressure, ref_temperature, ref_latitude, ref_longitude, force_mavlink1=False):
+                '''
+                Navigation System status telemetry
+
+                timestamp                 : When was this logged [us] (type:uint64_t)
+                state                     : NAS current state (type:uint8_t)
+                nas_n                     : Navigation system estimated noth position [deg] (type:float)
+                nas_e                     : Navigation system estimated east position [deg] (type:float)
+                nas_d                     : Navigation system estimated down position [m] (type:float)
+                nas_vn                    : Navigation system estimated north velocity [m/s] (type:float)
+                nas_ve                    : Navigation system estimated east velocity [m/s] (type:float)
+                nas_vd                    : Navigation system estimated down velocity [m/s] (type:float)
+                nas_qx                    : Navigation system estimated attitude (qx) [deg] (type:float)
+                nas_qy                    : Navigation system estimated attitude (qy) [deg] (type:float)
+                nas_qz                    : Navigation system estimated attitude (qz) [deg] (type:float)
+                nas_qw                    : Navigation system estimated attitude (qw) [deg] (type:float)
+                nas_bias_x                : Navigation system gyroscope bias on x axis (type:float)
+                nas_bias_y                : Navigation system gyroscope bias on y axis (type:float)
+                nas_bias_z                : Navigation system gyroscope bias on z axis (type:float)
+                ref_pressure              : Calibration pressure [Pa] (type:float)
+                ref_temperature           : Calibration temperature [degC] (type:float)
+                ref_latitude              : Calibration latitude [deg] (type:float)
+                ref_longitude             : Calibration longitude [deg] (type:float)
+
+                '''
+                return self.send(self.nas_tm_encode(timestamp, state, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, ref_pressure, ref_temperature, ref_latitude, ref_longitude), force_mavlink1=force_mavlink1)
+
+        def rocket_flight_tm_encode(self, timestamp, ada_state, fmm_state, dpl_state, abk_state, nas_state, pressure_ada, pressure_digi, pressure_static, pressure_dpl, airspeed_pitot, altitude_agl, ada_vert_speed, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, abk_angle, abk_estimated_cd, parachute_load, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, pin_launch, pin_nosecone, pin_expulsion, cutter_presence, estimated_thrust, vbat, temperature, logger_error):
+                '''
+                High Rate Telemetry
+
+                timestamp                 : Timestamp in microseconds [us] (type:uint64_t)
+                ada_state                 : ADA Controller State (type:uint8_t)
+                fmm_state                 : Flight Mode Manager State (type:uint8_t)
+                dpl_state                 : Deployment Controller State (type:uint8_t)
+                abk_state                 : Airbrake FSM state (type:uint8_t)
+                nas_state                 : Navigation System FSM State (type:uint8_t)
+                pressure_ada              : Atmospheric pressure estimated by ADA [Pa] (type:float)
+                pressure_digi             : Pressure from digital sensor [Pa] (type:float)
+                pressure_static           : Pressure from static port [Pa] (type:float)
+                pressure_dpl              : Pressure from deployment vane sensor [Pa] (type:float)
+                airspeed_pitot            : Pitot airspeed [m/s] (type:float)
+                altitude_agl              : Altitude above ground level [m] (type:float)
+                ada_vert_speed            : Vertical speed estimated by ADA [m/s] (type:float)
+                acc_x                     : Acceleration on X axis (body) [m/s^2] (type:float)
+                acc_y                     : Acceleration on Y axis (body) [m/s^2] (type:float)
+                acc_z                     : Acceleration on Z axis (body) [m/s^2] (type:float)
+                gyro_x                    : Angular speed on X axis (body) [rad/s] (type:float)
+                gyro_y                    : Angular speed on Y axis (body) [rad/s] (type:float)
+                gyro_z                    : Angular speed on Z axis (body) [rad/s] (type:float)
+                mag_x                     : Magnetic field on X axis (body) [uT] (type:float)
+                mag_y                     : Magnetic field on Y axis (body) [uT] (type:float)
+                mag_z                     : Magnetic field on Z axis (body) [uT] (type:float)
+                gps_fix                   : GPS fix (1 = fix, 0 = no fix) (type:uint8_t)
+                gps_lat                   : Latitude [deg] (type:float)
+                gps_lon                   : Longitude [deg] (type:float)
+                gps_alt                   : GPS Altitude [m] (type:float)
+                abk_angle                 : Air Brakes angle [deg] (type:float)
+                abk_estimated_cd          : Estimated drag coefficient (type:float)
+                parachute_load            : Parachute load cell value (type:float)
+                nas_n                     : Navigation system estimated noth position [deg] (type:float)
+                nas_e                     : Navigation system estimated east position [deg] (type:float)
+                nas_d                     : Navigation system estimated down position [m] (type:float)
+                nas_vn                    : Navigation system estimated north velocity [m/s] (type:float)
+                nas_ve                    : Navigation system estimated east velocity [m/s] (type:float)
+                nas_vd                    : Navigation system estimated down velocity [m/s] (type:float)
+                nas_qx                    : Navigation system estimated attitude (qx) [deg] (type:float)
+                nas_qy                    : Navigation system estimated attitude (qy) [deg] (type:float)
+                nas_qz                    : Navigation system estimated attitude (qz) [deg] (type:float)
+                nas_qw                    : Navigation system estimated attitude (qw) [deg] (type:float)
+                nas_bias_x                : Navigation system gyroscope bias on x axis (type:float)
+                nas_bias_y                : Navigation system gyroscope bias on y axis (type:float)
+                nas_bias_z                : Navigation system gyroscope bias on z axis (type:float)
+                pin_launch                : Launch pin status (1 = connected, 0 = disconnected) (type:uint8_t)
+                pin_nosecone              : Nosecone pin status (1 = connected, 0 = disconnected) (type:uint8_t)
+                pin_expulsion             : Servo sensor status (1 = actuated, 0 = idle) (type:uint8_t)
+                cutter_presence           : Cutter presence status (1 = present, 0 = missing) (type:uint8_t)
+                estimated_thrust          : Estimated thrust from automatic shutdown algorithm (type:float)
+                vbat                      : Battery voltage [V] (type:float)
+                temperature               : Temperature [degC] (type:float)
+                logger_error              : Logger error (0 = no error, -1 otherwise) (type:int8_t)
+
+                '''
+                return MAVLink_rocket_flight_tm_message(timestamp, ada_state, fmm_state, dpl_state, abk_state, nas_state, pressure_ada, pressure_digi, pressure_static, pressure_dpl, airspeed_pitot, altitude_agl, ada_vert_speed, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, abk_angle, abk_estimated_cd, parachute_load, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, pin_launch, pin_nosecone, pin_expulsion, cutter_presence, estimated_thrust, vbat, temperature, logger_error)
+
+        def rocket_flight_tm_send(self, timestamp, ada_state, fmm_state, dpl_state, abk_state, nas_state, pressure_ada, pressure_digi, pressure_static, pressure_dpl, airspeed_pitot, altitude_agl, ada_vert_speed, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, abk_angle, abk_estimated_cd, parachute_load, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, pin_launch, pin_nosecone, pin_expulsion, cutter_presence, estimated_thrust, vbat, temperature, logger_error, force_mavlink1=False):
+                '''
+                High Rate Telemetry
+
+                timestamp                 : Timestamp in microseconds [us] (type:uint64_t)
+                ada_state                 : ADA Controller State (type:uint8_t)
+                fmm_state                 : Flight Mode Manager State (type:uint8_t)
+                dpl_state                 : Deployment Controller State (type:uint8_t)
+                abk_state                 : Airbrake FSM state (type:uint8_t)
+                nas_state                 : Navigation System FSM State (type:uint8_t)
+                pressure_ada              : Atmospheric pressure estimated by ADA [Pa] (type:float)
+                pressure_digi             : Pressure from digital sensor [Pa] (type:float)
+                pressure_static           : Pressure from static port [Pa] (type:float)
+                pressure_dpl              : Pressure from deployment vane sensor [Pa] (type:float)
+                airspeed_pitot            : Pitot airspeed [m/s] (type:float)
+                altitude_agl              : Altitude above ground level [m] (type:float)
+                ada_vert_speed            : Vertical speed estimated by ADA [m/s] (type:float)
+                acc_x                     : Acceleration on X axis (body) [m/s^2] (type:float)
+                acc_y                     : Acceleration on Y axis (body) [m/s^2] (type:float)
+                acc_z                     : Acceleration on Z axis (body) [m/s^2] (type:float)
+                gyro_x                    : Angular speed on X axis (body) [rad/s] (type:float)
+                gyro_y                    : Angular speed on Y axis (body) [rad/s] (type:float)
+                gyro_z                    : Angular speed on Z axis (body) [rad/s] (type:float)
+                mag_x                     : Magnetic field on X axis (body) [uT] (type:float)
+                mag_y                     : Magnetic field on Y axis (body) [uT] (type:float)
+                mag_z                     : Magnetic field on Z axis (body) [uT] (type:float)
+                gps_fix                   : GPS fix (1 = fix, 0 = no fix) (type:uint8_t)
+                gps_lat                   : Latitude [deg] (type:float)
+                gps_lon                   : Longitude [deg] (type:float)
+                gps_alt                   : GPS Altitude [m] (type:float)
+                abk_angle                 : Air Brakes angle [deg] (type:float)
+                abk_estimated_cd          : Estimated drag coefficient (type:float)
+                parachute_load            : Parachute load cell value (type:float)
+                nas_n                     : Navigation system estimated noth position [deg] (type:float)
+                nas_e                     : Navigation system estimated east position [deg] (type:float)
+                nas_d                     : Navigation system estimated down position [m] (type:float)
+                nas_vn                    : Navigation system estimated north velocity [m/s] (type:float)
+                nas_ve                    : Navigation system estimated east velocity [m/s] (type:float)
+                nas_vd                    : Navigation system estimated down velocity [m/s] (type:float)
+                nas_qx                    : Navigation system estimated attitude (qx) [deg] (type:float)
+                nas_qy                    : Navigation system estimated attitude (qy) [deg] (type:float)
+                nas_qz                    : Navigation system estimated attitude (qz) [deg] (type:float)
+                nas_qw                    : Navigation system estimated attitude (qw) [deg] (type:float)
+                nas_bias_x                : Navigation system gyroscope bias on x axis (type:float)
+                nas_bias_y                : Navigation system gyroscope bias on y axis (type:float)
+                nas_bias_z                : Navigation system gyroscope bias on z axis (type:float)
+                pin_launch                : Launch pin status (1 = connected, 0 = disconnected) (type:uint8_t)
+                pin_nosecone              : Nosecone pin status (1 = connected, 0 = disconnected) (type:uint8_t)
+                pin_expulsion             : Servo sensor status (1 = actuated, 0 = idle) (type:uint8_t)
+                cutter_presence           : Cutter presence status (1 = present, 0 = missing) (type:uint8_t)
+                estimated_thrust          : Estimated thrust from automatic shutdown algorithm (type:float)
+                vbat                      : Battery voltage [V] (type:float)
+                temperature               : Temperature [degC] (type:float)
+                logger_error              : Logger error (0 = no error, -1 otherwise) (type:int8_t)
+
+                '''
+                return self.send(self.rocket_flight_tm_encode(timestamp, ada_state, fmm_state, dpl_state, abk_state, nas_state, pressure_ada, pressure_digi, pressure_static, pressure_dpl, airspeed_pitot, altitude_agl, ada_vert_speed, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, abk_angle, abk_estimated_cd, parachute_load, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, pin_launch, pin_nosecone, pin_expulsion, cutter_presence, estimated_thrust, vbat, temperature, logger_error), force_mavlink1=force_mavlink1)
+
+        def payload_flight_tm_encode(self, timestamp, fmm_state, nas_state, wes_state, pressure_digi, pressure_static, airspeed_pitot, altitude_agl, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, left_servo_angle, right_servo_angle, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, wes_n, wes_e, pin_nosecone, vbat, vsupply_5v, temperature, logger_error):
+                '''
+                High Rate Telemetry
+
+                timestamp                 : Timestamp in microseconds [us] (type:uint64_t)
+                fmm_state                 : Flight Mode Manager State (type:uint8_t)
+                nas_state                 : Navigation System FSM State (type:uint8_t)
+                wes_state                 : Wind Estimation System FSM State (type:uint8_t)
+                pressure_digi             : Pressure from digital sensor [Pa] (type:float)
+                pressure_static           : Pressure from static port [Pa] (type:float)
+                airspeed_pitot            : Pitot airspeed [m/s] (type:float)
+                altitude_agl              : Altitude above ground level [m] (type:float)
+                acc_x                     : Acceleration on X axis (body) [m/s^2] (type:float)
+                acc_y                     : Acceleration on Y axis (body) [m/s^2] (type:float)
+                acc_z                     : Acceleration on Z axis (body) [m/s^2] (type:float)
+                gyro_x                    : Angular speed on X axis (body) [rad/s] (type:float)
+                gyro_y                    : Angular speed on Y axis (body) [rad/s] (type:float)
+                gyro_z                    : Angular speed on Z axis (body) [rad/s] (type:float)
+                mag_x                     : Magnetic field on X axis (body) [uT] (type:float)
+                mag_y                     : Magnetic field on Y axis (body) [uT] (type:float)
+                mag_z                     : Magnetic field on Z axis (body) [uT] (type:float)
+                gps_fix                   : GPS fix (1 = fix, 0 = no fix) (type:uint8_t)
+                gps_lat                   : Latitude [deg] (type:float)
+                gps_lon                   : Longitude [deg] (type:float)
+                gps_alt                   : GPS Altitude [m] (type:float)
+                left_servo_angle          : Left servo motor angle [deg] (type:float)
+                right_servo_angle         : Right servo motor angle [deg] (type:float)
+                nas_n                     : Navigation system estimated noth position [deg] (type:float)
+                nas_e                     : Navigation system estimated east position [deg] (type:float)
+                nas_d                     : Navigation system estimated down position [m] (type:float)
+                nas_vn                    : Navigation system estimated north velocity [m/s] (type:float)
+                nas_ve                    : Navigation system estimated east velocity [m/s] (type:float)
+                nas_vd                    : Navigation system estimated down velocity [m/s] (type:float)
+                nas_qx                    : Navigation system estimated attitude (qx) [deg] (type:float)
+                nas_qy                    : Navigation system estimated attitude (qy) [deg] (type:float)
+                nas_qz                    : Navigation system estimated attitude (qz) [deg] (type:float)
+                nas_qw                    : Navigation system estimated attitude (qw) [deg] (type:float)
+                nas_bias_x                : Navigation system gyroscope bias on x axis (type:float)
+                nas_bias_y                : Navigation system gyroscope bias on y axis (type:float)
+                nas_bias_z                : Navigation system gyroscope bias on z axis (type:float)
+                wes_n                     : Wind estimated north velocity [m/s] (type:float)
+                wes_e                     : Wind estimated east velocity [m/s] (type:float)
+                pin_nosecone              : Nosecone pin status (1 = connected, 0 = disconnected) (type:uint8_t)
+                vbat                      : Battery voltage [V] (type:float)
+                vsupply_5v                : Power supply 5V [V] (type:float)
+                temperature               : Temperature [degC] (type:float)
+                logger_error              : Logger error (0 = no error) (type:int8_t)
+
+                '''
+                return MAVLink_payload_flight_tm_message(timestamp, fmm_state, nas_state, wes_state, pressure_digi, pressure_static, airspeed_pitot, altitude_agl, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, left_servo_angle, right_servo_angle, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, wes_n, wes_e, pin_nosecone, vbat, vsupply_5v, temperature, logger_error)
+
+        def payload_flight_tm_send(self, timestamp, fmm_state, nas_state, wes_state, pressure_digi, pressure_static, airspeed_pitot, altitude_agl, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, left_servo_angle, right_servo_angle, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, wes_n, wes_e, pin_nosecone, vbat, vsupply_5v, temperature, logger_error, force_mavlink1=False):
+                '''
+                High Rate Telemetry
+
+                timestamp                 : Timestamp in microseconds [us] (type:uint64_t)
+                fmm_state                 : Flight Mode Manager State (type:uint8_t)
+                nas_state                 : Navigation System FSM State (type:uint8_t)
+                wes_state                 : Wind Estimation System FSM State (type:uint8_t)
+                pressure_digi             : Pressure from digital sensor [Pa] (type:float)
+                pressure_static           : Pressure from static port [Pa] (type:float)
+                airspeed_pitot            : Pitot airspeed [m/s] (type:float)
+                altitude_agl              : Altitude above ground level [m] (type:float)
+                acc_x                     : Acceleration on X axis (body) [m/s^2] (type:float)
+                acc_y                     : Acceleration on Y axis (body) [m/s^2] (type:float)
+                acc_z                     : Acceleration on Z axis (body) [m/s^2] (type:float)
+                gyro_x                    : Angular speed on X axis (body) [rad/s] (type:float)
+                gyro_y                    : Angular speed on Y axis (body) [rad/s] (type:float)
+                gyro_z                    : Angular speed on Z axis (body) [rad/s] (type:float)
+                mag_x                     : Magnetic field on X axis (body) [uT] (type:float)
+                mag_y                     : Magnetic field on Y axis (body) [uT] (type:float)
+                mag_z                     : Magnetic field on Z axis (body) [uT] (type:float)
+                gps_fix                   : GPS fix (1 = fix, 0 = no fix) (type:uint8_t)
+                gps_lat                   : Latitude [deg] (type:float)
+                gps_lon                   : Longitude [deg] (type:float)
+                gps_alt                   : GPS Altitude [m] (type:float)
+                left_servo_angle          : Left servo motor angle [deg] (type:float)
+                right_servo_angle         : Right servo motor angle [deg] (type:float)
+                nas_n                     : Navigation system estimated noth position [deg] (type:float)
+                nas_e                     : Navigation system estimated east position [deg] (type:float)
+                nas_d                     : Navigation system estimated down position [m] (type:float)
+                nas_vn                    : Navigation system estimated north velocity [m/s] (type:float)
+                nas_ve                    : Navigation system estimated east velocity [m/s] (type:float)
+                nas_vd                    : Navigation system estimated down velocity [m/s] (type:float)
+                nas_qx                    : Navigation system estimated attitude (qx) [deg] (type:float)
+                nas_qy                    : Navigation system estimated attitude (qy) [deg] (type:float)
+                nas_qz                    : Navigation system estimated attitude (qz) [deg] (type:float)
+                nas_qw                    : Navigation system estimated attitude (qw) [deg] (type:float)
+                nas_bias_x                : Navigation system gyroscope bias on x axis (type:float)
+                nas_bias_y                : Navigation system gyroscope bias on y axis (type:float)
+                nas_bias_z                : Navigation system gyroscope bias on z axis (type:float)
+                wes_n                     : Wind estimated north velocity [m/s] (type:float)
+                wes_e                     : Wind estimated east velocity [m/s] (type:float)
+                pin_nosecone              : Nosecone pin status (1 = connected, 0 = disconnected) (type:uint8_t)
+                vbat                      : Battery voltage [V] (type:float)
+                vsupply_5v                : Power supply 5V [V] (type:float)
+                temperature               : Temperature [degC] (type:float)
+                logger_error              : Logger error (0 = no error) (type:int8_t)
+
+                '''
+                return self.send(self.payload_flight_tm_encode(timestamp, fmm_state, nas_state, wes_state, pressure_digi, pressure_static, airspeed_pitot, altitude_agl, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z, mag_x, mag_y, mag_z, gps_fix, gps_lat, gps_lon, gps_alt, left_servo_angle, right_servo_angle, nas_n, nas_e, nas_d, nas_vn, nas_ve, nas_vd, nas_qx, nas_qy, nas_qz, nas_qw, nas_bias_x, nas_bias_y, nas_bias_z, wes_n, wes_e, pin_nosecone, vbat, vsupply_5v, temperature, logger_error), force_mavlink1=force_mavlink1)
+
+        def rocket_stats_tm_encode(self, liftoff_ts, liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, ada_min_pressure, dpl_vane_max_pressure, cpu_load, free_heap):
+                '''
+                Low Rate Telemetry
+
+                liftoff_ts                : System clock at liftoff [us] (type:uint64_t)
+                liftoff_max_acc_ts        : System clock at the maximum liftoff acceleration [us] (type:uint64_t)
+                liftoff_max_acc           : Maximum liftoff acceleration [m/s2] (type:float)
+                dpl_ts                    : System clock at drouge deployment [us] (type:uint64_t)
+                dpl_max_acc               : Max acceleration during drouge deployment [m/s2] (type:float)
+                max_z_speed_ts            : System clock at ADA max vertical speed [us] (type:uint64_t)
+                max_z_speed               : Max measured vertical speed - ADA [m/s] (type:float)
+                max_airspeed_pitot        : Max speed read by the pitot tube [m/s] (type:float)
+                max_speed_altitude        : Altitude at max speed [m] (type:float)
+                apogee_ts                 : System clock at apogee [us] (type:uint64_t)
+                apogee_lat                : Apogee latitude [deg] (type:float)
+                apogee_lon                : Apogee longitude [deg] (type:float)
+                apogee_alt                : Apogee altitude [m] (type:float)
+                min_pressure              : Apogee pressure - Digital barometer [Pa] (type:float)
+                ada_min_pressure          : Apogee pressure - ADA filtered [Pa] (type:float)
+                dpl_vane_max_pressure        : Max pressure in the deployment bay during drogue deployment [Pa] (type:float)
+                cpu_load                  : CPU load in percentage (type:float)
+                free_heap                 : Amount of available heap in memory (type:uint32_t)
+
+                '''
+                return MAVLink_rocket_stats_tm_message(liftoff_ts, liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, ada_min_pressure, dpl_vane_max_pressure, cpu_load, free_heap)
+
+        def rocket_stats_tm_send(self, liftoff_ts, liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, ada_min_pressure, dpl_vane_max_pressure, cpu_load, free_heap, force_mavlink1=False):
+                '''
+                Low Rate Telemetry
+
+                liftoff_ts                : System clock at liftoff [us] (type:uint64_t)
+                liftoff_max_acc_ts        : System clock at the maximum liftoff acceleration [us] (type:uint64_t)
+                liftoff_max_acc           : Maximum liftoff acceleration [m/s2] (type:float)
+                dpl_ts                    : System clock at drouge deployment [us] (type:uint64_t)
+                dpl_max_acc               : Max acceleration during drouge deployment [m/s2] (type:float)
+                max_z_speed_ts            : System clock at ADA max vertical speed [us] (type:uint64_t)
+                max_z_speed               : Max measured vertical speed - ADA [m/s] (type:float)
+                max_airspeed_pitot        : Max speed read by the pitot tube [m/s] (type:float)
+                max_speed_altitude        : Altitude at max speed [m] (type:float)
+                apogee_ts                 : System clock at apogee [us] (type:uint64_t)
+                apogee_lat                : Apogee latitude [deg] (type:float)
+                apogee_lon                : Apogee longitude [deg] (type:float)
+                apogee_alt                : Apogee altitude [m] (type:float)
+                min_pressure              : Apogee pressure - Digital barometer [Pa] (type:float)
+                ada_min_pressure          : Apogee pressure - ADA filtered [Pa] (type:float)
+                dpl_vane_max_pressure        : Max pressure in the deployment bay during drogue deployment [Pa] (type:float)
+                cpu_load                  : CPU load in percentage (type:float)
+                free_heap                 : Amount of available heap in memory (type:uint32_t)
+
+                '''
+                return self.send(self.rocket_stats_tm_encode(liftoff_ts, liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, ada_min_pressure, dpl_vane_max_pressure, cpu_load, free_heap), force_mavlink1=force_mavlink1)
+
+        def payload_stats_tm_encode(self, liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, cpu_load, free_heap):
+                '''
+                Low Rate Telemetry
+
+                liftoff_max_acc_ts        : System clock at the maximum liftoff acceleration [us] (type:uint64_t)
+                liftoff_max_acc           : Maximum liftoff acceleration [m/s2] (type:float)
+                dpl_ts                    : System clock at drouge deployment [us] (type:uint64_t)
+                dpl_max_acc               : Max acceleration during drouge deployment [m/s2] (type:float)
+                max_z_speed_ts            : System clock at max vertical speed [us] (type:uint64_t)
+                max_z_speed               : Max measured vertical speed [m/s] (type:float)
+                max_airspeed_pitot        : Max speed read by the pitot tube [m/s] (type:float)
+                max_speed_altitude        : Altitude at max speed [m] (type:float)
+                apogee_ts                 : System clock at apogee [us] (type:uint64_t)
+                apogee_lat                : Apogee latitude [deg] (type:float)
+                apogee_lon                : Apogee longitude [deg] (type:float)
+                apogee_alt                : Apogee altitude [m] (type:float)
+                min_pressure              : Apogee pressure - Digital barometer [Pa] (type:float)
+                cpu_load                  : CPU load in percentage (type:float)
+                free_heap                 : Amount of available heap in memory (type:uint32_t)
+
+                '''
+                return MAVLink_payload_stats_tm_message(liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, cpu_load, free_heap)
+
+        def payload_stats_tm_send(self, liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, cpu_load, free_heap, force_mavlink1=False):
+                '''
+                Low Rate Telemetry
+
+                liftoff_max_acc_ts        : System clock at the maximum liftoff acceleration [us] (type:uint64_t)
+                liftoff_max_acc           : Maximum liftoff acceleration [m/s2] (type:float)
+                dpl_ts                    : System clock at drouge deployment [us] (type:uint64_t)
+                dpl_max_acc               : Max acceleration during drouge deployment [m/s2] (type:float)
+                max_z_speed_ts            : System clock at max vertical speed [us] (type:uint64_t)
+                max_z_speed               : Max measured vertical speed [m/s] (type:float)
+                max_airspeed_pitot        : Max speed read by the pitot tube [m/s] (type:float)
+                max_speed_altitude        : Altitude at max speed [m] (type:float)
+                apogee_ts                 : System clock at apogee [us] (type:uint64_t)
+                apogee_lat                : Apogee latitude [deg] (type:float)
+                apogee_lon                : Apogee longitude [deg] (type:float)
+                apogee_alt                : Apogee altitude [m] (type:float)
+                min_pressure              : Apogee pressure - Digital barometer [Pa] (type:float)
+                cpu_load                  : CPU load in percentage (type:float)
+                free_heap                 : Amount of available heap in memory (type:uint32_t)
+
+                '''
+                return self.send(self.payload_stats_tm_encode(liftoff_max_acc_ts, liftoff_max_acc, dpl_ts, dpl_max_acc, max_z_speed_ts, max_z_speed, max_airspeed_pitot, max_speed_altitude, apogee_ts, apogee_lat, apogee_lon, apogee_alt, min_pressure, cpu_load, free_heap), force_mavlink1=force_mavlink1)
+
+        def gse_tm_encode(self, timestamp, loadcell_tank, loadcell_vessel, filling_pressure, vessel_pressure, arming_state, filling_valve_state, venting_valve_state, release_valve_state, main_valve_state, ignition_state, tars_state, battery_voltage, current_consumption, main_board_status, payload_board_status, motor_board_status):
+                '''
+                Ground Segment Equipment telemetry
+
+                timestamp                 : Timestamp in microseconds [us] (type:uint64_t)
+                loadcell_tank             : Rocket weight [kg] (type:float)
+                loadcell_vessel           : External tank weight [kg] (type:float)
+                filling_pressure          : Refueling line pressure [Bar] (type:float)
+                vessel_pressure           : Vessel tank pressure [Bar] (type:float)
+                arming_state              : 1 If the rocket is armed (type:uint8_t)
+                filling_valve_state        : 1 If the filling valve is open (type:uint8_t)
+                venting_valve_state        : 1 If the venting valve is open (type:uint8_t)
+                release_valve_state        : 1 If the release valve is open (type:uint8_t)
+                main_valve_state          : 1 If the main valve is open (type:uint8_t)
+                ignition_state            : 1 If the RIG is in ignition process (type:uint8_t)
+                tars_state                : 1 If the TARS algorithm is running (type:uint8_t)
+                battery_voltage           : Battery voltage (type:float)
+                current_consumption        : RIG current (type:float)
+                main_board_status         : MAIN board status [0: not present, 1: online, 2: armed] (type:uint8_t)
+                payload_board_status        : PAYLOAD board status [0: not present, 1: online, 2: armed] (type:uint8_t)
+                motor_board_status        : MOTOR board status [0: not present, 1: online, 2: armed] (type:uint8_t)
+
+                '''
+                return MAVLink_gse_tm_message(timestamp, loadcell_tank, loadcell_vessel, filling_pressure, vessel_pressure, arming_state, filling_valve_state, venting_valve_state, release_valve_state, main_valve_state, ignition_state, tars_state, battery_voltage, current_consumption, main_board_status, payload_board_status, motor_board_status)
+
+        def gse_tm_send(self, timestamp, loadcell_tank, loadcell_vessel, filling_pressure, vessel_pressure, arming_state, filling_valve_state, venting_valve_state, release_valve_state, main_valve_state, ignition_state, tars_state, battery_voltage, current_consumption, main_board_status, payload_board_status, motor_board_status, force_mavlink1=False):
+                '''
+                Ground Segment Equipment telemetry
+
+                timestamp                 : Timestamp in microseconds [us] (type:uint64_t)
+                loadcell_tank             : Rocket weight [kg] (type:float)
+                loadcell_vessel           : External tank weight [kg] (type:float)
+                filling_pressure          : Refueling line pressure [Bar] (type:float)
+                vessel_pressure           : Vessel tank pressure [Bar] (type:float)
+                arming_state              : 1 If the rocket is armed (type:uint8_t)
+                filling_valve_state        : 1 If the filling valve is open (type:uint8_t)
+                venting_valve_state        : 1 If the venting valve is open (type:uint8_t)
+                release_valve_state        : 1 If the release valve is open (type:uint8_t)
+                main_valve_state          : 1 If the main valve is open (type:uint8_t)
+                ignition_state            : 1 If the RIG is in ignition process (type:uint8_t)
+                tars_state                : 1 If the TARS algorithm is running (type:uint8_t)
+                battery_voltage           : Battery voltage (type:float)
+                current_consumption        : RIG current (type:float)
+                main_board_status         : MAIN board status [0: not present, 1: online, 2: armed] (type:uint8_t)
+                payload_board_status        : PAYLOAD board status [0: not present, 1: online, 2: armed] (type:uint8_t)
+                motor_board_status        : MOTOR board status [0: not present, 1: online, 2: armed] (type:uint8_t)
+
+                '''
+                return self.send(self.gse_tm_encode(timestamp, loadcell_tank, loadcell_vessel, filling_pressure, vessel_pressure, arming_state, filling_valve_state, venting_valve_state, release_valve_state, main_valve_state, ignition_state, tars_state, battery_voltage, current_consumption, main_board_status, payload_board_status, motor_board_status), force_mavlink1=force_mavlink1)
+
+        def motor_tm_encode(self, timestamp, top_tank_pressure, bottom_tank_pressure, combustion_chamber_pressure, floating_level, tank_temperature, main_valve_state):
+                '''
+                Motor rocket telemetry
+
+                timestamp                 : Timestamp in microseconds [us] (type:uint64_t)
+                top_tank_pressure         : Tank upper pressure [Bar] (type:float)
+                bottom_tank_pressure        : Tank bottom pressure [Bar] (type:float)
+                combustion_chamber_pressure        : Pressure inside the combustion chamber used for automatic shutdown [Bar] (type:float)
+                floating_level            : Floating level in tank (type:uint8_t)
+                tank_temperature          : Tank temperature (type:float)
+                main_valve_state          : 1 If the main valve is open (type:uint8_t)
+
+                '''
+                return MAVLink_motor_tm_message(timestamp, top_tank_pressure, bottom_tank_pressure, combustion_chamber_pressure, floating_level, tank_temperature, main_valve_state)
+
+        def motor_tm_send(self, timestamp, top_tank_pressure, bottom_tank_pressure, combustion_chamber_pressure, floating_level, tank_temperature, main_valve_state, force_mavlink1=False):
+                '''
+                Motor rocket telemetry
+
+                timestamp                 : Timestamp in microseconds [us] (type:uint64_t)
+                top_tank_pressure         : Tank upper pressure [Bar] (type:float)
+                bottom_tank_pressure        : Tank bottom pressure [Bar] (type:float)
+                combustion_chamber_pressure        : Pressure inside the combustion chamber used for automatic shutdown [Bar] (type:float)
+                floating_level            : Floating level in tank (type:uint8_t)
+                tank_temperature          : Tank temperature (type:float)
+                main_valve_state          : 1 If the main valve is open (type:uint8_t)
+
+                '''
+                return self.send(self.motor_tm_encode(timestamp, top_tank_pressure, bottom_tank_pressure, combustion_chamber_pressure, floating_level, tank_temperature, main_valve_state), force_mavlink1=force_mavlink1)
+
diff --git a/mavlink_lib/gemini/gemini.h b/mavlink_lib/gemini/gemini.h
index 51fb8537077f8e6179de1c0052ac47558db1d90f..74c55f0c08c5a353f32a29a28adbd13d9811b41f 100644
--- a/mavlink_lib/gemini/gemini.h
+++ b/mavlink_lib/gemini/gemini.h
@@ -11,7 +11,7 @@
 #endif
 
 #undef MAVLINK_THIS_XML_HASH
-#define MAVLINK_THIS_XML_HASH 874628744406847796
+#define MAVLINK_THIS_XML_HASH -129419792422964465
 
 #ifdef __cplusplus
 extern "C" {
@@ -216,7 +216,7 @@ typedef enum PinsList
 
 
 #undef MAVLINK_THIS_XML_HASH
-#define MAVLINK_THIS_XML_HASH 874628744406847796
+#define MAVLINK_THIS_XML_HASH -129419792422964465
 
 #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, MAVLINK_MESSAGE_INFO_SET_ATOMIC_VALVE_TIMING_TC, MAVLINK_MESSAGE_INFO_SET_VALVE_MAXIMUM_APERTURE_TC, MAVLINK_MESSAGE_INFO_CONRIG_STATE_TC, MAVLINK_MESSAGE_INFO_SET_IGNITION_TIME_TC, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"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_VOLTAGE_TM, MAVLINK_MESSAGE_INFO_CURRENT_TM, MAVLINK_MESSAGE_INFO_TEMP_TM, MAVLINK_MESSAGE_INFO_LOAD_TM, MAVLINK_MESSAGE_INFO_ATTITUDE_TM, MAVLINK_MESSAGE_INFO_SENSOR_STATE_TM, MAVLINK_MESSAGE_INFO_SERVO_TM, MAVLINK_MESSAGE_INFO_PIN_TM, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"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_RECEIVER_TM, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, MAVLINK_MESSAGE_INFO_SYS_TM, MAVLINK_MESSAGE_INFO_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, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, MAVLINK_MESSAGE_INFO_ROCKET_FLIGHT_TM, MAVLINK_MESSAGE_INFO_PAYLOAD_FLIGHT_TM, MAVLINK_MESSAGE_INFO_ROCKET_STATS_TM, MAVLINK_MESSAGE_INFO_PAYLOAD_STATS_TM, MAVLINK_MESSAGE_INFO_GSE_TM, MAVLINK_MESSAGE_INFO_MOTOR_TM, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, {"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}}
diff --git a/mavlink_lib/gemini/mavlink.h b/mavlink_lib/gemini/mavlink.h
index d76dc1f2a39f6757e93002c3ce996354dfa75370..328a3cc1a1cbe26094823ba69a54a6944c2177fd 100644
--- a/mavlink_lib/gemini/mavlink.h
+++ b/mavlink_lib/gemini/mavlink.h
@@ -6,7 +6,7 @@
 #ifndef MAVLINK_H
 #define MAVLINK_H
 
-#define MAVLINK_PRIMARY_XML_HASH 874628744406847796
+#define MAVLINK_PRIMARY_XML_HASH -129419792422964465
 
 #ifndef MAVLINK_STX
 #define MAVLINK_STX 254
diff --git a/mavlink_lib/gemini/version.h b/mavlink_lib/gemini/version.h
index e83454c7ab63a02be66e7418e18b20e2c7a612ef..b22a23faeee0b6dcb23da5656347c64683eb926c 100644
--- a/mavlink_lib/gemini/version.h
+++ b/mavlink_lib/gemini/version.h
@@ -7,7 +7,7 @@
 #ifndef MAVLINK_VERSION_H
 #define MAVLINK_VERSION_H
 
-#define MAVLINK_BUILD_DATE "Thu Aug 10 2023"
+#define MAVLINK_BUILD_DATE "Sun Aug 27 2023"
 #define MAVLINK_WIRE_PROTOCOL_VERSION "1.0"
 #define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 171