From 79e8daa4fae989fc1e74ec9de2ddd6675376a334 Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Mon, 24 Mar 2025 14:57:26 +0100
Subject: [PATCH 01/10] [ENGINE] Updated sensors for Orion.

---
 .vscode/c_cpp_properties.json   |  22 ++++
 CMakeLists.txt                  |   2 +-
 src/Motor/Sensors/Sensors.cpp   | 194 +++++++++++++++++++++++++-------
 src/Motor/Sensors/Sensors.h     |  35 ++++--
 src/Motor/Sensors/SensorsData.h |  22 +++-
 5 files changed, 216 insertions(+), 59 deletions(-)

diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
index f27148483..8904aa986 100755
--- a/.vscode/c_cpp_properties.json
+++ b/.vscode/c_cpp_properties.json
@@ -487,6 +487,28 @@
                 "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_orion_biscotto"
             ]
         },
+        {
+            "name": "stm32f767zi_orion_engine",
+            "cStandard": "c11",
+            "cppStandard": "c++14",
+            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
+            "defines": [
+                "${defaultDefines}",
+                "_MIOSIX_BOARDNAME=stm32f767zi_orion_engine",
+                "_BOARD_STM32F767ZI_ORION_ENGINE",
+                "_ARCH_CORTEXM7_STM32F7",
+                "HSE_VALUE=25000000",
+                "SYSCLK_FREQ_216MHz=216000000",
+                "__ENABLE_XRAM",
+                "V_DDA_VOLTAGE=3.3f"
+            ],
+            "includePath": [
+                "${defaultIncludePaths}",
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_orion_engine/config",
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_orion_engine"
+            ]
+        },
         {
             "name": "logdecoder",
             "includePath": [
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1902a11e2..34f5723f2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -66,7 +66,7 @@ sbs_target(payload-entry-euroc stm32f767zi_lyra_biscotto)
 
 add_executable(motor-entry src/Motor/motor-entry.cpp ${MOTOR_SOURCES})
 target_include_directories(motor-entry PRIVATE ${OBSW_INCLUDE_DIRS})
-sbs_target(motor-entry stm32f767zi_lyra_motor)
+sbs_target(motor-entry stm32f767zi_orion_engine)
 
 add_executable(rig-v2-entry src/RIGv2/rig-v2-entry.cpp ${RIG_V2_COMPUTER})
 target_include_directories(rig-v2-entry PRIVATE ${OBSW_INCLUDE_DIRS})
diff --git a/src/Motor/Sensors/Sensors.cpp b/src/Motor/Sensors/Sensors.cpp
index c930178ca..06211420c 100644
--- a/src/Motor/Sensors/Sensors.cpp
+++ b/src/Motor/Sensors/Sensors.cpp
@@ -48,8 +48,9 @@ bool Sensors::start()
     if (Config::Sensors::ADS131M08::ENABLED)
     {
         ads131m08Init();
-        topTankPressureInit();
-        bottomTankPressureInit();
+        oxTopTankPressureInit();
+        oxBottomTankPressureInit();
+        n2TankPressureInit();
         ccPressureInit();
         tankTempInit();
     }
@@ -97,20 +98,37 @@ LIS2MDLData Sensors::getLIS2MDLLastSample()
     return lis2mdl ? lis2mdl->getLastSample() : LIS2MDLData{};
 }
 
-LSM6DSRXData Sensors::getLSM6DSRXLastSample()
+LSM6DSRXData Sensors::getLSM6DSRX0LastSample()
 {
-    return lsm6dsrx ? lsm6dsrx->getLastSample() : LSM6DSRXData{};
+    return lsm6dsrx0 ? lsm6dsrx0->getLastSample() : LSM6DSRXData{};
 }
 
-PressureData Sensors::getTopTankPressLastSample()
+LSM6DSRXData Sensors::getLSM6DSRX1LastSample()
 {
-    return topTankPressure ? topTankPressure->getLastSample() : PressureData{};
+    return lsm6dsrx1 ? lsm6dsrx1->getLastSample() : LSM6DSRXData{};
 }
 
-PressureData Sensors::getBottomTankPressLastSample()
+PressureData Sensors::getOxTopTankPressLastSample()
 {
-    return bottomTankPressure ? bottomTankPressure->getLastSample()
-                              : PressureData{};
+    return oxTopTankPressure ? oxTopTankPressure->getLastSample()
+                             : PressureData{};
+}
+
+PressureData Sensors::getOxBottomTankPress0LastSample()
+{
+    return oxBottomTankPressure0 ? oxBottomTankPressure0->getLastSample()
+                                 : PressureData{};
+}
+
+PressureData Sensors::getOxBottomTankPress1LastSample()
+{
+    return oxBottomTankPressure1 ? oxBottomTankPressure1->getLastSample()
+                                 : PressureData{};
+}
+
+PressureData Sensors::getN2TankPressLastSample()
+{
+    return n2TankPressure ? n2TankPressure->getLastSample() : PressureData{};
 }
 
 PressureData Sensors::getCCPressLastSample()
@@ -146,8 +164,11 @@ std::vector<SensorInfo> Sensors::getSensorInfos()
         if (lis2mdl)
             infos.push_back(manager->getSensorInfo(lis2mdl.get()));
 
-        if (lsm6dsrx)
-            infos.push_back(manager->getSensorInfo(lsm6dsrx.get()));
+        if (lsm6dsrx0)
+            infos.push_back(manager->getSensorInfo(lsm6dsrx0.get()));
+
+        if (lsm6dsrx1)
+            infos.push_back(manager->getSensorInfo(lsm6dsrx1.get()));
 
         if (ads131m08)
             infos.push_back(manager->getSensorInfo(ads131m08.get()));
@@ -155,11 +176,19 @@ std::vector<SensorInfo> Sensors::getSensorInfos()
         if (internalAdc)
             infos.push_back(manager->getSensorInfo(internalAdc.get()));
 
-        if (topTankPressure)
-            infos.push_back(manager->getSensorInfo(topTankPressure.get()));
+        if (oxTopTankPressure)
+            infos.push_back(manager->getSensorInfo(oxTopTankPressure.get()));
+
+        if (oxBottomTankPressure0)
+            infos.push_back(
+                manager->getSensorInfo(oxBottomTankPressure0.get()));
+
+        if (oxBottomTankPressure1)
+            infos.push_back(
+                manager->getSensorInfo(oxBottomTankPressure1.get()));
 
-        if (bottomTankPressure)
-            infos.push_back(manager->getSensorInfo(bottomTankPressure.get()));
+        if (n2TankPressure)
+            infos.push_back(manager->getSensorInfo(n2TankPressure.get()));
 
         if (ccPressure)
             infos.push_back(manager->getSensorInfo(ccPressure.get()));
@@ -249,18 +278,34 @@ void Sensors::lsm6dsrxInit()
         LSM6DSRXConfig::FIFO_TIMESTAMP_DECIMATION::DEC_1;
     config.fifoTemperatureBdr = LSM6DSRXConfig::FIFO_TEMPERATURE_BDR::DISABLED;
 
-    lsm6dsrx = std::make_unique<LSM6DSRX>(getModule<Buses>()->getLSM6DSRX(),
-                                          sensors::LSM6DSRX::cs::getPin(),
-                                          spiConfig, config);
+    lsm6dsrx0 = std::make_unique<LSM6DSRX>(getModule<Buses>()->getLSM6DSRX(),
+                                           sensors::LSM6DSRX0::cs::getPin(),
+                                           spiConfig, config);
+    lsm6dsrx1 = std::make_unique<LSM6DSRX>(getModule<Buses>()->getLSM6DSRX(),
+                                           sensors::LSM6DSRX1::cs::getPin(),
+                                           spiConfig, config);
 }
 
-void Sensors::lsm6dsrxCallback()
+void Sensors::lsm6dsrx0Callback()
 {
-    if (!lsm6dsrx)
+    if (!lsm6dsrx0)
         return;
 
     uint16_t lastFifoSize;
-    const auto lastFifo = lsm6dsrx->getLastFifo(lastFifoSize);
+    const auto lastFifo = lsm6dsrx0->getLastFifo(lastFifoSize);
+
+    // For every instance inside the fifo log the sample
+    for (uint16_t i = 0; i < lastFifoSize; i++)
+        sdLogger.log(lastFifo.at(i));
+}
+
+void Sensors::lsm6dsrx1Callback()
+{
+    if (!lsm6dsrx1)
+        return;
+
+    uint16_t lastFifoSize;
+    const auto lastFifo = lsm6dsrx1->getLastFifo(lastFifoSize);
 
     // For every instance inside the fifo log the sample
     for (uint16_t i = 0; i < lastFifoSize; i++)
@@ -335,9 +380,9 @@ void Sensors::internalAdcCallback()
     sdLogger.log(getInternalADCLastSample());
 }
 
