From e063a7148acd26e8700f841a265a06863bb6cac7 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 12 Apr 2023 17:23:08 +0200 Subject: [PATCH 1/2] this snippet should recognize faulty sensors --- mission/cfdp/CMakeLists.txt | 4 +--- mission/genericFactory.cpp | 2 +- mission/tcs/Max31865EiveHandler.cpp | 11 +++++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/mission/cfdp/CMakeLists.txt b/mission/cfdp/CMakeLists.txt index 97d7142b..71d62ce8 100644 --- a/mission/cfdp/CMakeLists.txt +++ b/mission/cfdp/CMakeLists.txt @@ -1,3 +1 @@ - -target_sources( - ${LIB_EIVE_MISSION} PRIVATE CfdpHandler.cpp) +target_sources(${LIB_EIVE_MISSION} PRIVATE CfdpHandler.cpp) diff --git a/mission/genericFactory.cpp b/mission/genericFactory.cpp index cbef2f77..9889fe9e 100644 --- a/mission/genericFactory.cpp +++ b/mission/genericFactory.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -23,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/mission/tcs/Max31865EiveHandler.cpp b/mission/tcs/Max31865EiveHandler.cpp index 284a2d0c..599071ef 100644 --- a/mission/tcs/Max31865EiveHandler.cpp +++ b/mission/tcs/Max31865EiveHandler.cpp @@ -1,6 +1,8 @@ #include #include +#include "fsfw/thermal/tcsDefinitions.h" + Max31865EiveHandler::Max31865EiveHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie) : DeviceHandlerBase(objectId, comIF, comCookie, nullptr), @@ -152,6 +154,15 @@ ReturnValue_t Max31865EiveHandler::interpretDeviceReply(DeviceCommandId_t id, transitionOk = true; return returnvalue::OK; } + // If the 15 received bits are all ones, this is considered a case where the device does not + // work because it does not drive the MISO line. This can happens if the sensor is broken + // or off. + if (exchangeStruct.adcCode == 0x7fff) { + PoolReadGuard pg(&sensorDataset); + sensorDataset.temperatureCelcius.setValid(false); + sensorDataset.temperatureCelcius = thermal::INVALID_TEMPERATURE; + return returnvalue::FAILED; + } // Calculate resistance float rtdValue = exchangeStruct.adcCode * EiveMax31855::RTD_RREF_PT1000 / INT16_MAX; -- 2.43.0 From ae80eac9a24a2216dacfa2dd7ae9b73d685f1009 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 12 Apr 2023 17:25:54 +0200 Subject: [PATCH 2/2] changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3ba713b..1b0235de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,10 @@ will consitute of a breaking change warranting a new major release: - Small fix for `install-obsw-yocto.sh` script +## Added + +- Add a way for the MAX31865 RTD handlers to recognize faulty/broken/off sensor devices. + # [v1.44.1] 2023-04-12 - eive-tmtc: v2.22.1 -- 2.43.0