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,