diff --git a/bsp_q7s/core/InitMission.cpp b/bsp_q7s/core/InitMission.cpp index e52231bf..f2090666 100644 --- a/bsp_q7s/core/InitMission.cpp +++ b/bsp_q7s/core/InitMission.cpp @@ -183,6 +183,7 @@ void initmission::initTasks() { objects::RTD_15_IC18_IMTQ, }; tcsTask->addComponent(objects::TCS_BOARD_ASS); + tcsTask->addComponent(objects::THERMAL_CONTROLLER); for (const auto& rtd : rtdIds) { tcsTask->addComponent(rtd, DeviceHandlerIF::PERFORM_OPERATION); tcsTask->addComponent(rtd, DeviceHandlerIF::SEND_WRITE); @@ -228,13 +229,6 @@ void initmission::initTasks() { } #endif /* OBSW_ADD_PLOC_SUPERVISOR */ - PeriodicTaskIF* thermalControllerTask = factory->createPeriodicTask( - "THERMAL_CTL_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc); - result = thermalControllerTask->addComponent(objects::THERMAL_CONTROLLER); - if (result != HasReturnvaluesIF::RETURN_OK) { - initmission::printAddObjectError("THERMAL_CONTROLLER", objects::THERMAL_CONTROLLER); - } - #if OBSW_TEST_CCSDS_BRIDGE == 1 PeriodicTaskIF* ptmeTestTask = factory->createPeriodicTask( "PTME_TEST", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc); @@ -305,7 +299,6 @@ void initmission::initTasks() { #if OBSW_ADD_PLOC_SUPERVISOR == 1 supvHelperTask->startTask(); #endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */ - thermalControllerTask->startTask(); sif::info << "Tasks started.." << std::endl; } diff --git a/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h b/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h index 36439ade..1681c31b 100644 --- a/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h +++ b/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h @@ -46,7 +46,17 @@ enum PoolIds : lp_id_t { SUS_5_N_LOC_XFYMZB_PT_ZB, SUS_11_R_LOC_XBYMZB_PT_ZB, - COMPONENT_RW + COMPONENT_RW, + + TEMP_Q7S, + TEMP_BATTERY, + TEMP_RW0, + TEMP_RW1, + TEMP_RW2, + TEMP_RW3, + TEMP_STAR_TRACKER, + TEMP_SYRLINKS_POWER_AMPLIFIER, + TEMP_SYRLINKS_BASEBAND_BOARD }; /** @@ -95,6 +105,9 @@ class DeviceTemperatures : public StaticLocalDataSet<1> { DeviceTemperatures(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, DEVICE_TEMPERATURES)) {} + + lp_var_t q7s = + lp_var_t(sid.objectId, PoolIds::SUS_0_N_LOC_XFYFZM_PT_XF, this); }; /** @@ -150,4 +163,4 @@ class ComponentTemperatures : public StaticLocalDataSet<2> { } // namespace thermalControllerDefinitions -#endif /* MISSION_CONTROLLER_CONTROLLERDEFINITIONS_THERMALCONTROLLERDEFINITIONS_H_ */ \ No newline at end of file +#endif /* MISSION_CONTROLLER_CONTROLLERDEFINITIONS_THERMALCONTROLLERDEFINITIONS_H_ */ diff --git a/mission/devices/Max31865EiveHandler.cpp b/mission/devices/Max31865EiveHandler.cpp index 05857f8f..d7378fd4 100644 --- a/mission/devices/Max31865EiveHandler.cpp +++ b/mission/devices/Max31865EiveHandler.cpp @@ -1,5 +1,7 @@ #include "Max31865EiveHandler.h" +#include + Max31865EiveHandler::Max31865EiveHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie) : DeviceHandlerBase(objectId, comIF, comCookie, nullptr), @@ -154,6 +156,15 @@ ReturnValue_t Max31865EiveHandler::interpretDeviceReply(DeviceCommandId_t id, // calculate approximation float approxTemp = exchangeStruct.adcCode / 32.0 - 256.0; + PoolReadGuard pg(&sensorDataset); + if (pg.getReadResult() != HasReturnvaluesIF::RETURN_OK) { + sif::warning << "Max31865EiveHandler: Failed to read sensor dataset" << std::endl; + sensorDataset.temperatureCelcius.setValid(false); + return RETURN_OK; + } + sensorDataset.temperatureCelcius = approxTemp; + sensorDataset.temperatureCelcius.setValid(true); + if (debugMode) { if (debugDivider.checkAndIncrement()) { sif::info << "Max31865: " << std::setw(20) << std::left << locString << std::right diff --git a/mission/devices/Tmp1075Handler.cpp b/mission/devices/Tmp1075Handler.cpp index ce434ff0..41e9160e 100644 --- a/mission/devices/Tmp1075Handler.cpp +++ b/mission/devices/Tmp1075Handler.cpp @@ -93,8 +93,12 @@ ReturnValue_t Tmp1075Handler::interpretDeviceReply(DeviceCommandId_t id, const u ReturnValue_t result = dataset.read(); if (result == HasReturnvaluesIF::RETURN_OK) { dataset.temperatureCelcius = tempValue; + dataset.setValidity(true, true); dataset.commit(); } + else { + dataset.setValidity(false, true); + } break; } diff --git a/tmtc b/tmtc index 048a0ea4..cba2055c 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 048a0ea447465b343c1067bd171b8b698c6e2006 +Subproject commit cba2055c59de43c9e9572e8549e555aaab785481