From 2930bd3ebe5b5409928890cdd70ec74b38f77fe8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niccol=C3=B2=20Betto?= <niccolo.betto@skywarder.eu>
Date: Mon, 9 Sep 2024 19:58:17 +0200
Subject: [PATCH] [Payload][Stats] Use reference temperature from NAS ref

---
 .../Payload/FlightStatsRecorder/FlightStatsRecorder.cpp    | 7 ++-----
 .../Payload/FlightStatsRecorder/FlightStatsRecorder.h      | 2 +-
 .../Payload/StateMachines/NASController/NASController.cpp  | 3 ++-
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/boards/Payload/FlightStatsRecorder/FlightStatsRecorder.cpp b/src/boards/Payload/FlightStatsRecorder/FlightStatsRecorder.cpp
index 58eb08bd5..a44fc8d43 100644
--- a/src/boards/Payload/FlightStatsRecorder/FlightStatsRecorder.cpp
+++ b/src/boards/Payload/FlightStatsRecorder/FlightStatsRecorder.cpp
@@ -106,7 +106,7 @@ void FlightStatsRecorder::updateAcc(const AccelerometerData &data)
     }
 }
 
-void FlightStatsRecorder::updateNas(const NASState &data)
+void FlightStatsRecorder::updateNas(const NASState &data, float refTemperature)
 {
     auto state = getModule<FlightModeManager>()->getState();
     Lock<FastMutex> lock{statsMutex};
@@ -126,10 +126,7 @@ void FlightStatsRecorder::updateNas(const NASState &data)
             stats.maxSpeedTs  = data.timestamp;
         }
 
-        // TODO: Grab ref temperature from global ReferenceValues
-        float mach = Aeroutils::computeMach(
-            data.d, speed,
-            ReferenceConfig::defaultReferenceValues.refTemperature);
+        float mach = Aeroutils::computeMach(data.d, speed, refTemperature);
 
         if (mach > stats.maxMach)
         {
diff --git a/src/boards/Payload/FlightStatsRecorder/FlightStatsRecorder.h b/src/boards/Payload/FlightStatsRecorder/FlightStatsRecorder.h
index dcc8cc974..3a28c65da 100644
--- a/src/boards/Payload/FlightStatsRecorder/FlightStatsRecorder.h
+++ b/src/boards/Payload/FlightStatsRecorder/FlightStatsRecorder.h
@@ -85,7 +85,7 @@ public:
     void deploymentDetected(uint64_t ts, float alt);
 
     void updateAcc(const Boardcore::AccelerometerData &data);
-    void updateNas(const Boardcore::NASState &data);
+    void updateNas(const Boardcore::NASState &data, float refTemperature);
     void updatePressure(const Boardcore::PressureData &data);
 
 private:
diff --git a/src/boards/Payload/StateMachines/NASController/NASController.cpp b/src/boards/Payload/StateMachines/NASController/NASController.cpp
index c6b4b53f0..93f1c5e5a 100644
--- a/src/boards/Payload/StateMachines/NASController/NASController.cpp
+++ b/src/boards/Payload/StateMachines/NASController/NASController.cpp
@@ -353,8 +353,9 @@ void NASController::update()
     dynamicPitotTimestamp = dynamicPitot.pressureTimestamp;
 
     auto state = nas.getState();
+    auto ref   = nas.getReferenceValues();
 
-    getModule<FlightStatsRecorder>()->updateNas(state);
+    getModule<FlightStatsRecorder>()->updateNas(state, ref.refTemperature);
     Logger::getInstance().log(state);
 }
 
-- 
GitLab