From 106034e4a3592aca328f595d1e565bb900d40c0c Mon Sep 17 00:00:00 2001
From: Luca Erbetta <lucaerbetta105@gmail.com>
Date: Tue, 26 Nov 2019 23:14:08 +0100
Subject: [PATCH] Hermes V1 flight telemetry

---
 src/mavdecoder.cpp       |   2 +-
 src/messages.h           |   4 +-
 src/messages_generated.h | 551 +++++++++++++++++++++++----------------
 3 files changed, 326 insertions(+), 231 deletions(-)

diff --git a/src/mavdecoder.cpp b/src/mavdecoder.cpp
index 977ee29..3945c27 100755
--- a/src/mavdecoder.cpp
+++ b/src/mavdecoder.cpp
@@ -34,7 +34,7 @@
 
 using namespace std;
 
-static constexpr bool USE_MAVLINK_PARSER = true;
+static constexpr bool USE_MAVLINK_PARSER = false;
 
 int main(int argc, char** argv)
 {
diff --git a/src/messages.h b/src/messages.h
index 23eae20..e70fb3d 100755
--- a/src/messages.h
+++ b/src/messages.h
@@ -357,9 +357,9 @@ struct MavHrTmData
         p.unpackGyroZ(&f, i);
         os << f << ",";
         p.unpackGpsLat(&d, i);
-        os << d << ",";
+        os << (float)d << ",";
         p.unpackGpsLon(&d, i);
-        os << d << ",";
+        os << (float)d << ",";
         p.unpackGpsAlt(&f, i);
         os << f << ",";
         p.unpackTemperature(&f, i);
diff --git a/src/messages_generated.h b/src/messages_generated.h
index a7ccce3..9a7b7a5 100755
--- a/src/messages_generated.h
+++ b/src/messages_generated.h
@@ -1,4 +1,4 @@
-/*
+/* 
  * Copyright (c) 2019 Skyward Experimental Rocketry
  * Author: Erbetta Luca
  *
@@ -29,7 +29,7 @@
  ******************************************************************************
  */
 
-// Generation date: 2019-09-11 16:12:10.827357
+// Generation date: 2019-11-06 01:44:05.542490
 
 #pragma once
 
@@ -58,276 +58,294 @@ struct MavData
 
     void print(ostream &os)
     {
-        os << (int)start << "," << (int)len << "," << (int)seq << ","
+        os << (int)start << "," << (int)len << "," << (int)seq << "," 
            << (int)sys_id << "," << (int)comp_id << "," << (int)msg_id;
     }
 };
 
-struct MavAckTmData
+struct MavLoggerTmData
 {
-    mavlink_ack_tm_t mav_pkt;
+    mavlink_logger_tm_t mav_pkt;
 
-    static void header(ostream &os) { os << "recv_msgid,seq_ack\n"; }
+    static void header(ostream &os)
+    {
+        os << "timestamp,statTooLargeSamples,statDroppedSamples,statQueuedSamples,statBufferFilled,statBufferWritten,statWriteFailed,statWriteError,statWriteTime,statMaxWriteTime,statLogNumber\n";
+    }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << (int)mav_pkt.recv_msgid << "," << (int)mav_pkt.seq_ack << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.statTooLargeSamples << "," << mav_pkt.statDroppedSamples << "," << mav_pkt.statQueuedSamples << "," << mav_pkt.statBufferFilled << "," << mav_pkt.statBufferWritten << "," << mav_pkt.statWriteFailed << "," << mav_pkt.statWriteError << "," << mav_pkt.statWriteTime << "," << mav_pkt.statMaxWriteTime << "," << mav_pkt.statLogNumber << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
-struct MavAdaTmData
+struct MavAckTmData
 {
-    mavlink_ada_tm_t mav_pkt;
+    mavlink_ack_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,target_dpl_altitude,kalman_x0,kalman_x1,kalman_x2,ref_"
-              "pressure,msl_pressure,ref_pressure_mean,ref_pressure_stddev,ref_"
-              "pressure_nsamples,ref_altitude,ref_temperature,msl_temperature,"
-              "state\n";
+        os << "recv_msgid,seq_ack\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << (int)mav_pkt.recv_msgid << "," << (int)mav_pkt.seq_ack << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.target_dpl_altitude << ","
-           << mav_pkt.kalman_x0 << "," << mav_pkt.kalman_x1 << ","
-           << mav_pkt.kalman_x2 << "," << mav_pkt.ref_pressure << ","
-           << mav_pkt.msl_pressure << "," << mav_pkt.ref_pressure_mean << ","
-           << mav_pkt.ref_pressure_stddev << ","
-           << mav_pkt.ref_pressure_nsamples << "," << mav_pkt.ref_altitude
-           << "," << mav_pkt.ref_temperature << "," << mav_pkt.msl_temperature
-           << "," << (int)mav_pkt.state << "\n";
+        return 1;
     }
 };
 
