diff --git a/mavlink_lib/gemini/gemini.h b/mavlink_lib/gemini/gemini.h
index 4f5aade1d195173b79dcc5ac8d233047ca632b74..ec436e11cf147811813581b11e35d1b8819bcae1 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 963685179791805278
+#define MAVLINK_THIS_XML_HASH -7592676323702278911
 
 #ifdef __cplusplus
 extern "C" {
@@ -20,11 +20,11 @@ extern "C" {
 // MESSAGE LENGTHS AND CRCS
 
 #ifndef MAVLINK_MESSAGE_LENGTHS
-#define MAVLINK_MESSAGE_LENGTHS {0, 8, 1, 1, 1, 1, 5, 1, 1, 4, 4, 12, 8, 2, 4, 8, 1, 5, 5, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 74, 64, 32, 44, 32, 32, 32, 32, 56, 21, 5, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 46, 28, 27, 53, 77, 0, 171, 162, 92, 76, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+#define MAVLINK_MESSAGE_LENGTHS {0, 8, 1, 1, 1, 1, 5, 1, 1, 4, 4, 12, 8, 2, 4, 8, 1, 5, 5, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 74, 64, 32, 44, 32, 32, 32, 32, 56, 21, 5, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 46, 28, 27, 53, 77, 0, 171, 162, 92, 76, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
 #endif
 
 #ifndef MAVLINK_MESSAGE_CRCS
-#define MAVLINK_MESSAGE_CRCS {0, 136, 198, 165, 248, 184, 215, 160, 226, 113, 38, 71, 67, 218, 44, 81, 181, 110, 22, 65, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 146, 57, 72, 87, 223, 245, 212, 140, 148, 6, 155, 87, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 242, 142, 108, 133, 234, 66, 0, 141, 6, 245, 115, 89, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+#define MAVLINK_MESSAGE_CRCS {0, 136, 198, 165, 248, 184, 215, 160, 226, 113, 38, 71, 67, 218, 44, 81, 181, 110, 22, 65, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 146, 57, 72, 87, 223, 245, 212, 140, 148, 6, 155, 87, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 242, 142, 108, 133, 234, 66, 0, 141, 6, 245, 115, 89, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
 #endif
 
 #include "../protocol.h"
@@ -215,7 +215,7 @@ typedef enum PinsList
 
 
 #undef MAVLINK_THIS_XML_HASH
-#define MAVLINK_THIS_XML_HASH 963685179791805278
+#define MAVLINK_THIS_XML_HASH -7592676323702278911
 
 #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 8abe4166ab21798bab6e28629718a40406565dd6..de596de49f101649f496cd966a56331b950f5c93 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 963685179791805278
+#define MAVLINK_PRIMARY_XML_HASH -7592676323702278911
 
 #ifndef MAVLINK_STX
 #define MAVLINK_STX 254
diff --git a/mavlink_lib/gemini/mavlink_msg_receiver_tm.h b/mavlink_lib/gemini/mavlink_msg_receiver_tm.h
index 2b222434d12522999e051c41d2d1a32931f9ee9f..bf484b63adb0c91d1ebbdaf9e3823a2c04d7b906 100644
--- a/mavlink_lib/gemini/mavlink_msg_receiver_tm.h
+++ b/mavlink_lib/gemini/mavlink_msg_receiver_tm.h
@@ -6,19 +6,31 @@
 
 typedef struct __mavlink_receiver_tm_t {
  uint64_t timestamp; /*< [us] Timestamp*/
- uint64_t rx_bitrate; /*< [kb/s] Rx bitrate*/
- uint64_t tx_bitrate; /*< [kb/s] Tx bitrate*/
- float rssi; /*< [dBm] Rssi*/
- float fei; /*< [Hz] Fei*/
+ float main_rx_rssi; /*< [dBm] Receive RSSI*/
+ float main_rx_fei; /*< [Hz] Receive frequency error index*/
+ float payload_rx_rssi; /*< [dBm] Receive RSSI*/
+ float payload_rx_fei; /*< [Hz] Receive frequency error index*/
+ uint16_t main_packet_tx_error_count; /*<  Number of errors during send*/
+ uint16_t main_tx_bitrate; /*< [b/s] Send bitrate*/
+ uint16_t main_packet_rx_success_count; /*<  Number of succesfull received mavlink packets*/
+ uint16_t main_packet_rx_drop_count; /*<  Number of dropped mavlink packets*/
+ uint16_t main_rx_bitrate; /*< [b/s] Receive bitrate*/
+ uint16_t payload_packet_tx_error_count; /*<  Number of errors during send*/
+ uint16_t payload_tx_bitrate; /*< [b/s] Send bitrate*/
+ uint16_t payload_packet_rx_success_count; /*<  Number of succesfull received mavlink packets*/
+ uint16_t payload_packet_rx_drop_count; /*<  Number of dropped mavlink packets*/
+ uint16_t payload_rx_bitrate; /*< [b/s] Receive bitrate*/
+ uint8_t main_radio_present; /*<  Boolean indicating the presence of the main radio*/
+ uint8_t payload_radio_present; /*<  Boolean indicating the presence of the payload radio*/
 } mavlink_receiver_tm_t;
 
-#define MAVLINK_MSG_ID_RECEIVER_TM_LEN 32
-#define MAVLINK_MSG_ID_RECEIVER_TM_MIN_LEN 32
-#define MAVLINK_MSG_ID_150_LEN 32
-#define MAVLINK_MSG_ID_150_MIN_LEN 32
+#define MAVLINK_MSG_ID_RECEIVER_TM_LEN 46
+#define MAVLINK_MSG_ID_RECEIVER_TM_MIN_LEN 46
+#define MAVLINK_MSG_ID_150_LEN 46
+#define MAVLINK_MSG_ID_150_MIN_LEN 46
 
-#define MAVLINK_MSG_ID_RECEIVER_TM_CRC 109
-#define MAVLINK_MSG_ID_150_CRC 109
+#define MAVLINK_MSG_ID_RECEIVER_TM_CRC 104
+#define MAVLINK_MSG_ID_150_CRC 104
 
 
 
@@ -26,23 +38,47 @@ typedef struct __mavlink_receiver_tm_t {
 #define MAVLINK_MESSAGE_INFO_RECEIVER_TM { \
     150, \
     "RECEIVER_TM", \
-    5, \
+    17, \
     {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_receiver_tm_t, timestamp) }, \
-         { "rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_receiver_tm_t, rssi) }, \
-         { "fei", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_receiver_tm_t, fei) }, \
-         { "rx_bitrate", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_receiver_tm_t, rx_bitrate) }, \
-         { "tx_bitrate", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_receiver_tm_t, tx_bitrate) }, \
+         { "main_radio_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 44, offsetof(mavlink_receiver_tm_t, main_radio_present) }, \
+         { "main_packet_tx_error_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 24, offsetof(mavlink_receiver_tm_t, main_packet_tx_error_count) }, \
+         { "main_tx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 26, offsetof(mavlink_receiver_tm_t, main_tx_bitrate) }, \
+         { "main_packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 28, offsetof(mavlink_receiver_tm_t, main_packet_rx_success_count) }, \
+         { "main_packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 30, offsetof(mavlink_receiver_tm_t, main_packet_rx_drop_count) }, \
+         { "main_rx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 32, offsetof(mavlink_receiver_tm_t, main_rx_bitrate) }, \
+         { "main_rx_rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_receiver_tm_t, main_rx_rssi) }, \
+         { "main_rx_fei", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_receiver_tm_t, main_rx_fei) }, \
+         { "payload_radio_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 45, offsetof(mavlink_receiver_tm_t, payload_radio_present) }, \
+         { "payload_packet_tx_error_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 34, offsetof(mavlink_receiver_tm_t, payload_packet_tx_error_count) }, \
+         { "payload_tx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 36, offsetof(mavlink_receiver_tm_t, payload_tx_bitrate) }, \
+         { "payload_packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 38, offsetof(mavlink_receiver_tm_t, payload_packet_rx_success_count) }, \
+         { "payload_packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 40, offsetof(mavlink_receiver_tm_t, payload_packet_rx_drop_count) }, \
+         { "payload_rx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 42, offsetof(mavlink_receiver_tm_t, payload_rx_bitrate) }, \
+         { "payload_rx_rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_receiver_tm_t, payload_rx_rssi) }, \
+         { "payload_rx_fei", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_receiver_tm_t, payload_rx_fei) }, \
          } \
 }
 #else
 #define MAVLINK_MESSAGE_INFO_RECEIVER_TM { \
     "RECEIVER_TM", \
-    5, \
+    17, \
     {  { "timestamp", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_receiver_tm_t, timestamp) }, \
-         { "rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_receiver_tm_t, rssi) }, \
-         { "fei", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_receiver_tm_t, fei) }, \
-         { "rx_bitrate", NULL, MAVLINK_TYPE_UINT64_T, 0, 8, offsetof(mavlink_receiver_tm_t, rx_bitrate) }, \
-         { "tx_bitrate", NULL, MAVLINK_TYPE_UINT64_T, 0, 16, offsetof(mavlink_receiver_tm_t, tx_bitrate) }, \
+         { "main_radio_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 44, offsetof(mavlink_receiver_tm_t, main_radio_present) }, \
+         { "main_packet_tx_error_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 24, offsetof(mavlink_receiver_tm_t, main_packet_tx_error_count) }, \
+         { "main_tx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 26, offsetof(mavlink_receiver_tm_t, main_tx_bitrate) }, \
+         { "main_packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 28, offsetof(mavlink_receiver_tm_t, main_packet_rx_success_count) }, \
+         { "main_packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 30, offsetof(mavlink_receiver_tm_t, main_packet_rx_drop_count) }, \
+         { "main_rx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 32, offsetof(mavlink_receiver_tm_t, main_rx_bitrate) }, \
+         { "main_rx_rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_receiver_tm_t, main_rx_rssi) }, \
+         { "main_rx_fei", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_receiver_tm_t, main_rx_fei) }, \
+         { "payload_radio_present", NULL, MAVLINK_TYPE_UINT8_T, 0, 45, offsetof(mavlink_receiver_tm_t, payload_radio_present) }, \
+         { "payload_packet_tx_error_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 34, offsetof(mavlink_receiver_tm_t, payload_packet_tx_error_count) }, \
+         { "payload_tx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 36, offsetof(mavlink_receiver_tm_t, payload_tx_bitrate) }, \
+         { "payload_packet_rx_success_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 38, offsetof(mavlink_receiver_tm_t, payload_packet_rx_success_count) }, \
+         { "payload_packet_rx_drop_count", NULL, MAVLINK_TYPE_UINT16_T, 0, 40, offsetof(mavlink_receiver_tm_t, payload_packet_rx_drop_count) }, \
+         { "payload_rx_bitrate", NULL, MAVLINK_TYPE_UINT16_T, 0, 42, offsetof(mavlink_receiver_tm_t, payload_rx_bitrate) }, \
+         { "payload_rx_rssi", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_receiver_tm_t, payload_rx_rssi) }, \
+         { "payload_rx_fei", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_receiver_tm_t, payload_rx_fei) }, \
          } \
 }
 #endif
@@ -54,31 +90,67 @@ typedef struct __mavlink_receiver_tm_t {
  * @param msg The MAVLink message to compress the data into
  *
  * @param timestamp [us] Timestamp
- * @param rssi [dBm] Rssi
- * @param fei [Hz] Fei
- * @param rx_bitrate [kb/s] Rx bitrate
- * @param tx_bitrate [kb/s] Tx bitrate
+ * @param main_radio_present  Boolean indicating the presence of the main radio
+ * @param main_packet_tx_error_count  Number of errors during send
+ * @param main_tx_bitrate [b/s] Send bitrate
+ * @param main_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param main_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param main_rx_bitrate [b/s] Receive bitrate
+ * @param main_rx_rssi [dBm] Receive RSSI
+ * @param main_rx_fei [Hz] Receive frequency error index
+ * @param payload_radio_present  Boolean indicating the presence of the payload radio
+ * @param payload_packet_tx_error_count  Number of errors during send
+ * @param payload_tx_bitrate [b/s] Send bitrate
+ * @param payload_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param payload_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param payload_rx_bitrate [b/s] Receive bitrate
+ * @param payload_rx_rssi [dBm] Receive RSSI
+ * @param payload_rx_fei [Hz] Receive frequency error index
  * @return length of the message in bytes (excluding serial stream start sign)
  */
 static inline uint16_t mavlink_msg_receiver_tm_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
-                               uint64_t timestamp, float rssi, float fei, uint64_t rx_bitrate, uint64_t tx_bitrate)
+                               uint64_t timestamp, uint8_t main_radio_present, uint16_t main_packet_tx_error_count, uint16_t main_tx_bitrate, uint16_t main_packet_rx_success_count, uint16_t main_packet_rx_drop_count, uint16_t main_rx_bitrate, float main_rx_rssi, float main_rx_fei, uint8_t payload_radio_present, uint16_t payload_packet_tx_error_count, uint16_t payload_tx_bitrate, uint16_t payload_packet_rx_success_count, uint16_t payload_packet_rx_drop_count, uint16_t payload_rx_bitrate, float payload_rx_rssi, float payload_rx_fei)
 {
 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
     char buf[MAVLINK_MSG_ID_RECEIVER_TM_LEN];
     _mav_put_uint64_t(buf, 0, timestamp);
-    _mav_put_uint64_t(buf, 8, rx_bitrate);
-    _mav_put_uint64_t(buf, 16, tx_bitrate);
-    _mav_put_float(buf, 24, rssi);
-    _mav_put_float(buf, 28, fei);
+    _mav_put_float(buf, 8, main_rx_rssi);
+    _mav_put_float(buf, 12, main_rx_fei);
+    _mav_put_float(buf, 16, payload_rx_rssi);
+    _mav_put_float(buf, 20, payload_rx_fei);
+    _mav_put_uint16_t(buf, 24, main_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 26, main_tx_bitrate);
+    _mav_put_uint16_t(buf, 28, main_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 30, main_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 32, main_rx_bitrate);
+    _mav_put_uint16_t(buf, 34, payload_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 36, payload_tx_bitrate);
+    _mav_put_uint16_t(buf, 38, payload_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 40, payload_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 42, payload_rx_bitrate);
+    _mav_put_uint8_t(buf, 44, main_radio_present);
+    _mav_put_uint8_t(buf, 45, payload_radio_present);
 
         memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_RECEIVER_TM_LEN);
 #else
     mavlink_receiver_tm_t packet;
     packet.timestamp = timestamp;
