From fe15eb3a3bdb3814846cb30437aeaba946cccbb6 Mon Sep 17 00:00:00 2001 From: Matteo Pignataro <matteo.pignataro@skywarder.eu> Date: Fri, 16 Sep 2022 23:00:39 +0200 Subject: [PATCH] [Payload] Added apogee timeout --- src/boards/Payload/Configs/FlightModeManagerConfig.h | 3 ++- .../FlightModeManager/FlightModeManager.cpp | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/boards/Payload/Configs/FlightModeManagerConfig.h b/src/boards/Payload/Configs/FlightModeManagerConfig.h index d76d78b3a..95462eb05 100644 --- a/src/boards/Payload/Configs/FlightModeManagerConfig.h +++ b/src/boards/Payload/Configs/FlightModeManagerConfig.h @@ -26,5 +26,6 @@ namespace Payload { constexpr unsigned int MISSION_TIMEOUT = 15 * 60 * 1000; +constexpr unsigned int APOGEE_TIMEOUT = 20 * 1000; -} +} // namespace Payload diff --git a/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp b/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp index 89cbe1020..9253e42d9 100644 --- a/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp +++ b/src/boards/Payload/StateMachines/FlightModeManager/FlightModeManager.cpp @@ -420,15 +420,24 @@ State FlightModeManager::state_flying(const Event& event) State FlightModeManager::state_ascending(const Event& event) { + static uint16_t apogeeDetectionEventId = -1; + switch (event) { case EV_ENTRY: { logStatus(FlightModeManagerState::ASCENDING); + + apogeeDetectionEventId = + EventBroker::getInstance().postDelayed<APOGEE_TIMEOUT>( + FLIGHT_APOGEE_DETECTED, TOPIC_FLIGHT); + return HANDLED; } case EV_EXIT: { + EventBroker::getInstance().removeDelayed(apogeeDetectionEventId); + return HANDLED; } case EV_EMPTY: -- GitLab