-struct MavAdcTmData
+struct MavNoargTcData
 {
-    mavlink_adc_tm_t mav_pkt;
+    mavlink_noarg_tc_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,hw_baro_volt,nxp_baro_volt,hw_baro_pressure,nxp_baro_"
-              "pressure,battery_voltage,current_sense_1,current_sense_2,hw_"
-              "baro_flag,nxp_baro_flag\n";
+        os << "command_id\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.hw_baro_volt << ","
-           << mav_pkt.nxp_baro_volt << "," << mav_pkt.hw_baro_pressure << ","
-           << mav_pkt.nxp_baro_pressure << "," << mav_pkt.battery_voltage << ","
-           << mav_pkt.current_sense_1 << "," << mav_pkt.current_sense_2 << ","
-           << (int)mav_pkt.hw_baro_flag << "," << (int)mav_pkt.nxp_baro_flag
-           << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << (int)mav_pkt.command_id << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
-struct MavAdisTmData
+struct MavSysTmData
 {
-    mavlink_adis_tm_t mav_pkt;
+    mavlink_sys_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,acc_x,acc_y,acc_z,gyro_x,gyro_y,gyro_z,compass_x,"
-              "compass_y,compass_z,temp,supply_out,aux_adc\n";
+        os << "timestamp,death_stack,logger,ev_broker,pin_obs,fmm,sensor_manager,ada,tmtc,ign,dpl\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << (int)mav_pkt.death_stack << "," << (int)mav_pkt.logger << "," << (int)mav_pkt.ev_broker << "," << (int)mav_pkt.pin_obs << "," << (int)mav_pkt.fmm << "," << (int)mav_pkt.sensor_manager << "," << (int)mav_pkt.ada << "," << (int)mav_pkt.tmtc << "," << (int)mav_pkt.ign << "," << (int)mav_pkt.dpl << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.acc_x << "," << mav_pkt.acc_y
-           << "," << mav_pkt.acc_z << "," << mav_pkt.gyro_x << ","
-           << mav_pkt.gyro_y << "," << mav_pkt.gyro_z << ","
-           << mav_pkt.compass_x << "," << mav_pkt.compass_y << ","
-           << mav_pkt.compass_z << "," << mav_pkt.temp << ","
-           << mav_pkt.supply_out << "," << mav_pkt.aux_adc << "\n";
+        return 1;
     }
 };
 
-struct MavCanTmData
+struct MavAdaTmData
 {
-    mavlink_can_tm_t mav_pkt;
+    mavlink_ada_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "last_sent_ts,last_rcv_ts,n_sent,n_rcv,last_sent,last_rcv\n";
+        os << "timestamp,target_dpl_altitude,kalman_x0,kalman_x1,kalman_x2,kalman_acc_x0,kalman_acc_x1,kalman_acc_x2,ref_pressure,msl_pressure,ref_pressure_mean,ref_pressure_stddev,ref_pressure_nsamples,ref_altitude,ref_temperature,msl_temperature,state\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.target_dpl_altitude << "," << mav_pkt.kalman_x0 << "," << mav_pkt.kalman_x1 << "," << mav_pkt.kalman_x2 << "," << mav_pkt.kalman_acc_x0 << "," << mav_pkt.kalman_acc_x1 << "," << mav_pkt.kalman_acc_x2 << "," << mav_pkt.ref_pressure << "," << mav_pkt.msl_pressure << "," << mav_pkt.ref_pressure_mean << "," << mav_pkt.ref_pressure_stddev << "," << mav_pkt.ref_pressure_nsamples << "," << mav_pkt.ref_altitude << "," << mav_pkt.ref_temperature << "," << mav_pkt.msl_temperature << "," << (int)mav_pkt.state << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
     {
-        os << mav_pkt.last_sent_ts << "," << mav_pkt.last_rcv_ts << ","
-           << mav_pkt.n_sent << "," << mav_pkt.n_rcv << ","
-           << (int)mav_pkt.last_sent << "," << (int)mav_pkt.last_rcv << "\n";
+        return 1;
     }
 };
 
