okay lets see if this works
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:
parent
f271242d66
commit
a75f9553be
13
CHANGELOG.md
13
CHANGELOG.md
@ -16,12 +16,21 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
# [v2.0.5] to be released
|
||||||
|
|
||||||
|
- The dual lane assembly transition failed handler started new transitions towards the current mode
|
||||||
|
instead of the target mode. This means that if the dual lane assembly never reached the initial
|
||||||
|
submode (e.g. mode normal and submode dual side), it will transition back to the current mode,
|
||||||
|
which miht be `MODE_OFF`. Furthermore, this can lead to invalid internal states, so the subsequent
|
||||||
|
recovery handling becomes stuck in the custom recovery sequence when swichting power back on.
|
||||||
|
- The dual lane custom recovery handling was adapted to always perform proper power switch handling
|
||||||
|
irrespective of current or target modes.
|
||||||
|
|
||||||
# [v2.0.4] 2023-04-19
|
# [v2.0.4] 2023-04-19
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
|
|
||||||
- The dual lane assembly device handlers did not properly set their datasets
|
- The dual lane assembly datasets were not marked invalid properly on OFF transitions.
|
||||||
to invalid on off transitions
|
|
||||||
|
|
||||||
# [v2.0.3] 2023-04-17
|
# [v2.0.3] 2023-04-17
|
||||||
|
|
||||||
|
@ -183,11 +183,11 @@ void DualLaneAssemblyBase::handleModeTransitionFailed(ReturnValue_t result) {
|
|||||||
// transition to dual mode.
|
// transition to dual mode.
|
||||||
if (not tryingOtherSide) {
|
if (not tryingOtherSide) {
|
||||||
triggerEvent(CANT_KEEP_MODE, mode, submode);
|
triggerEvent(CANT_KEEP_MODE, mode, submode);
|
||||||
startTransition(mode, nextSubmode);
|
startTransition(targetMode, nextSubmode);
|
||||||
tryingOtherSide = true;
|
tryingOtherSide = true;
|
||||||
} else {
|
} else {
|
||||||
triggerEvent(transitionOtherSideFailedEvent, mode, targetSubmode);
|
triggerEvent(transitionOtherSideFailedEvent, targetMode, targetSubmode);
|
||||||
startTransition(mode, Submodes::DUAL_MODE);
|
startTransition(targetMode, Submodes::DUAL_MODE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,7 +205,8 @@ bool DualLaneAssemblyBase::checkAndHandleRecovery() {
|
|||||||
opCode = pwrStateMachine.fsm();
|
opCode = pwrStateMachine.fsm();
|
||||||
if (opCode == OpCodes::TO_OFF_DONE or opCode == OpCodes::TIMEOUT_OCCURED) {
|
if (opCode == OpCodes::TO_OFF_DONE or opCode == OpCodes::TIMEOUT_OCCURED) {
|
||||||
customRecoveryStates = RecoveryCustomStates::POWER_SWITCHING_ON;
|
customRecoveryStates = RecoveryCustomStates::POWER_SWITCHING_ON;
|
||||||
pwrStateMachine.start(targetMode, targetSubmode);
|
// Command power back on in any case.
|
||||||
|
pwrStateMachine.start(HasModesIF::MODE_ON, targetSubmode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (customRecoveryStates == POWER_SWITCHING_ON) {
|
if (customRecoveryStates == POWER_SWITCHING_ON) {
|
||||||
|
Loading…
Reference in New Issue
Block a user