Merge pull request 'This bugfix might be super important' (#621) from possible_bugfix_dual_lane_assy into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good

Reviewed-on: #621
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Reviewed-by: Steffen Gaisser <gaisser@irs.uni-stuttgart.de>
This commit is contained in:
Robin Müller 2023-04-28 15:35:54 +02:00
commit 4179e8e124
2 changed files with 16 additions and 1 deletions

View File

@ -16,6 +16,10 @@ will consitute of a breaking change warranting a new major release:
# [unreleased] # [unreleased]
# [v2.2.0] to be released
# [v2.1.0] to be released
## Changed ## Changed
- Adapt EM configuration to include all GomSpace PCDU devices except the ACU. For the ACU - Adapt EM configuration to include all GomSpace PCDU devices except the ACU. For the ACU
@ -34,6 +38,16 @@ will consitute of a breaking change warranting a new major release:
- Host build is working again. Added reduced live TM helper which schedules the PUS and CFDP - Host build is working again. Added reduced live TM helper which schedules the PUS and CFDP
funnel. funnel.
# [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

View File

@ -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) {