From 2ffbc9f6a8110814c36668a4ced9e8b74ff0d4bd Mon Sep 17 00:00:00 2001
From: Alberto Nidasio <alberto.nidasio@skywarder.eu>
Date: Mon, 12 Sep 2022 09:45:14 +0000
Subject: [PATCH] [CAN] Fixed event for the auxiliary board

---
 src/boards/Auxiliary/CanHandler/CanHandler.cpp           | 2 ++
 src/boards/Main/CanHandler/CanHandler.cpp                | 9 +++++++++
 src/boards/Main/CanHandler/CanHandler.h                  | 1 +
 src/boards/Main/Configs/CanHandlerConfig.h               | 5 +++--
 .../FlightModeManager/FlightModeManager.cpp              | 2 ++
 src/boards/Payload/Configs/CanHandlerConfig.h            | 4 ++--
 .../FlightModeManager/FlightModeManager.cpp              | 2 ++
 src/boards/common/events/Events.h                        | 1 +
 8 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/boards/Auxiliary/CanHandler/CanHandler.cpp b/src/boards/Auxiliary/CanHandler/CanHandler.cpp
index 63783384f..598c720ff 100644
--- a/src/boards/Auxiliary/CanHandler/CanHandler.cpp
+++ b/src/boards/Auxiliary/CanHandler/CanHandler.cpp
@@ -104,10 +104,12 @@ void CanHandler::handleCanEvent(const CanMessage &msg)
         case EventId::ARM:
         {
             Actuators::getInstance().ledArmed();
+            break;
         }
         case EventId::DISARM:
         {
             Actuators::getInstance().ledDisarmed();
+            break;
         }
 
         default:
diff --git a/src/boards/Main/CanHandler/CanHandler.cpp b/src/boards/Main/CanHandler/CanHandler.cpp
index 4dbe13711..080c43b78 100644
--- a/src/boards/Main/CanHandler/CanHandler.cpp
+++ b/src/boards/Main/CanHandler/CanHandler.cpp
@@ -87,6 +87,15 @@ void CanHandler::sendCamOffEvent()
                            static_cast<uint8_t>(EventId::CAM_OFF));
 }
 
