diff --git a/fsfw b/fsfw index 2c5af91d..e9d9f446 160000 --- a/fsfw +++ b/fsfw @@ -1 +1 @@ -Subproject commit 2c5af91db170ffd19f5cc6726642593fa9e3a059 +Subproject commit e9d9f446053699a91d89250910cc0d59d05fbe6b diff --git a/mission/devices/ImtqHandler.cpp b/mission/devices/ImtqHandler.cpp index 30fd02e9..46a2c53a 100644 --- a/mission/devices/ImtqHandler.cpp +++ b/mission/devices/ImtqHandler.cpp @@ -156,6 +156,12 @@ void ImtqHandler::doShutDown() { firstReplyCycle = true; internalState = InternalState::NONE; commandExecuted = false; + statusSet.setValidity(false, true); + rawMtmNoTorque.setValidity(false, true); + rawMtmWithTorque.setValidity(false, true); + hkDatasetNoTorque.setValidity(false, true); + hkDatasetWithTorque.setValidity(false, true); + calMtmMeasurementSet.setValidity(false, true); setMode(_MODE_POWER_DOWN); } @@ -299,7 +305,7 @@ void ImtqHandler::fillCommandAndReplyMap() { ReturnValue_t ImtqHandler::scanForReply(const uint8_t* start, size_t remainingSize, DeviceCommandId_t* foundId, size_t* foundLen) { - if (getMode() == _MODE_WAIT_OFF or getMode() == _MODE_WAIT_ON) { + if (getMode() == _MODE_WAIT_OFF or getMode() == _MODE_WAIT_ON or getMode() == _MODE_POWER_DOWN) { return IGNORE_FULL_PACKET; } if (remainingSize > 0) { diff --git a/mission/system/objects/ImtqAssembly.cpp b/mission/system/objects/ImtqAssembly.cpp index a853d45c..de4e9b45 100644 --- a/mission/system/objects/ImtqAssembly.cpp +++ b/mission/system/objects/ImtqAssembly.cpp @@ -9,7 +9,6 @@ ImtqAssembly::ImtqAssembly(object_id_t objectId) : AssemblyBase(objectId) { entry.setObject(objects::IMTQ_HANDLER); entry.setMode(MODE_OFF); entry.setSubmode(SUBMODE_NONE); - entry.setInheritSubmode(false); commandTable.insert(entry); } @@ -42,12 +41,16 @@ ReturnValue_t ImtqAssembly::isModeCombinationValid(Mode_t mode, Submode_t submod } ReturnValue_t ImtqAssembly::checkAndHandleHealthState(Mode_t deviceMode, Submode_t deviceSubmode) { - HealthState health = healthHelper.healthTable->getHealth(objects::SYRLINKS_HANDLER); + HealthState health = healthHelper.healthTable->getHealth(objects::IMTQ_HANDLER); if (health == FAULTY or health == PERMANENT_FAULTY) { - overwriteDeviceHealth(objects::SYRLINKS_HANDLER, health); + overwriteDeviceHealth(objects::IMTQ_HANDLER, health); return NEED_TO_CHANGE_HEALTH; } else if (health == EXTERNAL_CONTROL) { modeHelper.setForced(true); } return OK; } + +void ImtqAssembly::handleChildrenLostMode(ReturnValue_t result) { + startTransition(mode, submode); +} diff --git a/mission/system/objects/ImtqAssembly.h b/mission/system/objects/ImtqAssembly.h index d092042e..59061701 100644 --- a/mission/system/objects/ImtqAssembly.h +++ b/mission/system/objects/ImtqAssembly.h @@ -12,6 +12,7 @@ class ImtqAssembly : public AssemblyBase { ReturnValue_t commandChildren(Mode_t mode, Submode_t submode) override; ReturnValue_t checkChildrenStateOn(Mode_t wantedMode, Submode_t wantedSubmode) override; ReturnValue_t isModeCombinationValid(Mode_t mode, Submode_t submode) override; + void handleChildrenLostMode(ReturnValue_t result) override; ReturnValue_t checkAndHandleHealthState(Mode_t deviceMode, Submode_t deviceSubmode); }; diff --git a/tmtc b/tmtc index f18a7f49..208d3286 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit f18a7f49cfbf80f8d3f6b18b8452df301c07d852 +Subproject commit 208d328683a9911ecaa1d60abd3b8a9e3a841c37