-void Sensors::topTankPressureInit()
+void Sensors::oxTopTankPressureInit()
 {
-    topTankPressure = std::make_unique<TrafagPressureSensor>(
+    oxTopTankPressure = std::make_unique<TrafagPressureSensor>(
         [this]()
         {
             auto sample = getADS131M08LastSample();
@@ -348,31 +393,75 @@ void Sensors::topTankPressureInit()
         Config::Sensors::Trafag::TANK_TOP_MAX_PRESSURE,
         Config::Sensors::Trafag::MIN_CURRENT,
         Config::Sensors::Trafag::MAX_CURRENT);
+    // TODO: is configuration correct?
 }
 
-void Sensors::topTankPressureCallback()
+void Sensors::oxTopTankPressureCallback()
 {
-    sdLogger.log(TopTankPressureData{getTopTankPressLastSample()});
+    sdLogger.log(OxTopTankPressureData{getOxTopTankPressLastSample()});
 }
 
-void Sensors::bottomTankPressureInit()
+void Sensors::oxBottomTankPressureInit()
 {
-    bottomTankPressure = std::make_unique<TrafagPressureSensor>(
+    oxBottomTankPressure0 = std::make_unique<TrafagPressureSensor>(
         [this]()
         {
             auto sample = getADS131M08LastSample();
             return sample.getVoltage(
                 Config::Sensors::ADS131M08::TANK_BOTTOM_PT_CHANNEL);
+            // TODO: which is the correct channel?
         },
         Config::Sensors::Trafag::TANK_BOTTOM_SHUNT_RESISTANCE,
         Config::Sensors::Trafag::TANK_BOTTOM_MAX_PRESSURE,
         Config::Sensors::Trafag::MIN_CURRENT,
         Config::Sensors::Trafag::MAX_CURRENT);
+    // TODO: is this configuration correct?
+
+    oxBottomTankPressure1 = std::make_unique<TrafagPressureSensor>(
+        [this]()
+        {
+            auto sample = getADS131M08LastSample();
+            return sample.getVoltage(
+                Config::Sensors::ADS131M08::TANK_BOTTOM_PT_CHANNEL);
+            // TODO: which is the correct channel?
+        },
+        Config::Sensors::Trafag::TANK_BOTTOM_SHUNT_RESISTANCE,
+        Config::Sensors::Trafag::TANK_BOTTOM_MAX_PRESSURE,
+        Config::Sensors::Trafag::MIN_CURRENT,
+        Config::Sensors::Trafag::MAX_CURRENT);
+    // TODO: is this configuration correct?
+}
+
+void Sensors::oxBottomTankPressure0Callback()
+{
+    sdLogger.log(OxBottomTankPressureData{getOxBottomTankPress0LastSample()});
+}
+
+void Sensors::oxBottomTankPressure1Callback()
+{
+    sdLogger.log(OxBottomTankPressureData{getOxBottomTankPress1LastSample()});
+}
+
+void Sensors::n2TankPressureInit()
+{
+    n2TankPressure = std::make_unique<TrafagPressureSensor>(
+        [this]()
+        {
+            auto sample = getADS131M08LastSample();
+            return sample.getVoltage(
+                Config::Sensors::ADS131M08::TANK_TOP_PT_CHANNEL);
+            // TODO: which is the correct channel?
+        },
+        Config::Sensors::Trafag::TANK_TOP_SHUNT_RESISTANCE,
+        Config::Sensors::Trafag::TANK_TOP_MAX_PRESSURE,
+        Config::Sensors::Trafag::MIN_CURRENT,
+        Config::Sensors::Trafag::MAX_CURRENT);
+    // TODO: is this configuration correct?
 }
 
-void Sensors::bottomTankPressureCallback()
+void Sensors::n2TankPressureCallback()
 {
-    sdLogger.log(BottomTankPressureData{getBottomTankPressLastSample()});
+    sdLogger.log(N2TankPressureData{getN2TankPressLastSample()});
 }
 
 void Sensors::ccPressureInit()
@@ -438,11 +527,18 @@ bool Sensors::sensorManagerInit()
         map.emplace(lis2mdl.get(), lis2mdlInfo);
     }
 
-    if (lsm6dsrx)
+    if (lsm6dsrx0)
     {
-        SensorInfo lsm6dsrxInfo{"LSM6DSRX", Config::Sensors::LSM6DSRX::RATE,
-                                [this]() { lsm6dsrxCallback(); }};
-        map.emplace(lsm6dsrx.get(), lsm6dsrxInfo);
+        SensorInfo lsm6dsrxInfo{"LSM6DSRX0", Config::Sensors::LSM6DSRX::RATE,
+                                [this]() { lsm6dsrx0Callback(); }};
+        map.emplace(lsm6dsrx0.get(), lsm6dsrxInfo);
+    }
+
+    if (lsm6dsrx1)
+    {
+        SensorInfo lsm6dsrxInfo{"LSM6DSRX1", Config::Sensors::LSM6DSRX::RATE,
+                                [this]() { lsm6dsrx1Callback(); }};
+        map.emplace(lsm6dsrx1.get(), lsm6dsrxInfo);
     }
 
     if (ads131m08)
@@ -460,18 +556,34 @@ bool Sensors::sensorManagerInit()
         map.emplace(internalAdc.get(), internalAdcInfo);
     }
 
-    if (topTankPressure)
+    if (oxTopTankPressure)
+    {
+        SensorInfo info{"OxTopTankPressure", Config::Sensors::ADS131M08::RATE,
+                        [this]() { oxTopTankPressureCallback(); }};
+        map.emplace(std::make_pair(oxTopTankPressure.get(), info));
+    }
+
+    if (oxBottomTankPressure0)
+    {
+        SensorInfo info{"OxBottomTankPressure0",
+                        Config::Sensors::ADS131M08::RATE,
+                        [this]() { oxBottomTankPressure0Callback(); }};
+        map.emplace(std::make_pair(oxBottomTankPressure0.get(), info));
+    }
+
+    if (oxBottomTankPressure1)
     {
-        SensorInfo info{"TopTankPressure", Config::Sensors::ADS131M08::RATE,
-                        [this]() { topTankPressureCallback(); }};
-        map.emplace(std::make_pair(topTankPressure.get(), info));
+        SensorInfo info{"OxBottomTankPressure1",
+                        Config::Sensors::ADS131M08::RATE,
+                        [this]() { oxBottomTankPressure1Callback(); }};
+        map.emplace(std::make_pair(oxBottomTankPressure1.get(), info));
     }
 
-    if (bottomTankPressure)
+    if (n2TankPressure)
     {
-        SensorInfo info{"BottomTankPressure", Config::Sensors::ADS131M08::RATE,
-                        [this]() { bottomTankPressureCallback(); }};
-        map.emplace(std::make_pair(bottomTankPressure.get(), info));
+        SensorInfo info{"N2TankPressure", Config::Sensors::ADS131M08::RATE,
+                        [this]() { n2TankPressureCallback(); }};
+        map.emplace(std::make_pair(n2TankPressure.get(), info));
     }
 
     if (ccPressure)
diff --git a/src/Motor/Sensors/Sensors.h b/src/Motor/Sensors/Sensors.h
index ce8b56fd4..810fbfc22 100644
--- a/src/Motor/Sensors/Sensors.h
+++ b/src/Motor/Sensors/Sensors.h
@@ -54,10 +54,13 @@ public:
     Boardcore::LPS22DFData getLPS22DFLastSample();
     Boardcore::H3LIS331DLData getH3LIS331DLLastSample();
     Boardcore::LIS2MDLData getLIS2MDLLastSample();
-    Boardcore::LSM6DSRXData getLSM6DSRXLastSample();
+    Boardcore::LSM6DSRXData getLSM6DSRX0LastSample();
+    Boardcore::LSM6DSRXData getLSM6DSRX1LastSample();
 
-    Boardcore::PressureData getTopTankPressLastSample();
-    Boardcore::PressureData getBottomTankPressLastSample();
+    Boardcore::PressureData getOxTopTankPressLastSample();
+    Boardcore::PressureData getOxBottomTankPress0LastSample();
+    Boardcore::PressureData getOxBottomTankPress1LastSample();
+    Boardcore::PressureData getN2TankPressLastSample();
     Boardcore::PressureData getCCPressLastSample();
     Boardcore::TemperatureData getTankTempLastSample();
     Boardcore::VoltageData getBatteryVoltageLastSample();
@@ -73,13 +76,16 @@ protected:
     std::unique_ptr<Boardcore::LPS22DF> lps22df;
     std::unique_ptr<Boardcore::H3LIS331DL> h3lis331dl;
     std::unique_ptr<Boardcore::LIS2MDL> lis2mdl;
-    std::unique_ptr<Boardcore::LSM6DSRX> lsm6dsrx;
+    std::unique_ptr<Boardcore::LSM6DSRX> lsm6dsrx0;
+    std::unique_ptr<Boardcore::LSM6DSRX> lsm6dsrx1;
     std::unique_ptr<Boardcore::ADS131M08> ads131m08;
     std::unique_ptr<Boardcore::InternalADC> internalAdc;
 
     // Analog sensors
-    std::unique_ptr<Boardcore::TrafagPressureSensor> topTankPressure;
-    std::unique_ptr<Boardcore::TrafagPressureSensor> bottomTankPressure;
+    std::unique_ptr<Boardcore::TrafagPressureSensor> oxTopTankPressure;
+    std::unique_ptr<Boardcore::TrafagPressureSensor> oxBottomTankPressure0;
+    std::unique_ptr<Boardcore::TrafagPressureSensor> oxBottomTankPressure1;
+    std::unique_ptr<Boardcore::TrafagPressureSensor> n2TankPressure;
     std::unique_ptr<Boardcore::TrafagPressureSensor> ccPressure;
     std::unique_ptr<KuliteThermocouple> tankTemp;
 
@@ -95,8 +101,10 @@ private:
     void lis2mdlInit();
     void lis2mdlCallback();
 
+    /// @brief Initialize both lsm6dsrx sensors.
     void lsm6dsrxInit();
-    void lsm6dsrxCallback();
+    void lsm6dsrx0Callback();
+    void lsm6dsrx1Callback();
 
     void ads131m08Init();
     void ads131m08Callback();
@@ -104,11 +112,16 @@ private:
     void internalAdcInit();
     void internalAdcCallback();
 
-    void topTankPressureInit();
-    void topTankPressureCallback();
+    void oxTopTankPressureInit();
+    void oxTopTankPressureCallback();
 
-    void bottomTankPressureInit();
-    void bottomTankPressureCallback();
+    /// @brief Initialize both ox bottom pressure sensors.
+    void oxBottomTankPressureInit();
+    void oxBottomTankPressure0Callback();
+    void oxBottomTankPressure1Callback();
+
+    void n2TankPressureInit();
+    void n2TankPressureCallback();
 
     void ccPressureInit();
     void ccPressureCallback();
diff --git a/src/Motor/Sensors/SensorsData.h b/src/Motor/Sensors/SensorsData.h
index b205266fb..168cf941c 100644
--- a/src/Motor/Sensors/SensorsData.h
+++ b/src/Motor/Sensors/SensorsData.h
@@ -26,24 +26,34 @@
 namespace Motor
 {
 
-struct TopTankPressureData : Boardcore::PressureData
+struct OxTopTankPressureData : Boardcore::PressureData
 {
-    explicit TopTankPressureData(const Boardcore::PressureData& data)
+    explicit OxTopTankPressureData(const Boardcore::PressureData& data)
         : Boardcore::PressureData{data}
     {
     }
 
-    TopTankPressureData() {}
+    OxTopTankPressureData() {}
 };
 
-struct BottomTankPressureData : Boardcore::PressureData
+struct OxBottomTankPressureData : Boardcore::PressureData
 {
-    explicit BottomTankPressureData(const Boardcore::PressureData& data)
+    explicit OxBottomTankPressureData(const Boardcore::PressureData& data)
         : Boardcore::PressureData{data}
     {
     }
 
-    BottomTankPressureData() {}
+    OxBottomTankPressureData() {}
+};
+
+struct N2TankPressureData : Boardcore::PressureData
+{
+    explicit N2TankPressureData(const Boardcore::PressureData& data)
+        : Boardcore::PressureData{data}
+    {
+    }
+
+    N2TankPressureData() {}
 };
 
 struct CCPressureData : Boardcore::PressureData
-- 
GitLab


From 9a7e178ca9b55822096ba70185ed0c4f00660363 Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Mon, 24 Mar 2025 22:40:20 +0100
Subject: [PATCH 02/10] [ENGINE] Updated actuators and can handler with Orion
 servo valves.

---
 src/Motor/Actuators/Actuators.cpp   | 38 ++++++++++++++++----
 src/Motor/Actuators/Actuators.h     |  4 +--
 src/Motor/CanHandler/CanHandler.cpp | 55 +++++++++++++++++++++++++----
 src/common/CanConfig.h              |  6 ++--
 4 files changed, 86 insertions(+), 17 deletions(-)

diff --git a/src/Motor/Actuators/Actuators.cpp b/src/Motor/Actuators/Actuators.cpp
index 8582d035f..592999f9c 100644
--- a/src/Motor/Actuators/Actuators.cpp
+++ b/src/Motor/Actuators/Actuators.cpp
@@ -74,24 +74,46 @@ float Actuators::ServoInfo::getServoPosition()
 Actuators::Actuators()
 {
     infos[0].servo = std::make_unique<Servo>(
-        MIOSIX_SERVOS_1_TIM, TimerUtils::Channel::MIOSIX_SERVOS_1_CHANNEL,
+        MIOSIX_SERVOS_0_TIM, TimerUtils::Channel::MIOSIX_SERVOS_0_CHANNEL,
         Config::Servos::MIN_PULSE, Config::Servos::MAX_PULSE,
         Config::Servos::FREQUENCY);
     infos[1].servo = std::make_unique<Servo>(
+        MIOSIX_SERVOS_1_TIM, TimerUtils::Channel::MIOSIX_SERVOS_1_CHANNEL,
+        Config::Servos::MIN_PULSE, Config::Servos::MAX_PULSE,
+        Config::Servos::FREQUENCY);
+    infos[2].servo = std::make_unique<Servo>(
         MIOSIX_SERVOS_2_TIM, TimerUtils::Channel::MIOSIX_SERVOS_2_CHANNEL,
         Config::Servos::MIN_PULSE, Config::Servos::MAX_PULSE,
         Config::Servos::FREQUENCY);
+    infos[3].servo = std::make_unique<Servo>(
+        MIOSIX_SERVOS_3_TIM, TimerUtils::Channel::MIOSIX_SERVOS_3_CHANNEL,
+        Config::Servos::MIN_PULSE, Config::Servos::MAX_PULSE,
+        Config::Servos::FREQUENCY);
 
     ServoInfo* info;
     info          = getServo(ServosList::MAIN_VALVE);
     info->limit   = Config::Servos::MAIN_LIMIT;
     info->flipped = Config::Servos::MAIN_FLIPPED;
     info->unsafeSetServoPosition(0.0f);
+    // TODO: is the configuration correct? Same as lyra
+
+    info          = getServo(ServosList::OX_VENTING_VALVE);
+    info->limit   = Config::Servos::VENTING_LIMIT;
+    info->flipped = Config::Servos::VENTING_FLIPPED;
+    info->unsafeSetServoPosition(0.0f);
+    // TODO: is the configuration correct? Same as lyra
+
+    info          = getServo(ServosList::NITROGEN_VALVE);
+    info->limit   = Config::Servos::VENTING_LIMIT;
+    info->flipped = Config::Servos::VENTING_FLIPPED;
+    info->unsafeSetServoPosition(0.0f);
+    // TODO: is the configuration correct?
 
-    info          = getServo(ServosList::VENTING_VALVE);
+    info          = getServo(ServosList::N2_QUENCHING_VALVE);
     info->limit   = Config::Servos::VENTING_LIMIT;
     info->flipped = Config::Servos::VENTING_FLIPPED;
     info->unsafeSetServoPosition(0.0f);
+    // TODO: is the configuration correct?
 }
 
 bool Actuators::start()
@@ -99,8 +121,8 @@ bool Actuators::start()
     TaskScheduler& scheduler =
         getModule<BoardScheduler>()->getActuatorsScheduler();
 
-    infos[0].servo->enable();
-    infos[1].servo->enable();
+    for (size_t i = 0; i < infos.size(); ++i)
+        infos[i].servo->enable();
 
     // Reset all actions
     lastActionTs = getTime();
@@ -165,10 +187,14 @@ Actuators::ServoInfo* Actuators::getServo(ServosList servo)
 {
     switch (servo)
     {
-        case VENTING_VALVE:
+        case OX_VENTING_VALVE:
             return &infos[0];
         case MAIN_VALVE:
             return &infos[1];
+        case NITROGEN_VALVE:
+            return &infos[2];
+        case N2_QUENCHING_VALVE:
+            return &infos[3];
 
         default:
             // Oh FUCK
@@ -251,7 +277,7 @@ void Actuators::updatePositionsTask()
     if (shouldVent)
     {
         // Open for at least timeout time
-        openServoWithTime(ServosList::VENTING_VALVE,
+        openServoWithTime(ServosList::OX_VENTING_VALVE,
                           Config::Servos::SERVO_ACTION_TIMEOUT + 1000);
     }
 }
diff --git a/src/Motor/Actuators/Actuators.h b/src/Motor/Actuators/Actuators.h
index 15133ade1..2cfad5c92 100644
--- a/src/Motor/Actuators/Actuators.h
+++ b/src/Motor/Actuators/Actuators.h
@@ -25,7 +25,7 @@
 #include <Motor/BoardScheduler.h>
 #include <Motor/CanHandler/CanHandler.h>
 #include <actuators/Servo/Servo.h>
-#include <common/MavlinkLyra.h>
+#include <common/MavlinkOrion.h>
 #include <utils/DependencyManager/DependencyManager.h>
 
 namespace Motor
@@ -76,7 +76,7 @@ private:
     miosix::FastMutex infosMutex;
     // Timestamp of last servo action
     long long lastActionTs = 0;
-    ServoInfo infos[2]     = {};
+    std::array<ServoInfo, 4> infos;
 };
 
 }  // namespace Motor
diff --git a/src/Motor/CanHandler/CanHandler.cpp b/src/Motor/CanHandler/CanHandler.cpp
index a110d856d..8a26ffb3d 100644
--- a/src/Motor/CanHandler/CanHandler.cpp
+++ b/src/Motor/CanHandler/CanHandler.cpp
@@ -100,18 +100,37 @@ bool CanHandler::start()
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
                 static_cast<uint8_t>(CanConfig::Board::MOTOR),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
-                static_cast<uint8_t>(CanConfig::SensorId::TOP_TANK_PRESSURE),
+                static_cast<uint8_t>(CanConfig::SensorId::OX_TOP_TANK_PRESSURE),
                 static_cast<PressureData>(
-                    sensors->getTopTankPressLastSample()));
+                    sensors->getOxTopTankPressLastSample()));
 
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
                 static_cast<uint8_t>(CanConfig::Board::MOTOR),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
-                static_cast<uint8_t>(CanConfig::SensorId::BOTTOM_TANK_PRESSURE),
+                static_cast<uint8_t>(
+                    CanConfig::SensorId::OX_BOTTOM_TANK_PRESSURE_0),
                 static_cast<PressureData>(
-                    sensors->getBottomTankPressLastSample()));
+                    sensors->getOxBottomTankPress0LastSample()));
+
+            protocol.enqueueData(
+                static_cast<uint8_t>(CanConfig::Priority::HIGH),
+                static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
+                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::BROADCAST),
+                static_cast<uint8_t>(
+                    CanConfig::SensorId::OX_BOTTOM_TANK_PRESSURE_1),
+                static_cast<PressureData>(
+                    sensors->getOxBottomTankPress1LastSample()));
+
+            protocol.enqueueData(
+                static_cast<uint8_t>(CanConfig::Priority::HIGH),
+                static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
+                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::BROADCAST),
+                static_cast<uint8_t>(CanConfig::SensorId::N2_TANK_PRESSURE),
+                static_cast<PressureData>(sensors->getN2TankPressLastSample()));
         },
         Config::CanHandler::PRESSURE_PERIOD);
 
@@ -172,11 +191,33 @@ bool CanHandler::start()
                 static_cast<uint8_t>(CanConfig::PrimaryType::ACTUATORS),
                 static_cast<uint8_t>(CanConfig::Board::MOTOR),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
-                static_cast<uint8_t>(ServosList::VENTING_VALVE),
+                static_cast<uint8_t>(ServosList::OX_VENTING_VALVE),
+                ServoFeedback{
+                    TimestampTimer::getTimestamp(),
+                    actuators->getServoPosition(ServosList::OX_VENTING_VALVE),
+                    actuators->isServoOpen(ServosList::OX_VENTING_VALVE)});
+
+            protocol.enqueueData(
+                static_cast<uint8_t>(CanConfig::Priority::HIGH),
+                static_cast<uint8_t>(CanConfig::PrimaryType::ACTUATORS),
+                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::BROADCAST),
+                static_cast<uint8_t>(ServosList::NITROGEN_VALVE),
+                ServoFeedback{
+                    TimestampTimer::getTimestamp(),
+                    actuators->getServoPosition(ServosList::NITROGEN_VALVE),
+                    actuators->isServoOpen(ServosList::NITROGEN_VALVE)});
+
+            protocol.enqueueData(
+                static_cast<uint8_t>(CanConfig::Priority::HIGH),
+                static_cast<uint8_t>(CanConfig::PrimaryType::ACTUATORS),
+                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::BROADCAST),
+                static_cast<uint8_t>(ServosList::N2_QUENCHING_VALVE),
                 ServoFeedback{
                     TimestampTimer::getTimestamp(),
-                    actuators->getServoPosition(ServosList::VENTING_VALVE),
-                    actuators->isServoOpen(ServosList::VENTING_VALVE)});
+                    actuators->getServoPosition(ServosList::N2_QUENCHING_VALVE),
+                    actuators->isServoOpen(ServosList::N2_QUENCHING_VALVE)});
         },
         Config::CanHandler::ACTUATORS_PERIOD);
 
diff --git a/src/common/CanConfig.h b/src/common/CanConfig.h
index 579c5c920..60fff984b 100644
--- a/src/common/CanConfig.h
+++ b/src/common/CanConfig.h
@@ -77,8 +77,10 @@ enum class SensorId : uint8_t
     PITOT_STATIC_PRESSURE,
     PITOT_TOTAL_PRESSURE,
     CC_PRESSURE,
-    BOTTOM_TANK_PRESSURE,
-    TOP_TANK_PRESSURE,
+    OX_BOTTOM_TANK_PRESSURE_0,
+    OX_BOTTOM_TANK_PRESSURE_1,
+    OX_TOP_TANK_PRESSURE,
+    N2_TANK_PRESSURE,
     TANK_TEMPERATURE,
     MOTOR_ACTUATORS_CURRENT,
     MAIN_BOARD_CURRENT,
-- 
GitLab


From 51e014b0ce33d6c6e7adb56bc35e5e846fc3639d Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Mon, 24 Mar 2025 22:45:47 +0100
Subject: [PATCH 03/10] [ENGINE] Updated HIL with Orion servo valves.

---
 src/Motor/HIL/HIL.cpp   |  5 ++++-
 src/Motor/HIL/HILData.h | 24 +++++++++++++++++-------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/Motor/HIL/HIL.cpp b/src/Motor/HIL/HIL.cpp
index 4f5f6ded0..233886465 100644
--- a/src/Motor/HIL/HIL.cpp
+++ b/src/Motor/HIL/HIL.cpp
@@ -134,7 +134,10 @@ ActuatorData MotorHIL::updateActuatorData()
 
     ActuatorsStateHIL actuatorsStateHIL{
         (actuators->getServoPosition(MAIN_VALVE)),
-        (actuators->getServoPosition(VENTING_VALVE))};
+        (actuators->getServoPosition(OX_VENTING_VALVE)),
+        (actuators->getServoPosition(NITROGEN_VALVE)),
+        (actuators->getServoPosition(N2_QUENCHING_VALVE)),
+    };
 
     // Returning the feedback for the simulator
     return ActuatorData{actuatorsStateHIL};
diff --git a/src/Motor/HIL/HILData.h b/src/Motor/HIL/HILData.h
index 14051e452..2728875d1 100644
--- a/src/Motor/HIL/HILData.h
+++ b/src/Motor/HIL/HILData.h
@@ -46,17 +46,24 @@ enum class MotorFlightPhases
 
 struct ActuatorsStateHIL
 {
-    float mainValvePercentage    = 0;
-    float ventingValvePercentage = 0;
+    float mainValvePercentage        = 0;
+    float oxVentingValvePercentage   = 0;
+    float nitrogenValvePercentage    = 0;
+    float n2QuenchingValvePercentage = 0;
 
     ActuatorsStateHIL()
-        : mainValvePercentage(0.0f), ventingValvePercentage(0.0f)
+        : mainValvePercentage(0.0f), oxVentingValvePercentage(0.0f),
+          nitrogenValvePercentage(0.0f), n2QuenchingValvePercentage(0.0f)
     {
     }
 
-    ActuatorsStateHIL(float mainValvePercentage, float ventingValvePercentage)
+    ActuatorsStateHIL(float mainValvePercentage, float oxVentingValvePercentage,
+                      float nitrogenValvePercentage,
+                      float n2QuenchingValvePercentage)
         : mainValvePercentage(mainValvePercentage),
-          ventingValvePercentage(ventingValvePercentage)
+          oxVentingValvePercentage(oxVentingValvePercentage),
+          nitrogenValvePercentage(nitrogenValvePercentage),
+          n2QuenchingValvePercentage(n2QuenchingValvePercentage)
     {
     }
 
@@ -64,8 +71,11 @@ struct ActuatorsStateHIL
     {
         printf(
             "mainValve: %f perc\n"
-            "venting: %f perc\n",
-            mainValvePercentage * 100, ventingValvePercentage * 100);
+            "oxVenting: %f perc\n"
+            "nitrogen: %f perc\n"
+            "n2Quenching: %f perc\n",
+            mainValvePercentage * 100, oxVentingValvePercentage * 100,
+            nitrogenValvePercentage * 100, n2QuenchingValvePercentage * 100);
     }
 };
 
-- 
GitLab


From 67a7cf58aae4f4ac3e23607465bccdef9170322f Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Wed, 26 Mar 2025 18:34:43 +0100
Subject: [PATCH 04/10] [ENGINE] Added placeholders for sensor and servo
 configurations.

---
 src/Motor/Actuators/Actuators.cpp   | 16 ++++------
 src/Motor/Configs/ActuatorsConfig.h | 14 ++++++---
 src/Motor/Configs/SensorsConfig.h   | 33 +++++++++++++++-----
 src/Motor/Sensors/Sensors.cpp       | 48 ++++++++++++++++-------------
 4 files changed, 68 insertions(+), 43 deletions(-)

diff --git a/src/Motor/Actuators/Actuators.cpp b/src/Motor/Actuators/Actuators.cpp
index 592999f9c..70878c249 100644
--- a/src/Motor/Actuators/Actuators.cpp
+++ b/src/Motor/Actuators/Actuators.cpp
@@ -95,25 +95,21 @@ Actuators::Actuators()
     info->limit   = Config::Servos::MAIN_LIMIT;
     info->flipped = Config::Servos::MAIN_FLIPPED;
     info->unsafeSetServoPosition(0.0f);
