that should fix the issue
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
parent
e365e03c2a
commit
65989261b0
@ -112,20 +112,7 @@ ReturnValue_t AcsBoardAssembly::handleNormalOrOnModeCmd(Mode_t mode, Submode_t s
|
|||||||
using namespace duallane;
|
using namespace duallane;
|
||||||
ReturnValue_t result = returnvalue::OK;
|
ReturnValue_t result = returnvalue::OK;
|
||||||
bool needsSecondStep = false;
|
bool needsSecondStep = false;
|
||||||
if (sideSwitchState == SideSwitchState::REQUESTED) {
|
handleSideSwitchStates(submode, needsSecondStep);
|
||||||
sideSwitchState = SideSwitchState::TO_DUAL;
|
|
||||||
}
|
|
||||||
// Switch to dual side first, and later switch back to the otherside
|
|
||||||
if (sideSwitchState == SideSwitchState::TO_DUAL) {
|
|
||||||
targetSubmodeForSideSwitch = static_cast<duallane::Submodes>(submode);
|
|
||||||
submode = Submodes::DUAL_MODE;
|
|
||||||
sideSwitchState = SideSwitchState::DISABLE_OTHER_SIDE;
|
|
||||||
// TODO: Ugly hack. The base class should support arbitrary number of steps..
|
|
||||||
needsSecondStep = true;
|
|
||||||
} else if (sideSwitchState == SideSwitchState::DISABLE_OTHER_SIDE) {
|
|
||||||
dualToSingleSideTransition = true;
|
|
||||||
submode = targetSubmodeForSideSwitch;
|
|
||||||
}
|
|
||||||
auto cmdSeq = [&](object_id_t objectId, Mode_t devMode, ModeTableIdx tableIdx) {
|
auto cmdSeq = [&](object_id_t objectId, Mode_t devMode, ModeTableIdx tableIdx) {
|
||||||
if (mode == devMode) {
|
if (mode == devMode) {
|
||||||
modeTable[tableIdx].setMode(mode);
|
modeTable[tableIdx].setMode(mode);
|
||||||
|
@ -130,7 +130,11 @@ void DualLaneAssemblyBase::handleModeReached() {
|
|||||||
// For dual to single side transition, devices should be logically off, but the switch
|
// For dual to single side transition, devices should be logically off, but the switch
|
||||||
// handling still needs to be done.
|
// handling still needs to be done.
|
||||||
if (dualToSingleSideTransition) {
|
if (dualToSingleSideTransition) {
|
||||||
pwrStateMachine.start(targetMode, targetSubmode);
|
if (sideSwitchState == SideSwitchState::DISABLE_OTHER_SIDE) {
|
||||||
|
pwrStateMachine.start(targetMode, targetSubmodeForSideSwitch);
|
||||||
|
} else {
|
||||||
|
pwrStateMachine.start(targetMode, targetSubmode);
|
||||||
|
}
|
||||||
pwrStateMachineWrapper();
|
pwrStateMachineWrapper();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -238,6 +242,24 @@ bool DualLaneAssemblyBase::sideSwitchTransition(Mode_t mode, Submode_t submode)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DualLaneAssemblyBase::handleSideSwitchStates(uint8_t& submode, bool& needsSecondStep) {
|
||||||
|
if (sideSwitchState == SideSwitchState::REQUESTED) {
|
||||||
|
sideSwitchState = SideSwitchState::TO_DUAL;
|
||||||
|
}
|
||||||
|
// Switch to dual side first, and later switch back to the otherside
|
||||||
|
if (sideSwitchState == SideSwitchState::TO_DUAL) {
|
||||||
|
targetSubmodeForSideSwitch = static_cast<duallane::Submodes>(submode);
|
||||||
|
submode = duallane::Submodes::DUAL_MODE;
|
||||||
|
sideSwitchState = SideSwitchState::DISABLE_OTHER_SIDE;
|
||||||
|
// TODO: Ugly hack. The base class should support arbitrary number of steps..
|
||||||
|
needsSecondStep = true;
|
||||||
|
} else if (sideSwitchState == SideSwitchState::DISABLE_OTHER_SIDE) {
|
||||||
|
// Set this flag because the power needs to be switched off.
|
||||||
|
dualToSingleSideTransition = true;
|
||||||
|
submode = targetSubmodeForSideSwitch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DualLaneAssemblyBase::finishModeOp() {
|
void DualLaneAssemblyBase::finishModeOp() {
|
||||||
using namespace duallane;
|
using namespace duallane;
|
||||||
AssemblyBase::handleModeReached();
|
AssemblyBase::handleModeReached();
|
||||||
|
@ -47,6 +47,7 @@ class DualLaneAssemblyBase : public AssemblyBase, public ConfirmsFailuresIF {
|
|||||||
} customRecoveryStates = RecoveryCustomStates::IDLE;
|
} customRecoveryStates = RecoveryCustomStates::IDLE;
|
||||||
|
|
||||||
MessageQueueIF* eventQueue = nullptr;
|
MessageQueueIF* eventQueue = nullptr;
|
||||||
|
void handleSideSwitchStates(uint8_t& submode, bool& needsSecondStep);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether it makes sense to send mode commands to the device.
|
* Check whether it makes sense to send mode commands to the device.
|
||||||
|
@ -45,6 +45,7 @@ ReturnValue_t SusAssembly::handleNormalOrOnModeCmd(Mode_t mode, Submode_t submod
|
|||||||
using namespace duallane;
|
using namespace duallane;
|
||||||
ReturnValue_t result = returnvalue::OK;
|
ReturnValue_t result = returnvalue::OK;
|
||||||
bool needsSecondStep = false;
|
bool needsSecondStep = false;
|
||||||
|
handleSideSwitchStates(submode, needsSecondStep);
|
||||||
auto cmdSeq = [&](object_id_t objectId, Mode_t devMode, uint8_t tableIdx) {
|
auto cmdSeq = [&](object_id_t objectId, Mode_t devMode, uint8_t tableIdx) {
|
||||||
if (mode == devMode) {
|
if (mode == devMode) {
|
||||||
modeTable[tableIdx].setMode(mode);
|
modeTable[tableIdx].setMode(mode);
|
||||||
|
Loading…
Reference in New Issue
Block a user