improved s/a deployment handler

This commit is contained in:
Jakob Meier 2021-02-17 16:02:49 +01:00
parent 4d4cf3f694
commit 32d17b9f03
2 changed files with 4 additions and 6 deletions

View File

@ -84,14 +84,13 @@ void SolarArrayDeploymentHandler::handleStateMachine() {
break; break;
case WAIT_FOR_MAIN_SWITCH_OFF: case WAIT_FOR_MAIN_SWITCH_OFF:
if (mainLineSwitcher->getSwitchState(mainLineSwitch) == PowerSwitchIF::SWITCH_OFF) { if (mainLineSwitcher->getSwitchState(mainLineSwitch) == PowerSwitchIF::SWITCH_OFF) {
stateMachine = FINISHED_DEPLOYMENT; stateMachine = WAIT_ON_DELOYMENT_COMMAND;
} else if (mainSwitchCountdown.hasTimedOut()) { } else if (mainSwitchCountdown.hasTimedOut()) {
triggerEvent(MAIN_SWITCH_OFF_TIMEOUT); triggerEvent(MAIN_SWITCH_OFF_TIMEOUT);
stateMachine = FINISHED_DEPLOYMENT;
sif::error << "SolarArrayDeploymentHandler::handleStateMachine: Failed to switch main" sif::error << "SolarArrayDeploymentHandler::handleStateMachine: Failed to switch main"
<< " switch off" << std::endl; << " switch off" << std::endl;
stateMachine = WAIT_ON_DELOYMENT_COMMAND;
} }
case FINISHED_DEPLOYMENT:
break; break;
default: default:
sif::debug << "SolarArrayDeploymentHandler::handleStateMachine: Invalid state" << std::endl; sif::debug << "SolarArrayDeploymentHandler::handleStateMachine: Invalid state" << std::endl;
@ -143,7 +142,6 @@ void SolarArrayDeploymentHandler::switchDeploymentTransistors() {
void SolarArrayDeploymentHandler::handleDeploymentFinish() { void SolarArrayDeploymentHandler::handleDeploymentFinish() {
ReturnValue_t result = RETURN_OK; ReturnValue_t result = RETURN_OK;
if (deploymentCountdown.hasTimedOut()) { if (deploymentCountdown.hasTimedOut()) {
stateMachine = FINISHED_DEPLOYMENT;
actionHelper.finish(rememberCommanderId, DEPLOY_SOLAR_ARRAYS, RETURN_OK); actionHelper.finish(rememberCommanderId, DEPLOY_SOLAR_ARRAYS, RETURN_OK);
result = gpioInterface->pullLow(deplSA1); result = gpioInterface->pullLow(deplSA1);
if (result != RETURN_OK) { if (result != RETURN_OK) {
@ -157,6 +155,7 @@ void SolarArrayDeploymentHandler::handleDeploymentFinish() {
} }
mainLineSwitcher->sendSwitchCommand(mainLineSwitch, PowerSwitchIF::SWITCH_OFF); mainLineSwitcher->sendSwitchCommand(mainLineSwitch, PowerSwitchIF::SWITCH_OFF);
mainSwitchCountdown.setTimeout(mainLineSwitcher->getSwitchDelayMs()); mainSwitchCountdown.setTimeout(mainLineSwitcher->getSwitchDelayMs());
stateMachine = WAIT_FOR_MAIN_SWITCH_OFF;
} }
} }

View File

@ -76,8 +76,7 @@ private:
WAIT_ON_8V_SWITCH, WAIT_ON_8V_SWITCH,
SWITCH_DEPL_GPIOS, SWITCH_DEPL_GPIOS,
WAIT_ON_DEPLOYMENT_FINISH, WAIT_ON_DEPLOYMENT_FINISH,
WAIT_FOR_MAIN_SWITCH_OFF, WAIT_FOR_MAIN_SWITCH_OFF
FINISHED_DEPLOYMENT
}; };
StateMachine stateMachine = WAIT_ON_DELOYMENT_COMMAND; StateMachine stateMachine = WAIT_ON_DELOYMENT_COMMAND;