diff --git a/src/boards/Groundstation/Automated/Actuators/Actuators.cpp b/src/boards/Groundstation/Automated/Actuators/Actuators.cpp index 2b69c619843b5ff7f9e6d0bca12ea1129ccd98ec..4370456d46ae8ff1eaa87efcfed140c77c2d09e7 100644 --- a/src/boards/Groundstation/Automated/Actuators/Actuators.cpp +++ b/src/boards/Groundstation/Automated/Actuators/Actuators.cpp @@ -74,14 +74,23 @@ Actuators::Actuators() } /** - * @brief Enables all the stepperPWM + * @brief Dummy start for actuators + * @note The real enable is done by the `arm()` method */ -void Actuators::start() +void Actuators::start() {} + +void Actuators::arm() { stepperX.enable(); stepperY.enable(); } +void Actuators::disarm() +{ + stepperX.disable(); + stepperY.disable(); +} + void Actuators::setSpeed(StepperList axis, float speed) { diff --git a/src/boards/Groundstation/Automated/Actuators/Actuators.h b/src/boards/Groundstation/Automated/Actuators/Actuators.h index c78b9e7ab3614c0a0671280c8d62c56e282a7f21..261104845ca0330bf608d07d391ca46c90d57047 100644 --- a/src/boards/Groundstation/Automated/Actuators/Actuators.h +++ b/src/boards/Groundstation/Automated/Actuators/Actuators.h @@ -59,10 +59,21 @@ public: Actuators(); /** - * @brief Enables all the servos PWMs + * @brief Dummy start for actuators + * @note The real enable is done by the `arm()` method */ void start(); + /** + * @brief Enables the actuators + */ + void arm(); + + /** + * @brief Disables the actuators + */ + void disarm(); + void IRQemergencyStop(); void IRQemergencyStopRecovery(); diff --git a/src/boards/Groundstation/Automated/SMController/SMController.cpp b/src/boards/Groundstation/Automated/SMController/SMController.cpp index d9c5ab6cc8d21521028fd5a47c8bdf590164dc74..fd14eb265a84cc43db96a73069653ba61f5bbf6a 100644 --- a/src/boards/Groundstation/Automated/SMController/SMController.cpp +++ b/src/boards/Groundstation/Automated/SMController/SMController.cpp @@ -298,6 +298,7 @@ State SMController::state_feedback(const Event& event) } case EV_EXIT: { + ModuleManager::getInstance().get<Actuators>()->disarm(); return HANDLED; } case EV_EMPTY: @@ -331,6 +332,7 @@ State SMController::state_no_feedback(const Event& event) } case EV_EXIT: { + ModuleManager::getInstance().get<Actuators>()->disarm(); return HANDLED; } case EV_EMPTY: @@ -503,6 +505,7 @@ State SMController::state_armed(const Event& event) case EV_ENTRY: { logStatus(SMControllerState::ARMED); + ModuleManager::getInstance().get<Actuators>()->arm(); return HANDLED; } case EV_EXIT: @@ -732,6 +735,7 @@ State SMController::state_armed_nf(const Event& event) case EV_ENTRY: { logStatus(SMControllerState::ARMED_NF); + ModuleManager::getInstance().get<Actuators>()->arm(); return HANDLED; } case EV_EXIT: