Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
ee3ef042cd | |||
05b0efe851 | |||
8ade378a69 | |||
045d149946 | |||
a75f9553be | |||
f271242d66 | |||
1756b5edcc | |||
9c1fc44c60 | |||
f46a705900 | |||
9183d18acc | |||
befa84a74b | |||
432b400835 |
16
CHANGELOG.md
16
CHANGELOG.md
@ -16,6 +16,22 @@ 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 datasets were not marked invalid properly on OFF transitions.
|
||||
|
||||
# [v2.0.3] 2023-04-17
|
||||
|
||||
- eive-tmtc: v3.1.1
|
||||
|
@ -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 5)
|
||||
|
||||
# set(CMAKE_VERBOSE TRUE)
|
||||
|
||||
|
@ -37,6 +37,7 @@ void GyrAdis1650XHandler::doStartUp() {
|
||||
void GyrAdis1650XHandler::doShutDown() {
|
||||
if (internalState != InternalState::SHUTDOWN) {
|
||||
commandExecuted = false;
|
||||
PoolReadGuard pg(&primaryDataset);
|
||||
primaryDataset.setValidity(false, true);
|
||||
internalState = InternalState::SHUTDOWN;
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ void GyrL3gCustomHandler::doStartUp() {
|
||||
void GyrL3gCustomHandler::doShutDown() {
|
||||
if (internalState != InternalState::SHUTDOWN) {
|
||||
internalState = InternalState::SHUTDOWN;
|
||||
PoolReadGuard pg(&dataset);
|
||||
dataset.setValidity(false, true);
|
||||
commandExecuted = false;
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ void MgmLis3CustomHandler::doStartUp() {
|
||||
|
||||
void MgmLis3CustomHandler::doShutDown() {
|
||||
if (internalState != InternalState::SHUTDOWN) {
|
||||
PoolReadGuard pg(&dataset);
|
||||
dataset.setValidity(false, true);
|
||||
internalState = InternalState::SHUTDOWN;
|
||||
commandExecuted = false;
|
||||
|
@ -33,6 +33,7 @@ void MgmRm3100CustomHandler::doStartUp() {
|
||||
void MgmRm3100CustomHandler::doShutDown() {
|
||||
if (internalState != InternalState::SHUTDOWN) {
|
||||
commandExecuted = false;
|
||||
PoolReadGuard pg(&primaryDataset);
|
||||
primaryDataset.setValidity(false, true);
|
||||
internalState = InternalState::SHUTDOWN;
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ void SusHandler::doStartUp() {
|
||||
|
||||
void SusHandler::doShutDown() {
|
||||
if (internalState != InternalState::SHUTDOWN) {
|
||||
PoolReadGuard pg(&dataset);
|
||||
dataset.setValidity(false, true);
|
||||
internalState = InternalState::SHUTDOWN;
|
||||
commandExecuted = false;
|
||||
|
@ -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) {
|
||||
|
2
tmtc
2
tmtc
Submodule tmtc updated: 0c6a9677e1...5fbd19bb6c
Reference in New Issue
Block a user