From fe41d73895270cbe4d80ebfbc41ff9f0b8b02126 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 16 Feb 2023 17:57:03 +0100 Subject: [PATCH 1/2] remove obsolete mode --- src/fsfw/devicehandlers/DeviceHandlerBase.cpp | 5 +---- src/fsfw/devicehandlers/DeviceHandlerBase.h | 5 ----- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/fsfw/devicehandlers/DeviceHandlerBase.cpp b/src/fsfw/devicehandlers/DeviceHandlerBase.cpp index ec627142..3dbacc95 100644 --- a/src/fsfw/devicehandlers/DeviceHandlerBase.cpp +++ b/src/fsfw/devicehandlers/DeviceHandlerBase.cpp @@ -376,7 +376,7 @@ void DeviceHandlerBase::doStateMachine() { } ReturnValue_t switchState = getStateOfSwitches(); if ((switchState == PowerSwitchIF::SWITCH_OFF) || (switchState == NO_SWITCH)) { - setMode(_MODE_SWITCH_IS_OFF); + setMode(MODE_OFF, SUBMODE_NONE); } } break; case MODE_OFF: @@ -389,9 +389,6 @@ void DeviceHandlerBase::doStateMachine() { case MODE_NORMAL: case MODE_ERROR_ON: break; - case _MODE_SWITCH_IS_OFF: - setMode(MODE_OFF, SUBMODE_NONE); - break; default: triggerEvent(OBJECT_IN_INVALID_MODE, mode, submode); setMode(_MODE_POWER_DOWN, 0); diff --git a/src/fsfw/devicehandlers/DeviceHandlerBase.h b/src/fsfw/devicehandlers/DeviceHandlerBase.h index 5e05c3a8..57e9d982 100644 --- a/src/fsfw/devicehandlers/DeviceHandlerBase.h +++ b/src/fsfw/devicehandlers/DeviceHandlerBase.h @@ -150,11 +150,6 @@ class DeviceHandlerBase : public DeviceHandlerIF, //! has been commanded on and the handler waits for it to be on. //! When the switch is on, the mode changes to @c _MODE_TO_ON. static const Mode_t _MODE_WAIT_ON = TRANSITION_MODE_BASE_ACTION_MASK | 4; - //! This is a transitional state which can not be commanded. The switch has - //! been commanded off and is off now. This state is only to do an RMAP - //! cycle once more where the doSendRead() function will set the mode to - //! MODE_OFF. The reason to do this is to get rid of stuck packets in the IO Board. - static const Mode_t _MODE_SWITCH_IS_OFF = TRANSITION_MODE_BASE_ACTION_MASK | 5; void setHkDestination(object_id_t hkDestination); From a6d707a7db589136ac2bd917cd8b3a3e2c16a0e4 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 17 Feb 2023 02:04:17 +0100 Subject: [PATCH 2/2] SubsystemBase: Add function to update child modes --- src/fsfw/subsystem/SubsystemBase.cpp | 14 ++++++++++++++ src/fsfw/subsystem/SubsystemBase.h | 1 + 2 files changed, 15 insertions(+) diff --git a/src/fsfw/subsystem/SubsystemBase.cpp b/src/fsfw/subsystem/SubsystemBase.cpp index 5cfe59a3..66858c39 100644 --- a/src/fsfw/subsystem/SubsystemBase.cpp +++ b/src/fsfw/subsystem/SubsystemBase.cpp @@ -117,6 +117,20 @@ ReturnValue_t SubsystemBase::updateChildMode(MessageQueueId_t queue, Mode_t mode return CHILD_NOT_FOUND; } +ReturnValue_t SubsystemBase::updateChildModeByObjId(object_id_t objectId, Mode_t mode, + Submode_t submode) { + std::map::iterator iter; + + for (iter = childrenMap.begin(); iter != childrenMap.end(); iter++) { + if (iter->first == objectId) { + iter->second.mode = mode; + iter->second.submode = submode; + return returnvalue::OK; + } + } + return CHILD_NOT_FOUND; +} + ReturnValue_t SubsystemBase::updateChildChangedHealth(MessageQueueId_t queue, bool changedHealth) { for (auto iter = childrenMap.begin(); iter != childrenMap.end(); iter++) { if (iter->second.commandQueue == queue) { diff --git a/src/fsfw/subsystem/SubsystemBase.h b/src/fsfw/subsystem/SubsystemBase.h index 0fbf9f4a..c3886d61 100644 --- a/src/fsfw/subsystem/SubsystemBase.h +++ b/src/fsfw/subsystem/SubsystemBase.h @@ -115,6 +115,7 @@ class SubsystemBase : public SystemObject, Submode_t targetSubmode = SUBMODE_NONE); ReturnValue_t updateChildMode(MessageQueueId_t queue, Mode_t mode, Submode_t submode); + ReturnValue_t updateChildModeByObjId(object_id_t objectId, Mode_t mode, Submode_t submode); ReturnValue_t updateChildChangedHealth(MessageQueueId_t queue, bool changedHealth = true);