-struct MavDplTmData
+struct MavPingTcData
 {
-    mavlink_dpl_tm_t mav_pkt;
+    mavlink_ping_tc_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,fsm_state,motor_active,motor_last_direction,cutter_"
-              "state\n";
+        os << "timestamp\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.timestamp << "," << (int)mav_pkt.fsm_state << ","
-           << (int)mav_pkt.motor_active << ","
-           << (int)mav_pkt.motor_last_direction << ","
-           << (int)mav_pkt.cutter_state << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
-struct MavFmmTmData
+struct MavRawEventTcData
 {
-    mavlink_fmm_tm_t mav_pkt;
+    mavlink_raw_event_tc_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,pin_launch_last_change,pin_nosecone_last_change,state,"
-              "pin_launch_num_changes,pin_launch_state,pin_nosecone_num_"
-              "changes,pin_nosecone_state\n";
+        os << "Event_id,Topic_id\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << (int)mav_pkt.Event_id << "," << (int)mav_pkt.Topic_id << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.pin_launch_last_change << ","
-           << mav_pkt.pin_nosecone_last_change << "," << (int)mav_pkt.state
-           << "," << (int)mav_pkt.pin_launch_num_changes << ","
-           << (int)mav_pkt.pin_launch_state << ","
-           << (int)mav_pkt.pin_nosecone_num_changes << ","
-           << (int)mav_pkt.pin_nosecone_state << "\n";
+        return 1;
     }
 };
 
-struct MavGpsTmData
+struct MavFmmTmData
 {
-    mavlink_gps_tm_t mav_pkt;
+    mavlink_fmm_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,lat,lon,altitude,vel_north,vel_east,vel_down,vel_mag,"
-              "n_satellites,fix\n";
+        os << "timestamp,pin_launch_last_change,pin_nosecone_last_change,state,pin_launch_num_changes,pin_launch_state,pin_nosecone_num_changes,pin_nosecone_state\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.pin_launch_last_change << "," << mav_pkt.pin_nosecone_last_change << "," << (int)mav_pkt.state << "," << (int)mav_pkt.pin_launch_num_changes << "," << (int)mav_pkt.pin_launch_state << "," << (int)mav_pkt.pin_nosecone_num_changes << "," << (int)mav_pkt.pin_nosecone_state << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.lat << "," << mav_pkt.lon
-           << "," << mav_pkt.altitude << "," << mav_pkt.vel_north << ","
-           << mav_pkt.vel_east << "," << mav_pkt.vel_down << ","
-           << mav_pkt.vel_mag << "," << mav_pkt.n_satellites << ","
-           << (int)mav_pkt.fix << "\n";
+        return 1;
     }
 };
 
-struct MavHrTmData
+struct MavLrTmData
 {
-    mavlink_hr_tm_t mav_pkt;
+    mavlink_lr_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,pressure,z_acc,gps_lat,gps_lon,kal_alt,kal_v_speed,"
-              "temperature,bitfield_1,bitfield_2\n";
+        os << "payload\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << (int)mav_pkt.payload << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.pressure << ","
-           << mav_pkt.z_acc << "," << mav_pkt.gps_lat << "," << mav_pkt.gps_lon
-           << "," << mav_pkt.kal_alt << "," << mav_pkt.kal_v_speed << ","
-           << (int)mav_pkt.temperature << "," << (int)mav_pkt.bitfield_1 << ","
-           << (int)mav_pkt.bitfield_2 << "\n";
+        return 1;
     }
 };
 
-struct MavIgnTmData
+struct MavHrTmData
 {
-    mavlink_ign_tm_t mav_pkt;
+    mavlink_hr_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,n_sent_messages,n_rcv_message,fsm_state,last_event,"
-              "cmd_bitfield,stm32_bitfield,avr_bitfield\n";
+        os << "payload\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.n_sent_messages << ","
-           << mav_pkt.n_rcv_message << "," << (int)mav_pkt.fsm_state << ","
-           << (int)mav_pkt.last_event << "," << (int)mav_pkt.cmd_bitfield << ","
-           << (int)mav_pkt.stm32_bitfield << "," << (int)mav_pkt.avr_bitfield
-           << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << (int)mav_pkt.payload << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
-struct MavLoggerTmData
+struct MavCanTmData
 {
-    mavlink_logger_tm_t mav_pkt;
+    mavlink_can_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,statTooLargeSamples,statDroppedSamples,"
-              "statQueuedSamples,statBufferFilled,statBufferWritten,"
-              "statWriteFailed,statWriteError,statWriteTime,statMaxWriteTime,"
-              "statLogNumber\n";
+        os << "last_sent_ts,last_rcv_ts,n_sent,n_rcv,last_sent,last_rcv\n";
+    }
+
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.last_sent_ts << "," << mav_pkt.last_rcv_ts << "," << mav_pkt.n_sent << "," << mav_pkt.n_rcv << "," << (int)mav_pkt.last_sent << "," << (int)mav_pkt.last_rcv << "\n";
     }
 
-    void print(ostream &os)
+    static unsigned int messagesPerPacket()
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.statTooLargeSamples << ","
-           << mav_pkt.statDroppedSamples << "," << mav_pkt.statQueuedSamples
-           << "," << mav_pkt.statBufferFilled << ","
-           << mav_pkt.statBufferWritten << "," << mav_pkt.statWriteFailed << ","
-           << mav_pkt.statWriteError << "," << mav_pkt.statWriteTime << ","
-           << mav_pkt.statMaxWriteTime << "," << mav_pkt.statLogNumber << "\n";
+        return 1;
     }
 };
 
-struct MavLrTmData
+struct MavAdcTmData
 {
-    mavlink_lr_tm_t mav_pkt;
+    mavlink_adc_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "t_liftoff,t_max_acc,acc_pf,t_max_speed,v_speed_max,alt_max_"
-              "speed,t_apogee,hw_min_press,nxp_min_press,kal_min_press,kal_max_"
-              "alt,gps_max_alt,lat_apogee,lon_apogee,t_drogue_dpl,max_drogue_"
-              "acc,t_main_dpl,alt_main_dpl,v_speed_main_dpl,max_main_acc\n";
+        os << "timestamp,hw_baro_volt,nxp_baro_volt,hw_baro_pressure,nxp_baro_pressure,battery_voltage,current_sense_1,current_sense_2,hw_baro_flag,nxp_baro_flag\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.t_liftoff << "," << mav_pkt.t_max_acc << ","
-           << mav_pkt.acc_pf << "," << mav_pkt.t_max_speed << ","
-           << mav_pkt.v_speed_max << "," << mav_pkt.alt_max_speed << ","
-           << mav_pkt.t_apogee << "," << mav_pkt.hw_min_press << ","
-           << mav_pkt.nxp_min_press << "," << mav_pkt.kal_min_press << ","
-           << mav_pkt.kal_max_alt << "," << mav_pkt.gps_max_alt << ","
-           << mav_pkt.lat_apogee << "," << mav_pkt.lon_apogee << ","
-           << mav_pkt.t_drogue_dpl << "," << mav_pkt.max_drogue_acc << ","
-           << mav_pkt.t_main_dpl << "," << mav_pkt.alt_main_dpl << ","
-           << mav_pkt.v_speed_main_dpl << "," << mav_pkt.max_main_acc << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.hw_baro_volt << "," << mav_pkt.nxp_baro_volt << "," << mav_pkt.hw_baro_pressure << "," << mav_pkt.nxp_baro_pressure << "," << mav_pkt.battery_voltage << "," << mav_pkt.current_sense_1 << "," << mav_pkt.current_sense_2 << "," << (int)mav_pkt.hw_baro_flag << "," << (int)mav_pkt.nxp_baro_flag << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
-struct MavMpuTmData
+struct MavTmtcTmData
 {
-    mavlink_mpu_tm_t mav_pkt;
+    mavlink_tmtc_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,acc_x,acc_y,acc_z,gyro_x,gyro_y,gyro_z,compass_x,"
-              "compass_y,compass_z,temp\n";
+        os << "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\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.acc_x << "," << mav_pkt.acc_y
-           << "," << mav_pkt.acc_z << "," << mav_pkt.gyro_x << ","
-           << mav_pkt.gyro_y << "," << mav_pkt.gyro_z << ","
-           << mav_pkt.compass_x << "," << mav_pkt.compass_y << ","
-           << mav_pkt.compass_z << "," << mav_pkt.temp << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.parse_state << "," << mav_pkt.n_send_queue << "," << mav_pkt.max_send_queue << "," << mav_pkt.n_send_errors << "," << mav_pkt.packet_rx_success_count << "," << mav_pkt.packet_rx_drop_count << "," << (int)mav_pkt.msg_received << "," << (int)mav_pkt.buffer_overrun << "," << (int)mav_pkt.parse_error << "," << (int)mav_pkt.packet_idx << "," << (int)mav_pkt.current_rx_seq << "," << (int)mav_pkt.current_tx_seq << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
@@ -335,168 +353,245 @@ struct MavNackTmData
 {
     mavlink_nack_tm_t mav_pkt;
 
-    static void header(ostream &os) { os << "recv_msgid,seq_ack\n"; }
+    static void header(ostream &os)
+    {
+        os << "recv_msgid,seq_ack\n";
+    }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
+        (void)index; // Avoid unused warnings
+        
         os << (int)mav_pkt.recv_msgid << "," << (int)mav_pkt.seq_ack << "\n";
     }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
+    }
 };
 
