From 9945f72eaff6a826c716ef3c73ace2b8baeed829 Mon Sep 17 00:00:00 2001 From: "spahr@ksat-stuttgart.de" Date: Sat, 22 Mar 2025 09:40:31 +0100 Subject: [PATCH 1/4] improve documentation for event --- src/fsfw/health/HasHealthIF.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fsfw/health/HasHealthIF.h b/src/fsfw/health/HasHealthIF.h index 16666bbc..2234a119 100644 --- a/src/fsfw/health/HasHealthIF.h +++ b/src/fsfw/health/HasHealthIF.h @@ -27,7 +27,8 @@ class HasHealthIF { static const Event CHILD_PROBLEMS = MAKE_EVENT(8, severity::LOW); //! Assembly overwrites health information of children to keep satellite alive. static const Event OVERWRITING_HEALTH = MAKE_EVENT(9, severity::LOW); - //! Someone starts a recovery of a component (typically power-cycle). No parameters. + //! Someone starts a recovery of a component (typically power-cycle). + //! P1: Object Id of the recovering device. static const Event TRYING_RECOVERY = MAKE_EVENT(10, severity::MEDIUM); //! Recovery is ongoing. Comes twice during recovery. //! P1: 0 for the first, 1 for the second event. P2: 0 -- 2.43.0 From b7699b327b3e76f79a2fb88de3b370ec0d3eb023 Mon Sep 17 00:00:00 2001 From: "spahr@ksat-stuttgart.de" Date: Sat, 22 Mar 2025 09:48:30 +0100 Subject: [PATCH 2/4] add two new events for the recovery process, to make debug and output more clear. This also makes a recovery process more clear for OPS. --- src/fsfw/devicehandlers/AssemblyBase.cpp | 4 ++-- src/fsfw/health/HasHealthIF.h | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/fsfw/devicehandlers/AssemblyBase.cpp b/src/fsfw/devicehandlers/AssemblyBase.cpp index 14575e69..5424ce39 100644 --- a/src/fsfw/devicehandlers/AssemblyBase.cpp +++ b/src/fsfw/devicehandlers/AssemblyBase.cpp @@ -235,14 +235,14 @@ bool AssemblyBase::checkAndHandleRecovery() { if (recoveryOffTimer.isBusy()) { return true; } - triggerEvent(RECOVERY_STEP, 0); + triggerEvent(RECOVERY_WAITING, recoveringDevice->first); sendHealthCommand(recoveringDevice->second.commandQueue, HEALTHY); internalState = STATE_NONE; recoveryState = RECOVERY_ONGOING; // Don't check state! return true; case RECOVERY_ONGOING: - triggerEvent(RECOVERY_STEP, 1); + triggerEvent(RECOVERY_RESTARTING, recoveringDevice->first); recoveryState = RECOVERY_ONGOING_2; recoveringDevice->second.healthChanged = false; // Device should be healthy again, so restart a transition. diff --git a/src/fsfw/health/HasHealthIF.h b/src/fsfw/health/HasHealthIF.h index 2234a119..07f9a5b4 100644 --- a/src/fsfw/health/HasHealthIF.h +++ b/src/fsfw/health/HasHealthIF.h @@ -35,6 +35,13 @@ class HasHealthIF { static const Event RECOVERY_STEP = MAKE_EVENT(11, severity::MEDIUM); //! Recovery was completed. Not necessarily successful. No parameters. static const Event RECOVERY_DONE = MAKE_EVENT(12, severity::MEDIUM); + //! Recovery is ongoing. The recovering device is currently OFF, waiting for restart. + //! P1: Object Id of the recovering device. + static const Event RECOVERY_WAITING = MAKE_EVENT(13, severity::MEDIUM); + //! Recovery is ongoing. Restarting the recovering device. + //! P1: Object Id of the recovering device. + static const Event RECOVERY_RESTARTING = MAKE_EVENT(14, severity::MEDIUM); + virtual ~HasHealthIF() {} virtual MessageQueueId_t getCommandQueue() const = 0; -- 2.43.0 From 1e12753533f3516fe0e63c9ca54d381ae00c2702 Mon Sep 17 00:00:00 2001 From: "spahr@ksat-stuttgart.de" Date: Sat, 22 Mar 2025 09:49:44 +0100 Subject: [PATCH 3/4] add device object id to event --- src/fsfw/devicehandlers/AssemblyBase.cpp | 2 +- src/fsfw/health/HasHealthIF.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fsfw/devicehandlers/AssemblyBase.cpp b/src/fsfw/devicehandlers/AssemblyBase.cpp index 5424ce39..ada7c4a8 100644 --- a/src/fsfw/devicehandlers/AssemblyBase.cpp +++ b/src/fsfw/devicehandlers/AssemblyBase.cpp @@ -250,7 +250,7 @@ bool AssemblyBase::checkAndHandleRecovery() { doStartTransition(targetMode, targetSubmode); return true; case RECOVERY_ONGOING_2: - triggerEvent(RECOVERY_DONE); + triggerEvent(RECOVERY_DONE, recoveringDevice->first); // Now we're through, but not sure if it was successful. recoveryState = RECOVERY_IDLE; return false; diff --git a/src/fsfw/health/HasHealthIF.h b/src/fsfw/health/HasHealthIF.h index 07f9a5b4..483b60c1 100644 --- a/src/fsfw/health/HasHealthIF.h +++ b/src/fsfw/health/HasHealthIF.h @@ -34,6 +34,7 @@ class HasHealthIF { //! P1: 0 for the first, 1 for the second event. P2: 0 static const Event RECOVERY_STEP = MAKE_EVENT(11, severity::MEDIUM); //! Recovery was completed. Not necessarily successful. No parameters. + //! P1: Object Id of the recovering device. static const Event RECOVERY_DONE = MAKE_EVENT(12, severity::MEDIUM); //! Recovery is ongoing. The recovering device is currently OFF, waiting for restart. //! P1: Object Id of the recovering device. -- 2.43.0 From d8ac312e85fa31f3f42db8a70df95df946362aeb Mon Sep 17 00:00:00 2001 From: "spahr@ksat-stuttgart.de" Date: Sat, 22 Mar 2025 10:01:01 +0100 Subject: [PATCH 4/4] remove event because it's no longer needed. --- src/fsfw/health/HasHealthIF.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/fsfw/health/HasHealthIF.h b/src/fsfw/health/HasHealthIF.h index 483b60c1..11a1aed5 100644 --- a/src/fsfw/health/HasHealthIF.h +++ b/src/fsfw/health/HasHealthIF.h @@ -30,9 +30,6 @@ class HasHealthIF { //! Someone starts a recovery of a component (typically power-cycle). //! P1: Object Id of the recovering device. static const Event TRYING_RECOVERY = MAKE_EVENT(10, severity::MEDIUM); - //! Recovery is ongoing. Comes twice during recovery. - //! P1: 0 for the first, 1 for the second event. P2: 0 - static const Event RECOVERY_STEP = MAKE_EVENT(11, severity::MEDIUM); //! Recovery was completed. Not necessarily successful. No parameters. //! P1: Object Id of the recovering device. static const Event RECOVERY_DONE = MAKE_EVENT(12, severity::MEDIUM); -- 2.43.0