TCS subsystem continued
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
This commit is contained in:
@ -7,37 +7,16 @@ DualLanePowerStateMachine::DualLanePowerStateMachine(pcduSwitches::Switches swit
|
||||
pcduSwitches::Switches switchB,
|
||||
PowerSwitchIF* pwrSwitcher,
|
||||
dur_millis_t checkTimeout)
|
||||
: SWITCH_A(switchA), SWITCH_B(switchB), pwrSwitcher(pwrSwitcher), checkTimeout(checkTimeout) {}
|
||||
: PowerStateMachineBase(pwrSwitcher, checkTimeout), SWITCH_A(switchA), SWITCH_B(switchB) {}
|
||||
|
||||
void DualLanePowerStateMachine::setCheckTimeout(dur_millis_t timeout) {
|
||||
checkTimeout.setTimeout(timeout);
|
||||
}
|
||||
|
||||
void DualLanePowerStateMachine::start(Mode_t mode, Submode_t submode) {
|
||||
reset();
|
||||
checkTimeout.resetTimer();
|
||||
targetMode = mode;
|
||||
targetSubmode = submode;
|
||||
state = duallane::PwrStates::SWITCHING_POWER;
|
||||
}
|
||||
|
||||
duallane::PwrStates DualLanePowerStateMachine::getState() const { return state; }
|
||||
|
||||
bool DualLanePowerStateMachine::active() {
|
||||
if (state == duallane::PwrStates::IDLE or state == duallane::PwrStates::MODE_COMMANDING) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
duallane::OpCodes DualLanePowerStateMachine::powerStateMachine() {
|
||||
power::OpCodes DualLanePowerStateMachine::fsm() {
|
||||
using namespace duallane;
|
||||
ReturnValue_t switchStateA = RETURN_OK;
|
||||
ReturnValue_t switchStateB = RETURN_OK;
|
||||
if (state == PwrStates::IDLE or state == PwrStates::MODE_COMMANDING) {
|
||||
if (state == power::States::IDLE or state == power::States::MODE_COMMANDING) {
|
||||
return opResult;
|
||||
}
|
||||
if (state == PwrStates::SWITCHING_POWER or state == PwrStates::CHECKING_POWER) {
|
||||
if (state == power::States::SWITCHING_POWER or state == power::States::CHECKING_POWER) {
|
||||
switchStateA = pwrSwitcher->getSwitchState(SWITCH_A);
|
||||
switchStateB = pwrSwitcher->getSwitchState(SWITCH_B);
|
||||
} else {
|
||||
@ -45,8 +24,8 @@ duallane::OpCodes DualLanePowerStateMachine::powerStateMachine() {
|
||||
}
|
||||
if (targetMode == HasModesIF::MODE_OFF) {
|
||||
if (switchStateA == PowerSwitchIF::SWITCH_OFF and switchStateB == PowerSwitchIF::SWITCH_OFF) {
|
||||
state = PwrStates::IDLE;
|
||||
opResult = OpCodes::TO_OFF_DONE;
|
||||
state = power::States::IDLE;
|
||||
opResult = power::OpCodes::TO_OFF_DONE;
|
||||
return opResult;
|
||||
}
|
||||
} else {
|
||||
@ -54,8 +33,8 @@ duallane::OpCodes DualLanePowerStateMachine::powerStateMachine() {
|
||||
case (A_SIDE): {
|
||||
if (switchStateA == PowerSwitchIF::SWITCH_ON and
|
||||
switchStateB == PowerSwitchIF::SWITCH_OFF) {
|
||||
state = PwrStates::MODE_COMMANDING;
|
||||
opResult = OpCodes::TO_NOT_OFF_DONE;
|
||||
state = power::States::MODE_COMMANDING;
|
||||
opResult = power::OpCodes::TO_NOT_OFF_DONE;
|
||||
return opResult;
|
||||
}
|
||||
break;
|
||||
@ -63,22 +42,22 @@ duallane::OpCodes DualLanePowerStateMachine::powerStateMachine() {
|
||||
case (B_SIDE): {
|
||||
if (switchStateA == PowerSwitchIF::SWITCH_OFF and
|
||||
switchStateB == PowerSwitchIF::SWITCH_ON) {
|
||||
state = PwrStates::MODE_COMMANDING;
|
||||
opResult = OpCodes::TO_NOT_OFF_DONE;
|
||||
state = power::States::MODE_COMMANDING;
|
||||
opResult = power::OpCodes::TO_NOT_OFF_DONE;
|
||||
return opResult;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case (DUAL_MODE): {
|
||||
if (switchStateA == PowerSwitchIF::SWITCH_ON and switchStateB == PowerSwitchIF::SWITCH_ON) {
|
||||
state = PwrStates::MODE_COMMANDING;
|
||||
opResult = OpCodes::TO_NOT_OFF_DONE;
|
||||
state = power::States::MODE_COMMANDING;
|
||||
opResult = power::OpCodes::TO_NOT_OFF_DONE;
|
||||
return opResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (state == PwrStates::SWITCHING_POWER) {
|
||||
if (state == power::States::SWITCHING_POWER) {
|
||||
if (targetMode == HasModesIF::MODE_OFF) {
|
||||
if (switchStateA != PowerSwitchIF::SWITCH_OFF) {
|
||||
pwrSwitcher->sendSwitchCommand(SWITCH_A, PowerSwitchIF::SWITCH_OFF);
|
||||
@ -121,20 +100,12 @@ duallane::OpCodes DualLanePowerStateMachine::powerStateMachine() {
|
||||
}
|
||||
}
|
||||
}
|
||||
state = PwrStates::CHECKING_POWER;
|
||||
state = power::States::CHECKING_POWER;
|
||||
}
|
||||
if (state == PwrStates::CHECKING_POWER) {
|
||||
if (state == power::States::CHECKING_POWER) {
|
||||
if (checkTimeout.hasTimedOut()) {
|
||||
return OpCodes::TIMEOUT_OCCURED;
|
||||
return power::OpCodes::TIMEOUT_OCCURED;
|
||||
}
|
||||
}
|
||||
return opResult;
|
||||
}
|
||||
|
||||
void DualLanePowerStateMachine::reset() {
|
||||
state = duallane::PwrStates::IDLE;
|
||||
opResult = duallane::OpCodes::NONE;
|
||||
targetMode = HasModesIF::MODE_OFF;
|
||||
targetSubmode = 0;
|
||||
checkTimeout.resetTimer();
|
||||
}
|
||||
|
Reference in New Issue
Block a user