-    packet.rx_bitrate = rx_bitrate;
-    packet.tx_bitrate = tx_bitrate;
-    packet.rssi = rssi;
-    packet.fei = fei;
+    packet.main_rx_rssi = main_rx_rssi;
+    packet.main_rx_fei = main_rx_fei;
+    packet.payload_rx_rssi = payload_rx_rssi;
+    packet.payload_rx_fei = payload_rx_fei;
+    packet.main_packet_tx_error_count = main_packet_tx_error_count;
+    packet.main_tx_bitrate = main_tx_bitrate;
+    packet.main_packet_rx_success_count = main_packet_rx_success_count;
+    packet.main_packet_rx_drop_count = main_packet_rx_drop_count;
+    packet.main_rx_bitrate = main_rx_bitrate;
+    packet.payload_packet_tx_error_count = payload_packet_tx_error_count;
+    packet.payload_tx_bitrate = payload_tx_bitrate;
+    packet.payload_packet_rx_success_count = payload_packet_rx_success_count;
+    packet.payload_packet_rx_drop_count = payload_packet_rx_drop_count;
+    packet.payload_rx_bitrate = payload_rx_bitrate;
+    packet.main_radio_present = main_radio_present;
+    packet.payload_radio_present = payload_radio_present;
 
         memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_RECEIVER_TM_LEN);
 #endif
