v1.10.0 #220

Merged
meierj merged 592 commits from develop into main 2022-04-22 07:42:20 +02:00
Showing only changes of commit fec6cc3ea9 - Show all commits

View File

@ -12,8 +12,10 @@ void DualLaneAssemblyBase::performChildOperation() {
using namespace duallane; using namespace duallane;
if (pwrStateMachine.active()) { if (pwrStateMachine.active()) {
pwrStateMachineWrapper(); pwrStateMachineWrapper();
// This state is the indicator that the power state machine is done
} }
// Only perform the regular child operation if the power state machine is not active.
// It does not make any sense to command device modes while the power switcher is busy
// switching off or on devices.
if (not pwrStateMachine.active()) { if (not pwrStateMachine.active()) {
AssemblyBase::performChildOperation(); AssemblyBase::performChildOperation();
} }
@ -61,8 +63,11 @@ ReturnValue_t DualLaneAssemblyBase::pwrStateMachineWrapper() {
if (opCode == OpCodes::NONE) { if (opCode == OpCodes::NONE) {
return RETURN_OK; return RETURN_OK;
} else if (opCode == OpCodes::FINISH_OP) { } else if (opCode == OpCodes::FINISH_OP) {
// Will be called for transitions to MODE_OFF, where everything is done after power switching
finishModeOp(); finishModeOp();
} else if (opCode == OpCodes::START_TRANSITION) { } else if (opCode == OpCodes::START_TRANSITION) {
// 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); AssemblyBase::startTransition(targetMode, targetSubmode);
} else if (opCode == OpCodes::TIMEOUT_OCCURED) { } else if (opCode == OpCodes::TIMEOUT_OCCURED) {
if (powerRetryCounter == 0) { if (powerRetryCounter == 0) {