diff --git a/mission/acs/SusHandler.cpp b/mission/acs/SusHandler.cpp index fd06b9ab..58280636 100644 --- a/mission/acs/SusHandler.cpp +++ b/mission/acs/SusHandler.cpp @@ -97,7 +97,9 @@ ReturnValue_t SusHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8 // appear sometimes for the SUS device: Allow invalid message up to a certain threshold // before triggering FDIR reactions. if (reply->tempRaw == 0xfff and not waitingForRecovery) { - if (invalidMsgCounter == susMax1227::MAX_INVALID_MSG_COUNT) { + if (invalidMsgCounter == 0 and invalidMsgPeriodCounter == 0) { + triggerEvent(TEMPERATURE_ALL_ONES_START); + } else if (invalidMsgCounter == susMax1227::MAX_INVALID_MSG_COUNT) { triggerEvent(DeviceHandlerIF::DEVICE_WANTS_HARD_REBOOT); waitingForRecovery = true; } diff --git a/mission/acs/SusHandler.h b/mission/acs/SusHandler.h index e35185b7..43c49dcb 100644 --- a/mission/acs/SusHandler.h +++ b/mission/acs/SusHandler.h @@ -17,6 +17,9 @@ class SusHandler : public DeviceHandlerBase { static const uint8_t INTERFACE_ID = CLASS_ID::SUS_HANDLER; static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::SUS_HANDLER; + //! [EXPORT] : [COMMENT] Detected invalid values, starting invalid message counting + static constexpr Event TEMPERATURE_ALL_ONES_START = + event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM); //! [EXPORT] : [COMMENT] Detected valid values for a prolonged time again, resetting all counters. //! P1: Number of periods with invalid messages. //! P2: Maximum invalid message counter.