diff --git a/src/RIGv2/Actuators/Actuators.cpp b/src/RIGv2/Actuators/Actuators.cpp index 6138b6901c1dfade4006863700a83eabee0cc7da..9593345c8e977e927dfc183062c97bb009a7a93e 100644 --- a/src/RIGv2/Actuators/Actuators.cpp +++ b/src/RIGv2/Actuators/Actuators.cpp @@ -420,7 +420,7 @@ void Actuators::updatePositionsTask() long long currentTime = getTime(); // Iterate over all servos - for (uint8_t idx = 0; idx < 10; idx++) + for (uint8_t idx = 0; idx < infos.size(); idx++) { if (currentTime < infos[idx].closeTs) { diff --git a/src/RIGv2/StateMachines/GroundModeManager/GroundModeManager.cpp b/src/RIGv2/StateMachines/GroundModeManager/GroundModeManager.cpp index 31bdd3790246b5de2ad450242b65f4928be021db..48eb6e201c96e6b85c80a91bf208f3f704f64c16 100644 --- a/src/RIGv2/StateMachines/GroundModeManager/GroundModeManager.cpp +++ b/src/RIGv2/StateMachines/GroundModeManager/GroundModeManager.cpp @@ -322,6 +322,7 @@ State GroundModeManager::state_firing(const Event& event) } case TMTC_OPEN_NITROGEN: + case MOTOR_OPEN_CHAMBER: { // Open nitrogen uint32_t chamberTime = getModule<Registry>()->getOrSetDefaultUnsafe( @@ -330,7 +331,15 @@ State GroundModeManager::state_firing(const Event& event) getModule<Actuators>()->openChamberWithTime(chamberTime); - return transition(&GroundModeManager::state_disarmed); + if (event == TMTC_OPEN_NITROGEN) + { + // Nitrogen TMTC causes automatic disarm + return transition(&GroundModeManager::state_disarmed); + } + else + { + return HANDLED; + } } case MOTOR_COOLING_TIMEOUT: // Normal firing end @@ -433,15 +442,8 @@ State GroundModeManager::state_oxidizer(const Event& event) return HANDLED; } - case MOTOR_OPEN_CHAMBER: + case MOTOR_MAIN_CLOSE: { - uint32_t chamberTime = getModule<Registry>()->getOrSetDefaultUnsafe( - CONFIG_ID_CHAMBER_TIME, - Config::GroundModeManager::DEFAULT_CHAMBER_VALVE_TIME); - - // Open the chamber valve - getModule<Actuators>()->openChamberWithTime(chamberTime); - return transition(&GroundModeManager::state_cooling); } @@ -460,6 +462,9 @@ State GroundModeManager::state_cooling(const Event& event) { updateAndLogStatus(GroundModeManagerState::COOLING); + // Stop pressurizing the OX after the firing is over + getModule<Actuators>()->closeServo(ServosList::NITROGEN_VALVE); + return HANDLED; } diff --git a/src/common/Events.h b/src/common/Events.h index 6a93c35fd34cf4c15d0db586bad1ee8812253b5e..5e02ec8629f033da64bcd0977960a9cdf8687d63 100644 --- a/src/common/Events.h +++ b/src/common/Events.h @@ -294,16 +294,27 @@ inline std::string getEventString(uint8_t event) {MOTOR_START_TARS, "MOTOR_START_TARS"}, {MOTOR_STOP_TARS, "MOTOR_STOP_TARS"}, {MOTOR_OX_FIL_OPEN, "MOTOR_OX_FIL_OPEN"}, + {MOTOR_OX_FIL_CLOSE, "MOTOR_OX_FIL_CLOSE"}, {MOTOR_OX_REL_OPEN, "MOTOR_OX_REL_OPEN"}, + {MOTOR_OX_REL_CLOSE, "MOTOR_OX_REL_CLOSE"}, {MOTOR_OX_DET_OPEN, "MOTOR_OX_DET_OPEN"}, + {MOTOR_OX_DET_CLOSE, "MOTOR_OX_DET_CLOSE"}, {MOTOR_N2_3W_OPEN, "MOTOR_N2_3W_OPEN"}, + {MOTOR_N2_3W_CLOSE, "MOTOR_N2_3W_CLOSE"}, {MOTOR_N2_FIL_OPEN, "MOTOR_N2_FIL_OPEN"}, + {MOTOR_N2_FIL_CLOSE, "MOTOR_N2_FIL_CLOSE"}, {MOTOR_N2_REL_OPEN, "MOTOR_N2_REL_OPEN"}, + {MOTOR_N2_REL_CLOSE, "MOTOR_N2_REL_CLOSE"}, {MOTOR_N2_DET_OPEN, "MOTOR_N2_DET_OPEN"}, + {MOTOR_N2_DET_CLOSE, "MOTOR_N2_DET_CLOSE"}, {MOTOR_NITR_OPEN, "MOTOR_NITR_OPEN"}, + {MOTOR_NITR_CLOSE, "MOTOR_NITR_CLOSE"}, {MOTOR_OX_VEN_OPEN, "MOTOR_OX_VEN_OPEN"}, + {MOTOR_OX_VEN_CLOSE, "MOTOR_OX_VEN_CLOSE"}, {MOTOR_N2_QUE_OPEN, "MOTOR_N2_QUE_OPEN"}, + {MOTOR_N2_QUE_CLOSE, "MOTOR_N2_QUE_CLOSE"}, {MOTOR_MAIN_OPEN, "MOTOR_MAIN_OPEN"}, + {MOTOR_MAIN_CLOSE, "MOTOR_MAIN_CLOSE"}, {MOTOR_IGNITION, "MOTOR_IGNITION"}, {MOTOR_MANUAL_ACTION, "MOTOR_MANUAL_ACTION"}, {MOTOR_OPEN_OXIDANT, "MOTOR_OPEN_OXIDANT"},