-struct MavNoargTcData
+struct MavAdisTmData
 {
-    mavlink_noarg_tc_t mav_pkt;
+    mavlink_adis_tm_t mav_pkt;
 
-    static void header(ostream &os) { os << "command_id\n"; }
+    static void header(ostream &os)
+    {
+        os << "timestamp,acc_x,acc_y,acc_z,gyro_x,gyro_y,gyro_z,compass_x,compass_y,compass_z,temp,supply_out,aux_adc\n";
+    }
 
-    void print(ostream &os) { os << (int)mav_pkt.command_id << "\n"; }
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.acc_x << "," << mav_pkt.acc_y << "," << mav_pkt.acc_z << "," << mav_pkt.gyro_x << "," << mav_pkt.gyro_y << "," << mav_pkt.gyro_z << "," << mav_pkt.compass_x << "," << mav_pkt.compass_y << "," << mav_pkt.compass_z << "," << mav_pkt.temp << "," << mav_pkt.supply_out << "," << mav_pkt.aux_adc << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
+    }
 };
 
-struct MavPingTcData
+struct MavMpuTmData
 {
-    mavlink_ping_tc_t mav_pkt;
+    mavlink_mpu_tm_t mav_pkt;
 
-    static void header(ostream &os) { os << "timestamp\n"; }
+    static void header(ostream &os)
+    {
+        os << "timestamp,acc_x,acc_y,acc_z,gyro_x,gyro_y,gyro_z,compass_x,compass_y,compass_z,temp\n";
+    }
 
-    void print(ostream &os) { os << mav_pkt.timestamp << "\n"; }
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.acc_x << "," << mav_pkt.acc_y << "," << mav_pkt.acc_z << "," << mav_pkt.gyro_x << "," << mav_pkt.gyro_y << "," << mav_pkt.gyro_z << "," << mav_pkt.compass_x << "," << mav_pkt.compass_y << "," << mav_pkt.compass_z << "," << mav_pkt.temp << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
+    }
 };
 
-struct MavRawEventTcData
+struct MavTestTmData
 {
-    mavlink_raw_event_tc_t mav_pkt;
+    mavlink_test_tm_t mav_pkt;
+
+    static void header(ostream &os)
+    {
+        os << "timestamp,pressure_hw,temp_analog,temp_imu,battery_volt,th_cut_1,th_cut_2,gps_nsats\n";
+    }
 
-    static void header(ostream &os) { os << "Event_id,Topic_id\n"; }
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.pressure_hw << "," << mav_pkt.temp_analog << "," << mav_pkt.temp_imu << "," << mav_pkt.battery_volt << "," << mav_pkt.th_cut_1 << "," << mav_pkt.th_cut_2 << "," << (int)mav_pkt.gps_nsats << "\n";
+    }
 
