From 971fd5b4a321c16cd6d2cdbcc2286e00b2fde20a Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 2 Aug 2023 09:20:36 +0200 Subject: [PATCH 1/8] improve SCEX FS usage code --- mission/payload/ScexDeviceHandler.cpp | 37 +++++++++++++++++---------- mission/payload/ScexDeviceHandler.h | 1 + 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/mission/payload/ScexDeviceHandler.cpp b/mission/payload/ScexDeviceHandler.cpp index f44aa78b..40cbfbab 100644 --- a/mission/payload/ScexDeviceHandler.cpp +++ b/mission/payload/ScexDeviceHandler.cpp @@ -23,7 +23,10 @@ ScexDeviceHandler::ScexDeviceHandler(object_id_t objectId, ScexUartReader& reade ScexDeviceHandler::~ScexDeviceHandler() {} -void ScexDeviceHandler::doStartUp() { setMode(MODE_ON); } +void ScexDeviceHandler::doStartUp() { + filesystemChecks(); + setMode(MODE_ON); +} void ScexDeviceHandler::doShutDown() { reader.reset(); @@ -280,18 +283,8 @@ ReturnValue_t ScexDeviceHandler::interpretDeviceReply(DeviceCommandId_t id, cons } void ScexDeviceHandler::performOperationHook() { - auto mntPrefix = sdcMan.getCurrentMountPrefix(); - if (mntPrefix != nullptr) { - std::filesystem::path fullFilePath = mntPrefix; - std::error_code e; - fullFilePath /= "scex"; - bool fileExists = std::filesystem::exists(fullFilePath, e); - if (not fileExists) { - bool created = std::filesystem::create_directory(fullFilePath, e); - if (not created) { - sif::error << "Could not create SCEX directory: " << e << std::endl; - } - } + if (getMode() != MODE_OFF) { + filesystemChecks(); } uint32_t remainingMillis = finishCountdown.getRemainingMillis(); if (commandActive and finishCountdown.hasTimedOut()) { @@ -319,6 +312,24 @@ ReturnValue_t ScexDeviceHandler::initializeLocalDataPool(localpool::DataPool& lo return OK; } +void ScexDeviceHandler::filesystemChecks() { + auto mntPrefix = sdcMan.getCurrentMountPrefix(); + if (mntPrefix == nullptr or !sdcMan.isSdCardUsable(std::nullopt)) { + sif::warning << "SCEX: Filesystem currently unavailable" << std::endl; + } else { + std::filesystem::path fullFilePath = mntPrefix; + std::error_code e; + fullFilePath /= "scex"; + bool fileExists = std::filesystem::exists(fullFilePath, e); + if (not fileExists) { + bool created = std::filesystem::create_directory(fullFilePath, e); + if (not created) { + sif::error << "Could not create SCEX directory: " << e << std::endl; + } + } + } +} + ReturnValue_t ScexDeviceHandler::generateNewScexFile(const char* cmdName) { char timeString[64]{}; auto activeSd = sdcMan.getActiveSdCard(); diff --git a/mission/payload/ScexDeviceHandler.h b/mission/payload/ScexDeviceHandler.h index e7721ef6..6e1924e3 100644 --- a/mission/payload/ScexDeviceHandler.h +++ b/mission/payload/ScexDeviceHandler.h @@ -55,6 +55,7 @@ class ScexDeviceHandler : public DeviceHandlerBase { ReturnValue_t buildCommandFromCommand(DeviceCommandId_t deviceCommand, const uint8_t *commandData, size_t commandDataLen) override; void fillCommandAndReplyMap() override; + void filesystemChecks(); ReturnValue_t scanForReply(const uint8_t *start, size_t remainingSize, DeviceCommandId_t *foundId, size_t *foundLen) override; ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) override; From d9a010f6bdd01964ed92ed8c7e884359c3f8ad40 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 2 Aug 2023 09:21:53 +0200 Subject: [PATCH 2/8] changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61ee5871..a929dcfd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,11 @@ will consitute of a breaking change warranting a new major release: - Small SCEX fix: The temperatur check option was not passed on for commands with a user data size larger than 1. +- SCEX: Properly check whether filesystem is usable for filesystem checks + +## Changed + +- SCEX: Only perform filesystem checks when not in OFF mode. # [v6.2.0] 2023-07-26 From 58c19e90ebee9e11e04d0dec4293a30406d255bb Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 2 Aug 2023 09:29:28 +0200 Subject: [PATCH 3/8] changelog fix --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index adc703a5..8dd8f9e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,12 +21,13 @@ will consitute of a breaking change warranting a new major release: - Small SCEX fix: The temperatur check option was not passed on for commands with a user data size larger than 1. - SCEX: Properly check whether filesystem is usable for filesystem checks +- `EiveSystem`: Add a small delay between triggering an event for FDIR reboots and sending the + command to the core controller. ## Changed - SCEX: Only perform filesystem checks when not in OFF mode. -- `EiveSystem`: Add a small delay between triggering an event for FDIR reboots and sending the - command to the core controller. + - The `EiveSystem` now only sends reboot commands targetting the same image. # [v6.2.0] 2023-07-26 From c120ce8617c6a09f7afb612898e02927a008f494 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 2 Aug 2023 09:29:55 +0200 Subject: [PATCH 4/8] remove newline --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dd8f9e2..4e0c21a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,6 @@ will consitute of a breaking change warranting a new major release: ## Changed - SCEX: Only perform filesystem checks when not in OFF mode. - - The `EiveSystem` now only sends reboot commands targetting the same image. # [v6.2.0] 2023-07-26 From f0bbc1d09026ed9532113cc909da5e9183e0a0e1 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 2 Aug 2023 09:39:42 +0200 Subject: [PATCH 5/8] added filesystem down event --- mission/payload/ScexDeviceHandler.cpp | 23 +++++++++++++++++++---- mission/payload/ScexDeviceHandler.h | 2 ++ mission/payload/scexHelpers.h | 1 + 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/mission/payload/ScexDeviceHandler.cpp b/mission/payload/ScexDeviceHandler.cpp index 40cbfbab..6281142d 100644 --- a/mission/payload/ScexDeviceHandler.cpp +++ b/mission/payload/ScexDeviceHandler.cpp @@ -19,7 +19,9 @@ using namespace returnvalue; ScexDeviceHandler::ScexDeviceHandler(object_id_t objectId, ScexUartReader& reader, CookieIF* cookie, SdCardMountedIF& sdcMan) - : DeviceHandlerBase(objectId, reader.getObjectId(), cookie), sdcMan(sdcMan), reader(reader) {} + : DeviceHandlerBase(objectId, reader.getObjectId(), cookie), sdcMan(sdcMan), reader(reader) { + fsUnusableEventCd.timeOut(); +} ScexDeviceHandler::~ScexDeviceHandler() {} @@ -218,8 +220,12 @@ ReturnValue_t ScexDeviceHandler::interpretDeviceReply(DeviceCommandId_t id, cons } fileNameSet = true; } else { - ofstream out(fileName, - ofstream::binary | ofstream::app); // append + if (!sdcMan.isSdCardUsable(std::nullopt)) { + fsUnsableEvent(); + return returnvalue::FAILED; + } + // Append to existing file. + ofstream out(fileName, ofstream::binary | ofstream::app); if (out.bad()) { sif::error << "ScexDeviceHandler::handleValidReply: Could not open file " << fileName << std::endl; @@ -330,6 +336,14 @@ void ScexDeviceHandler::filesystemChecks() { } } +void ScexDeviceHandler::fsUnsableEvent() { + if (fsUnusableEventCd.isBusy()) { + return; + } + triggerEvent(scex::FS_UNUSABLE); + fsUnusableEventCd.resetTimer(); +} + ReturnValue_t ScexDeviceHandler::generateNewScexFile(const char* cmdName) { char timeString[64]{}; auto activeSd = sdcMan.getActiveSdCard(); @@ -339,7 +353,8 @@ ReturnValue_t ScexDeviceHandler::generateNewScexFile(const char* cmdName) { std::ostringstream oss; auto prefix = sdcMan.getCurrentMountPrefix(); - if (prefix == nullptr) { + if (prefix == nullptr or !sdcMan.isSdCardUsable(std::nullopt)) { + fsUnsableEvent(); return returnvalue::FAILED; } timeval tv; diff --git a/mission/payload/ScexDeviceHandler.h b/mission/payload/ScexDeviceHandler.h index 6e1924e3..ed30668f 100644 --- a/mission/payload/ScexDeviceHandler.h +++ b/mission/payload/ScexDeviceHandler.h @@ -42,6 +42,7 @@ class ScexDeviceHandler : public DeviceHandlerBase { scex::Cmds currCmd = scex::Cmds::PING; SdCardMountedIF &sdcMan; Countdown finishCountdown = Countdown(LONG_CD); + Countdown fsUnusableEventCd = Countdown(60000); // DeviceHandlerBase private function implementation void doStartUp() override; @@ -49,6 +50,7 @@ class ScexDeviceHandler : public DeviceHandlerBase { ScexHelper helper; ScexUartReader &reader; + void fsUnsableEvent(); void performOperationHook() override; ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t *id) override; ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t *id) override; diff --git a/mission/payload/scexHelpers.h b/mission/payload/scexHelpers.h index aa0f320b..9b9e8f14 100644 --- a/mission/payload/scexHelpers.h +++ b/mission/payload/scexHelpers.h @@ -17,6 +17,7 @@ static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::SCEX_HANDLER; static constexpr Event MISSING_PACKET = event::makeEvent(SUBSYSTEM_ID, 0, severity::LOW); static constexpr Event EXPERIMENT_TIMEDOUT = event::makeEvent(SUBSYSTEM_ID, 1, severity::LOW); +static constexpr Event FS_UNUSABLE = event::makeEvent(SUBSYSTEM_ID, 2, severity::LOW); //! FRAM, One Cell or All cells command finished. P1: Command ID static constexpr Event MULTI_PACKET_COMMAND_DONE = event::makeEvent(SUBSYSTEM_ID, 2, severity::INFO); From beb79d2fb4be89e7a96d2abe0430d40986412182 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 2 Aug 2023 09:41:54 +0200 Subject: [PATCH 6/8] that should do the job --- bsp_hosted/fsfwconfig/events/translateEvents.cpp | 7 +++++-- bsp_hosted/fsfwconfig/objects/translateObjects.cpp | 2 +- generators/bsp_hosted_events.csv | 1 + generators/bsp_q7s_events.csv | 1 + generators/events/translateEvents.cpp | 7 +++++-- generators/objects/translateObjects.cpp | 2 +- linux/fsfwconfig/events/translateEvents.cpp | 7 +++++-- linux/fsfwconfig/objects/translateObjects.cpp | 2 +- mission/payload/ScexDeviceHandler.h | 3 ++- mission/payload/scexHelpers.h | 2 +- tmtc | 2 +- 11 files changed, 24 insertions(+), 12 deletions(-) diff --git a/bsp_hosted/fsfwconfig/events/translateEvents.cpp b/bsp_hosted/fsfwconfig/events/translateEvents.cpp index 2899592d..3a53a4fb 100644 --- a/bsp_hosted/fsfwconfig/events/translateEvents.cpp +++ b/bsp_hosted/fsfwconfig/events/translateEvents.cpp @@ -1,7 +1,7 @@ /** - * @brief Auto-generated event translation file. Contains 301 translations. + * @brief Auto-generated event translation file. Contains 302 translations. * @details - * Generated on: 2023-07-26 12:51:20 + * Generated on: 2023-08-02 09:40:31 */ #include "translateEvents.h" @@ -261,6 +261,7 @@ const char *TX_OFF_STRING = "TX_OFF"; const char *MISSING_PACKET_STRING = "MISSING_PACKET"; const char *EXPERIMENT_TIMEDOUT_STRING = "EXPERIMENT_TIMEDOUT"; const char *MULTI_PACKET_COMMAND_DONE_STRING = "MULTI_PACKET_COMMAND_DONE"; +const char *FS_UNUSABLE_STRING = "FS_UNUSABLE"; const char *SET_CONFIGFILEVALUE_FAILED_STRING = "SET_CONFIGFILEVALUE_FAILED"; const char *GET_CONFIGFILEVALUE_FAILED_STRING = "GET_CONFIGFILEVALUE_FAILED"; const char *INSERT_CONFIGFILEVALUE_FAILED_STRING = "INSERT_CONFIGFILEVALUE_FAILED"; @@ -821,6 +822,8 @@ const char *translateEvents(Event event) { return EXPERIMENT_TIMEDOUT_STRING; case (13802): return MULTI_PACKET_COMMAND_DONE_STRING; + case (13803): + return FS_UNUSABLE_STRING; case (13901): return SET_CONFIGFILEVALUE_FAILED_STRING; case (13902): diff --git a/bsp_hosted/fsfwconfig/objects/translateObjects.cpp b/bsp_hosted/fsfwconfig/objects/translateObjects.cpp index a0002c24..8a6f23a0 100644 --- a/bsp_hosted/fsfwconfig/objects/translateObjects.cpp +++ b/bsp_hosted/fsfwconfig/objects/translateObjects.cpp @@ -2,7 +2,7 @@ * @brief Auto-generated object translation file. * @details * Contains 171 translations. - * Generated on: 2023-07-26 12:51:20 + * Generated on: 2023-08-02 09:40:31 */ #include "translateObjects.h" diff --git a/generators/bsp_hosted_events.csv b/generators/bsp_hosted_events.csv index 0cb9ba70..1c6f646d 100644 --- a/generators/bsp_hosted_events.csv +++ b/generators/bsp_hosted_events.csv @@ -255,6 +255,7 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path 13800;0x35e8;MISSING_PACKET;LOW;No description;mission/payload/scexHelpers.h 13801;0x35e9;EXPERIMENT_TIMEDOUT;LOW;No description;mission/payload/scexHelpers.h 13802;0x35ea;MULTI_PACKET_COMMAND_DONE;INFO;No description;mission/payload/scexHelpers.h +13803;0x35eb;FS_UNUSABLE;LOW;No description;mission/payload/scexHelpers.h 13901;0x364d;SET_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h 13902;0x364e;GET_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h 13903;0x364f;INSERT_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h diff --git a/generators/bsp_q7s_events.csv b/generators/bsp_q7s_events.csv index 0cb9ba70..1c6f646d 100644 --- a/generators/bsp_q7s_events.csv +++ b/generators/bsp_q7s_events.csv @@ -255,6 +255,7 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path 13800;0x35e8;MISSING_PACKET;LOW;No description;mission/payload/scexHelpers.h 13801;0x35e9;EXPERIMENT_TIMEDOUT;LOW;No description;mission/payload/scexHelpers.h 13802;0x35ea;MULTI_PACKET_COMMAND_DONE;INFO;No description;mission/payload/scexHelpers.h +13803;0x35eb;FS_UNUSABLE;LOW;No description;mission/payload/scexHelpers.h 13901;0x364d;SET_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h 13902;0x364e;GET_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h 13903;0x364f;INSERT_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h diff --git a/generators/events/translateEvents.cpp b/generators/events/translateEvents.cpp index 2899592d..3a53a4fb 100644 --- a/generators/events/translateEvents.cpp +++ b/generators/events/translateEvents.cpp @@ -1,7 +1,7 @@ /** - * @brief Auto-generated event translation file. Contains 301 translations. + * @brief Auto-generated event translation file. Contains 302 translations. * @details - * Generated on: 2023-07-26 12:51:20 + * Generated on: 2023-08-02 09:40:31 */ #include "translateEvents.h" @@ -261,6 +261,7 @@ const char *TX_OFF_STRING = "TX_OFF"; const char *MISSING_PACKET_STRING = "MISSING_PACKET"; const char *EXPERIMENT_TIMEDOUT_STRING = "EXPERIMENT_TIMEDOUT"; const char *MULTI_PACKET_COMMAND_DONE_STRING = "MULTI_PACKET_COMMAND_DONE"; +const char *FS_UNUSABLE_STRING = "FS_UNUSABLE"; const char *SET_CONFIGFILEVALUE_FAILED_STRING = "SET_CONFIGFILEVALUE_FAILED"; const char *GET_CONFIGFILEVALUE_FAILED_STRING = "GET_CONFIGFILEVALUE_FAILED"; const char *INSERT_CONFIGFILEVALUE_FAILED_STRING = "INSERT_CONFIGFILEVALUE_FAILED"; @@ -821,6 +822,8 @@ const char *translateEvents(Event event) { return EXPERIMENT_TIMEDOUT_STRING; case (13802): return MULTI_PACKET_COMMAND_DONE_STRING; + case (13803): + return FS_UNUSABLE_STRING; case (13901): return SET_CONFIGFILEVALUE_FAILED_STRING; case (13902): diff --git a/generators/objects/translateObjects.cpp b/generators/objects/translateObjects.cpp index fef8fb71..f4779490 100644 --- a/generators/objects/translateObjects.cpp +++ b/generators/objects/translateObjects.cpp @@ -2,7 +2,7 @@ * @brief Auto-generated object translation file. * @details * Contains 175 translations. - * Generated on: 2023-07-26 12:51:20 + * Generated on: 2023-08-02 09:40:31 */ #include "translateObjects.h" diff --git a/linux/fsfwconfig/events/translateEvents.cpp b/linux/fsfwconfig/events/translateEvents.cpp index 2899592d..3a53a4fb 100644 --- a/linux/fsfwconfig/events/translateEvents.cpp +++ b/linux/fsfwconfig/events/translateEvents.cpp @@ -1,7 +1,7 @@ /** - * @brief Auto-generated event translation file. Contains 301 translations. + * @brief Auto-generated event translation file. Contains 302 translations. * @details - * Generated on: 2023-07-26 12:51:20 + * Generated on: 2023-08-02 09:40:31 */ #include "translateEvents.h" @@ -261,6 +261,7 @@ const char *TX_OFF_STRING = "TX_OFF"; const char *MISSING_PACKET_STRING = "MISSING_PACKET"; const char *EXPERIMENT_TIMEDOUT_STRING = "EXPERIMENT_TIMEDOUT"; const char *MULTI_PACKET_COMMAND_DONE_STRING = "MULTI_PACKET_COMMAND_DONE"; +const char *FS_UNUSABLE_STRING = "FS_UNUSABLE"; const char *SET_CONFIGFILEVALUE_FAILED_STRING = "SET_CONFIGFILEVALUE_FAILED"; const char *GET_CONFIGFILEVALUE_FAILED_STRING = "GET_CONFIGFILEVALUE_FAILED"; const char *INSERT_CONFIGFILEVALUE_FAILED_STRING = "INSERT_CONFIGFILEVALUE_FAILED"; @@ -821,6 +822,8 @@ const char *translateEvents(Event event) { return EXPERIMENT_TIMEDOUT_STRING; case (13802): return MULTI_PACKET_COMMAND_DONE_STRING; + case (13803): + return FS_UNUSABLE_STRING; case (13901): return SET_CONFIGFILEVALUE_FAILED_STRING; case (13902): diff --git a/linux/fsfwconfig/objects/translateObjects.cpp b/linux/fsfwconfig/objects/translateObjects.cpp index fef8fb71..f4779490 100644 --- a/linux/fsfwconfig/objects/translateObjects.cpp +++ b/linux/fsfwconfig/objects/translateObjects.cpp @@ -2,7 +2,7 @@ * @brief Auto-generated object translation file. * @details * Contains 175 translations. - * Generated on: 2023-07-26 12:51:20 + * Generated on: 2023-08-02 09:40:31 */ #include "translateObjects.h" diff --git a/mission/payload/ScexDeviceHandler.h b/mission/payload/ScexDeviceHandler.h index ed30668f..ecde12a5 100644 --- a/mission/payload/ScexDeviceHandler.h +++ b/mission/payload/ScexDeviceHandler.h @@ -42,7 +42,7 @@ class ScexDeviceHandler : public DeviceHandlerBase { scex::Cmds currCmd = scex::Cmds::PING; SdCardMountedIF &sdcMan; Countdown finishCountdown = Countdown(LONG_CD); - Countdown fsUnusableEventCd = Countdown(60000); + Countdown fsUnusableEventCd = Countdown(10000); // DeviceHandlerBase private function implementation void doStartUp() override; @@ -51,6 +51,7 @@ class ScexDeviceHandler : public DeviceHandlerBase { ScexUartReader &reader; void fsUnsableEvent(); + void performOperationHook() override; ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t *id) override; ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t *id) override; diff --git a/mission/payload/scexHelpers.h b/mission/payload/scexHelpers.h index 9b9e8f14..06a8bb07 100644 --- a/mission/payload/scexHelpers.h +++ b/mission/payload/scexHelpers.h @@ -17,10 +17,10 @@ static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::SCEX_HANDLER; static constexpr Event MISSING_PACKET = event::makeEvent(SUBSYSTEM_ID, 0, severity::LOW); static constexpr Event EXPERIMENT_TIMEDOUT = event::makeEvent(SUBSYSTEM_ID, 1, severity::LOW); -static constexpr Event FS_UNUSABLE = event::makeEvent(SUBSYSTEM_ID, 2, severity::LOW); //! FRAM, One Cell or All cells command finished. P1: Command ID static constexpr Event MULTI_PACKET_COMMAND_DONE = event::makeEvent(SUBSYSTEM_ID, 2, severity::INFO); +static constexpr Event FS_UNUSABLE = event::makeEvent(SUBSYSTEM_ID, 3, severity::LOW); enum Cmds : DeviceCommandId_t { PING = 0b00111, diff --git a/tmtc b/tmtc index ab770a00..9001a285 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit ab770a0057258cc399072477a42eb0253d919aba +Subproject commit 9001a285450ddcea1f2a6c5d3c0a2ae438a14b60 From 2fda3e127e70e89dd681bfffaf0658cc0e19f3d1 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 2 Aug 2023 09:42:24 +0200 Subject: [PATCH 7/8] changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e0c21a3..6e2afb64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,10 @@ will consitute of a breaking change warranting a new major release: - SCEX: Only perform filesystem checks when not in OFF mode. - The `EiveSystem` now only sends reboot commands targetting the same image. +## Added + +- SCEX: Add warning event if filesystem is unusable. + # [v6.2.0] 2023-07-26 - `eive-tmtc`: v5.3.1 From 7fe676fed9ea248699b123e333260efb3cc843e1 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 2 Aug 2023 09:44:22 +0200 Subject: [PATCH 8/8] add event function CALL --- mission/payload/ScexDeviceHandler.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/mission/payload/ScexDeviceHandler.cpp b/mission/payload/ScexDeviceHandler.cpp index 6281142d..12c62f7a 100644 --- a/mission/payload/ScexDeviceHandler.cpp +++ b/mission/payload/ScexDeviceHandler.cpp @@ -322,6 +322,7 @@ void ScexDeviceHandler::filesystemChecks() { auto mntPrefix = sdcMan.getCurrentMountPrefix(); if (mntPrefix == nullptr or !sdcMan.isSdCardUsable(std::nullopt)) { sif::warning << "SCEX: Filesystem currently unavailable" << std::endl; + fsUnsableEvent(); } else { std::filesystem::path fullFilePath = mntPrefix; std::error_code e;