diff --git a/src/boards/Auxiliary/CanHandler/CanHandler.cpp b/src/boards/Auxiliary/CanHandler/CanHandler.cpp
index 63783384f54594fb17d1b53bc47724b0415932d7..598c720ff755b6d14af886c0299b4c6158a88523 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 4dbe13711bd9d4d996cb919614c949ef6e54776a..080c43b782c2cc886fbcac32bede9acf502f313e 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 447a0bcdfb808d6ed9fd5ba44f93d6a7d9bd5734..8169f1e458a850957d3b6ecacdffa726e2e1c3b8 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 15c618408c7a54aedce11eaea13f937b95cfaefb..63d13fa9419b9fa62b41e35d7848117ffd8d9de2 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 c8dc26784eb71092b19b6db37c7388d847941b96..326f26e3295768d6db9ba9129a4fca6449433024 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 c0971d828dd1678fac0d1f313ced25221eebe3c7..c5b38443467b5f8176303ca31005b23311c716ad 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 07ffd78a0e8474d611001b7a7271bcf91669b344..433cde9dc7a9639a3dfa4327898674c93eb251a1 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 9cc614df8bce5d497950296e5222085934e67d7b..297ccbdf9905544c53b2c3a71021408c495cd969 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,