@@ -94,32 +166,68 @@ static inline uint16_t mavlink_msg_receiver_tm_pack(uint8_t system_id, uint8_t c
  * @param chan The MAVLink channel this message will be sent over
  * @param msg The MAVLink message to compress the data into
  * @param timestamp [us] Timestamp
- * @param rssi [dBm] Rssi
- * @param fei [Hz] Fei
- * @param rx_bitrate [kb/s] Rx bitrate
- * @param tx_bitrate [kb/s] Tx bitrate
+ * @param main_radio_present  Boolean indicating the presence of the main radio
+ * @param main_packet_tx_error_count  Number of errors during send
+ * @param main_tx_bitrate [b/s] Send bitrate
+ * @param main_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param main_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param main_rx_bitrate [b/s] Receive bitrate
+ * @param main_rx_rssi [dBm] Receive RSSI
+ * @param main_rx_fei [Hz] Receive frequency error index
+ * @param payload_radio_present  Boolean indicating the presence of the payload radio
+ * @param payload_packet_tx_error_count  Number of errors during send
+ * @param payload_tx_bitrate [b/s] Send bitrate
+ * @param payload_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param payload_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param payload_rx_bitrate [b/s] Receive bitrate
+ * @param payload_rx_rssi [dBm] Receive RSSI
+ * @param payload_rx_fei [Hz] Receive frequency error index
  * @return length of the message in bytes (excluding serial stream start sign)
  */
 static inline uint16_t mavlink_msg_receiver_tm_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
                                mavlink_message_t* msg,
-                                   uint64_t timestamp,float rssi,float fei,uint64_t rx_bitrate,uint64_t tx_bitrate)
+                                   uint64_t timestamp,uint8_t main_radio_present,uint16_t main_packet_tx_error_count,uint16_t main_tx_bitrate,uint16_t main_packet_rx_success_count,uint16_t main_packet_rx_drop_count,uint16_t main_rx_bitrate,float main_rx_rssi,float main_rx_fei,uint8_t payload_radio_present,uint16_t payload_packet_tx_error_count,uint16_t payload_tx_bitrate,uint16_t payload_packet_rx_success_count,uint16_t payload_packet_rx_drop_count,uint16_t payload_rx_bitrate,float payload_rx_rssi,float payload_rx_fei)
 {
 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
     char buf[MAVLINK_MSG_ID_RECEIVER_TM_LEN];
     _mav_put_uint64_t(buf, 0, timestamp);
-    _mav_put_uint64_t(buf, 8, rx_bitrate);
-    _mav_put_uint64_t(buf, 16, tx_bitrate);
-    _mav_put_float(buf, 24, rssi);
-    _mav_put_float(buf, 28, fei);
+    _mav_put_float(buf, 8, main_rx_rssi);
+    _mav_put_float(buf, 12, main_rx_fei);
+    _mav_put_float(buf, 16, payload_rx_rssi);
+    _mav_put_float(buf, 20, payload_rx_fei);
+    _mav_put_uint16_t(buf, 24, main_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 26, main_tx_bitrate);
+    _mav_put_uint16_t(buf, 28, main_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 30, main_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 32, main_rx_bitrate);
+    _mav_put_uint16_t(buf, 34, payload_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 36, payload_tx_bitrate);
+    _mav_put_uint16_t(buf, 38, payload_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 40, payload_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 42, payload_rx_bitrate);
+    _mav_put_uint8_t(buf, 44, main_radio_present);
+    _mav_put_uint8_t(buf, 45, payload_radio_present);
 
         memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_RECEIVER_TM_LEN);
 #else
     mavlink_receiver_tm_t packet;
     packet.timestamp = timestamp;
