seems to work now, but the whole printout crap needs to be removed
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good

This commit is contained in:
2023-04-05 14:41:34 +02:00
parent 0cabe3a9ea
commit 5e93282662
5 changed files with 60 additions and 27 deletions

View File

@ -36,6 +36,8 @@ void DualLaneAssemblyBase::performChildOperation() {
void DualLaneAssemblyBase::startTransition(Mode_t mode, Submode_t submode) {
using namespace duallane;
pwrStateMachine.reset();
dualToSingleSideTransition = false;
sideSwitchState = SideSwitchState::NONE;
if (mode != MODE_OFF) {
// Special exception: A transition from dual side to single mode must be handled like
@ -84,12 +86,15 @@ ReturnValue_t DualLaneAssemblyBase::pwrStateMachineWrapper() {
if (opCode == OpCodes::NONE) {
return returnvalue::OK;
} else if (opCode == OpCodes::TO_OFF_DONE) {
sif::debug << "to off done" << std::endl;
// Will be called for transitions to MODE_OFF, where everything is done after power switching
finishModeOp();
} else if (opCode == OpCodes::TO_NOT_OFF_DONE) {
if (dualToSingleSideTransition) {
sif::debug << "finishing dual to single side transition" << std::endl;
finishModeOp();
} else {
sif::debug << "starting ASM base transition with submode " << (int) targetSubmode << std::endl;
// Will be called for transitions from MODE_OFF to anything else, where the mode still has
// to be commanded after power switching
AssemblyBase::startTransition(targetMode, targetSubmode);
@ -181,7 +186,9 @@ void DualLaneAssemblyBase::handleModeTransitionFailed(ReturnValue_t result) {
startTransition(mode, nextSubmode);
tryingOtherSide = true;
} else {
sif::debug << "starting dual side transition" << std::endl;
triggerEvent(transitionOtherSideFailedEvent, mode, targetSubmode);
// If we have just attempted side swichting, this flag needs to be reset!
startTransition(mode, Submodes::DUAL_MODE);
}
}