-    // TODO: is the configuration correct? Same as lyra
 
     info          = getServo(ServosList::OX_VENTING_VALVE);
-    info->limit   = Config::Servos::VENTING_LIMIT;
-    info->flipped = Config::Servos::VENTING_FLIPPED;
+    info->limit   = Config::Servos::OX_VENTING_LIMIT;
+    info->flipped = Config::Servos::OX_VENTING_FLIPPED;
     info->unsafeSetServoPosition(0.0f);
-    // TODO: is the configuration correct? Same as lyra
 
     info          = getServo(ServosList::NITROGEN_VALVE);
-    info->limit   = Config::Servos::VENTING_LIMIT;
-    info->flipped = Config::Servos::VENTING_FLIPPED;
+    info->limit   = Config::Servos::NITROGEN_LIMIT;
+    info->flipped = Config::Servos::NITROGEN_FLIPPED;
     info->unsafeSetServoPosition(0.0f);
-    // TODO: is the configuration correct?
 
     info          = getServo(ServosList::N2_QUENCHING_VALVE);
-    info->limit   = Config::Servos::VENTING_LIMIT;
-    info->flipped = Config::Servos::VENTING_FLIPPED;
+    info->limit   = Config::Servos::N2_QUENCHING_LIMIT;
+    info->flipped = Config::Servos::N2_QUENCHING_FLIPPED;
     info->unsafeSetServoPosition(0.0f);
-    // TODO: is the configuration correct?
 }
 
 bool Actuators::start()
diff --git a/src/Motor/Configs/ActuatorsConfig.h b/src/Motor/Configs/ActuatorsConfig.h
index 36a876cd7..820b74693 100644
--- a/src/Motor/Configs/ActuatorsConfig.h
+++ b/src/Motor/Configs/ActuatorsConfig.h
@@ -49,11 +49,17 @@ constexpr float SERVO_CONFIDENCE           = 0.02;  // 2%
 // Timeout is currently set at 2h
 constexpr long long SERVO_ACTION_TIMEOUT = 2 * 60 * 60 * 1000;
 
-constexpr float VENTING_LIMIT = 0.90f;
-constexpr float MAIN_LIMIT    = 0.90f;
+// TODO: check this values
+constexpr float OX_VENTING_LIMIT   = 0.90f;
+constexpr float MAIN_LIMIT         = 0.90f;
+constexpr float NITROGEN_LIMIT     = 0.90f;
+constexpr float N2_QUENCHING_LIMIT = 0.90f;
 
-constexpr bool VENTING_FLIPPED = true;
-constexpr bool MAIN_FLIPPED    = true;
+// TODO: check this values
+constexpr bool OX_VENTING_FLIPPED   = true;
+constexpr bool MAIN_FLIPPED         = true;
+constexpr bool NITROGEN_FLIPPED     = true;
+constexpr bool N2_QUENCHING_FLIPPED = true;
 
 }  // namespace Servos
 
diff --git a/src/Motor/Configs/SensorsConfig.h b/src/Motor/Configs/SensorsConfig.h
index f3d039dcc..5f5451d07 100644
--- a/src/Motor/Configs/SensorsConfig.h
+++ b/src/Motor/Configs/SensorsConfig.h
@@ -111,16 +111,26 @@ Channel 4 - 29.65ohm
 0.3584V 12.06mA 29.72ohm
 0.5911V 20mA    29.55ohm
 */
+
+// TODO: calibrate ch0 and ch1
+constexpr float CH0_SHUNT_RESISTANCE = 29.0;
+constexpr float CH1_SHUNT_RESISTANCE = 29.0;
+
 constexpr float CH4_SHUNT_RESISTANCE = 29.79;
 constexpr float CH5_SHUNT_RESISTANCE = 29.7;
 constexpr float CH6_SHUNT_RESISTANCE = 29.65;
 
+// TODO: check if the selected channels are fine
 constexpr Boardcore::ADS131M08Defs::Channel TANK_TC_CHANNEL =
     Boardcore::ADS131M08Defs::Channel::CHANNEL_3;
-constexpr Boardcore::ADS131M08Defs::Channel TANK_TOP_PT_CHANNEL =
+constexpr Boardcore::ADS131M08Defs::Channel OX_TANK_TOP_PT_CHANNEL =
     Boardcore::ADS131M08Defs::Channel::CHANNEL_5;
-constexpr Boardcore::ADS131M08Defs::Channel TANK_BOTTOM_PT_CHANNEL =
+constexpr Boardcore::ADS131M08Defs::Channel OX_TANK_BOTTOM_0_PT_CHANNEL =
     Boardcore::ADS131M08Defs::Channel::CHANNEL_6;
+constexpr Boardcore::ADS131M08Defs::Channel OX_TANK_BOTTOM_1_PT_CHANNEL =
+    Boardcore::ADS131M08Defs::Channel::CHANNEL_0;
+constexpr Boardcore::ADS131M08Defs::Channel N2_TANK_PT_CHANNEL =
+    Boardcore::ADS131M08Defs::Channel::CHANNEL_1;
 constexpr Boardcore::ADS131M08Defs::Channel ENGINE_PT_CHANNEL =
     Boardcore::ADS131M08Defs::Channel::CHANNEL_4;
 
@@ -130,16 +140,23 @@ constexpr bool ENABLED = true;
 
 namespace Trafag
 {
-constexpr float TANK_TOP_SHUNT_RESISTANCE    = ADS131M08::CH5_SHUNT_RESISTANCE;
-constexpr float TANK_BOTTOM_SHUNT_RESISTANCE = ADS131M08::CH6_SHUNT_RESISTANCE;
-constexpr float ENGINE_SHUNT_RESISTANCE      = ADS131M08::CH4_SHUNT_RESISTANCE;
+constexpr float OX_TANK_TOP_SHUNT_RESISTANCE = ADS131M08::CH5_SHUNT_RESISTANCE;
+constexpr float OX_TANK_BOTTOM_0_SHUNT_RESISTANCE =
+    ADS131M08::CH6_SHUNT_RESISTANCE;
+constexpr float OX_TANK_BOTTOM_1_SHUNT_RESISTANCE =
+    ADS131M08::CH0_SHUNT_RESISTANCE;
+constexpr float N2_TANK_SHUNT_RESISTANCE = ADS131M08::CH1_SHUNT_RESISTANCE;
+constexpr float ENGINE_SHUNT_RESISTANCE  = ADS131M08::CH4_SHUNT_RESISTANCE;
 
 constexpr float MIN_CURRENT = 4;
 constexpr float MAX_CURRENT = 20;
 
-constexpr float TANK_TOP_MAX_PRESSURE    = 100;  // bar
-constexpr float TANK_BOTTOM_MAX_PRESSURE = 100;  // bar
-constexpr float ENGINE_MAX_PRESSURE      = 40;   // bar
+// TODO: check these values
+constexpr float OX_TANK_TOP_MAX_PRESSURE      = 100;  // bar
+constexpr float OX_TANK_BOTTOM_0_MAX_PRESSURE = 100;  // bar
+constexpr float OX_TANK_BOTTOM_1_MAX_PRESSURE = 100;  // bar
+constexpr float N2_TANK_MAX_PRESSURE          = 100;  // TODO: CHECK
+constexpr float ENGINE_MAX_PRESSURE           = 40;   // bar
 }  // namespace Trafag
 
 namespace Kulite
diff --git a/src/Motor/Sensors/Sensors.cpp b/src/Motor/Sensors/Sensors.cpp
index 06211420c..95916ba97 100644
--- a/src/Motor/Sensors/Sensors.cpp
+++ b/src/Motor/Sensors/Sensors.cpp
@@ -335,19 +335,32 @@ void Sensors::ads131m08Init()
 
     // Configure all required channels
     config.channelsConfig[(
-        int)Config::Sensors::ADS131M08::TANK_TOP_PT_CHANNEL] = {
+        int)Config::Sensors::ADS131M08::OX_TANK_TOP_PT_CHANNEL] = {
         .enabled = true,
         .pga     = ADS131M08Defs::PGA::PGA_1,
         .offset  = 0,
         .gain    = 1.0};
 
     config.channelsConfig[(
-        int)Config::Sensors::ADS131M08::TANK_BOTTOM_PT_CHANNEL] = {
+        int)Config::Sensors::ADS131M08::OX_TANK_BOTTOM_0_PT_CHANNEL] = {
         .enabled = true,
         .pga     = ADS131M08Defs::PGA::PGA_1,
         .offset  = 0,
         .gain    = 1.0};
 
+    config.channelsConfig[(
+        int)Config::Sensors::ADS131M08::OX_TANK_BOTTOM_1_PT_CHANNEL] = {
+        .enabled = true,
+        .pga     = ADS131M08Defs::PGA::PGA_1,
+        .offset  = 0,
+        .gain    = 1.0};
+
+    config.channelsConfig[(int)Config::Sensors::ADS131M08::N2_TANK_PT_CHANNEL] =
+        {.enabled = true,
+         .pga     = ADS131M08Defs::PGA::PGA_1,
+         .offset  = 0,
+         .gain    = 1.0};
+
     config.channelsConfig[(int)Config::Sensors::ADS131M08::ENGINE_PT_CHANNEL] =
         {.enabled = true,
          .pga     = ADS131M08Defs::PGA::PGA_1,
@@ -387,13 +400,12 @@ void Sensors::oxTopTankPressureInit()
         {
             auto sample = getADS131M08LastSample();
             return sample.getVoltage(
-                Config::Sensors::ADS131M08::TANK_TOP_PT_CHANNEL);
+                Config::Sensors::ADS131M08::OX_TANK_TOP_PT_CHANNEL);
         },
-        Config::Sensors::Trafag::TANK_TOP_SHUNT_RESISTANCE,
-        Config::Sensors::Trafag::TANK_TOP_MAX_PRESSURE,
+        Config::Sensors::Trafag::OX_TANK_TOP_SHUNT_RESISTANCE,
+        Config::Sensors::Trafag::OX_TANK_TOP_MAX_PRESSURE,
         Config::Sensors::Trafag::MIN_CURRENT,
         Config::Sensors::Trafag::MAX_CURRENT);
-    // TODO: is configuration correct?
 }
 
 void Sensors::oxTopTankPressureCallback()
@@ -408,28 +420,24 @@ void Sensors::oxBottomTankPressureInit()
         {
             auto sample = getADS131M08LastSample();
             return sample.getVoltage(
-                Config::Sensors::ADS131M08::TANK_BOTTOM_PT_CHANNEL);
-            // TODO: which is the correct channel?
+                Config::Sensors::ADS131M08::OX_TANK_BOTTOM_0_PT_CHANNEL);
         },
-        Config::Sensors::Trafag::TANK_BOTTOM_SHUNT_RESISTANCE,
-        Config::Sensors::Trafag::TANK_BOTTOM_MAX_PRESSURE,
+        Config::Sensors::Trafag::OX_TANK_BOTTOM_0_SHUNT_RESISTANCE,
+        Config::Sensors::Trafag::OX_TANK_BOTTOM_0_MAX_PRESSURE,
         Config::Sensors::Trafag::MIN_CURRENT,
         Config::Sensors::Trafag::MAX_CURRENT);
-    // TODO: is this configuration correct?
 
     oxBottomTankPressure1 = std::make_unique<TrafagPressureSensor>(
         [this]()
         {
             auto sample = getADS131M08LastSample();
             return sample.getVoltage(
-                Config::Sensors::ADS131M08::TANK_BOTTOM_PT_CHANNEL);
-            // TODO: which is the correct channel?
+                Config::Sensors::ADS131M08::OX_TANK_BOTTOM_1_PT_CHANNEL);
         },
-        Config::Sensors::Trafag::TANK_BOTTOM_SHUNT_RESISTANCE,
-        Config::Sensors::Trafag::TANK_BOTTOM_MAX_PRESSURE,
+        Config::Sensors::Trafag::OX_TANK_BOTTOM_1_SHUNT_RESISTANCE,
+        Config::Sensors::Trafag::OX_TANK_BOTTOM_1_MAX_PRESSURE,
         Config::Sensors::Trafag::MIN_CURRENT,
         Config::Sensors::Trafag::MAX_CURRENT);
-    // TODO: is this configuration correct?
 }
 
 void Sensors::oxBottomTankPressure0Callback()
@@ -449,14 +457,12 @@ void Sensors::n2TankPressureInit()
         {
             auto sample = getADS131M08LastSample();
             return sample.getVoltage(
-                Config::Sensors::ADS131M08::TANK_TOP_PT_CHANNEL);
-            // TODO: which is the correct channel?
+                Config::Sensors::ADS131M08::N2_TANK_PT_CHANNEL);
         },
-        Config::Sensors::Trafag::TANK_TOP_SHUNT_RESISTANCE,
-        Config::Sensors::Trafag::TANK_TOP_MAX_PRESSURE,
+        Config::Sensors::Trafag::N2_TANK_SHUNT_RESISTANCE,
+        Config::Sensors::Trafag::N2_TANK_MAX_PRESSURE,
         Config::Sensors::Trafag::MIN_CURRENT,
         Config::Sensors::Trafag::MAX_CURRENT);
-    // TODO: is this configuration correct?
 }
 
 void Sensors::n2TankPressureCallback()
-- 
GitLab


From b3c574faf57d7fd926ab2bca85f183b7f491abe1 Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Wed, 23 Apr 2025 12:30:13 +0200
Subject: [PATCH 05/10] [ENGINE] Updated log decoder.

---
 scripts/logdecoder/General/logdecoder.cpp | 7 ++++---
 scripts/logdecoder/Motor/logdecoder.cpp   | 5 +++--
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/scripts/logdecoder/General/logdecoder.cpp b/scripts/logdecoder/General/logdecoder.cpp
index a237a6efc..a2cb68047 100644
--- a/scripts/logdecoder/General/logdecoder.cpp
+++ b/scripts/logdecoder/General/logdecoder.cpp
@@ -89,9 +89,10 @@ void registerTypes(Deserializer& ds)
     ds.registerType<Main::LIS2MDLExternalData>();
     ds.registerType<Main::CalibrationData>();
 
-    // Motor
-    ds.registerType<Motor::TopTankPressureData>();
-    ds.registerType<Motor::BottomTankPressureData>();
+    // Engine
+    ds.registerType<Motor::OxTopTankPressureData>();
+    ds.registerType<Motor::OxBottomTankPressureData>();
+    ds.registerType<Motor::N2TankPressureData>();
     ds.registerType<Motor::CCPressureData>();
     ds.registerType<Motor::ActuatorsData>();
 
diff --git a/scripts/logdecoder/Motor/logdecoder.cpp b/scripts/logdecoder/Motor/logdecoder.cpp
index 18396a28d..709f6c5d2 100644
--- a/scripts/logdecoder/Motor/logdecoder.cpp
+++ b/scripts/logdecoder/Motor/logdecoder.cpp
@@ -51,8 +51,9 @@ void registerTypes(Deserializer& ds)
     LogTypes::registerTypes(ds);
 
     // Custom types
-    ds.registerType<TopTankPressureData>();
-    ds.registerType<BottomTankPressureData>();
+    ds.registerType<OxTopTankPressureData>();
+    ds.registerType<OxBottomTankPressureData>();
+    ds.registerType<N2TankPressureData>();
     ds.registerType<CCPressureData>();
     ds.registerType<ActuatorsData>();
 }
-- 
GitLab


From de18cdd70453bb396c15723511a49eeec88c581a Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Wed, 23 Apr 2025 12:33:04 +0200
Subject: [PATCH 06/10] [ENGINE][WIP] Begun nomenclature refactoring:
 transitioning from motor to engine. Changed folder and file names.

---
 src/{Motor => Engine}/Actuators/Actuators.cpp           | 0
 src/{Motor => Engine}/Actuators/Actuators.h             | 0
 src/{Motor => Engine}/Actuators/ActuatorsData.h         | 0
 src/{Motor => Engine}/BoardScheduler.h                  | 0
 src/{Motor => Engine}/Buses.h                           | 0
 src/{Motor => Engine}/CanHandler/CanHandler.cpp         | 0
 src/{Motor => Engine}/CanHandler/CanHandler.h           | 0
 src/{Motor => Engine}/Configs/ActuatorsConfig.h         | 0
 src/{Motor => Engine}/Configs/CanHandlerConfig.h        | 0
 src/{Motor => Engine}/Configs/HILSimulationConfig.h     | 0
 src/{Motor => Engine}/Configs/SchedulerConfig.h         | 0
 src/{Motor => Engine}/Configs/SensorsConfig.h           | 0
 src/{Motor => Engine}/HIL/HIL.cpp                       | 0
 src/{Motor => Engine}/HIL/HIL.h                         | 0
 src/{Motor => Engine}/HIL/HILData.h                     | 0
 src/{Motor => Engine}/PersistentVars/PersistentVars.cpp | 0
 src/{Motor => Engine}/PersistentVars/PersistentVars.h   | 0
 src/{Motor => Engine}/Sensors/HILSensors.h              | 0
 src/{Motor => Engine}/Sensors/KuliteThermocouple.h      | 0
 src/{Motor => Engine}/Sensors/Sensors.cpp               | 0
 src/{Motor => Engine}/Sensors/Sensors.h                 | 0
 src/{Motor => Engine}/Sensors/SensorsData.h             | 0
 src/{Motor/motor-entry.cpp => Engine/engine-entry.cpp}  | 0
 23 files changed, 0 insertions(+), 0 deletions(-)
 rename src/{Motor => Engine}/Actuators/Actuators.cpp (100%)
 rename src/{Motor => Engine}/Actuators/Actuators.h (100%)
 rename src/{Motor => Engine}/Actuators/ActuatorsData.h (100%)
 rename src/{Motor => Engine}/BoardScheduler.h (100%)
 rename src/{Motor => Engine}/Buses.h (100%)
 rename src/{Motor => Engine}/CanHandler/CanHandler.cpp (100%)
 rename src/{Motor => Engine}/CanHandler/CanHandler.h (100%)
 rename src/{Motor => Engine}/Configs/ActuatorsConfig.h (100%)
 rename src/{Motor => Engine}/Configs/CanHandlerConfig.h (100%)
 rename src/{Motor => Engine}/Configs/HILSimulationConfig.h (100%)
 rename src/{Motor => Engine}/Configs/SchedulerConfig.h (100%)
 rename src/{Motor => Engine}/Configs/SensorsConfig.h (100%)
 rename src/{Motor => Engine}/HIL/HIL.cpp (100%)
 rename src/{Motor => Engine}/HIL/HIL.h (100%)
 rename src/{Motor => Engine}/HIL/HILData.h (100%)
 rename src/{Motor => Engine}/PersistentVars/PersistentVars.cpp (100%)
 rename src/{Motor => Engine}/PersistentVars/PersistentVars.h (100%)
 rename src/{Motor => Engine}/Sensors/HILSensors.h (100%)
 rename src/{Motor => Engine}/Sensors/KuliteThermocouple.h (100%)
 rename src/{Motor => Engine}/Sensors/Sensors.cpp (100%)
 rename src/{Motor => Engine}/Sensors/Sensors.h (100%)
 rename src/{Motor => Engine}/Sensors/SensorsData.h (100%)
 rename src/{Motor/motor-entry.cpp => Engine/engine-entry.cpp} (100%)