+void CanHandler::sendErrorEvent()
+{
+    protocol->enqueueEvent(static_cast<uint8_t>(Priority::CRITICAL),
+                           static_cast<uint8_t>(PrimaryType::EVENTS),
+                           static_cast<uint8_t>(Board::MAIN),
+                           static_cast<uint8_t>(Board::AUXILIARY),
+                           static_cast<uint8_t>(EventId::ERROR));
+}
+
 void CanHandler::sendLiftoffEvent()
 {
     protocol->enqueueEvent(static_cast<uint8_t>(Priority::CRITICAL),
diff --git a/src/boards/Main/CanHandler/CanHandler.h b/src/boards/Main/CanHandler/CanHandler.h
index 447a0bcdf..8169f1e45 100644
--- a/src/boards/Main/CanHandler/CanHandler.h
+++ b/src/boards/Main/CanHandler/CanHandler.h
@@ -46,6 +46,7 @@ public:
     void sendCalibrateEvent();
     void sendCamOnEvent();
     void sendCamOffEvent();
+    void sendErrorEvent();
     void sendLiftoffEvent();
     void sendApogeeEvent();
     void sendLandingEvent();
diff --git a/src/boards/Main/Configs/CanHandlerConfig.h b/src/boards/Main/Configs/CanHandlerConfig.h
index 15c618408..63d13fa94 100644
--- a/src/boards/Main/Configs/CanHandlerConfig.h
+++ b/src/boards/Main/Configs/CanHandlerConfig.h
@@ -45,11 +45,12 @@ static const std::map<Common::CanConfig::EventId, Common::Events> eventToEvent{
 
 static const std::map<Common::Events, std::function<void(CanHandler *)>>
     eventToFunction{
-        {Common::TMTC_ARM, &CanHandler::sendArmEvent},
-        {Common::TMTC_DISARM, &CanHandler::sendDisarmEvent},
+        {Common::FLIGHT_ARMED, &CanHandler::sendArmEvent},
+        {Common::FLIGHT_DISARMED, &CanHandler::sendDisarmEvent},
         {Common::TMTC_CALIBRATE, &CanHandler::sendCalibrateEvent},
         {Common::TMTC_START_RECORDING, &CanHandler::sendCamOnEvent},
         {Common::TMTC_STOP_RECORDING, &CanHandler::sendCamOffEvent},
+        {Common::FLIGHT_ERROR_DETECTED, &CanHandler::sendErrorEvent},
         {Common::FLIGHT_LIFTOFF, &CanHandler::sendLiftoffEvent},
         {Common::FLIGHT_APOGEE_DETECTED, &CanHandler::sendApogeeEvent},
         {Common::FLIGHT_LANDING_DETECTED, &CanHandler::sendLandingEvent},
diff --git a/src/boards/Main/StateMachines/FlightModeManager/FlightModeManager.cpp b/src/boards/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
index c8dc26784..326f26e32 100644
--- a/src/boards/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
+++ b/src/boards/Main/StateMachines/FlightModeManager/FlightModeManager.cpp
@@ -128,6 +128,8 @@ State FlightModeManager::state_init_error(const Event& event)
         {
             Actuators::getInstance().buzzerError();
             logStatus(FlightModeManagerState::INIT_ERROR);
+            EventBroker::getInstance().post(FLIGHT_ERROR_DETECTED,
+                                            TOPIC_FLIGHT);
             return HANDLED;
         }
         case EV_EXIT:
diff --git a/src/boards/Payload/Configs/CanHandlerConfig.h b/src/boards/Payload/Configs/CanHandlerConfig.h
index c0971d828..c5b384434 100644
--- a/src/boards/Payload/Configs/CanHandlerConfig.h
+++ b/src/boards/Payload/Configs/CanHandlerConfig.h
@@ -47,8 +47,8 @@ static const std::map<Common::CanConfig::EventId, Common::Events> eventToEvent{
 
 static const std::map<Common::Events, std::function<void(CanHandler *)>>
     eventToFunction{
-        {Common::TMTC_ARM, &CanHandler::sendArmEvent},
-        {Common::TMTC_DISARM, &CanHandler::sendDisarmEvent},
+        {Common::FLIGHT_ARMED, &CanHandler::sendArmEvent},
+        {Common::FLIGHT_DISARMED, &CanHandler::sendDisarmEvent},
         {Common::TMTC_CALIBRATE, &CanHandler::sendCalibrateEvent},
         {Common::TMTC_START_RECORDING, &CanHandler::sendCamOnEvent},
         {Common::TMTC_STOP_RECORDING, &CanHandler::sendCamOffEvent},
diff --git a/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp b/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp
index 07ffd78a0..433cde9dc 100644
--- a/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp
+++ b/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp
@@ -139,6 +139,8 @@ State FlightModeManager::state_init_error(const Event& event)
         {
             logStatus(FlightModeManagerState::INIT_ERROR);
             Actuators::getInstance().ledError();
+            EventBroker::getInstance().post(FLIGHT_ERROR_DETECTED,
+                                            TOPIC_FLIGHT);
             return HANDLED;
         }
         case EV_EXIT:
diff --git a/src/boards/common/events/Events.h b/src/boards/common/events/Events.h
index 9cc614df8..297ccbdf9 100644
--- a/src/boards/common/events/Events.h
+++ b/src/boards/common/events/Events.h
@@ -57,6 +57,7 @@ enum Events : uint8_t
     FLIGHT_ARMED,
     FLIGHT_DISARMED,
     FLIGHT_DPL_ALT_DETECTED,
+    FLIGHT_ERROR_DETECTED,
     FLIGHT_LANDING_DETECTED,
     FLIGHT_LAUNCH_PIN_DETACHED,
     FLIGHT_LIFTOFF,
-- 
GitLab