-    void print(ostream &os)
+    static unsigned int messagesPerPacket()
     {
-        os << (int)mav_pkt.Event_id << "," << (int)mav_pkt.Topic_id << "\n";
+        return 1;
     }
 };
 
-struct MavSmTmData
+struct MavTelemetryRequestTcData
 {
-    mavlink_sm_tm_t mav_pkt;
+    mavlink_telemetry_request_tc_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,task_10hz_min,task_10hz_max,task_10hz_mean,task_10hz_"
-              "stddev,task_20hz_min,task_20hz_max,task_20hz_mean,task_20hz_"
-              "stddev,task_250hz_min,task_250hz_max,task_250hz_mean,task_250hz_"
-              "stddev,sensor_state,state\n";
+        os << "board_id\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << (int)mav_pkt.board_id << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.task_10hz_min << ","
-           << mav_pkt.task_10hz_max << "," << mav_pkt.task_10hz_mean << ","
-           << mav_pkt.task_10hz_stddev << "," << mav_pkt.task_20hz_min << ","
-           << mav_pkt.task_20hz_max << "," << mav_pkt.task_20hz_mean << ","
-           << mav_pkt.task_20hz_stddev << "," << mav_pkt.task_250hz_min << ","
-           << mav_pkt.task_250hz_max << "," << mav_pkt.task_250hz_mean << ","
-           << mav_pkt.task_250hz_stddev << "," << mav_pkt.sensor_state << ","
-           << (int)mav_pkt.state << "\n";
+        return 1;
     }
 };
 
-struct MavStartLaunchTcData
+struct MavDplTmData
 {
-    mavlink_start_launch_tc_t mav_pkt;
+    mavlink_dpl_tm_t mav_pkt;
+
+    static void header(ostream &os)
+    {
+        os << "timestamp,cutter_1_test_current,cutter_2_test_current,fsm_state,cutter_state\n";
+    }
 
-    static void header(ostream &os) { os << "launch_code\n"; }
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.cutter_1_test_current << "," << mav_pkt.cutter_2_test_current << "," << (int)mav_pkt.fsm_state << "," << (int)mav_pkt.cutter_state << "\n";
+    }
 
-    void print(ostream &os) { os << mav_pkt.launch_code << "\n"; }
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
+    }
 };
 
-struct MavSysTmData
+struct MavIgnTmData
 {
-    mavlink_sys_tm_t mav_pkt;
+    mavlink_ign_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,death_stack,logger,ev_broker,pin_obs,fmm,sensor_"
-              "manager,ada,tmtc,ign,dpl\n";
+        os << "timestamp,n_sent_messages,n_rcv_message,fsm_state,last_event,cmd_bitfield,stm32_bitfield,avr_bitfield\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.timestamp << "," << (int)mav_pkt.death_stack << ","
-           << (int)mav_pkt.logger << "," << (int)mav_pkt.ev_broker << ","
-           << (int)mav_pkt.pin_obs << "," << (int)mav_pkt.fmm << ","
-           << (int)mav_pkt.sensor_manager << "," << (int)mav_pkt.ada << ","
-           << (int)mav_pkt.tmtc << "," << (int)mav_pkt.ign << ","
-           << (int)mav_pkt.dpl << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.n_sent_messages << "," << mav_pkt.n_rcv_message << "," << (int)mav_pkt.fsm_state << "," << (int)mav_pkt.last_event << "," << (int)mav_pkt.cmd_bitfield << "," << (int)mav_pkt.stm32_bitfield << "," << (int)mav_pkt.avr_bitfield << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
-struct MavTelemetryRequestTcData
+struct MavSmTmData
 {
-    mavlink_telemetry_request_tc_t mav_pkt;
+    mavlink_sm_tm_t mav_pkt;
 
-    static void header(ostream &os) { os << "board_id\n"; }
+    static void header(ostream &os)
+    {
+        os << "timestamp,task_10hz_min,task_10hz_max,task_10hz_mean,task_10hz_stddev,task_20hz_min,task_20hz_max,task_20hz_mean,task_20hz_stddev,task_250hz_min,task_250hz_max,task_250hz_mean,task_250hz_stddev,sensor_state,state\n";
+    }
+
+    void print(ostream &os, unsigned int index = 0)
+    {
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.task_10hz_min << "," << mav_pkt.task_10hz_max << "," << mav_pkt.task_10hz_mean << "," << mav_pkt.task_10hz_stddev << "," << mav_pkt.task_20hz_min << "," << mav_pkt.task_20hz_max << "," << mav_pkt.task_20hz_mean << "," << mav_pkt.task_20hz_stddev << "," << mav_pkt.task_250hz_min << "," << mav_pkt.task_250hz_max << "," << mav_pkt.task_250hz_mean << "," << mav_pkt.task_250hz_stddev << "," << mav_pkt.sensor_state << "," << (int)mav_pkt.state << "\n";
+    }
 
-    void print(ostream &os) { os << (int)mav_pkt.board_id << "\n"; }
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
+    }
 };
 