diff --git a/src/Motor/Actuators/Actuators.cpp b/src/Engine/Actuators/Actuators.cpp
similarity index 100%
rename from src/Motor/Actuators/Actuators.cpp
rename to src/Engine/Actuators/Actuators.cpp
diff --git a/src/Motor/Actuators/Actuators.h b/src/Engine/Actuators/Actuators.h
similarity index 100%
rename from src/Motor/Actuators/Actuators.h
rename to src/Engine/Actuators/Actuators.h
diff --git a/src/Motor/Actuators/ActuatorsData.h b/src/Engine/Actuators/ActuatorsData.h
similarity index 100%
rename from src/Motor/Actuators/ActuatorsData.h
rename to src/Engine/Actuators/ActuatorsData.h
diff --git a/src/Motor/BoardScheduler.h b/src/Engine/BoardScheduler.h
similarity index 100%
rename from src/Motor/BoardScheduler.h
rename to src/Engine/BoardScheduler.h
diff --git a/src/Motor/Buses.h b/src/Engine/Buses.h
similarity index 100%
rename from src/Motor/Buses.h
rename to src/Engine/Buses.h
diff --git a/src/Motor/CanHandler/CanHandler.cpp b/src/Engine/CanHandler/CanHandler.cpp
similarity index 100%
rename from src/Motor/CanHandler/CanHandler.cpp
rename to src/Engine/CanHandler/CanHandler.cpp
diff --git a/src/Motor/CanHandler/CanHandler.h b/src/Engine/CanHandler/CanHandler.h
similarity index 100%
rename from src/Motor/CanHandler/CanHandler.h
rename to src/Engine/CanHandler/CanHandler.h
diff --git a/src/Motor/Configs/ActuatorsConfig.h b/src/Engine/Configs/ActuatorsConfig.h
similarity index 100%
rename from src/Motor/Configs/ActuatorsConfig.h
rename to src/Engine/Configs/ActuatorsConfig.h
diff --git a/src/Motor/Configs/CanHandlerConfig.h b/src/Engine/Configs/CanHandlerConfig.h
similarity index 100%
rename from src/Motor/Configs/CanHandlerConfig.h
rename to src/Engine/Configs/CanHandlerConfig.h
diff --git a/src/Motor/Configs/HILSimulationConfig.h b/src/Engine/Configs/HILSimulationConfig.h
similarity index 100%
rename from src/Motor/Configs/HILSimulationConfig.h
rename to src/Engine/Configs/HILSimulationConfig.h
diff --git a/src/Motor/Configs/SchedulerConfig.h b/src/Engine/Configs/SchedulerConfig.h
similarity index 100%
rename from src/Motor/Configs/SchedulerConfig.h
rename to src/Engine/Configs/SchedulerConfig.h
diff --git a/src/Motor/Configs/SensorsConfig.h b/src/Engine/Configs/SensorsConfig.h
similarity index 100%
rename from src/Motor/Configs/SensorsConfig.h
rename to src/Engine/Configs/SensorsConfig.h
diff --git a/src/Motor/HIL/HIL.cpp b/src/Engine/HIL/HIL.cpp
similarity index 100%
rename from src/Motor/HIL/HIL.cpp
rename to src/Engine/HIL/HIL.cpp
diff --git a/src/Motor/HIL/HIL.h b/src/Engine/HIL/HIL.h
similarity index 100%
rename from src/Motor/HIL/HIL.h
rename to src/Engine/HIL/HIL.h
diff --git a/src/Motor/HIL/HILData.h b/src/Engine/HIL/HILData.h
similarity index 100%
rename from src/Motor/HIL/HILData.h
rename to src/Engine/HIL/HILData.h
diff --git a/src/Motor/PersistentVars/PersistentVars.cpp b/src/Engine/PersistentVars/PersistentVars.cpp
similarity index 100%
rename from src/Motor/PersistentVars/PersistentVars.cpp
rename to src/Engine/PersistentVars/PersistentVars.cpp
diff --git a/src/Motor/PersistentVars/PersistentVars.h b/src/Engine/PersistentVars/PersistentVars.h
similarity index 100%
rename from src/Motor/PersistentVars/PersistentVars.h
rename to src/Engine/PersistentVars/PersistentVars.h
diff --git a/src/Motor/Sensors/HILSensors.h b/src/Engine/Sensors/HILSensors.h
similarity index 100%
rename from src/Motor/Sensors/HILSensors.h
rename to src/Engine/Sensors/HILSensors.h
diff --git a/src/Motor/Sensors/KuliteThermocouple.h b/src/Engine/Sensors/KuliteThermocouple.h
similarity index 100%
rename from src/Motor/Sensors/KuliteThermocouple.h
rename to src/Engine/Sensors/KuliteThermocouple.h
diff --git a/src/Motor/Sensors/Sensors.cpp b/src/Engine/Sensors/Sensors.cpp
similarity index 100%
rename from src/Motor/Sensors/Sensors.cpp
rename to src/Engine/Sensors/Sensors.cpp
diff --git a/src/Motor/Sensors/Sensors.h b/src/Engine/Sensors/Sensors.h
similarity index 100%
rename from src/Motor/Sensors/Sensors.h
rename to src/Engine/Sensors/Sensors.h
diff --git a/src/Motor/Sensors/SensorsData.h b/src/Engine/Sensors/SensorsData.h
similarity index 100%
rename from src/Motor/Sensors/SensorsData.h
rename to src/Engine/Sensors/SensorsData.h
diff --git a/src/Motor/motor-entry.cpp b/src/Engine/engine-entry.cpp
similarity index 100%
rename from src/Motor/motor-entry.cpp
rename to src/Engine/engine-entry.cpp
-- 
GitLab


From 18d1235c1351d34a152d1302979ab016f64be38c Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Wed, 23 Apr 2025 13:52:16 +0200
Subject: [PATCH 07/10] [ENGINE] Changed nomenclature (from motor to engine)
 inside src/Engine folder and within the log decoder.

---
 CMakeLists.txt                               |  6 +--
 cmake/dependencies.cmake                     | 12 +++---
 scripts/logdecoder/General/logdecoder.cpp    | 14 +++----
 scripts/logdecoder/Motor/logdecoder.cpp      |  6 +--
 src/Engine/Actuators/Actuators.cpp           |  6 +--
 src/Engine/Actuators/Actuators.h             |  8 ++--
 src/Engine/Actuators/ActuatorsData.h         |  4 +-
 src/Engine/BoardScheduler.h                  |  6 +--
 src/Engine/Buses.h                           |  4 +-
 src/Engine/CanHandler/CanHandler.cpp         |  8 ++--
 src/Engine/CanHandler/CanHandler.h           | 10 ++---
 src/Engine/Configs/ActuatorsConfig.h         |  4 +-
 src/Engine/Configs/CanHandlerConfig.h        |  4 +-
 src/Engine/Configs/HILSimulationConfig.h     |  4 +-
 src/Engine/Configs/SchedulerConfig.h         |  4 +-
 src/Engine/Configs/SensorsConfig.h           |  4 +-
 src/Engine/HIL/HIL.cpp                       | 44 ++++++++++----------
 src/Engine/HIL/HIL.h                         | 32 +++++++-------
 src/Engine/HIL/HILData.h                     | 12 +++---
 src/Engine/PersistentVars/PersistentVars.cpp |  4 +-
 src/Engine/PersistentVars/PersistentVars.h   |  4 +-
 src/Engine/Sensors/HILSensors.h              | 14 +++----
 src/Engine/Sensors/KuliteThermocouple.h      |  6 +--
 src/Engine/Sensors/Sensors.cpp               |  8 ++--
 src/Engine/Sensors/Sensors.h                 | 10 ++---
 src/Engine/Sensors/SensorsData.h             |  4 +-
 src/Engine/engine-entry.cpp                  | 22 +++++-----
 27 files changed, 132 insertions(+), 132 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 34f5723f2..3eb32d9e4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,9 +64,9 @@ target_include_directories(payload-entry-euroc PRIVATE ${OBSW_INCLUDE_DIRS})
 target_compile_definitions(payload-entry-euroc PRIVATE EUROC)
 sbs_target(payload-entry-euroc stm32f767zi_lyra_biscotto)
 
-add_executable(motor-entry src/Motor/motor-entry.cpp ${MOTOR_SOURCES})
-target_include_directories(motor-entry PRIVATE ${OBSW_INCLUDE_DIRS})
-sbs_target(motor-entry stm32f767zi_orion_engine)
+add_executable(engine-entry src/Engine/engine-entry.cpp ${ENGINE_SOURCES})
+target_include_directories(engine-entry PRIVATE ${OBSW_INCLUDE_DIRS})
+sbs_target(engine-entry stm32f767zi_orion_engine)
 
 add_executable(rig-v2-entry src/RIGv2/rig-v2-entry.cpp ${RIG_V2_COMPUTER})
 target_include_directories(rig-v2-entry PRIVATE ${OBSW_INCLUDE_DIRS})
diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake
index 31286e428..e03e2ad7f 100644
--- a/cmake/dependencies.cmake
+++ b/cmake/dependencies.cmake
@@ -49,12 +49,12 @@ set(GROUNDSTATION_COMMON
     src/Groundstation/Common/HubBase.cpp
 )
 
