From 432b400835324357ba8409e81d02800f5e024c6f Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 18 Apr 2023 10:28:01 +0200 Subject: [PATCH 1/4] bump tmtc --- tmtc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmtc b/tmtc index 0c6a9677..5fbd19bb 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 0c6a9677e1b9b86456efff2e11ba31f99e15ac2a +Subproject commit 5fbd19bb6cca0790373a809d78f2307adca9d0c8 From 1756b5edcc4293892d2aef7a30d5b58c8c40db33 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 19 Apr 2023 18:14:28 +0200 Subject: [PATCH 2/4] patch revision --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f632d2d..358dd8ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.13) set(OBSW_VERSION_MAJOR 2) set(OBSW_VERSION_MINOR 0) -set(OBSW_VERSION_REVISION 3) +set(OBSW_VERSION_REVISION 4) # set(CMAKE_VERBOSE TRUE) From a75f9553be53ab922311b31d5140e1776a7c02e4 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 11 May 2023 18:38:41 +0200 Subject: [PATCH 3/4] okay lets see if this works --- CHANGELOG.md | 13 +++++++++++-- mission/system/acs/DualLaneAssemblyBase.cpp | 9 +++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2731eb8e..3d543d0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,12 +16,21 @@ will consitute of a breaking change warranting a new major release: # [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 ## Fixed -- The dual lane assembly device handlers did not properly set their datasets - to invalid on off transitions +- The dual lane assembly datasets were not marked invalid properly on OFF transitions. # [v2.0.3] 2023-04-17 diff --git a/mission/system/acs/DualLaneAssemblyBase.cpp b/mission/system/acs/DualLaneAssemblyBase.cpp index 7d22fbd1..dc97908f 100644 --- a/mission/system/acs/DualLaneAssemblyBase.cpp +++ b/mission/system/acs/DualLaneAssemblyBase.cpp @@ -183,11 +183,11 @@ void DualLaneAssemblyBase::handleModeTransitionFailed(ReturnValue_t result) { // transition to dual mode. if (not tryingOtherSide) { triggerEvent(CANT_KEEP_MODE, mode, submode); - startTransition(mode, nextSubmode); + startTransition(targetMode, nextSubmode); tryingOtherSide = true; } else { - triggerEvent(transitionOtherSideFailedEvent, mode, targetSubmode); - startTransition(mode, Submodes::DUAL_MODE); + triggerEvent(transitionOtherSideFailedEvent, targetMode, targetSubmode); + startTransition(targetMode, Submodes::DUAL_MODE); } } @@ -205,7 +205,8 @@ bool DualLaneAssemblyBase::checkAndHandleRecovery() { opCode = pwrStateMachine.fsm(); if (opCode == OpCodes::TO_OFF_DONE or opCode == OpCodes::TIMEOUT_OCCURED) { 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) { From 045d1499468c95a4864402c8579b3946798c777a Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 11 May 2023 18:50:49 +0200 Subject: [PATCH 4/4] bump revision --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 358dd8ab..ace83e22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.13) set(OBSW_VERSION_MAJOR 2) set(OBSW_VERSION_MINOR 0) -set(OBSW_VERSION_REVISION 4) +set(OBSW_VERSION_REVISION 5) # set(CMAKE_VERBOSE TRUE)