diff --git a/mission/controller/ThermalController.cpp b/mission/controller/ThermalController.cpp index 562a665b..ebbb42a3 100644 --- a/mission/controller/ThermalController.cpp +++ b/mission/controller/ThermalController.cpp @@ -988,13 +988,15 @@ void ThermalController::ctrlAcsBoard() { sensors[4].first = sensorTemperatures.tcsBoard.isValid(); sensors[4].second = sensorTemperatures.tcsBoard.value; numSensors = 5; - if (selectAndReadSensorTemp()) { - if (chooseHeater(switchNr, redSwitchNr)) { - HeaterContext htrCtx(switchNr, redSwitchNr, acsBoardLimits); - checkLimitsAndCtrlHeater(htrCtx); + { + HeaterContext htrCtx(switchNr, redSwitchNr, acsBoardLimits); + if (selectAndReadSensorTemp(htrCtx)) { + if (chooseHeater(switchNr, redSwitchNr)) { + checkLimitsAndCtrlHeater(htrCtx); + } + resetSensorsArray(); + return; } - resetSensorsArray(); - return; } resetSensorsArray(); // B side @@ -1007,15 +1009,18 @@ void ThermalController::ctrlAcsBoard() { sensors[3].first = sensorTemperatures.tcsBoard.isValid(); sensors[3].second = sensorTemperatures.tcsBoard.value; numSensors = 4; - if (selectAndReadSensorTemp()) { - if (chooseHeater(switchNr, redSwitchNr)) { - HeaterContext htrCtx(switchNr, redSwitchNr, acsBoardLimits); - checkLimitsAndCtrlHeater(htrCtx); - } - } else { - if (chooseHeater(switchNr, redSwitchNr)) { - if (heaterHandler.getSwitchState(switchNr)) { - heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF); + + { + HeaterContext htrCtx(switchNr, redSwitchNr, acsBoardLimits); + if (selectAndReadSensorTemp(htrCtx)) { + if (chooseHeater(switchNr, redSwitchNr)) { + checkLimitsAndCtrlHeater(htrCtx); + } + } else { + if (chooseHeater(switchNr, redSwitchNr)) { + if (heaterHandler.getSwitchState(switchNr)) { + heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF); + } } } } @@ -1546,7 +1551,7 @@ void ThermalController::performThermalModuleCtrl(const HeaterSwitchStates& heate heaterTransitionControl(heaterSwitchStates); } void ThermalController::ctrlComponentTemperature(HeaterContext& htrCtx) { - if (selectAndReadSensorTemp()) { + if (selectAndReadSensorTemp(htrCtx)) { if (chooseHeater(htrCtx.switchNr, htrCtx.redSwitchNr)) { checkLimitsAndCtrlHeater(htrCtx); } diff --git a/mission/controller/ThermalController.h b/mission/controller/ThermalController.h index 9ad72ed0..d531e813 100644 --- a/mission/controller/ThermalController.h +++ b/mission/controller/ThermalController.h @@ -31,8 +31,8 @@ * limit is exceeded to avoid reaching NOP limit */ struct TempLimits { - TempLimits(float opLowerLimit, float cutOffLimit, float opUpperLimit, - float nopUpperLimit, float sanityUpperLimit) + TempLimits(float nopLowerLimit, float opLowerLimit, float cutOffLimit, float opUpperLimit, + float nopUpperLimit) : opLowerLimit(opLowerLimit), opUpperLimit(opUpperLimit), cutOffLimit(cutOffLimit), @@ -91,8 +91,8 @@ class ThermalController : public ExtendedControllerBase { public: static const uint16_t INVALID_TEMPERATURE = 999; static const uint8_t NUMBER_OF_SENSORS = 16; - static constexpr uint16_t SANITY_LIMIT_LOWER_TEMP = -80; - static constexpr uint16_t SANITY_LIMIT_UPPER_TEMP = 160; + static constexpr int16_t SANITY_LIMIT_LOWER_TEMP = -80; + static constexpr int16_t SANITY_LIMIT_UPPER_TEMP = 160; ThermalController(object_id_t objectId, HeaterHandler& heater); @@ -220,7 +220,7 @@ class ThermalController : public ExtendedControllerBase { lp_var_t tempAdcPayloadPcdu = lp_var_t(objects::PLPCDU_HANDLER, plpcdu::TEMP); // TempLimits - TempLimits acsBoardLimits = TempLimits(5-40.0, -40.0, 80.0, 85.0, 85.0); + TempLimits acsBoardLimits = TempLimits(-40.0, -40.0, 80.0, 85.0, 85.0); TempLimits mgtLimits = TempLimits(-40.0, -40.0, 65.0, 70.0, 70.0); TempLimits rwLimits = TempLimits(-40.0, -40.0, 80.0, 85.0, 85.0); TempLimits strLimits = TempLimits(-30.0, -20.0, 65.0, 70.0, 80.0);