-struct MavTestTmData
+struct MavUploadSettingTcData
 {
-    mavlink_test_tm_t mav_pkt;
+    mavlink_upload_setting_tc_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "timestamp,pressure_nxp,pressure_hw,x_acc,z_acc,gps_lat,gps_lon,"
-              "gps_altitude,temp_analog,temp_imu,battery_volt,th_cut_1,th_cut_"
-              "2,gps_fix,gps_nsats,pin_nosecone,pin_launch\n";
+        os << "setting,setting_id\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.pressure_nxp << ","
-           << mav_pkt.pressure_hw << "," << mav_pkt.x_acc << ","
-           << mav_pkt.z_acc << "," << mav_pkt.gps_lat << "," << mav_pkt.gps_lon
-           << "," << mav_pkt.gps_altitude << "," << mav_pkt.temp_analog << ","
-           << mav_pkt.temp_imu << "," << mav_pkt.battery_volt << ","
-           << mav_pkt.th_cut_1 << "," << mav_pkt.th_cut_2 << ","
-           << (int)mav_pkt.gps_fix << "," << (int)mav_pkt.gps_nsats << ","
-           << (int)mav_pkt.pin_nosecone << "," << (int)mav_pkt.pin_launch
-           << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.setting << "," << (int)mav_pkt.setting_id << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
-struct MavTmtcTmData
+struct MavGpsTmData
 {
-    mavlink_tmtc_tm_t mav_pkt;
+    mavlink_gps_tm_t mav_pkt;
 
     static void header(ostream &os)
     {
-        os << "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\n";
+        os << "timestamp,lat,lon,altitude,vel_north,vel_east,vel_down,vel_mag,n_satellites,fix\n";
     }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.timestamp << "," << mav_pkt.parse_state << ","
-           << mav_pkt.n_send_queue << "," << mav_pkt.max_send_queue << ","
-           << mav_pkt.n_send_errors << "," << mav_pkt.packet_rx_success_count
-           << "," << mav_pkt.packet_rx_drop_count << ","
-           << (int)mav_pkt.msg_received << "," << (int)mav_pkt.buffer_overrun
-           << "," << (int)mav_pkt.parse_error << "," << (int)mav_pkt.packet_idx
-           << "," << (int)mav_pkt.current_rx_seq << ","
-           << (int)mav_pkt.current_tx_seq << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.timestamp << "," << mav_pkt.lat << "," << mav_pkt.lon << "," << mav_pkt.altitude << "," << mav_pkt.vel_north << "," << mav_pkt.vel_east << "," << mav_pkt.vel_down << "," << mav_pkt.vel_mag << "," << mav_pkt.n_satellites << "," << (int)mav_pkt.fix << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
-struct MavUploadSettingTcData
+struct MavStartLaunchTcData
 {
-    mavlink_upload_setting_tc_t mav_pkt;
+    mavlink_start_launch_tc_t mav_pkt;
 
-    static void header(ostream &os) { os << "setting,setting_id\n"; }
+    static void header(ostream &os)
+    {
+        os << "launch_code\n";
+    }
 
-    void print(ostream &os)
+    void print(ostream &os, unsigned int index = 0)
     {
-        os << mav_pkt.setting << "," << (int)mav_pkt.setting_id << "\n";
+        (void)index; // Avoid unused warnings
+        
+        os << mav_pkt.launch_code << "\n";
+    }
+
+    static unsigned int messagesPerPacket()
+    {
+        return 1;
     }
 };
 
+
+
 #pragma pack(pop)
+
-- 
GitLab