diff --git a/CHANGELOG.md b/CHANGELOG.md index 7df62f43..78b2a491 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,10 @@ will consitute of a breaking change warranting a new major release: - STR `wire` library updated to v10.3. Submodule renamed to `sagittactl`. +## Changed + +- Reject `NEEDS_RECOVERY` health commands for the heater health devices. + ## Added - Add a way for the MAX31865 RTD handlers to recognize faulty/broken/off sensor devices. diff --git a/mission/genericFactory.cpp b/mission/genericFactory.cpp index 9889fe9e..b0b8e8f5 100644 --- a/mission/genericFactory.cpp +++ b/mission/genericFactory.cpp @@ -287,15 +287,17 @@ void ObjectFactory::produceGenericObjects(HealthTableIF** healthTable_, PusTmFun void ObjectFactory::createGenericHeaterComponents(GpioIF& gpioIF, PowerSwitchIF& pwrSwitcher, HeaterHandler*& heaterHandler) { HeaterHelper helper({{ - {new HealthDevice(objects::HEATER_0_PLOC_PROC_BRD, MessageQueueIF::NO_QUEUE), + {new HeaterHealthDev(objects::HEATER_0_PLOC_PROC_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_0}, - {new HealthDevice(objects::HEATER_1_PCDU_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_1}, - {new HealthDevice(objects::HEATER_2_ACS_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_2}, - {new HealthDevice(objects::HEATER_3_OBC_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_3}, - {new HealthDevice(objects::HEATER_4_CAMERA, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_4}, - {new HealthDevice(objects::HEATER_5_STR, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_5}, - {new HealthDevice(objects::HEATER_6_DRO, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_6}, - {new HealthDevice(objects::HEATER_7_SYRLINKS, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_7}, + {new HeaterHealthDev(objects::HEATER_1_PCDU_BRD, MessageQueueIF::NO_QUEUE), + gpioIds::HEATER_1}, + {new HeaterHealthDev(objects::HEATER_2_ACS_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_2}, + {new HeaterHealthDev(objects::HEATER_3_OBC_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_3}, + {new HeaterHealthDev(objects::HEATER_4_CAMERA, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_4}, + {new HeaterHealthDev(objects::HEATER_5_STR, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_5}, + {new HeaterHealthDev(objects::HEATER_6_DRO, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_6}, + {new HeaterHealthDev(objects::HEATER_7_SYRLINKS, MessageQueueIF::NO_QUEUE), + gpioIds::HEATER_7}, }}); heaterHandler = new HeaterHandler(objects::HEATER_HANDLER, &gpioIF, helper, &pwrSwitcher, power::Switches::PDU2_CH3_TCS_BOARD_HEATER_IN_8V); diff --git a/mission/tcs/CMakeLists.txt b/mission/tcs/CMakeLists.txt index ea077050..c23e9c18 100644 --- a/mission/tcs/CMakeLists.txt +++ b/mission/tcs/CMakeLists.txt @@ -1,3 +1,4 @@ target_sources( - ${LIB_EIVE_MISSION} PRIVATE HeaterHandler.cpp max1227.cpp - Max31865EiveHandler.cpp Tmp1075Handler.cpp) + ${LIB_EIVE_MISSION} + PRIVATE HeaterHandler.cpp max1227.cpp Max31865EiveHandler.cpp + Tmp1075Handler.cpp HeaterHealthDev.cpp) diff --git a/mission/tcs/HeaterHandler.h b/mission/tcs/HeaterHandler.h index c3ea4afa..609ac725 100644 --- a/mission/tcs/HeaterHandler.h +++ b/mission/tcs/HeaterHandler.h @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -27,7 +28,7 @@ class PowerSwitchIF; class HealthTableIF; -using HeaterPair = std::pair; +using HeaterPair = std::pair; struct HeaterHelper { public: diff --git a/mission/tcs/HeaterHealthDev.cpp b/mission/tcs/HeaterHealthDev.cpp new file mode 100644 index 00000000..6be56a09 --- /dev/null +++ b/mission/tcs/HeaterHealthDev.cpp @@ -0,0 +1,12 @@ +#include "HeaterHealthDev.h" + +HeaterHealthDev::HeaterHealthDev(object_id_t setObjectId, MessageQueueId_t parentQueue) + : HealthDevice(setObjectId, parentQueue) {} + +ReturnValue_t HeaterHealthDev::setHealth(HealthState health) { + // Does not make sense for a simple heater. + if (health == HealthState::NEEDS_RECOVERY) { + return returnvalue::FAILED; + } + return HealthDevice::setHealth(health); +} diff --git a/mission/tcs/HeaterHealthDev.h b/mission/tcs/HeaterHealthDev.h new file mode 100644 index 00000000..8d15836c --- /dev/null +++ b/mission/tcs/HeaterHealthDev.h @@ -0,0 +1,12 @@ +#ifndef MISSION_TCS_HEATERHEALTHDEV_H_ +#define MISSION_TCS_HEATERHEALTHDEV_H_ +#include + +class HeaterHealthDev : public HealthDevice { + public: + HeaterHealthDev(object_id_t setObjectId, MessageQueueId_t parentQueue); + + ReturnValue_t setHealth(HealthState health) override; +}; + +#endif /* MISSION_TCS_HEATERHEALTHDEV_H_ */ diff --git a/thirdparty/sagittactl b/thirdparty/sagittactl index 64332216..29e87667 160000 --- a/thirdparty/sagittactl +++ b/thirdparty/sagittactl @@ -1 +1 @@ -Subproject commit 64332216c193fa6483258060b53fc2842c08dcf4 +Subproject commit 29e876671a72fcdb0b393e2f692303725f00724f