From 2dd6182b103b0767ce3537f394b668d2e9e67a36 Mon Sep 17 00:00:00 2001
From: Davide Mor <davide.mor@skywarder.eu>
Date: Sat, 5 Oct 2024 00:24:12 +0200
Subject: [PATCH] [Main][Payload] Added new event so that SET_CALIBRATION_TC
 doesn't trigger recalibration of all computers

---
 src/boards/Main/Radio/Radio.cpp                             | 6 ++++--
 .../StateMachines/FlightModeManager/FlightModeManager.cpp   | 4 ++++
 src/boards/Payload/Radio/MessageHandler.cpp                 | 6 ++++--
 .../StateMachines/FlightModeManager/FlightModeManager.cpp   | 1 +
 src/boards/common/Events.h                                  | 2 ++
 5 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/boards/Main/Radio/Radio.cpp b/src/boards/Main/Radio/Radio.cpp
index fe8d4473e..7d58d8f5b 100644
--- a/src/boards/Main/Radio/Radio.cpp
+++ b/src/boards/Main/Radio/Radio.cpp
@@ -340,13 +340,15 @@ void Radio::handleMessage(const mavlink_message_t& msg)
                 if (press == 0)
                 {
                     getModule<Sensors>()->resetBaroCalibrationReference();
-                    EventBroker::getInstance().post(TMTC_CALIBRATE, TOPIC_TMTC);
+                    EventBroker::getInstance().post(
+                        TMTC_SET_CALIBRATION_PRESSURE, TOPIC_TMTC);
                     enqueueAck(msg);
                 }
                 else
                 {
                     getModule<Sensors>()->setBaroCalibrationReference(press);
-                    EventBroker::getInstance().post(TMTC_CALIBRATE, TOPIC_TMTC);
+                    EventBroker::getInstance().post(
+                        TMTC_SET_CALIBRATION_PRESSURE, TOPIC_TMTC);
 
                     if (press < 50000)
                     {
diff --git a/src/boards/Main/StateMachines/FlightModeManager/FlightModeManager.cpp b/src/boards/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
index 00101fad1..19289554d 100644
--- a/src/boards/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
+++ b/src/boards/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
@@ -368,6 +368,10 @@ State FlightModeManager::state_disarmed(const Event& event)
             getModule<CanHandler>()->sendEvent(CanConfig::EventId::CALIBRATE);
             return transition(&FlightModeManager::state_calibrate_sensors);
         }
+        case TMTC_SET_CALIBRATION_PRESSURE:
+        {
+            return transition(&FlightModeManager::state_calibrate_sensors);
+        }
         case TMTC_ENTER_TEST_MODE:
         {
             getModule<CanHandler>()->sendEvent(
diff --git a/src/boards/Payload/Radio/MessageHandler.cpp b/src/boards/Payload/Radio/MessageHandler.cpp
index 43166cfba..5d5e322f1 100644
--- a/src/boards/Payload/Radio/MessageHandler.cpp
+++ b/src/boards/Payload/Radio/MessageHandler.cpp
@@ -286,13 +286,15 @@ void Radio::MavlinkBackend::handleMessage(const mavlink_message_t& msg)
             if (press == 0)
             {
                 parent.getModule<Sensors>()->resetBaroCalibrationReference();
-                EventBroker::getInstance().post(TMTC_CALIBRATE, TOPIC_TMTC);
+                EventBroker::getInstance().post(TMTC_SET_CALIBRATION_PRESSURE,
+                                                TOPIC_TMTC);
                 return enqueueAck(msg);
             }
             else
             {
                 parent.getModule<Sensors>()->setBaroCalibrationReference(press);
-                EventBroker::getInstance().post(TMTC_CALIBRATE, TOPIC_TMTC);
+                EventBroker::getInstance().post(TMTC_SET_CALIBRATION_PRESSURE,
+                                                TOPIC_TMTC);
 
                 if (press < 50000)
                 {
diff --git a/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp b/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp
index 75e5bcad0..3a3d514cc 100644
--- a/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp
+++ b/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp
@@ -412,6 +412,7 @@ State FlightModeManager::OnGroundDisarmed(const Event& event)
             getModule<CanHandler>()->sendEvent(CanConfig::EventId::CALIBRATE);
             // Fallthrough
         }
+        case TMTC_SET_CALIBRATION_PRESSURE:
         case CAN_CALIBRATE:
         {
             return transition(&FlightModeManager::OnGroundSensorCalibration);
diff --git a/src/boards/common/Events.h b/src/boards/common/Events.h
index 080074f8b..fc524997e 100644
--- a/src/boards/common/Events.h
+++ b/src/boards/common/Events.h
@@ -114,6 +114,7 @@ enum Events : uint8_t
     TMTC_ARM,
     TMTC_DISARM,
     TMTC_CALIBRATE,
+    TMTC_SET_CALIBRATION_PRESSURE,
     TMTC_FORCE_INIT,
     TMTC_FORCE_LAUNCH,
     TMTC_FORCE_ENGINE_SHUTDOWN,
@@ -248,6 +249,7 @@ inline std::string getEventString(uint8_t event)
         {TMTC_ARM, "TMTC_ARM"},
         {TMTC_DISARM, "TMTC_DISARM"},
         {TMTC_CALIBRATE, "TMTC_CALIBRATE"},
+        {TMTC_SET_CALIBRATION_PRESSURE, "TMTC_SET_CALIBRATION_PRESSURE"},
         {TMTC_FORCE_INIT, "TMTC_FORCE_INIT"},
         {TMTC_FORCE_LAUNCH, "TMTC_FORCE_LAUNCH"},
         {TMTC_FORCE_ENGINE_SHUTDOWN, "TMTC_FORCE_ENGINE_SHUTDOWN"},
-- 
GitLab