-    packet.rx_bitrate = rx_bitrate;
-    packet.tx_bitrate = tx_bitrate;
-    packet.rssi = rssi;
-    packet.fei = fei;
+    packet.main_rx_rssi = main_rx_rssi;
+    packet.main_rx_fei = main_rx_fei;
+    packet.payload_rx_rssi = payload_rx_rssi;
+    packet.payload_rx_fei = payload_rx_fei;
+    packet.main_packet_tx_error_count = main_packet_tx_error_count;
+    packet.main_tx_bitrate = main_tx_bitrate;
+    packet.main_packet_rx_success_count = main_packet_rx_success_count;
+    packet.main_packet_rx_drop_count = main_packet_rx_drop_count;
+    packet.main_rx_bitrate = main_rx_bitrate;
+    packet.payload_packet_tx_error_count = payload_packet_tx_error_count;
+    packet.payload_tx_bitrate = payload_tx_bitrate;
+    packet.payload_packet_rx_success_count = payload_packet_rx_success_count;
+    packet.payload_packet_rx_drop_count = payload_packet_rx_drop_count;
+    packet.payload_rx_bitrate = payload_rx_bitrate;
+    packet.main_radio_present = main_radio_present;
+    packet.payload_radio_present = payload_radio_present;
 
         memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_RECEIVER_TM_LEN);
 #endif
@@ -138,7 +246,7 @@ static inline uint16_t mavlink_msg_receiver_tm_pack_chan(uint8_t system_id, uint
  */
 static inline uint16_t mavlink_msg_receiver_tm_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_receiver_tm_t* receiver_tm)
 {
-    return mavlink_msg_receiver_tm_pack(system_id, component_id, msg, receiver_tm->timestamp, receiver_tm->rssi, receiver_tm->fei, receiver_tm->rx_bitrate, receiver_tm->tx_bitrate);
+    return mavlink_msg_receiver_tm_pack(system_id, component_id, msg, receiver_tm->timestamp, receiver_tm->main_radio_present, receiver_tm->main_packet_tx_error_count, receiver_tm->main_tx_bitrate, receiver_tm->main_packet_rx_success_count, receiver_tm->main_packet_rx_drop_count, receiver_tm->main_rx_bitrate, receiver_tm->main_rx_rssi, receiver_tm->main_rx_fei, receiver_tm->payload_radio_present, receiver_tm->payload_packet_tx_error_count, receiver_tm->payload_tx_bitrate, receiver_tm->payload_packet_rx_success_count, receiver_tm->payload_packet_rx_drop_count, receiver_tm->payload_rx_bitrate, receiver_tm->payload_rx_rssi, receiver_tm->payload_rx_fei);
 }
 
 /**
@@ -152,7 +260,7 @@ static inline uint16_t mavlink_msg_receiver_tm_encode(uint8_t system_id, uint8_t
  */
 static inline uint16_t mavlink_msg_receiver_tm_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_receiver_tm_t* receiver_tm)
 {
-    return mavlink_msg_receiver_tm_pack_chan(system_id, component_id, chan, msg, receiver_tm->timestamp, receiver_tm->rssi, receiver_tm->fei, receiver_tm->rx_bitrate, receiver_tm->tx_bitrate);
+    return mavlink_msg_receiver_tm_pack_chan(system_id, component_id, chan, msg, receiver_tm->timestamp, receiver_tm->main_radio_present, receiver_tm->main_packet_tx_error_count, receiver_tm->main_tx_bitrate, receiver_tm->main_packet_rx_success_count, receiver_tm->main_packet_rx_drop_count, receiver_tm->main_rx_bitrate, receiver_tm->main_rx_rssi, receiver_tm->main_rx_fei, receiver_tm->payload_radio_present, receiver_tm->payload_packet_tx_error_count, receiver_tm->payload_tx_bitrate, receiver_tm->payload_packet_rx_success_count, receiver_tm->payload_packet_rx_drop_count, receiver_tm->payload_rx_bitrate, receiver_tm->payload_rx_rssi, receiver_tm->payload_rx_fei);
 }
 
 /**
@@ -160,31 +268,67 @@ static inline uint16_t mavlink_msg_receiver_tm_encode_chan(uint8_t system_id, ui
  * @param chan MAVLink channel to send the message
  *
  * @param timestamp [us] Timestamp
- * @param rssi [dBm] Rssi
- * @param fei [Hz] Fei
- * @param rx_bitrate [kb/s] Rx bitrate
- * @param tx_bitrate [kb/s] Tx bitrate
+ * @param main_radio_present  Boolean indicating the presence of the main radio
+ * @param main_packet_tx_error_count  Number of errors during send
+ * @param main_tx_bitrate [b/s] Send bitrate
+ * @param main_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param main_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param main_rx_bitrate [b/s] Receive bitrate
+ * @param main_rx_rssi [dBm] Receive RSSI
+ * @param main_rx_fei [Hz] Receive frequency error index
+ * @param payload_radio_present  Boolean indicating the presence of the payload radio
+ * @param payload_packet_tx_error_count  Number of errors during send
+ * @param payload_tx_bitrate [b/s] Send bitrate
+ * @param payload_packet_rx_success_count  Number of succesfull received mavlink packets
+ * @param payload_packet_rx_drop_count  Number of dropped mavlink packets
+ * @param payload_rx_bitrate [b/s] Receive bitrate
+ * @param payload_rx_rssi [dBm] Receive RSSI
+ * @param payload_rx_fei [Hz] Receive frequency error index
  */
 #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
 