-set(MOTOR_SOURCES
-    src/Motor/PersistentVars/PersistentVars.cpp
-    src/Motor/HIL/HIL.cpp
-    src/Motor/Actuators/Actuators.cpp
-    src/Motor/Sensors/Sensors.cpp
-    src/Motor/CanHandler/CanHandler.cpp
+set(ENGINE_SOURCES
+    src/Engine/PersistentVars/PersistentVars.cpp
+    src/Engine/HIL/HIL.cpp
+    src/Engine/Actuators/Actuators.cpp
+    src/Engine/Sensors/Sensors.cpp
+    src/Engine/CanHandler/CanHandler.cpp
 )
 
 set(RIG_V2_COMPUTER
diff --git a/scripts/logdecoder/General/logdecoder.cpp b/scripts/logdecoder/General/logdecoder.cpp
index a2cb68047..3e9e5cf83 100644
--- a/scripts/logdecoder/General/logdecoder.cpp
+++ b/scripts/logdecoder/General/logdecoder.cpp
@@ -30,8 +30,8 @@
 #include <Main/StateMachines/FlightModeManager/FlightModeManagerData.h>
 #include <Main/StateMachines/MEAController/MEAControllerData.h>
 #include <Main/StateMachines/NASController/NASControllerData.h>
-#include <Motor/Actuators/ActuatorsData.h>
-#include <Motor/Sensors/SensorsData.h>
+#include <Engine/Actuators/ActuatorsData.h>
+#include <Engine/Sensors/SensorsData.h>
 #include <Payload/PinHandler/PinData.h>
 #include <Payload/Sensors/SensorData.h>
 #include <Payload/StateMachines/FlightModeManager/FlightModeManagerData.h>
@@ -90,11 +90,11 @@ void registerTypes(Deserializer& ds)
     ds.registerType<Main::CalibrationData>();
 
     // Engine
-    ds.registerType<Motor::OxTopTankPressureData>();
-    ds.registerType<Motor::OxBottomTankPressureData>();
-    ds.registerType<Motor::N2TankPressureData>();
-    ds.registerType<Motor::CCPressureData>();
-    ds.registerType<Motor::ActuatorsData>();
+    ds.registerType<Engine::OxTopTankPressureData>();
+    ds.registerType<Engine::OxBottomTankPressureData>();
+    ds.registerType<Engine::N2TankPressureData>();
+    ds.registerType<Engine::CCPressureData>();
+    ds.registerType<Engine::ActuatorsData>();
 
     // Payload
     ds.registerType<Payload::FlightModeManagerStatus>();
diff --git a/scripts/logdecoder/Motor/logdecoder.cpp b/scripts/logdecoder/Motor/logdecoder.cpp
index 709f6c5d2..451f27d63 100644
--- a/scripts/logdecoder/Motor/logdecoder.cpp
+++ b/scripts/logdecoder/Motor/logdecoder.cpp
@@ -20,8 +20,8 @@
  * THE SOFTWARE.
  */
 
-#include <Motor/Actuators/ActuatorsData.h>
-#include <Motor/Sensors/SensorsData.h>
+#include <Engine/Actuators/ActuatorsData.h>
+#include <Engine/Sensors/SensorsData.h>
 #include <logger/Deserializer.h>
 #include <logger/LogTypes.h>
 #include <tscpp/stream.h>
@@ -43,7 +43,7 @@
 
 using namespace tscpp;
 using namespace Boardcore;
-using namespace Motor;
+using namespace Engine;
 
 void registerTypes(Deserializer& ds)
 {
diff --git a/src/Engine/Actuators/Actuators.cpp b/src/Engine/Actuators/Actuators.cpp
index 70878c249..446cbffa3 100644
--- a/src/Engine/Actuators/Actuators.cpp
+++ b/src/Engine/Actuators/Actuators.cpp
@@ -22,13 +22,13 @@
 
 #include "Actuators.h"
 
-#include <Motor/Actuators/ActuatorsData.h>
-#include <Motor/Configs/ActuatorsConfig.h>
+#include <Engine/Actuators/ActuatorsData.h>
+#include <Engine/Configs/ActuatorsConfig.h>
 #include <interfaces-impl/hwmapping.h>
 
 using namespace miosix;
 using namespace Boardcore;
-using namespace Motor;
+using namespace Engine;
 
 void Actuators::ServoInfo::openServoWithTime(uint32_t time)
 {
diff --git a/src/Engine/Actuators/Actuators.h b/src/Engine/Actuators/Actuators.h
index 2cfad5c92..177854541 100644
--- a/src/Engine/Actuators/Actuators.h
+++ b/src/Engine/Actuators/Actuators.h
@@ -22,13 +22,13 @@
 
 #pragma once
 
-#include <Motor/BoardScheduler.h>
-#include <Motor/CanHandler/CanHandler.h>
+#include <Engine/BoardScheduler.h>
+#include <Engine/CanHandler/CanHandler.h>
 #include <actuators/Servo/Servo.h>
 #include <common/MavlinkOrion.h>
 #include <utils/DependencyManager/DependencyManager.h>
 
-namespace Motor
+namespace Engine
 {
 
 class Actuators
@@ -79,4 +79,4 @@ private:
     std::array<ServoInfo, 4> infos;
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Actuators/ActuatorsData.h b/src/Engine/Actuators/ActuatorsData.h
index a623c9a32..99f5db798 100644
--- a/src/Engine/Actuators/ActuatorsData.h
+++ b/src/Engine/Actuators/ActuatorsData.h
@@ -25,7 +25,7 @@
 #include <cstdint>
 #include <ostream>
 
-namespace Motor
+namespace Engine
 {
 struct ActuatorsData
 {
@@ -53,4 +53,4 @@ struct ActuatorsData
     }
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/BoardScheduler.h b/src/Engine/BoardScheduler.h
index 503908b53..fb8dadab1 100644
--- a/src/Engine/BoardScheduler.h
+++ b/src/Engine/BoardScheduler.h
@@ -22,11 +22,11 @@
 
 #pragma once
 
-#include <Motor/Configs/SchedulerConfig.h>
+#include <Engine/Configs/SchedulerConfig.h>
 #include <scheduler/TaskScheduler.h>
 #include <utils/DependencyManager/DependencyManager.h>
 
-namespace Motor
+namespace Engine
 {
 
 class BoardScheduler : public Boardcore::Injectable
@@ -69,4 +69,4 @@ private:
     Boardcore::TaskScheduler actuators;
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Buses.h b/src/Engine/Buses.h
index 62a25fde5..3efddfc12 100644
--- a/src/Engine/Buses.h
+++ b/src/Engine/Buses.h
@@ -26,7 +26,7 @@
 #include <drivers/usart/USART.h>
 #include <utils/DependencyManager/DependencyManager.h>
 
-namespace Motor
+namespace Engine
 {
 
 class Buses : public Boardcore::Injectable
@@ -50,4 +50,4 @@ private:
     Boardcore::USART usart4{UART4, 256000, 1024};
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/CanHandler/CanHandler.cpp b/src/Engine/CanHandler/CanHandler.cpp
index 8a26ffb3d..110479751 100644
--- a/src/Engine/CanHandler/CanHandler.cpp
+++ b/src/Engine/CanHandler/CanHandler.cpp
@@ -22,14 +22,14 @@
 
 #include "CanHandler.h"
 
-#include <Motor/Actuators/Actuators.h>
-#include <Motor/Configs/CanHandlerConfig.h>
-#include <Motor/Configs/SchedulerConfig.h>
+#include <Engine/Actuators/Actuators.h>
+#include <Engine/Configs/CanHandlerConfig.h>
+#include <Engine/Configs/SchedulerConfig.h>
 #include <common/CanConfig.h>
 #include <drivers/timer/TimestampTimer.h>
 #include <events/EventData.h>
 
-using namespace Motor;
+using namespace Engine;
 using namespace Boardcore;
 using namespace Canbus;
 using namespace Common;
diff --git a/src/Engine/CanHandler/CanHandler.h b/src/Engine/CanHandler/CanHandler.h
index c29da6fd3..464cc9b75 100644
--- a/src/Engine/CanHandler/CanHandler.h
+++ b/src/Engine/CanHandler/CanHandler.h
@@ -22,16 +22,16 @@
 
 #pragma once
 
-#include <Motor/BoardScheduler.h>
-#include <Motor/PersistentVars/PersistentVars.h>
-#include <Motor/Sensors/Sensors.h>
+#include <Engine/BoardScheduler.h>
+#include <Engine/PersistentVars/PersistentVars.h>
+#include <Engine/Sensors/Sensors.h>
 #include <common/CanConfig.h>
 #include <drivers/canbus/CanProtocol/CanProtocol.h>
 #include <utils/DependencyManager/DependencyManager.h>
 
 #include <atomic>
 
-namespace Motor
+namespace Engine
 {
 
 class Actuators;
@@ -67,4 +67,4 @@ private:
     Boardcore::Canbus::CanProtocol protocol;
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Configs/ActuatorsConfig.h b/src/Engine/Configs/ActuatorsConfig.h
index 820b74693..108e4ad0e 100644
--- a/src/Engine/Configs/ActuatorsConfig.h
+++ b/src/Engine/Configs/ActuatorsConfig.h
@@ -25,7 +25,7 @@
 #include <interfaces-impl/hwmapping.h>
 #include <units/Frequency.h>
 
-namespace Motor
+namespace Engine
 {
 
 namespace Config
@@ -64,4 +64,4 @@ constexpr bool N2_QUENCHING_FLIPPED = true;
 }  // namespace Servos
 
 }  // namespace Config
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Configs/CanHandlerConfig.h b/src/Engine/Configs/CanHandlerConfig.h
index dca3dbc19..b9ce955aa 100644
--- a/src/Engine/Configs/CanHandlerConfig.h
+++ b/src/Engine/Configs/CanHandlerConfig.h
@@ -26,7 +26,7 @@
 
 #include <chrono>
 
-namespace Motor
+namespace Engine
 {
 
 namespace Config
@@ -50,4 +50,4 @@ constexpr Hertz TEMPERATURE_PERIOD = 10_hz;
 
 }  // namespace Config
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Configs/HILSimulationConfig.h b/src/Engine/Configs/HILSimulationConfig.h
index 254974618..2fb42e781 100644
--- a/src/Engine/Configs/HILSimulationConfig.h
+++ b/src/Engine/Configs/HILSimulationConfig.h
@@ -31,7 +31,7 @@
 
 /* linter off */ using namespace Boardcore::Units::Frequency;
 
-namespace Motor
+namespace Engine
 {
 namespace Config
 {
@@ -51,4 +51,4 @@ static_assert(N_DATA_BARO_CHAMBER * SIMULATION_RATE >= Sensors::ADS131M08::RATE,
 
 }  // namespace HIL
 }  // namespace Config
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Configs/SchedulerConfig.h b/src/Engine/Configs/SchedulerConfig.h
index ec35d17a4..2bc58620b 100644
--- a/src/Engine/Configs/SchedulerConfig.h
+++ b/src/Engine/Configs/SchedulerConfig.h
@@ -24,7 +24,7 @@
 
 #include <miosix.h>
 
-namespace Motor
+namespace Engine
 {
 
 namespace Config
@@ -43,4 +43,4 @@ static const miosix::Priority CAN_PRIORITY = miosix::PRIORITY_MAX - 1;
 
 }  // namespace Config
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Configs/SensorsConfig.h b/src/Engine/Configs/SensorsConfig.h
index 5f5451d07..fe21e84b3 100644
--- a/src/Engine/Configs/SensorsConfig.h
+++ b/src/Engine/Configs/SensorsConfig.h
@@ -29,7 +29,7 @@
 #include <sensors/LSM6DSRX/LSM6DSRX.h>
 #include <units/Units.h>
 
-namespace Motor
+namespace Engine
 {
 
 namespace Config
@@ -188,4 +188,4 @@ constexpr bool ENABLED = true;
 
 }  // namespace Config
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/HIL/HIL.cpp b/src/Engine/HIL/HIL.cpp
index 233886465..3583f2e81 100644
--- a/src/Engine/HIL/HIL.cpp
+++ b/src/Engine/HIL/HIL.cpp
@@ -22,24 +22,24 @@
 
 #include "HIL.h"
 
-#include <Motor/Actuators/Actuators.h>
-#include <Motor/Buses.h>
-#include <Motor/Configs/HILSimulationConfig.h>
+#include <Engine/Actuators/Actuators.h>
+#include <Engine/Buses.h>
+#include <Engine/Configs/HILSimulationConfig.h>
 #include <common/Events.h>
 #include <events/EventBroker.h>
 #include <hil/HIL.h>
 
 #include "HILData.h"
 
-namespace Motor
+namespace Engine
 {
 
-MotorHILPhasesManager::MotorHILPhasesManager(
+EngineHILPhasesManager::EngineHILPhasesManager(
     std::function<Boardcore::TimedTrajectoryPoint()> getCurrentPosition)
-    : Boardcore::HILPhasesManager<MotorFlightPhases, SimulatorData,
+    : Boardcore::HILPhasesManager<EngineFlightPhases, SimulatorData,
                                   ActuatorData>(getCurrentPosition)
 {
-    flagsFlightPhases = {{MotorFlightPhases::SIMULATION_STARTED, false}};
+    flagsFlightPhases = {{EngineFlightPhases::SIMULATION_STARTED, false}};
 
     prev_flagsFlightPhases = flagsFlightPhases;
 
@@ -59,9 +59,9 @@ MotorHILPhasesManager::MotorHILPhasesManager(
     eventBroker.subscribe(this, Common::TOPIC_ALT);
 }
 
-void MotorHILPhasesManager::processFlagsImpl(
+void EngineHILPhasesManager::processFlagsImpl(
     const SimulatorData& simulatorData,
-    std::vector<MotorFlightPhases>& changed_flags)
+    std::vector<EngineFlightPhases>& changed_flags)
 {
     if (simulatorData.signal ==
         static_cast<float>(HILSignal::SIMULATION_STARTED))
@@ -77,24 +77,24 @@ void MotorHILPhasesManager::processFlagsImpl(
     }
 
     // set true when the first packet from the simulator arrives
-    if (isSetTrue(MotorFlightPhases::SIMULATION_STARTED))
+    if (isSetTrue(EngineFlightPhases::SIMULATION_STARTED))
     {
         t_start = Boardcore::TimestampTimer::getTimestamp();
 
         printf("[HIL] ------- SIMULATION STARTED ! ------- \n");
-        changed_flags.push_back(MotorFlightPhases::SIMULATION_STARTED);
+        changed_flags.push_back(EngineFlightPhases::SIMULATION_STARTED);
     }
 }
 
-void MotorHILPhasesManager::printOutcomes()
+void EngineHILPhasesManager::printOutcomes()
 {
     printf("OUTCOMES: (times dt from liftoff)\n\n");
     printf("Simulation time: %.3f [sec]\n\n",
            (double)(t_stop - t_start) / 1000000.0f);
 }
 
-void MotorHILPhasesManager::handleEventImpl(
-    const Boardcore::Event& e, std::vector<MotorFlightPhases>& changed_flags)
+void EngineHILPhasesManager::handleEventImpl(
+    const Boardcore::Event& e, std::vector<EngineFlightPhases>& changed_flags)
 {
     switch (e)
     {
@@ -103,18 +103,18 @@ void MotorHILPhasesManager::handleEventImpl(
     }
 }
 
-MotorHIL::MotorHIL()
-    : Boardcore::HIL<MotorFlightPhases, SimulatorData, ActuatorData>(
+EngineHIL::EngineHIL()
+    : Boardcore::HIL<EngineFlightPhases, SimulatorData, ActuatorData>(
           nullptr, nullptr, [this]() { return updateActuatorData(); },
           1000 / Config::HIL::SIMULATION_RATE.value())
 {
 }
 
-bool MotorHIL::start()
+bool EngineHIL::start()
 {
     auto& hilUsart = getModule<Buses>()->getHILUart();
 
-    hilPhasesManager = new MotorHILPhasesManager(
+    hilPhasesManager = new EngineHILPhasesManager(
         [&]()
         {
             Boardcore::TimedTrajectoryPoint timedTrajectoryPoint;
@@ -122,13 +122,13 @@ bool MotorHIL::start()
             return timedTrajectoryPoint;
         });
 
-    hilTransceiver = new MotorHILTransceiver(hilUsart, hilPhasesManager);
+    hilTransceiver = new EngineHILTransceiver(hilUsart, hilPhasesManager);
 
-    return Boardcore::HIL<MotorFlightPhases, SimulatorData,
+    return Boardcore::HIL<EngineFlightPhases, SimulatorData,
                           ActuatorData>::start();
 }
 
-ActuatorData MotorHIL::updateActuatorData()
+ActuatorData EngineHIL::updateActuatorData()
 {
     auto actuators = getModule<Actuators>();
 
@@ -143,4 +143,4 @@ ActuatorData MotorHIL::updateActuatorData()
     return ActuatorData{actuatorsStateHIL};
 }
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/HIL/HIL.h b/src/Engine/HIL/HIL.h
index 67569f4d6..1d274d89e 100644
--- a/src/Engine/HIL/HIL.h
+++ b/src/Engine/HIL/HIL.h
@@ -22,57 +22,57 @@
 
 #pragma once
 
-#include <Motor/Actuators/Actuators.h>
-#include <Motor/Buses.h>
-#include <Motor/Configs/HILSimulationConfig.h>
+#include <Engine/Actuators/Actuators.h>
+#include <Engine/Buses.h>
+#include <Engine/Configs/HILSimulationConfig.h>
 #include <common/Events.h>
 #include <events/EventBroker.h>
 #include <hil/HIL.h>
 
 #include "HILData.h"
 
-namespace Motor
+namespace Engine
 {
 
-class MotorHILTransceiver
-    : public Boardcore::HILTransceiver<MotorFlightPhases, SimulatorData,
+class EngineHILTransceiver
+    : public Boardcore::HILTransceiver<EngineFlightPhases, SimulatorData,
                                        ActuatorData>
 {
-    using Boardcore::HILTransceiver<MotorFlightPhases, SimulatorData,
+    using Boardcore::HILTransceiver<EngineFlightPhases, SimulatorData,
                                     ActuatorData>::HILTransceiver;
 };
 
-class MotorHILPhasesManager
-    : public Boardcore::HILPhasesManager<MotorFlightPhases, SimulatorData,
+class EngineHILPhasesManager
+    : public Boardcore::HILPhasesManager<EngineFlightPhases, SimulatorData,
                                          ActuatorData>
 {
 public:
-    explicit MotorHILPhasesManager(
+    explicit EngineHILPhasesManager(
         std::function<Boardcore::TimedTrajectoryPoint()> getCurrentPosition);
 
     void processFlagsImpl(
         const SimulatorData& simulatorData,
-        std::vector<MotorFlightPhases>& changed_flags) override;
+        std::vector<EngineFlightPhases>& changed_flags) override;
 
     void printOutcomes();
 
 private:
     void handleEventImpl(
         const Boardcore::Event& e,
-        std::vector<MotorFlightPhases>& changed_flags) override;
+        std::vector<EngineFlightPhases>& changed_flags) override;
 };
 
-class MotorHIL
-    : public Boardcore::HIL<MotorFlightPhases, SimulatorData, ActuatorData>,
+class EngineHIL
+    : public Boardcore::HIL<EngineFlightPhases, SimulatorData, ActuatorData>,
       public Boardcore::InjectableWithDeps<Buses, Actuators>
 
 {
 public:
-    MotorHIL();
+    EngineHIL();
 
     bool start() override;
 
 private:
     ActuatorData updateActuatorData();
 };
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/HIL/HILData.h b/src/Engine/HIL/HILData.h
index 2728875d1..133b0e0a1 100644
--- a/src/Engine/HIL/HILData.h
+++ b/src/Engine/HIL/HILData.h
@@ -22,14 +22,14 @@
 
 #pragma once
 
-#include <Motor/Configs/HILSimulationConfig.h>
+#include <Engine/Configs/HILSimulationConfig.h>
 #include <sensors/HILSimulatorData.h>
 
-namespace Motor
+namespace Engine
 {
 
 // Sensors Data
-using MotorHILChamberBarometerData =
+using EngineHILChamberBarometerData =
     Boardcore::BarometerSimulatorData<Config::HIL::N_DATA_BARO_CHAMBER>;
 
 enum class HILSignal : int
@@ -39,7 +39,7 @@ enum class HILSignal : int
     SIMULATION_FORCE_LAUNCH = 3
 };
 
-enum class MotorFlightPhases
+enum class EngineFlightPhases
 {
     SIMULATION_STARTED
 };
@@ -88,7 +88,7 @@ struct ActuatorsStateHIL
  */
 struct SimulatorData
 {
-    MotorHILChamberBarometerData pressureChamber;
+    EngineHILChamberBarometerData pressureChamber;
     float signal;
 };
 
@@ -109,4 +109,4 @@ struct ActuatorData
     void print() { actuatorsState.print(); }
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/PersistentVars/PersistentVars.cpp b/src/Engine/PersistentVars/PersistentVars.cpp
index 4864e564d..bc0b2bf48 100644
--- a/src/Engine/PersistentVars/PersistentVars.cpp
+++ b/src/Engine/PersistentVars/PersistentVars.cpp
@@ -29,7 +29,7 @@ using namespace miosix;
 
 static bool PRESERVE hilMode = false;
 
-namespace Motor
+namespace Engine
 {
 
 namespace PersistentVars
@@ -45,4 +45,4 @@ bool getHilMode() { return hilMode; }
 
 }  // namespace PersistentVars
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/PersistentVars/PersistentVars.h b/src/Engine/PersistentVars/PersistentVars.h
index ab9c60318..676ec3724 100644
--- a/src/Engine/PersistentVars/PersistentVars.h
+++ b/src/Engine/PersistentVars/PersistentVars.h
@@ -22,7 +22,7 @@
 
 #pragma once
 
-namespace Motor
+namespace Engine
 {
 
 namespace PersistentVars
@@ -34,4 +34,4 @@ bool getHilMode();
 
 }  // namespace PersistentVars
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Sensors/HILSensors.h b/src/Engine/Sensors/HILSensors.h
index 8e46a0ef1..493764114 100644
--- a/src/Engine/Sensors/HILSensors.h
+++ b/src/Engine/Sensors/HILSensors.h
@@ -21,7 +21,7 @@
  */
 #pragma once
 
-#include <Motor/HIL/HIL.h>
+#include <Engine/HIL/HIL.h>
 #include <common/CanConfig.h>
 #include <common/ReferenceConfig.h>
 #include <drivers/timer/TimestampTimer.h>
@@ -30,12 +30,12 @@
 
 #include "Sensors.h"
 
-namespace Motor
+namespace Engine
 {
 
 class HILSensors
     : public Boardcore::InjectableWithDeps<Boardcore::InjectableBase<Sensors>,
-                                           MotorHIL>
+                                           EngineHIL>
 {
 public:
     explicit HILSensors(bool enableHw) : Super{}, enableHw{enableHw} {}
@@ -56,10 +56,10 @@ private:
     int getSampleCounter(int nData)
     {
         auto ts           = miosix::getTime();
-        auto tsSensorData = getModule<MotorHIL>()->getTimestampSimulatorData();
+        auto tsSensorData = getModule<EngineHIL>()->getTimestampSimulatorData();
         long long simulationPeriod =
             static_cast<long long>(
-                getModule<MotorHIL>()->getSimulationPeriod()) *
+                getModule<EngineHIL>()->getSimulationPeriod()) *
             1e6;
 
         assert(ts >= tsSensorData &&
@@ -88,7 +88,7 @@ private:
     {
         Boardcore::PressureData data;
 
-        auto* sensorData = getModule<MotorHIL>()->getSensorData();
+        auto* sensorData = getModule<EngineHIL>()->getSensorData();
 
         int iCC = getSampleCounter(sensorData->pressureChamber.NDATA);
 
@@ -101,4 +101,4 @@ private:
     bool enableHw;
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Sensors/KuliteThermocouple.h b/src/Engine/Sensors/KuliteThermocouple.h
index 99f241b0c..acdc04c2c 100644
--- a/src/Engine/Sensors/KuliteThermocouple.h
+++ b/src/Engine/Sensors/KuliteThermocouple.h
@@ -22,12 +22,12 @@
 
 #pragma once
 
-#include <Motor/Sensors/SensorsData.h>
+#include <Engine/Sensors/SensorsData.h>
 #include <sensors/Sensor.h>
 
 #include <functional>
 
-namespace Motor
+namespace Engine
 {
 
 class KuliteThermocouple : public Boardcore::Sensor<Boardcore::TemperatureData>
@@ -61,4 +61,4 @@ private:
     const float offset;
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Sensors/Sensors.cpp b/src/Engine/Sensors/Sensors.cpp
index 95916ba97..657c256fd 100644
--- a/src/Engine/Sensors/Sensors.cpp
+++ b/src/Engine/Sensors/Sensors.cpp
@@ -22,12 +22,12 @@
 
 #include "Sensors.h"
 
-#include <Motor/Buses.h>
-#include <Motor/Configs/SensorsConfig.h>
-#include <Motor/Sensors/SensorsData.h>
+#include <Engine/Buses.h>
+#include <Engine/Configs/SensorsConfig.h>
+#include <Engine/Sensors/SensorsData.h>
 #include <interfaces-impl/hwmapping.h>
 
-using namespace Motor;
+using namespace Engine;
 using namespace Boardcore;
 using namespace miosix;
 
diff --git a/src/Engine/Sensors/Sensors.h b/src/Engine/Sensors/Sensors.h
index 810fbfc22..7294874e8 100644
--- a/src/Engine/Sensors/Sensors.h
+++ b/src/Engine/Sensors/Sensors.h
@@ -22,9 +22,9 @@
 
 #pragma once
 
-#include <Motor/BoardScheduler.h>
-#include <Motor/Buses.h>
-#include <Motor/Sensors/KuliteThermocouple.h>
+#include <Engine/BoardScheduler.h>
+#include <Engine/Buses.h>
+#include <Engine/Sensors/KuliteThermocouple.h>
 #include <drivers/adc/InternalADC.h>
 #include <scheduler/TaskScheduler.h>
 #include <sensors/ADS131M08/ADS131M08.h>
@@ -39,7 +39,7 @@
 #include <memory>
 #include <vector>
 
-namespace Motor
+namespace Engine
 {
 
 class Sensors : public Boardcore::InjectableWithDeps<Buses, BoardScheduler>
@@ -135,4 +135,4 @@ private:
     Boardcore::PrintLogger logger = Boardcore::Logging::getLogger("sensors");
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/Sensors/SensorsData.h b/src/Engine/Sensors/SensorsData.h
index 168cf941c..16772d834 100644
--- a/src/Engine/Sensors/SensorsData.h
+++ b/src/Engine/Sensors/SensorsData.h
@@ -23,7 +23,7 @@
 #pragma once
 
 #include <sensors/SensorData.h>
-namespace Motor
+namespace Engine
 {
 
 struct OxTopTankPressureData : Boardcore::PressureData
@@ -66,4 +66,4 @@ struct CCPressureData : Boardcore::PressureData
     CCPressureData() {}
 };
 
-}  // namespace Motor
+}  // namespace Engine
diff --git a/src/Engine/engine-entry.cpp b/src/Engine/engine-entry.cpp
index 24888615f..84530f1eb 100644
--- a/src/Engine/engine-entry.cpp
+++ b/src/Engine/engine-entry.cpp
@@ -20,14 +20,14 @@
  * THE SOFTWARE.
  */
 
-#include <Motor/Actuators/Actuators.h>
-#include <Motor/BoardScheduler.h>
-#include <Motor/Buses.h>
-#include <Motor/CanHandler/CanHandler.h>
-#include <Motor/HIL/HIL.h>
-#include <Motor/PersistentVars/PersistentVars.h>
-#include <Motor/Sensors/HILSensors.h>
-#include <Motor/Sensors/Sensors.h>
+#include <Engine/Actuators/Actuators.h>
+#include <Engine/BoardScheduler.h>
+#include <Engine/Buses.h>
+#include <Engine/CanHandler/CanHandler.h>
+#include <Engine/HIL/HIL.h>
+#include <Engine/PersistentVars/PersistentVars.h>
+#include <Engine/Sensors/HILSensors.h>
+#include <Engine/Sensors/Sensors.h>
 #include <diagnostic/CpuMeter/CpuMeter.h>
 #include <diagnostic/PrintLogger.h>
 #include <interfaces-impl/hwmapping.h>
@@ -38,7 +38,7 @@
 #include <iostream>
 
 using namespace Boardcore;
-using namespace Motor;
+using namespace Engine;
 using namespace miosix;
 
 int main()
@@ -61,10 +61,10 @@ int main()
     Logger& sdLogger = Logger::getInstance();
 
     // HIL
-    MotorHIL* hil = nullptr;
+    EngineHIL* hil = nullptr;
     if (PersistentVars::getHilMode())
     {
-        hil = new MotorHIL();
+        hil = new EngineHIL();
 
         initResult = initResult && manager.insert(hil);
     }
-- 
GitLab


From 076d708d287cd9b799ae262c911e8e0e3f1a4cb8 Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Wed, 23 Apr 2025 19:00:09 +0200
Subject: [PATCH 08/10] [ENGINE] Changed nomenclature (from motor to engine)
 inside logdecoder folders.

---
 scripts/logdecoder/{Motor => Engine}/Makefile       | 0
 scripts/logdecoder/{Motor => Engine}/logdecoder.cpp | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
 rename scripts/logdecoder/{Motor => Engine}/Makefile (100%)
 rename scripts/logdecoder/{Motor => Engine}/logdecoder.cpp (100%)

diff --git a/scripts/logdecoder/Motor/Makefile b/scripts/logdecoder/Engine/Makefile
similarity index 100%
rename from scripts/logdecoder/Motor/Makefile
rename to scripts/logdecoder/Engine/Makefile
diff --git a/scripts/logdecoder/Motor/logdecoder.cpp b/scripts/logdecoder/Engine/logdecoder.cpp
similarity index 100%
rename from scripts/logdecoder/Motor/logdecoder.cpp
rename to scripts/logdecoder/Engine/logdecoder.cpp
-- 
GitLab


From b70520c0b2ff495c9519bcb728386f137d8afd73 Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Tue, 6 May 2025 23:29:14 +0200
Subject: [PATCH 09/10] [ENGINE] Changed nomenclature (from motor to engine)
 inside src folder, except in rigv2 and mavlink messages.

---
 src/Engine/CanHandler/CanHandler.cpp          |  26 ++--
 src/Engine/HIL/HIL.cpp                        |   2 +-
 src/Main/CanHandler/CanHandler.cpp            |  18 +--
 src/Main/CanHandler/CanHandler.h              |  22 ++--
 src/Main/HIL/HIL.cpp                          |   6 +-
 src/Main/Radio/Radio.cpp                      |  12 +-
 src/Main/Sensors/HILSensors.h                 |   2 +-
 src/Main/Sensors/Sensors.cpp                  |   8 +-
 src/Main/Sensors/Sensors.h                    |   6 +-
 .../ABKController/ABKController.cpp           |   4 +-
 .../FlightModeManager/FlightModeManager.cpp   |   2 +-
 .../MEAController/MEAController.cpp           |   4 +-
 src/Payload/CanHandler/CanHandler.cpp         |  22 ++--
 src/Payload/CanHandler/CanHandler.h           |  12 +-
 src/Payload/HIL/HIL.cpp                       |  18 +--
 src/Payload/HIL/HILData.h                     |   2 +-
 src/Payload/Radio/MessageHandler.cpp          |  10 +-
 src/common/CanConfig.h                        |   6 +-
 src/common/Events.h                           | 124 +++++++++---------
 src/common/Topics.h                           |   4 +-
 20 files changed, 155 insertions(+), 155 deletions(-)

diff --git a/src/Engine/CanHandler/CanHandler.cpp b/src/Engine/CanHandler/CanHandler.cpp
index 110479751..bcd3b14d0 100644
--- a/src/Engine/CanHandler/CanHandler.cpp
+++ b/src/Engine/CanHandler/CanHandler.cpp
@@ -63,7 +63,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::MEDIUM),
                 static_cast<uint8_t>(CanConfig::PrimaryType::STATUS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST), 0x00,
                 DeviceStatus{
                     TimestampTimer::getTimestamp(),
@@ -90,7 +90,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(CanConfig::SensorId::CC_PRESSURE),
                 static_cast<PressureData>(sensors->getCCPressLastSample()));
@@ -98,7 +98,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(CanConfig::SensorId::OX_TOP_TANK_PRESSURE),
                 static_cast<PressureData>(
@@ -107,7 +107,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(
                     CanConfig::SensorId::OX_BOTTOM_TANK_PRESSURE_0),
@@ -117,7 +117,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(
                     CanConfig::SensorId::OX_BOTTOM_TANK_PRESSURE_1),
@@ -127,7 +127,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(CanConfig::SensorId::N2_TANK_PRESSURE),
                 static_cast<PressureData>(sensors->getN2TankPressLastSample()));
@@ -148,7 +148,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::MEDIUM),
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(CanConfig::SensorId::TANK_TEMPERATURE),
                 static_cast<TemperatureData>(sensors->getTankTempLastSample()));
@@ -156,9 +156,9 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::MEDIUM),
                 static_cast<uint8_t>(CanConfig::PrimaryType::SENSORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
-                static_cast<uint8_t>(CanConfig::SensorId::MOTOR_BOARD_VOLTAGE),
+                static_cast<uint8_t>(CanConfig::SensorId::ENGINE_BOARD_VOLTAGE),
                 static_cast<VoltageData>(
                     sensors->getBatteryVoltageLastSample()));
         },
@@ -178,7 +178,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::ACTUATORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(ServosList::MAIN_VALVE),
                 ServoFeedback{
@@ -189,7 +189,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::ACTUATORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(ServosList::OX_VENTING_VALVE),
                 ServoFeedback{
@@ -200,7 +200,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::ACTUATORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(ServosList::NITROGEN_VALVE),
                 ServoFeedback{
@@ -211,7 +211,7 @@ bool CanHandler::start()
             protocol.enqueueData(
                 static_cast<uint8_t>(CanConfig::Priority::HIGH),
                 static_cast<uint8_t>(CanConfig::PrimaryType::ACTUATORS),
-                static_cast<uint8_t>(CanConfig::Board::MOTOR),
+                static_cast<uint8_t>(CanConfig::Board::ENGINE),
                 static_cast<uint8_t>(CanConfig::Board::BROADCAST),
                 static_cast<uint8_t>(ServosList::N2_QUENCHING_VALVE),
                 ServoFeedback{
diff --git a/src/Engine/HIL/HIL.cpp b/src/Engine/HIL/HIL.cpp
index 3583f2e81..768d2d07e 100644
--- a/src/Engine/HIL/HIL.cpp
+++ b/src/Engine/HIL/HIL.cpp
@@ -54,7 +54,7 @@ EngineHILPhasesManager::EngineHILPhasesManager(
     eventBroker.subscribe(this, Common::TOPIC_FSR);
     eventBroker.subscribe(this, Common::TOPIC_NAS);
     eventBroker.subscribe(this, Common::TOPIC_TMTC);
-    eventBroker.subscribe(this, Common::TOPIC_MOTOR);
+    eventBroker.subscribe(this, Common::TOPIC_ENGINE);
     eventBroker.subscribe(this, Common::TOPIC_TARS);
     eventBroker.subscribe(this, Common::TOPIC_ALT);
 }
diff --git a/src/Main/CanHandler/CanHandler.cpp b/src/Main/CanHandler/CanHandler.cpp
index dccecff94..14d183a56 100644
--- a/src/Main/CanHandler/CanHandler.cpp
+++ b/src/Main/CanHandler/CanHandler.cpp
@@ -42,7 +42,7 @@ CanHandler::CanHandler()
                        static_cast<uint8_t>(CanConfig::Board::BROADCAST));
     protocol.addFilter(static_cast<uint8_t>(CanConfig::Board::RIG),
                        static_cast<uint8_t>(CanConfig::Board::BROADCAST));
-    protocol.addFilter(static_cast<uint8_t>(CanConfig::Board::MOTOR),
+    protocol.addFilter(static_cast<uint8_t>(CanConfig::Board::ENGINE),
                        static_cast<uint8_t>(CanConfig::Board::BROADCAST));
 }
 
@@ -244,11 +244,11 @@ void CanHandler::handleSensor(const Canbus::CanMessage& msg)
             break;
         }
 
-        case CanConfig::SensorId::MOTOR_BOARD_VOLTAGE:
+        case CanConfig::SensorId::ENGINE_BOARD_VOLTAGE:
         {
             CanVoltageData data = voltageDataFromCanMessage(msg);
             sdLogger.log(data);
-            sensors->setCanMotorBatteryVoltage(data);
+            sensors->setCanEngineBatteryVoltage(data);
             break;
         }
 
@@ -293,14 +293,14 @@ void CanHandler::handleStatus(const Canbus::CanMessage& msg)
             break;
         }
 
-        case CanConfig::Board::MOTOR:
+        case CanConfig::Board::ENGINE:
         {
-            status.motorLastStatus = getTime();
-            status.motorState      = deviceStatus.state;
+            status.engineLastStatus = getTime();
+            status.engineState      = deviceStatus.state;
 
-            status.motorLogNumber = deviceStatus.logNumber;
-            status.motorLogGood   = deviceStatus.logGood;
-            status.motorHil       = deviceStatus.hil;
+            status.engineLogNumber = deviceStatus.logNumber;
+            status.engineLogGood   = deviceStatus.logGood;
+            status.engineHil       = deviceStatus.hil;
             break;
         }
 
diff --git a/src/Main/CanHandler/CanHandler.h b/src/Main/CanHandler/CanHandler.h
index 1ea17ea7c..e4de6ea41 100644
--- a/src/Main/CanHandler/CanHandler.h
+++ b/src/Main/CanHandler/CanHandler.h
@@ -46,18 +46,18 @@ public:
     {
         long long rigLastStatus     = 0;
         long long payloadLastStatus = 0;
-        long long motorLastStatus   = 0;
+        long long engineLastStatus   = 0;
 
         uint8_t rigState     = 0;
         uint8_t payloadState = 0;
-        uint8_t motorState   = 0;
+        uint8_t engineState   = 0;
 
         bool rigArmed     = false;
         bool payloadArmed = false;
 
-        uint16_t motorLogNumber = 0;
-        bool motorLogGood       = true;
-        bool motorHil           = false;
+        uint16_t engineLogNumber = 0;
+        bool engineLogGood       = true;
+        bool engineHil           = false;
 
         bool isRigConnected()
         {
@@ -70,23 +70,23 @@ public:
                    (payloadLastStatus +
                     Config::CanHandler::STATUS_TIMEOUT.count());
         }
-        bool isMotorConnected()
+        bool isEngineConnected()
         {
             return miosix::getTime() <=
-                   (motorLastStatus +
+                   (engineLastStatus +
                     Config::CanHandler::STATUS_TIMEOUT.count());
         }
 
         uint8_t getRigState() { return rigState; }
         uint8_t getPayloadState() { return payloadState; }
-        uint8_t getMotorState() { return motorState; }
+        uint8_t getEngineState() { return engineState; }
 
         bool isRigArmed() { return rigArmed; }
         bool isPayloadArmed() { return payloadArmed; }
 
-        uint16_t getMotorLogNumber() { return motorLogNumber; }
-        bool isMotorLogGood() { return motorLogGood; }
-        bool isMotorHil() { return motorHil; }
+        uint16_t getEngineLogNumber() { return engineLogNumber; }
+        bool isEngineLogGood() { return engineLogGood; }
+        bool isEngineHil() { return engineHil; }
     };
 
     CanHandler();
diff --git a/src/Main/HIL/HIL.cpp b/src/Main/HIL/HIL.cpp
index 04e501dd5..4917954b8 100644
--- a/src/Main/HIL/HIL.cpp
+++ b/src/Main/HIL/HIL.cpp
@@ -76,7 +76,7 @@ MainHILPhasesManager::MainHILPhasesManager(
     eventBroker.subscribe(this, Common::TOPIC_FSR);
     eventBroker.subscribe(this, Common::TOPIC_NAS);
     eventBroker.subscribe(this, Common::TOPIC_TMTC);
-    eventBroker.subscribe(this, Common::TOPIC_MOTOR);
+    eventBroker.subscribe(this, Common::TOPIC_ENGINE);
     eventBroker.subscribe(this, Common::TOPIC_TARS);
     eventBroker.subscribe(this, Common::TOPIC_ALT);
 }
@@ -134,7 +134,7 @@ void MainHILPhasesManager::printOutcomes()
     printf("Simulation time: %.3f [sec]\n\n",
            (double)(t_stop - t_start) / 1000000.0f);
 
-    printf("Motor stopped burning (simulation flag): \n");
+    printf("Engine stopped burning (simulation flag): \n");
     outcomes[MainFlightPhases::SIM_BURNING].print(t_liftoff);
 
     printf("Airbrakes exit shadowmode: \n");
@@ -193,7 +193,7 @@ void MainHILPhasesManager::handleEventImpl(
                    getCurrentPosition().z, getCurrentPosition().vz);
             changed_flags.push_back(MainFlightPhases::LIFTOFF);
             break;
-        case Common::Events::FLIGHT_MOTOR_SHUTDOWN:
+        case Common::Events::FLIGHT_ENGINE_SHUTDOWN:
             printf("[HIL] ------- SHUTDOWN -------: %f, %f \n",
                    getCurrentPosition().z, getCurrentPosition().vz);
             changed_flags.push_back(MainFlightPhases::SHUTDOWN);
diff --git a/src/Main/Radio/Radio.cpp b/src/Main/Radio/Radio.cpp
index 6adb0c5a2..e6f75d6d8 100644
--- a/src/Main/Radio/Radio.cpp
+++ b/src/Main/Radio/Radio.cpp
@@ -838,10 +838,10 @@ bool Radio::enqueueSystemTm(uint8_t tmId)
             CanHandler::CanStatus canStatus =
                 getModule<CanHandler>()->getCanStatus();
             tm.payload_board_state = canStatus.getPayloadState();
-            tm.motor_board_state   = canStatus.getMotorState();
+            tm.motor_board_state   = canStatus.getEngineState();
 
             tm.payload_can_status = canStatus.isPayloadConnected() ? 1 : 0;
-            tm.motor_can_status   = canStatus.isMotorConnected() ? 1 : 0;
+            tm.motor_can_status   = canStatus.isEngineConnected() ? 1 : 0;
             tm.rig_can_status     = canStatus.isRigConnected() ? 1 : 0;
 
             tm.hil_state = PersistentVars::getHilMode() ? 1 : 0;
@@ -873,7 +873,7 @@ bool Radio::enqueueSystemTm(uint8_t tmId)
             tm.tank_temperature =
                 sensors->getCanTankTempLastSample().temperature;
             tm.battery_voltage =
-                sensors->getCanMotorBatteryVoltageLastSample().voltage;
+                sensors->getCanEngineBatteryVoltageLastSample().voltage;
 
             // Valve states
             tm.main_valve_state =
@@ -885,9 +885,9 @@ bool Radio::enqueueSystemTm(uint8_t tmId)
             CanHandler::CanStatus canStatus =
                 getModule<CanHandler>()->getCanStatus();
 
-            tm.log_number = canStatus.getMotorLogNumber();
-            tm.log_good   = canStatus.isMotorLogGood() ? 1 : 0;
-            tm.hil_state  = canStatus.isMotorHil() ? 1 : 0;
+            tm.log_number = canStatus.getEngineLogNumber();
+            tm.log_good   = canStatus.isEngineLogGood() ? 1 : 0;
+            tm.hil_state  = canStatus.isEngineHil() ? 1 : 0;
 
             mavlink_msg_motor_tm_encode(Config::Radio::MAV_SYSTEM_ID,
                                         Config::Radio::MAV_COMPONENT_ID, &msg,
diff --git a/src/Main/Sensors/HILSensors.h b/src/Main/Sensors/HILSensors.h
index dfc34428f..d7f6e0d3d 100644
--- a/src/Main/Sensors/HILSensors.h
+++ b/src/Main/Sensors/HILSensors.h
@@ -67,7 +67,7 @@ private:
         if (!Config::HIL::IS_FULL_HIL)
         {
             // Adding to sensorManager's scheduler a task to "sample" the
-            // combustion chamber pressure coming from motor
+            // combustion chamber pressure coming from engine
             getSensorsScheduler().addTask([this]()
                                           { setCanCCPress(updateCCData()); },
                                           Config::HIL::BARO_CHAMBER_RATE);
diff --git a/src/Main/Sensors/Sensors.cpp b/src/Main/Sensors/Sensors.cpp
index edeaa29a2..f9e8de2a6 100644
--- a/src/Main/Sensors/Sensors.cpp
+++ b/src/Main/Sensors/Sensors.cpp
@@ -418,10 +418,10 @@ TemperatureData Sensors::getCanTankTempLastSample()
     return canTankTemperature;
 }
 
-VoltageData Sensors::getCanMotorBatteryVoltageLastSample()
+VoltageData Sensors::getCanEngineBatteryVoltageLastSample()
 {
     Lock<FastMutex> lock{canMutex};
-    return canMotorBatteryVoltage;
+    return canEngineBatteryVoltage;
 }
 
 void Sensors::setCanPitotDynamicPress(PressureData data)
@@ -460,10 +460,10 @@ void Sensors::setCanTankTemp(TemperatureData data)
     canTankTemperature = data;
 }
 
-void Sensors::setCanMotorBatteryVoltage(VoltageData data)
+void Sensors::setCanEngineBatteryVoltage(VoltageData data)
 {
     Lock<FastMutex> lock{canMutex};
-    canMotorBatteryVoltage = data;
+    canEngineBatteryVoltage = data;
 }
 
 std::vector<SensorInfo> Sensors::getSensorInfos()
diff --git a/src/Main/Sensors/Sensors.h b/src/Main/Sensors/Sensors.h
index bb4bda036..73abbc4fe 100644
--- a/src/Main/Sensors/Sensors.h
+++ b/src/Main/Sensors/Sensors.h
@@ -104,7 +104,7 @@ public:
     Boardcore::PressureData getCanBottomTankPressLastSample();
     Boardcore::PressureData getCanCCPressLastSample();
     Boardcore::TemperatureData getCanTankTempLastSample();
-    Boardcore::VoltageData getCanMotorBatteryVoltageLastSample();
+    Boardcore::VoltageData getCanEngineBatteryVoltageLastSample();
 
     std::vector<Boardcore::SensorInfo> getSensorInfos();
 
@@ -115,7 +115,7 @@ public:
     void setCanBottomTankPress(Boardcore::PressureData data);
     void setCanCCPress(Boardcore::PressureData data);
     void setCanTankTemp(Boardcore::TemperatureData data);
-    void setCanMotorBatteryVoltage(Boardcore::VoltageData data);
+    void setCanEngineBatteryVoltage(Boardcore::VoltageData data);
 
 protected:
     virtual bool postSensorCreationHook() { return true; }
@@ -132,7 +132,7 @@ protected:
     Boardcore::PressureData canTopTankPressure;
     Boardcore::PressureData canBottomTankPressure;
     Boardcore::TemperatureData canTankTemperature;
-    Boardcore::VoltageData canMotorBatteryVoltage;
+    Boardcore::VoltageData canEngineBatteryVoltage;
 
     // Digital sensors
     std::unique_ptr<Boardcore::LPS22DF> lps22df;
diff --git a/src/Main/StateMachines/ABKController/ABKController.cpp b/src/Main/StateMachines/ABKController/ABKController.cpp
index 085527243..2b3c79218 100644
--- a/src/Main/StateMachines/ABKController/ABKController.cpp
+++ b/src/Main/StateMachines/ABKController/ABKController.cpp
@@ -148,9 +148,9 @@ void ABKController::state_armed(const Event& event)
             break;
         }
 
-        case FLIGHT_MOTOR_SHUTDOWN:
+        case FLIGHT_ENGINE_SHUTDOWN:
         {
-            // Enable only after motor shutdown
+            // Enable only after engine shutdown
             transition(&ABKController::state_shadow_mode);
             break;
         }
diff --git a/src/Main/StateMachines/FlightModeManager/FlightModeManager.cpp b/src/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
index 285c16e63..097b3bf21 100644
--- a/src/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
+++ b/src/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
@@ -608,7 +608,7 @@ State FlightModeManager::state_unpowered_ascent(const Event& event)
         {
             updateAndLogStatus(FlightModeManagerState::UNPOWERED_ASCENT);
 
-            EventBroker::getInstance().post(FLIGHT_MOTOR_SHUTDOWN,
+            EventBroker::getInstance().post(FLIGHT_ENGINE_SHUTDOWN,
                                             TOPIC_FLIGHT);
 
             apogeeTimeoutEvent = EventBroker::getInstance().postDelayed(
diff --git a/src/Main/StateMachines/MEAController/MEAController.cpp b/src/Main/StateMachines/MEAController/MEAController.cpp
index cc463d7fb..643180387 100644
--- a/src/Main/StateMachines/MEAController/MEAController.cpp
+++ b/src/Main/StateMachines/MEAController/MEAController.cpp
@@ -298,7 +298,7 @@ void MEAController::state_shadow_mode(const Event& event)
             break;
         }
 
-        case FLIGHT_MOTOR_SHUTDOWN:
+        case FLIGHT_ENGINE_SHUTDOWN:
         {
             transition(&MEAController::state_active_unpowered);
             break;
@@ -328,7 +328,7 @@ void MEAController::state_active(const Event& event)
             break;
         }
 
-        case FLIGHT_MOTOR_SHUTDOWN:
+        case FLIGHT_ENGINE_SHUTDOWN:
         {
             transition(&MEAController::state_active_unpowered);
             break;
diff --git a/src/Payload/CanHandler/CanHandler.cpp b/src/Payload/CanHandler/CanHandler.cpp
index ed916b236..c529aa1a6 100644
--- a/src/Payload/CanHandler/CanHandler.cpp
+++ b/src/Payload/CanHandler/CanHandler.cpp
@@ -53,10 +53,10 @@ bool CanStatus::isRigConnected()
            rigLastStatus + nanoseconds{config::Status::TIMEOUT}.count();
 }
 
-bool CanStatus::isMotorConnected()
+bool CanStatus::isEngineConnected()
 {
     return miosix::getTime() <=
-           motorLastStatus + nanoseconds{config::Status::TIMEOUT}.count();
+           engineLastStatus + nanoseconds{config::Status::TIMEOUT}.count();
 }
 
 bool CanHandler::start()
@@ -91,12 +91,12 @@ bool CanHandler::start()
         return false;
     }
 
-    // Add MOTOR filter
-    filterAdded = protocol->addFilter(static_cast<uint8_t>(Board::MOTOR),
+    // Add ENGINE filter
+    filterAdded = protocol->addFilter(static_cast<uint8_t>(Board::ENGINE),
                                       static_cast<uint8_t>(Board::BROADCAST));
     if (!filterAdded)
     {
-        LOG_ERR(logger, "Failed to add MOTOR filter");
+        LOG_ERR(logger, "Failed to add ENGINE filter");
         return false;
     }
 
@@ -281,14 +281,14 @@ void CanHandler::handleStatus(const CanMessage& msg)
             break;
         }
 
-        case Board::MOTOR:
+        case Board::ENGINE:
         {
-            status.motorLastStatus = miosix::getTime();
-            status.motorState      = deviceStatus.state;
+            status.engineLastStatus = miosix::getTime();
+            status.engineState      = deviceStatus.state;
 
-            status.motorLogNumber = deviceStatus.logNumber;
-            status.motorLogGood   = deviceStatus.logGood;
-            status.motorHil       = deviceStatus.hil;
+            status.engineLogNumber = deviceStatus.logNumber;
+            status.engineLogGood   = deviceStatus.logGood;
+            status.engineHil       = deviceStatus.hil;
             break;
         }
 
diff --git a/src/Payload/CanHandler/CanHandler.h b/src/Payload/CanHandler/CanHandler.h
index 6087184b6..e793bba96 100644
--- a/src/Payload/CanHandler/CanHandler.h
+++ b/src/Payload/CanHandler/CanHandler.h
@@ -38,22 +38,22 @@ struct CanStatus
 {
     int64_t mainLastStatus  = 0;  ///< Timestamp of last main status message
     int64_t rigLastStatus   = 0;  ///< Timestamp of last rig status message
-    int64_t motorLastStatus = 0;  ///< Timestamp of last motor status message
+    int64_t engineLastStatus = 0;  ///< Timestamp of last engine status message
 
     uint8_t mainState  = 0;
     uint8_t rigState   = 0;
-    uint8_t motorState = 0;
+    uint8_t engineState = 0;
 
     bool mainArmed = false;
     bool rigArmed  = false;
 
-    int16_t motorLogNumber = -1;
-    bool motorLogGood      = false;
-    bool motorHil          = false;
+    int16_t engineLogNumber = -1;
+    bool engineLogGood      = false;
+    bool engineHil          = false;
 
     bool isMainConnected();
     bool isRigConnected();
-    bool isMotorConnected();
+    bool isEngineConnected();
 };
 
 class CanHandler
diff --git a/src/Payload/HIL/HIL.cpp b/src/Payload/HIL/HIL.cpp
index 304f82bd2..3c9319d95 100644
--- a/src/Payload/HIL/HIL.cpp
+++ b/src/Payload/HIL/HIL.cpp
@@ -53,7 +53,7 @@ PayloadHILPhasesManager::PayloadHILPhasesManager(
                          {PayloadFlightPhases::ARMED, false},
                          {PayloadFlightPhases::LIFTOFF_PIN_DETACHED, false},
                          {PayloadFlightPhases::LIFTOFF, false},
-                         {PayloadFlightPhases::MOTOR_SHUTDOWN, false},
+                         {PayloadFlightPhases::ENGINE_SHUTDOWN, false},
                          {PayloadFlightPhases::AEROBRAKES, false},
                          {PayloadFlightPhases::APOGEE, false},
                          {PayloadFlightPhases::PARA1, false},
@@ -73,7 +73,7 @@ PayloadHILPhasesManager::PayloadHILPhasesManager(
     eventBroker.subscribe(this, Common::TOPIC_FSR);
     eventBroker.subscribe(this, Common::TOPIC_NAS);
     eventBroker.subscribe(this, Common::TOPIC_TMTC);
-    eventBroker.subscribe(this, Common::TOPIC_MOTOR);
+    eventBroker.subscribe(this, Common::TOPIC_ENGINE);
     eventBroker.subscribe(this, Common::TOPIC_TARS);
     eventBroker.subscribe(this, Common::TOPIC_ALT);
 }
@@ -121,8 +121,8 @@ void PayloadHILPhasesManager::printOutcomes()
     printf("Simulation time: %.3f [sec]\n\n",
            (double)(t_stop - t_start) / 1000000.0f);
 
-    printf("Motor shutdown: \n");
-    outcomes[PayloadFlightPhases::MOTOR_SHUTDOWN].print(t_liftoff);
+    printf("Engine shutdown: \n");
+    outcomes[PayloadFlightPhases::ENGINE_SHUTDOWN].print(t_liftoff);
 
     printf("Apogee: \n");
     outcomes[PayloadFlightPhases::APOGEE].print(t_liftoff);
@@ -179,12 +179,12 @@ void PayloadHILPhasesManager::handleEventImpl(
                    getCurrentPosition().z, getCurrentPosition().vz);
             changed_flags.push_back(PayloadFlightPhases::LIFTOFF);
             break;
-        case Common::Events::FLIGHT_MOTOR_SHUTDOWN:
-            setFlagFlightPhase(PayloadFlightPhases::MOTOR_SHUTDOWN, true);
-            registerOutcomes(PayloadFlightPhases::MOTOR_SHUTDOWN);
-            printf("[HIL] ------- MOTOR SHUTDOWN ! ------- %f, %f \n",
+        case Common::Events::FLIGHT_ENGINE_SHUTDOWN:
+            setFlagFlightPhase(PayloadFlightPhases::ENGINE_SHUTDOWN, true);
+            registerOutcomes(PayloadFlightPhases::ENGINE_SHUTDOWN);
+            printf("[HIL] ------- ENGINE SHUTDOWN ! ------- %f, %f \n",
                    getCurrentPosition().z, getCurrentPosition().vz);
-            changed_flags.push_back(PayloadFlightPhases::MOTOR_SHUTDOWN);
+            changed_flags.push_back(PayloadFlightPhases::ENGINE_SHUTDOWN);
             break;
         case Common::Events::FLIGHT_APOGEE_DETECTED:
         case Common::Events::CAN_APOGEE_DETECTED:
diff --git a/src/Payload/HIL/HILData.h b/src/Payload/HIL/HILData.h
index 3dd059778..11e6807d6 100644
--- a/src/Payload/HIL/HILData.h
+++ b/src/Payload/HIL/HILData.h
@@ -67,7 +67,7 @@ enum class PayloadFlightPhases
     ARMED,
     LIFTOFF_PIN_DETACHED,
     LIFTOFF,
-    MOTOR_SHUTDOWN,
+    ENGINE_SHUTDOWN,
     AEROBRAKES,
     APOGEE,
     PARA1,
diff --git a/src/Payload/Radio/MessageHandler.cpp b/src/Payload/Radio/MessageHandler.cpp
index 42e9172d0..599aabcee 100644
--- a/src/Payload/Radio/MessageHandler.cpp
+++ b/src/Payload/Radio/MessageHandler.cpp
@@ -678,10 +678,10 @@ bool Radio::MavlinkBackend::enqueueSystemTm(SystemTMList tmId)
 
             auto canStatus = parent.getModule<CanHandler>()->getCanStatus();
             tm.main_board_state  = canStatus.mainState;
-            tm.motor_board_state = canStatus.motorState;
+            tm.motor_board_state = canStatus.engineState;
 
             tm.main_can_status  = canStatus.isMainConnected();
-            tm.motor_can_status = canStatus.isMotorConnected();
+            tm.motor_can_status = canStatus.isEngineConnected();
             tm.rig_can_status   = canStatus.isRigConnected();
 
             tm.hil_state = PersistentVars::getHilMode();
@@ -732,11 +732,11 @@ bool Radio::MavlinkBackend::enqueueSystemTm(SystemTMList tmId)
             tm.combustion_chamber_pressure = -1.0f;
             tm.tank_temperature            = -1.0f;
             tm.battery_voltage             = -1.0f;
-            tm.log_good                    = canStatus.motorLogGood;
-            tm.log_number                  = canStatus.motorLogNumber;
+            tm.log_good                    = canStatus.engineLogGood;
+            tm.log_number                  = canStatus.engineLogNumber;
             tm.main_valve_state            = 255;
             tm.venting_valve_state         = 255;
-            tm.hil_state                   = canStatus.motorHil;
+            tm.hil_state                   = canStatus.engineHil;
 
             mavlink_msg_motor_tm_encode(config::Mavlink::SYSTEM_ID,
                                         config::Mavlink::COMPONENT_ID, &msg,
diff --git a/src/common/CanConfig.h b/src/common/CanConfig.h
index 60fff984b..8ccda3495 100644
--- a/src/common/CanConfig.h
+++ b/src/common/CanConfig.h
@@ -67,7 +67,7 @@ enum class Board : uint8_t
     RIG,
     MAIN,
     PAYLOAD,
-    MOTOR
+    ENGINE
 };
 
 enum class SensorId : uint8_t
@@ -82,10 +82,10 @@ enum class SensorId : uint8_t
     OX_TOP_TANK_PRESSURE,
     N2_TANK_PRESSURE,
     TANK_TEMPERATURE,
-    MOTOR_ACTUATORS_CURRENT,
+    ENGINE_ACTUATORS_CURRENT,
     MAIN_BOARD_CURRENT,
     PAYLOAD_BOARD_CURRENT,
-    MOTOR_BOARD_VOLTAGE
+    ENGINE_BOARD_VOLTAGE
 };
 
 enum class EventId : uint8_t
diff --git a/src/common/Events.h b/src/common/Events.h
index 5e02ec862..967aeaade 100644
--- a/src/common/Events.h
+++ b/src/common/Events.h
@@ -89,7 +89,7 @@ enum Events : uint8_t
     FLIGHT_LANDING_TIMEOUT,
     FLIGHT_LAUNCH_PIN_DETACHED,
     FLIGHT_LIFTOFF,
-    FLIGHT_MOTOR_SHUTDOWN,
+    FLIGHT_ENGINE_SHUTDOWN,
     FLIGHT_MISSION_TIMEOUT,
     FLIGHT_NC_DETACHED,
     FLIGHT_WING_DESCENT,
@@ -142,36 +142,36 @@ enum Events : uint8_t
     TMTC_ARP_CALIBRATE,
     TMTC_ARP_ENTER_TEST_MODE,
     TMTC_ARP_EXIT_TEST_MODE,
-    MOTOR_START_TARS,
-    MOTOR_STOP_TARS,
-    MOTOR_OX_FIL_OPEN,
-    MOTOR_OX_FIL_CLOSE,
-    MOTOR_OX_REL_OPEN,
-    MOTOR_OX_REL_CLOSE,
-    MOTOR_OX_DET_OPEN,
-    MOTOR_OX_DET_CLOSE,
-    MOTOR_N2_3W_OPEN,
-    MOTOR_N2_3W_CLOSE,
-    MOTOR_N2_FIL_OPEN,
-    MOTOR_N2_FIL_CLOSE,
-    MOTOR_N2_REL_OPEN,
-    MOTOR_N2_REL_CLOSE,
-    MOTOR_N2_DET_OPEN,
-    MOTOR_N2_DET_CLOSE,
-    MOTOR_NITR_OPEN,
-    MOTOR_NITR_CLOSE,
-    MOTOR_OX_VEN_OPEN,
-    MOTOR_OX_VEN_CLOSE,
-    MOTOR_N2_QUE_OPEN,
-    MOTOR_N2_QUE_CLOSE,
-    MOTOR_MAIN_OPEN,
-    MOTOR_MAIN_CLOSE,
-    MOTOR_IGNITION,
-    MOTOR_MANUAL_ACTION,
-    MOTOR_OPEN_OXIDANT,
-    MOTOR_COOLING_TIMEOUT,
-    MOTOR_SHADOW_MODE_TIMEOUT,
-    MOTOR_OPEN_CHAMBER,
+    ENGINE_START_TARS,
+    ENGINE_STOP_TARS,
+    ENGINE_OX_FIL_OPEN,
+    ENGINE_OX_FIL_CLOSE,
+    ENGINE_OX_REL_OPEN,
+    ENGINE_OX_REL_CLOSE,
+    ENGINE_OX_DET_OPEN,
+    ENGINE_OX_DET_CLOSE,
+    ENGINE_N2_3W_OPEN,
+    ENGINE_N2_3W_CLOSE,
+    ENGINE_N2_FIL_OPEN,
+    ENGINE_N2_FIL_CLOSE,
+    ENGINE_N2_REL_OPEN,
+    ENGINE_N2_REL_CLOSE,
+    ENGINE_N2_DET_OPEN,
+    ENGINE_N2_DET_CLOSE,
+    ENGINE_NITR_OPEN,
+    ENGINE_NITR_CLOSE,
+    ENGINE_OX_VEN_OPEN,
+    ENGINE_OX_VEN_CLOSE,
+    ENGINE_N2_QUE_OPEN,
+    ENGINE_N2_QUE_CLOSE,
+    ENGINE_MAIN_OPEN,
+    ENGINE_MAIN_CLOSE,
+    ENGINE_IGNITION,
+    ENGINE_MANUAL_ACTION,
+    ENGINE_OPEN_OXIDANT,
+    ENGINE_COOLING_TIMEOUT,
+    ENGINE_SHADOW_MODE_TIMEOUT,
+    ENGINE_OPEN_CHAMBER,
     TARS_WASHING_DONE,
     TARS_CHECK_PRESSURE_STABILIZE,
     TARS_PRESSURE_STABILIZED,
@@ -237,7 +237,7 @@ inline std::string getEventString(uint8_t event)
         {FLIGHT_LANDING_DETECTED, "FLIGHT_LANDING_DETECTED"},
         {FLIGHT_LAUNCH_PIN_DETACHED, "FLIGHT_LAUNCH_PIN_DETACHED"},
         {FLIGHT_LIFTOFF, "FLIGHT_LIFTOFF"},
-        {FLIGHT_MOTOR_SHUTDOWN, "FLIGHT_MOTOR_SHUTDOWN"},
+        {FLIGHT_ENGINE_SHUTDOWN, "FLIGHT_ENGINE_SHUTDOWN"},
         {FLIGHT_LANDING_TIMEOUT, "FLIGHT_LANDING_TIMEOUT"},
         {FLIGHT_NC_DETACHED, "FLIGHT_NC_DETACHED"},
         {FLIGHT_MISSION_TIMEOUT, "FLIGHT_MISSION_TIMEOUT"},
@@ -291,36 +291,36 @@ inline std::string getEventString(uint8_t event)
         {TMTC_ARP_FOLLOW, "TMTC_ARP_FOLLOW"},
         {TMTC_ARP_ENTER_TEST_MODE, "TMTC_ARP_ENTER_TEST_MODE"},
         {TMTC_ARP_EXIT_TEST_MODE, "TMTC_ARP_EXIT_TEST_MODE"},
-        {MOTOR_START_TARS, "MOTOR_START_TARS"},
-        {MOTOR_STOP_TARS, "MOTOR_STOP_TARS"},
-        {MOTOR_OX_FIL_OPEN, "MOTOR_OX_FIL_OPEN"},
-        {MOTOR_OX_FIL_CLOSE, "MOTOR_OX_FIL_CLOSE"},
-        {MOTOR_OX_REL_OPEN, "MOTOR_OX_REL_OPEN"},
-        {MOTOR_OX_REL_CLOSE, "MOTOR_OX_REL_CLOSE"},
-        {MOTOR_OX_DET_OPEN, "MOTOR_OX_DET_OPEN"},
-        {MOTOR_OX_DET_CLOSE, "MOTOR_OX_DET_CLOSE"},
-        {MOTOR_N2_3W_OPEN, "MOTOR_N2_3W_OPEN"},
-        {MOTOR_N2_3W_CLOSE, "MOTOR_N2_3W_CLOSE"},
-        {MOTOR_N2_FIL_OPEN, "MOTOR_N2_FIL_OPEN"},
-        {MOTOR_N2_FIL_CLOSE, "MOTOR_N2_FIL_CLOSE"},
-        {MOTOR_N2_REL_OPEN, "MOTOR_N2_REL_OPEN"},
-        {MOTOR_N2_REL_CLOSE, "MOTOR_N2_REL_CLOSE"},
-        {MOTOR_N2_DET_OPEN, "MOTOR_N2_DET_OPEN"},
-        {MOTOR_N2_DET_CLOSE, "MOTOR_N2_DET_CLOSE"},
-        {MOTOR_NITR_OPEN, "MOTOR_NITR_OPEN"},
-        {MOTOR_NITR_CLOSE, "MOTOR_NITR_CLOSE"},
-        {MOTOR_OX_VEN_OPEN, "MOTOR_OX_VEN_OPEN"},
-        {MOTOR_OX_VEN_CLOSE, "MOTOR_OX_VEN_CLOSE"},
-        {MOTOR_N2_QUE_OPEN, "MOTOR_N2_QUE_OPEN"},
-        {MOTOR_N2_QUE_CLOSE, "MOTOR_N2_QUE_CLOSE"},
-        {MOTOR_MAIN_OPEN, "MOTOR_MAIN_OPEN"},
-        {MOTOR_MAIN_CLOSE, "MOTOR_MAIN_CLOSE"},
-        {MOTOR_IGNITION, "MOTOR_IGNITION"},
-        {MOTOR_MANUAL_ACTION, "MOTOR_MANUAL_ACTION"},
-        {MOTOR_OPEN_OXIDANT, "MOTOR_OPEN_OXIDANT"},
-        {MOTOR_COOLING_TIMEOUT, "MOTOR_COOLING_TIMEOUT"},
-        {MOTOR_SHADOW_MODE_TIMEOUT, "MOTOR_SHADOW_MODE_TIMEOUT"},
-        {MOTOR_OPEN_CHAMBER, "MOTOR_OPEN_CHAMBER"},
+        {ENGINE_START_TARS, "ENGINE_START_TARS"},
+        {ENGINE_STOP_TARS, "ENGINE_STOP_TARS"},
+        {ENGINE_OX_FIL_OPEN, "ENGINE_OX_FIL_OPEN"},
+        {ENGINE_OX_FIL_CLOSE, "ENGINE_OX_FIL_CLOSE"},
+        {ENGINE_OX_REL_OPEN, "ENGINE_OX_REL_OPEN"},
+        {ENGINE_OX_REL_CLOSE, "ENGINE_OX_REL_CLOSE"},
+        {ENGINE_OX_DET_OPEN, "ENGINE_OX_DET_OPEN"},
+        {ENGINE_OX_DET_CLOSE, "ENGINE_OX_DET_CLOSE"},
+        {ENGINE_N2_3W_OPEN, "ENGINE_N2_3W_OPEN"},
+        {ENGINE_N2_3W_CLOSE, "ENGINE_N2_3W_CLOSE"},
+        {ENGINE_N2_FIL_OPEN, "ENGINE_N2_FIL_OPEN"},
+        {ENGINE_N2_FIL_CLOSE, "ENGINE_N2_FIL_CLOSE"},
+        {ENGINE_N2_REL_OPEN, "ENGINE_N2_REL_OPEN"},
+        {ENGINE_N2_REL_CLOSE, "ENGINE_N2_REL_CLOSE"},
+        {ENGINE_N2_DET_OPEN, "ENGINE_N2_DET_OPEN"},
+        {ENGINE_N2_DET_CLOSE, "ENGINE_N2_DET_CLOSE"},
+        {ENGINE_NITR_OPEN, "ENGINE_NITR_OPEN"},
+        {ENGINE_NITR_CLOSE, "ENGINE_NITR_CLOSE"},
+        {ENGINE_OX_VEN_OPEN, "ENGINE_OX_VEN_OPEN"},
+        {ENGINE_OX_VEN_CLOSE, "ENGINE_OX_VEN_CLOSE"},
+        {ENGINE_N2_QUE_OPEN, "ENGINE_N2_QUE_OPEN"},
+        {ENGINE_N2_QUE_CLOSE, "ENGINE_N2_QUE_CLOSE"},
+        {ENGINE_MAIN_OPEN, "ENGINE_MAIN_OPEN"},
+        {ENGINE_MAIN_CLOSE, "ENGINE_MAIN_CLOSE"},
+        {ENGINE_IGNITION, "ENGINE_IGNITION"},
+        {ENGINE_MANUAL_ACTION, "ENGINE_MANUAL_ACTION"},
+        {ENGINE_OPEN_OXIDANT, "ENGINE_OPEN_OXIDANT"},
+        {ENGINE_COOLING_TIMEOUT, "ENGINE_COOLING_TIMEOUT"},
+        {ENGINE_SHADOW_MODE_TIMEOUT, "ENGINE_SHADOW_MODE_TIMEOUT"},
+        {ENGINE_OPEN_CHAMBER, "ENGINE_OPEN_CHAMBER"},
         {TARS_WASHING_DONE, "TARS_WASHING_DONE"},
         {TARS_CHECK_PRESSURE_STABILIZE, "TARS_CHECK_PRESSURE_STABILIZE"},
         {TARS_PRESSURE_STABILIZED, "TARS_PRESSURE_STABILIZED"},
diff --git a/src/common/Topics.h b/src/common/Topics.h
index 37c83378b..3033e9f63 100644
--- a/src/common/Topics.h
+++ b/src/common/Topics.h
@@ -42,7 +42,7 @@ enum Topics : uint8_t
     TOPIC_FSR,
     TOPIC_NAS,
     TOPIC_TMTC,
-    TOPIC_MOTOR,
+    TOPIC_ENGINE,
     TOPIC_TARS,
     TOPIC_ALT,
     TOPIC_WING,
@@ -51,6 +51,6 @@ enum Topics : uint8_t
 const std::vector<uint8_t> TOPICS_LIST{
     TOPIC_ABK,  TOPIC_ADA,    TOPIC_MEA,  TOPIC_ARP, TOPIC_DPL,
     TOPIC_CAN,  TOPIC_FLIGHT, TOPIC_FMM,  TOPIC_FSR, TOPIC_NAS,
-    TOPIC_TMTC, TOPIC_MOTOR,  TOPIC_TARS, TOPIC_ALT, TOPIC_WING};
+    TOPIC_TMTC, TOPIC_ENGINE,  TOPIC_TARS, TOPIC_ALT, TOPIC_WING};
 
 }  // namespace Common
-- 
GitLab


From 167b0dd204d11b670c2bcb6697faa3ccced73e01 Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Thu, 29 May 2025 11:05:38 +0200
Subject: [PATCH 10/10] [ENGINE] Added thermocouple.

---
 src/Engine/Buses.h                 |  1 +
 src/Engine/Configs/SensorsConfig.h |  6 +++++
 src/Engine/Sensors/Sensors.cpp     | 37 ++++++++++++++++++++++++++++++
 src/Engine/Sensors/Sensors.h       |  6 +++++
 4 files changed, 50 insertions(+)

diff --git a/src/Engine/Buses.h b/src/Engine/Buses.h
index 3efddfc12..08d2283f5 100644
--- a/src/Engine/Buses.h
+++ b/src/Engine/Buses.h
@@ -39,6 +39,7 @@ public:
     Boardcore::SPIBus& getLIS2MDL() { return spi3; }
     Boardcore::SPIBus& getLSM6DSRX() { return spi3; }
     Boardcore::SPIBus& getADS131M08() { return spi4; }
+    Boardcore::SPIBus& getThermocouple() { return spi1; }
 
     Boardcore::USART& getHILUart() { return usart4; }
 
diff --git a/src/Engine/Configs/SensorsConfig.h b/src/Engine/Configs/SensorsConfig.h
index fe21e84b3..19bbf69de 100644
--- a/src/Engine/Configs/SensorsConfig.h
+++ b/src/Engine/Configs/SensorsConfig.h
@@ -173,6 +173,12 @@ constexpr float TANK_P1_TEMP    = 34.0f;
 
 }  // namespace Kulite
 
+namespace MAX31856
+{
+constexpr Hertz PERIOD = 10_hz;
+constexpr bool ENABLED = true;
+}  // namespace MAX31856
+
 namespace InternalADC
 {
 constexpr Boardcore::InternalADC::Channel VBAT_CH =
diff --git a/src/Engine/Sensors/Sensors.cpp b/src/Engine/Sensors/Sensors.cpp
index 657c256fd..360dab1f7 100644
--- a/src/Engine/Sensors/Sensors.cpp
+++ b/src/Engine/Sensors/Sensors.cpp
@@ -55,6 +55,9 @@ bool Sensors::start()
         tankTempInit();
     }
 
+    if (Config::Sensors::MAX31856::ENABLED)
+        thermocoupleInit();
+
     if (Config::Sensors::InternalADC::ENABLED)
         internalAdcInit();
 
@@ -141,6 +144,11 @@ TemperatureData Sensors::getTankTempLastSample()
     return tankTemp ? tankTemp->getLastSample() : TemperatureData{};
 }
 
+TemperatureData Sensors::getThermocoupleLastSample()
+{
+    return thermocouple ? thermocouple->getLastSample() : TemperatureData{};
+}
+
 VoltageData Sensors::getBatteryVoltageLastSample()
 {
     auto sample   = getInternalADCLastSample();
@@ -196,6 +204,9 @@ std::vector<SensorInfo> Sensors::getSensorInfos()
         if (tankTemp)
             infos.push_back(manager->getSensorInfo(tankTemp.get()));
 
+        if (thermocouple)
+            infos.push_back(manager->getSensorInfo(thermocouple.get()));
+
         return infos;
     }
     else
@@ -507,6 +518,25 @@ void Sensors::tankTempInit()
 
 void Sensors::tankTempCallback() { sdLogger.log(getTankTempLastSample()); }
 
+void Sensors::thermocoupleInit()
+{
+    SPIBusConfig spiConfig = MAX31856::getDefaultSPIConfig();
+    spiConfig.clockDivider = SPI::ClockDivider::DIV_32;
+
+    thermocouple = std::make_unique<MAX31856>(
+        getModule<Buses>()->getThermocouple(),
+        sensors::thermocouple::cs::getPin(), spiConfig,
+        MAX31856::ThermocoupleType::K_TYPE);  // TODO: verify the type
+}
+
+void Sensors::thermocoupleCallback()
+{
+    if (!thermocouple)
+        return;
+
+    sdLogger.log(getThermocoupleLastSample());
+}
+
 bool Sensors::sensorManagerInit()
 {
     SensorManager::SensorMap_t map;
@@ -606,6 +636,13 @@ bool Sensors::sensorManagerInit()
         map.emplace(std::make_pair(tankTemp.get(), info));
     }
 
+    if (thermocouple)
+    {
+        SensorInfo info("MAX31856", Config::Sensors::MAX31856::PERIOD,
+                        [this]() { thermocoupleCallback(); });
+        map.emplace(std::make_pair(thermocouple.get(), info));
+    }
+
     manager = std::make_unique<SensorManager>(map, &getSensorsScheduler());
     return manager->start();
 }
diff --git a/src/Engine/Sensors/Sensors.h b/src/Engine/Sensors/Sensors.h
index 7294874e8..73bb192eb 100644
--- a/src/Engine/Sensors/Sensors.h
+++ b/src/Engine/Sensors/Sensors.h
@@ -32,6 +32,7 @@
 #include <sensors/LIS2MDL/LIS2MDL.h>
 #include <sensors/LPS22DF/LPS22DF.h>
 #include <sensors/LSM6DSRX/LSM6DSRX.h>
+#include <sensors/MAX31856/MAX31856.h>
 #include <sensors/SensorManager.h>
 #include <sensors/analog/TrafagPressureSensor.h>
 #include <utils/DependencyManager/DependencyManager.h>
@@ -64,6 +65,7 @@ public:
     Boardcore::PressureData getCCPressLastSample();
     Boardcore::TemperatureData getTankTempLastSample();
     Boardcore::VoltageData getBatteryVoltageLastSample();
+    Boardcore::TemperatureData getThermocoupleLastSample();
 
     std::vector<Boardcore::SensorInfo> getSensorInfos();
 
@@ -80,6 +82,7 @@ protected:
     std::unique_ptr<Boardcore::LSM6DSRX> lsm6dsrx1;
     std::unique_ptr<Boardcore::ADS131M08> ads131m08;
     std::unique_ptr<Boardcore::InternalADC> internalAdc;
+    std::unique_ptr<Boardcore::MAX31856> thermocouple;
 
     // Analog sensors
     std::unique_ptr<Boardcore::TrafagPressureSensor> oxTopTankPressure;
@@ -112,6 +115,9 @@ private:
     void internalAdcInit();
     void internalAdcCallback();
 
+    void thermocoupleInit();
+    void thermocoupleCallback();
+
     void oxTopTankPressureInit();
     void oxTopTankPressureCallback();
 
-- 
GitLab