From 2d09c65fb3b42f500f0c5c10115d776164f7b87c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=B2=20Caruso?= <nicolo.caruso@skywarder.eu>
Date: Wed, 9 Apr 2025 14:05:47 +0200
Subject: [PATCH] [ARPxPRF] Parafoil stats TM used to set the origin

- Hub.cpp: Before the origin was fixed from the GPS data from the flight tm message while now it should be with the PAYLOAD_STATS_TM reference fields
---
 src/Groundstation/Automated/Hub.cpp | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/src/Groundstation/Automated/Hub.cpp b/src/Groundstation/Automated/Hub.cpp
index d3168a273..63d8b212d 100644
--- a/src/Groundstation/Automated/Hub.cpp
+++ b/src/Groundstation/Automated/Hub.cpp
@@ -355,19 +355,29 @@ void Hub::dispatchIncomingMsg(const mavlink_message_t& msg)
                 mavlink_msg_payload_flight_tm_get_nas_bias_y(&msg),
                 mavlink_msg_payload_flight_tm_get_nas_bias_z(&msg))};
 
-        GPSData gpsState;
-        gpsState.gpsTimestamp =
-            mavlink_msg_payload_flight_tm_get_timestamp(&msg);
-        gpsState.latitude  = mavlink_msg_payload_flight_tm_get_gps_lat(&msg);
-        gpsState.longitude = mavlink_msg_payload_flight_tm_get_gps_lon(&msg);
-        gpsState.height    = mavlink_msg_payload_flight_tm_get_gps_alt(&msg);
-        gpsState.fix       = mavlink_msg_payload_flight_tm_get_gps_fix(&msg);
-
         // Set the rocket NAS
         setRocketNasState(nasState);
-        setRocketOrigin(gpsState);
 
         Logger::getInstance().log(nasState);
+    }
+    else if (msg.msgid == MAVLINK_MSG_ID_PAYLOAD_STATS_TM)
+    {
+        mavlink_payload_stats_tm_t payloadST;
+        mavlink_msg_payload_stats_tm_decode(&msg, &payloadST);
+
+        // TODO: The origin should have its own struct since only timestamp and
+        // [lat, lon, alt] are needed
+        GPSData gpsState;
+        getRocketOrigin(gpsState);
+        gpsState.gpsTimestamp = payloadST.timestamp;
+        gpsState.latitude     = payloadST.ref_lat;
+        gpsState.longitude    = payloadST.ref_lon;
+        gpsState.height       = payloadST.ref_alt;
+        gpsState.fix          = 3;
+
+        setRocketOrigin(gpsState);
+
+        // Logger::getInstance().log(rocketST);
         Logger::getInstance().log(gpsState);
     }
 
-- 
GitLab