-static inline void mavlink_msg_receiver_tm_send(mavlink_channel_t chan, uint64_t timestamp, float rssi, float fei, uint64_t rx_bitrate, uint64_t tx_bitrate)
+static inline void mavlink_msg_receiver_tm_send(mavlink_channel_t chan, uint64_t timestamp, uint8_t main_radio_present, uint16_t main_packet_tx_error_count, uint16_t main_tx_bitrate, uint16_t main_packet_rx_success_count, uint16_t main_packet_rx_drop_count, uint16_t main_rx_bitrate, float main_rx_rssi, float main_rx_fei, uint8_t payload_radio_present, uint16_t payload_packet_tx_error_count, uint16_t payload_tx_bitrate, uint16_t payload_packet_rx_success_count, uint16_t payload_packet_rx_drop_count, uint16_t payload_rx_bitrate, float payload_rx_rssi, float payload_rx_fei)
 {
 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
     char buf[MAVLINK_MSG_ID_RECEIVER_TM_LEN];
     _mav_put_uint64_t(buf, 0, timestamp);
-    _mav_put_uint64_t(buf, 8, rx_bitrate);
-    _mav_put_uint64_t(buf, 16, tx_bitrate);
-    _mav_put_float(buf, 24, rssi);
-    _mav_put_float(buf, 28, fei);
+    _mav_put_float(buf, 8, main_rx_rssi);
+    _mav_put_float(buf, 12, main_rx_fei);
+    _mav_put_float(buf, 16, payload_rx_rssi);
+    _mav_put_float(buf, 20, payload_rx_fei);
+    _mav_put_uint16_t(buf, 24, main_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 26, main_tx_bitrate);
+    _mav_put_uint16_t(buf, 28, main_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 30, main_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 32, main_rx_bitrate);
+    _mav_put_uint16_t(buf, 34, payload_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 36, payload_tx_bitrate);
+    _mav_put_uint16_t(buf, 38, payload_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 40, payload_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 42, payload_rx_bitrate);
+    _mav_put_uint8_t(buf, 44, main_radio_present);
+    _mav_put_uint8_t(buf, 45, payload_radio_present);
 
     _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RECEIVER_TM, buf, MAVLINK_MSG_ID_RECEIVER_TM_MIN_LEN, MAVLINK_MSG_ID_RECEIVER_TM_LEN, MAVLINK_MSG_ID_RECEIVER_TM_CRC);
 #else
     mavlink_receiver_tm_t packet;
     packet.timestamp = timestamp;
-    packet.rx_bitrate = rx_bitrate;
-    packet.tx_bitrate = tx_bitrate;
-    packet.rssi = rssi;
-    packet.fei = fei;
+    packet.main_rx_rssi = main_rx_rssi;
+    packet.main_rx_fei = main_rx_fei;
+    packet.payload_rx_rssi = payload_rx_rssi;
+    packet.payload_rx_fei = payload_rx_fei;
+    packet.main_packet_tx_error_count = main_packet_tx_error_count;
+    packet.main_tx_bitrate = main_tx_bitrate;
+    packet.main_packet_rx_success_count = main_packet_rx_success_count;
+    packet.main_packet_rx_drop_count = main_packet_rx_drop_count;
+    packet.main_rx_bitrate = main_rx_bitrate;
+    packet.payload_packet_tx_error_count = payload_packet_tx_error_count;
+    packet.payload_tx_bitrate = payload_tx_bitrate;
+    packet.payload_packet_rx_success_count = payload_packet_rx_success_count;
+    packet.payload_packet_rx_drop_count = payload_packet_rx_drop_count;
+    packet.payload_rx_bitrate = payload_rx_bitrate;
+    packet.main_radio_present = main_radio_present;
+    packet.payload_radio_present = payload_radio_present;
 
     _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RECEIVER_TM, (const char *)&packet, MAVLINK_MSG_ID_RECEIVER_TM_MIN_LEN, MAVLINK_MSG_ID_RECEIVER_TM_LEN, MAVLINK_MSG_ID_RECEIVER_TM_CRC);
 #endif
@@ -198,7 +342,7 @@ static inline void mavlink_msg_receiver_tm_send(mavlink_channel_t chan, uint64_t
 static inline void mavlink_msg_receiver_tm_send_struct(mavlink_channel_t chan, const mavlink_receiver_tm_t* receiver_tm)
 {
 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
-    mavlink_msg_receiver_tm_send(chan, receiver_tm->timestamp, receiver_tm->rssi, receiver_tm->fei, receiver_tm->rx_bitrate, receiver_tm->tx_bitrate);
+    mavlink_msg_receiver_tm_send(chan, receiver_tm->timestamp, receiver_tm->main_radio_present, receiver_tm->main_packet_tx_error_count, receiver_tm->main_tx_bitrate, receiver_tm->main_packet_rx_success_count, receiver_tm->main_packet_rx_drop_count, receiver_tm->main_rx_bitrate, receiver_tm->main_rx_rssi, receiver_tm->main_rx_fei, receiver_tm->payload_radio_present, receiver_tm->payload_packet_tx_error_count, receiver_tm->payload_tx_bitrate, receiver_tm->payload_packet_rx_success_count, receiver_tm->payload_packet_rx_drop_count, receiver_tm->payload_rx_bitrate, receiver_tm->payload_rx_rssi, receiver_tm->payload_rx_fei);
 #else
     _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RECEIVER_TM, (const char *)receiver_tm, MAVLINK_MSG_ID_RECEIVER_TM_MIN_LEN, MAVLINK_MSG_ID_RECEIVER_TM_LEN, MAVLINK_MSG_ID_RECEIVER_TM_CRC);
 #endif
@@ -212,24 +356,48 @@ static inline void mavlink_msg_receiver_tm_send_struct(mavlink_channel_t chan, c
   is usually the receive buffer for the channel, and allows a reply to an
   incoming message with minimum stack space usage.
  */
-static inline void mavlink_msg_receiver_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, float rssi, float fei, uint64_t rx_bitrate, uint64_t tx_bitrate)
+static inline void mavlink_msg_receiver_tm_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint64_t timestamp, uint8_t main_radio_present, uint16_t main_packet_tx_error_count, uint16_t main_tx_bitrate, uint16_t main_packet_rx_success_count, uint16_t main_packet_rx_drop_count, uint16_t main_rx_bitrate, float main_rx_rssi, float main_rx_fei, uint8_t payload_radio_present, uint16_t payload_packet_tx_error_count, uint16_t payload_tx_bitrate, uint16_t payload_packet_rx_success_count, uint16_t payload_packet_rx_drop_count, uint16_t payload_rx_bitrate, float payload_rx_rssi, float payload_rx_fei)
 {
 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
     char *buf = (char *)msgbuf;
     _mav_put_uint64_t(buf, 0, timestamp);
-    _mav_put_uint64_t(buf, 8, rx_bitrate);
-    _mav_put_uint64_t(buf, 16, tx_bitrate);
-    _mav_put_float(buf, 24, rssi);
-    _mav_put_float(buf, 28, fei);
+    _mav_put_float(buf, 8, main_rx_rssi);
+    _mav_put_float(buf, 12, main_rx_fei);
+    _mav_put_float(buf, 16, payload_rx_rssi);
+    _mav_put_float(buf, 20, payload_rx_fei);
+    _mav_put_uint16_t(buf, 24, main_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 26, main_tx_bitrate);
+    _mav_put_uint16_t(buf, 28, main_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 30, main_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 32, main_rx_bitrate);
+    _mav_put_uint16_t(buf, 34, payload_packet_tx_error_count);
+    _mav_put_uint16_t(buf, 36, payload_tx_bitrate);
+    _mav_put_uint16_t(buf, 38, payload_packet_rx_success_count);
+    _mav_put_uint16_t(buf, 40, payload_packet_rx_drop_count);
+    _mav_put_uint16_t(buf, 42, payload_rx_bitrate);
+    _mav_put_uint8_t(buf, 44, main_radio_present);
+    _mav_put_uint8_t(buf, 45, payload_radio_present);
 
     _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RECEIVER_TM, buf, MAVLINK_MSG_ID_RECEIVER_TM_MIN_LEN, MAVLINK_MSG_ID_RECEIVER_TM_LEN, MAVLINK_MSG_ID_RECEIVER_TM_CRC);
 #else
     mavlink_receiver_tm_t *packet = (mavlink_receiver_tm_t *)msgbuf;
     packet->timestamp = timestamp;
-    packet->rx_bitrate = rx_bitrate;
-    packet->tx_bitrate = tx_bitrate;
-    packet->rssi = rssi;
-    packet->fei = fei;
+    packet->main_rx_rssi = main_rx_rssi;
+    packet->main_rx_fei = main_rx_fei;
+    packet->payload_rx_rssi = payload_rx_rssi;
+    packet->payload_rx_fei = payload_rx_fei;
+    packet->main_packet_tx_error_count = main_packet_tx_error_count;
+    packet->main_tx_bitrate = main_tx_bitrate;
+    packet->main_packet_rx_success_count = main_packet_rx_success_count;
+    packet->main_packet_rx_drop_count = main_packet_rx_drop_count;
+    packet->main_rx_bitrate = main_rx_bitrate;
+    packet->payload_packet_tx_error_count = payload_packet_tx_error_count;
+    packet->payload_tx_bitrate = payload_tx_bitrate;
+    packet->payload_packet_rx_success_count = payload_packet_rx_success_count;
+    packet->payload_packet_rx_drop_count = payload_packet_rx_drop_count;
+    packet->payload_rx_bitrate = payload_rx_bitrate;
+    packet->main_radio_present = main_radio_present;
+    packet->payload_radio_present = payload_radio_present;
 
     _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_RECEIVER_TM, (const char *)packet, MAVLINK_MSG_ID_RECEIVER_TM_MIN_LEN, MAVLINK_MSG_ID_RECEIVER_TM_LEN, MAVLINK_MSG_ID_RECEIVER_TM_CRC);
 #endif
@@ -252,43 +420,163 @@ static inline uint64_t mavlink_msg_receiver_tm_get_timestamp(const mavlink_messa
 }
 
 /**
- * @brief Get field rssi from receiver_tm message
+ * @brief Get field main_radio_present from receiver_tm message
  *
- * @return [dBm] Rssi
+ * @return  Boolean indicating the presence of the main radio
  */
-static inline float mavlink_msg_receiver_tm_get_rssi(const mavlink_message_t* msg)
+static inline uint8_t mavlink_msg_receiver_tm_get_main_radio_present(const mavlink_message_t* msg)
 {
-    return _MAV_RETURN_float(msg,  24);
+    return _MAV_RETURN_uint8_t(msg,  44);
 }
 
 /**
- * @brief Get field fei from receiver_tm message
+ * @brief Get field main_packet_tx_error_count from receiver_tm message
  *
- * @return [Hz] Fei
+ * @return  Number of errors during send
  */
-static inline float mavlink_msg_receiver_tm_get_fei(const mavlink_message_t* msg)
+static inline uint16_t mavlink_msg_receiver_tm_get_main_packet_tx_error_count(const mavlink_message_t* msg)
 {
-    return _MAV_RETURN_float(msg,  28);
+    return _MAV_RETURN_uint16_t(msg,  24);
 }
 
 /**
- * @brief Get field rx_bitrate from receiver_tm message
+ * @brief Get field main_tx_bitrate from receiver_tm message
  *
- * @return [kb/s] Rx bitrate
+ * @return [b/s] Send bitrate
  */
-static inline uint64_t mavlink_msg_receiver_tm_get_rx_bitrate(const mavlink_message_t* msg)
+static inline uint16_t mavlink_msg_receiver_tm_get_main_tx_bitrate(const mavlink_message_t* msg)
 {
-    return _MAV_RETURN_uint64_t(msg,  8);
+    return _MAV_RETURN_uint16_t(msg,  26);
 }
 
 /**
- * @brief Get field tx_bitrate from receiver_tm message
+ * @brief Get field main_packet_rx_success_count from receiver_tm message
  *
- * @return [kb/s] Tx bitrate
+ * @return  Number of succesfull received mavlink packets
  */
-static inline uint64_t mavlink_msg_receiver_tm_get_tx_bitrate(const mavlink_message_t* msg)
+static inline uint16_t mavlink_msg_receiver_tm_get_main_packet_rx_success_count(const mavlink_message_t* msg)
 {
-    return _MAV_RETURN_uint64_t(msg,  16);
+    return _MAV_RETURN_uint16_t(msg,  28);
+}
+
+/**
+ * @brief Get field main_packet_rx_drop_count from receiver_tm message
+ *
+ * @return  Number of dropped mavlink packets
+ */
+static inline uint16_t mavlink_msg_receiver_tm_get_main_packet_rx_drop_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  30);
+}
+
+/**
+ * @brief Get field main_rx_bitrate from receiver_tm message
+ *
+ * @return [b/s] Receive bitrate
+ */
+static inline uint16_t mavlink_msg_receiver_tm_get_main_rx_bitrate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  32);
+}
+
+/**
+ * @brief Get field main_rx_rssi from receiver_tm message
+ *
+ * @return [dBm] Receive RSSI
+ */
+static inline float mavlink_msg_receiver_tm_get_main_rx_rssi(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  8);
+}
+
+/**
+ * @brief Get field main_rx_fei from receiver_tm message
+ *
+ * @return [Hz] Receive frequency error index
+ */
+static inline float mavlink_msg_receiver_tm_get_main_rx_fei(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  12);
+}
+
+/**
+ * @brief Get field payload_radio_present from receiver_tm message
+ *
+ * @return  Boolean indicating the presence of the payload radio
+ */
+static inline uint8_t mavlink_msg_receiver_tm_get_payload_radio_present(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint8_t(msg,  45);
+}
+
+/**
+ * @brief Get field payload_packet_tx_error_count from receiver_tm message
+ *
+ * @return  Number of errors during send
+ */
+static inline uint16_t mavlink_msg_receiver_tm_get_payload_packet_tx_error_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  34);
+}
+
+/**
+ * @brief Get field payload_tx_bitrate from receiver_tm message
+ *
+ * @return [b/s] Send bitrate
+ */
+static inline uint16_t mavlink_msg_receiver_tm_get_payload_tx_bitrate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  36);
+}
+
+/**
+ * @brief Get field payload_packet_rx_success_count from receiver_tm message
+ *
+ * @return  Number of succesfull received mavlink packets
+ */
+static inline uint16_t mavlink_msg_receiver_tm_get_payload_packet_rx_success_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  38);
+}
+
+/**
+ * @brief Get field payload_packet_rx_drop_count from receiver_tm message
+ *
+ * @return  Number of dropped mavlink packets
+ */
+static inline uint16_t mavlink_msg_receiver_tm_get_payload_packet_rx_drop_count(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  40);
+}
+
+/**
+ * @brief Get field payload_rx_bitrate from receiver_tm message
+ *
+ * @return [b/s] Receive bitrate
+ */
+static inline uint16_t mavlink_msg_receiver_tm_get_payload_rx_bitrate(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_uint16_t(msg,  42);
+}
+
+/**
+ * @brief Get field payload_rx_rssi from receiver_tm message
+ *
+ * @return [dBm] Receive RSSI
+ */
+static inline float mavlink_msg_receiver_tm_get_payload_rx_rssi(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  16);
+}
+
+/**
+ * @brief Get field payload_rx_fei from receiver_tm message
+ *
+ * @return [Hz] Receive frequency error index
+ */
+static inline float mavlink_msg_receiver_tm_get_payload_rx_fei(const mavlink_message_t* msg)
+{
+    return _MAV_RETURN_float(msg,  20);
 }
 
 /**
@@ -301,10 +589,22 @@ static inline void mavlink_msg_receiver_tm_decode(const mavlink_message_t* msg,
 {
 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
     receiver_tm->timestamp = mavlink_msg_receiver_tm_get_timestamp(msg);
-    receiver_tm->rx_bitrate = mavlink_msg_receiver_tm_get_rx_bitrate(msg);
-    receiver_tm->tx_bitrate = mavlink_msg_receiver_tm_get_tx_bitrate(msg);
-    receiver_tm->rssi = mavlink_msg_receiver_tm_get_rssi(msg);
-    receiver_tm->fei = mavlink_msg_receiver_tm_get_fei(msg);
+    receiver_tm->main_rx_rssi = mavlink_msg_receiver_tm_get_main_rx_rssi(msg);
+    receiver_tm->main_rx_fei = mavlink_msg_receiver_tm_get_main_rx_fei(msg);
+    receiver_tm->payload_rx_rssi = mavlink_msg_receiver_tm_get_payload_rx_rssi(msg);
+    receiver_tm->payload_rx_fei = mavlink_msg_receiver_tm_get_payload_rx_fei(msg);
+    receiver_tm->main_packet_tx_error_count = mavlink_msg_receiver_tm_get_main_packet_tx_error_count(msg);
+    receiver_tm->main_tx_bitrate = mavlink_msg_receiver_tm_get_main_tx_bitrate(msg);
+    receiver_tm->main_packet_rx_success_count = mavlink_msg_receiver_tm_get_main_packet_rx_success_count(msg);
+    receiver_tm->main_packet_rx_drop_count = mavlink_msg_receiver_tm_get_main_packet_rx_drop_count(msg);
+    receiver_tm->main_rx_bitrate = mavlink_msg_receiver_tm_get_main_rx_bitrate(msg);
+    receiver_tm->payload_packet_tx_error_count = mavlink_msg_receiver_tm_get_payload_packet_tx_error_count(msg);
+    receiver_tm->payload_tx_bitrate = mavlink_msg_receiver_tm_get_payload_tx_bitrate(msg);
+    receiver_tm->payload_packet_rx_success_count = mavlink_msg_receiver_tm_get_payload_packet_rx_success_count(msg);
+    receiver_tm->payload_packet_rx_drop_count = mavlink_msg_receiver_tm_get_payload_packet_rx_drop_count(msg);
+    receiver_tm->payload_rx_bitrate = mavlink_msg_receiver_tm_get_payload_rx_bitrate(msg);
+    receiver_tm->main_radio_present = mavlink_msg_receiver_tm_get_main_radio_present(msg);
+    receiver_tm->payload_radio_present = mavlink_msg_receiver_tm_get_payload_radio_present(msg);
 #else
         uint8_t len = msg->len < MAVLINK_MSG_ID_RECEIVER_TM_LEN? msg->len : MAVLINK_MSG_ID_RECEIVER_TM_LEN;
         memset(receiver_tm, 0, MAVLINK_MSG_ID_RECEIVER_TM_LEN);
diff --git a/mavlink_lib/gemini/testsuite.h b/mavlink_lib/gemini/testsuite.h
index 6b2d95e588d195b344bc8d42d540c540475725cf..a4672adc00c0fa7ffd6e5be1dc926d4a835867cf 100644
--- a/mavlink_lib/gemini/testsuite.h
+++ b/mavlink_lib/gemini/testsuite.h
@@ -2109,15 +2109,27 @@ static void mavlink_test_receiver_tm(uint8_t system_id, uint8_t component_id, ma
         uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
         uint16_t i;
     mavlink_receiver_tm_t packet_in = {
-        93372036854775807ULL,93372036854776311ULL,93372036854776815ULL,185.0,213.0
+        93372036854775807ULL,73.0,101.0,129.0,157.0,18483,18587,18691,18795,18899,19003,19107,19211,19315,19419,137,204
     };
     mavlink_receiver_tm_t packet1, packet2;
         memset(&packet1, 0, sizeof(packet1));
         packet1.timestamp = packet_in.timestamp;
-        packet1.rx_bitrate = packet_in.rx_bitrate;
-        packet1.tx_bitrate = packet_in.tx_bitrate;
-        packet1.rssi = packet_in.rssi;
-        packet1.fei = packet_in.fei;
+        packet1.main_rx_rssi = packet_in.main_rx_rssi;
+        packet1.main_rx_fei = packet_in.main_rx_fei;
+        packet1.payload_rx_rssi = packet_in.payload_rx_rssi;
+        packet1.payload_rx_fei = packet_in.payload_rx_fei;
+        packet1.main_packet_tx_error_count = packet_in.main_packet_tx_error_count;
+        packet1.main_tx_bitrate = packet_in.main_tx_bitrate;
+        packet1.main_packet_rx_success_count = packet_in.main_packet_rx_success_count;
+        packet1.main_packet_rx_drop_count = packet_in.main_packet_rx_drop_count;
+        packet1.main_rx_bitrate = packet_in.main_rx_bitrate;
+        packet1.payload_packet_tx_error_count = packet_in.payload_packet_tx_error_count;
+        packet1.payload_tx_bitrate = packet_in.payload_tx_bitrate;
+        packet1.payload_packet_rx_success_count = packet_in.payload_packet_rx_success_count;
+        packet1.payload_packet_rx_drop_count = packet_in.payload_packet_rx_drop_count;
+        packet1.payload_rx_bitrate = packet_in.payload_rx_bitrate;
+        packet1.main_radio_present = packet_in.main_radio_present;
+        packet1.payload_radio_present = packet_in.payload_radio_present;
         
         
 #ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
@@ -2132,12 +2144,12 @@ static void mavlink_test_receiver_tm(uint8_t system_id, uint8_t component_id, ma
         MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
 
         memset(&packet2, 0, sizeof(packet2));
-    mavlink_msg_receiver_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.rssi , packet1.fei , packet1.rx_bitrate , packet1.tx_bitrate );
+    mavlink_msg_receiver_tm_pack(system_id, component_id, &msg , packet1.timestamp , packet1.main_radio_present , packet1.main_packet_tx_error_count , packet1.main_tx_bitrate , packet1.main_packet_rx_success_count , packet1.main_packet_rx_drop_count , packet1.main_rx_bitrate , packet1.main_rx_rssi , packet1.main_rx_fei , packet1.payload_radio_present , packet1.payload_packet_tx_error_count , packet1.payload_tx_bitrate , packet1.payload_packet_rx_success_count , packet1.payload_packet_rx_drop_count , packet1.payload_rx_bitrate , packet1.payload_rx_rssi , packet1.payload_rx_fei );
     mavlink_msg_receiver_tm_decode(&msg, &packet2);
         MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
 
         memset(&packet2, 0, sizeof(packet2));
-    mavlink_msg_receiver_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.rssi , packet1.fei , packet1.rx_bitrate , packet1.tx_bitrate );
+    mavlink_msg_receiver_tm_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg , packet1.timestamp , packet1.main_radio_present , packet1.main_packet_tx_error_count , packet1.main_tx_bitrate , packet1.main_packet_rx_success_count , packet1.main_packet_rx_drop_count , packet1.main_rx_bitrate , packet1.main_rx_rssi , packet1.main_rx_fei , packet1.payload_radio_present , packet1.payload_packet_tx_error_count , packet1.payload_tx_bitrate , packet1.payload_packet_rx_success_count , packet1.payload_packet_rx_drop_count , packet1.payload_rx_bitrate , packet1.payload_rx_rssi , packet1.payload_rx_fei );
     mavlink_msg_receiver_tm_decode(&msg, &packet2);
         MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
 
@@ -2150,7 +2162,7 @@ static void mavlink_test_receiver_tm(uint8_t system_id, uint8_t component_id, ma
         MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
         
         memset(&packet2, 0, sizeof(packet2));
-    mavlink_msg_receiver_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.rssi , packet1.fei , packet1.rx_bitrate , packet1.tx_bitrate );
+    mavlink_msg_receiver_tm_send(MAVLINK_COMM_1 , packet1.timestamp , packet1.main_radio_present , packet1.main_packet_tx_error_count , packet1.main_tx_bitrate , packet1.main_packet_rx_success_count , packet1.main_packet_rx_drop_count , packet1.main_rx_bitrate , packet1.main_rx_rssi , packet1.main_rx_fei , packet1.payload_radio_present , packet1.payload_packet_tx_error_count , packet1.payload_tx_bitrate , packet1.payload_packet_rx_success_count , packet1.payload_packet_rx_drop_count , packet1.payload_rx_bitrate , packet1.payload_rx_rssi , packet1.payload_rx_fei );
     mavlink_msg_receiver_tm_decode(last_msg, &packet2);
         MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
 
diff --git a/mavlink_lib/gemini/version.h b/mavlink_lib/gemini/version.h
index f76cd18fd09628c9a6361ca8d8f9cc0755aaf143..a51fbcded49218b215fdc3b34ef14dc8c4bd0b5a 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 Jul 27 2023"
+#define MAVLINK_BUILD_DATE "Fri Aug 04 2023"
 #define MAVLINK_WIRE_PROTOCOL_VERSION "1.0"
 #define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE 171
  
diff --git a/message_definitions/gemini.xml b/message_definitions/gemini.xml
index 6662e1c9d1fa919aba1832130e7c635659a34a60..a192e5b4c7e2bb6f7775fc1af459e76c3ca5420a 100644
--- a/message_definitions/gemini.xml
+++ b/message_definitions/gemini.xml
@@ -421,10 +421,22 @@
         <message id="150" name="RECEIVER_TM">
             <description></description>
             <field name="timestamp" type="uint64_t" units="us">Timestamp</field>
-            <field name="rssi" type="float" units="dBm">Rssi</field>
-            <field name="fei" type="float" units="Hz">Fei</field>
-            <field name="rx_bitrate" type="uint64_t" units="kb/s">Rx bitrate</field>
-            <field name="tx_bitrate" type="uint64_t" units="kb/s">Tx bitrate</field>
+            <field name="main_radio_present" type="uint8_t">Boolean indicating the presence of the main radio</field>
+            <field name="main_packet_tx_error_count" type="uint16_t">Number of errors during send</field>
+            <field name="main_tx_bitrate" type="uint16_t" units="b/s">Send bitrate</field>
+            <field name="main_packet_rx_success_count" type="uint16_t">Number of succesfull received mavlink packets</field>
+            <field name="main_packet_rx_drop_count" type="uint16_t">Number of dropped mavlink packets</field>
+            <field name="main_rx_bitrate" type="uint16_t" units="b/s">Receive bitrate</field>
+            <field name="main_rx_rssi" type="float" units="dBm">Receive RSSI</field>
+            <field name="main_rx_fei" type="float" units="Hz">Receive frequency error index</field>
+            <field name="payload_radio_present" type="uint8_t">Boolean indicating the presence of the payload radio</field>
+            <field name="payload_packet_tx_error_count" type="uint16_t">Number of errors during send</field>
+            <field name="payload_tx_bitrate" type="uint16_t" units="b/s">Send bitrate</field>
+            <field name="payload_packet_rx_success_count" type="uint16_t">Number of succesfull received mavlink packets</field>
+            <field name="payload_packet_rx_drop_count" type="uint16_t">Number of dropped mavlink packets</field>
+            <field name="payload_rx_bitrate" type="uint16_t" units="b/s">Receive bitrate</field>
+            <field name="payload_rx_rssi" type="float" units="dBm">Receive RSSI</field>
+            <field name="payload_rx_fei" type="float" units="Hz">Receive frequency error index</field>
         </message>
 
         <!-- FROM ROCKET TO GROUND: SPECIFIC -->