diff --git a/mission/controller/ThermalController.cpp b/mission/controller/ThermalController.cpp index ecc3566e..70c96734 100644 --- a/mission/controller/ThermalController.cpp +++ b/mission/controller/ThermalController.cpp @@ -126,105 +126,70 @@ void ThermalController::performControlOperation() { ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& localDataPoolMap, LocalDataPoolManager& poolManager) { - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_PLOC_HEATSPREADER, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_PLOC_MISSIONBOARD, - new PoolEntry({1.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_4K_CAMERA, - new PoolEntry({2.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_DAC_HEATSPREADER, - new PoolEntry({3.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_STARTRACKER, - new PoolEntry({4.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_RW1, new PoolEntry({5.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_DRO, new PoolEntry({6.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_SCEX, new PoolEntry({7.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_X8, new PoolEntry({8.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_HPA, new PoolEntry({9.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_TX_MODUL, - new PoolEntry({10.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_MPA, new PoolEntry({11.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_ACU, new PoolEntry({12.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_PLPCDU_HEATSPREADER, - new PoolEntry({13.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_TCS_BOARD, - new PoolEntry({14.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_MAGNETTORQUER, - new PoolEntry({15.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_TMP1075_TCS_0, &tmp1075Tcs0); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_TMP1075_TCS_1, &tmp1075Tcs1); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_TMP1075_PLPCDU_0, &tmp1075PlPcdu0); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_TMP1075_PLPCDU_1, &tmp1075PlPcdu1); - localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_TMP1075_IF_BOARD, &tmp1075IfBrd); + localDataPoolMap.emplace(tcsCtrl::SENSOR_PLOC_HEATSPREADER, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_PLOC_MISSIONBOARD, new PoolEntry({1.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_4K_CAMERA, new PoolEntry({2.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_DAC_HEATSPREADER, new PoolEntry({3.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_STARTRACKER, new PoolEntry({4.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_RW1, new PoolEntry({5.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_DRO, new PoolEntry({6.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_SCEX, new PoolEntry({7.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_X8, new PoolEntry({8.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_HPA, new PoolEntry({9.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_TX_MODUL, new PoolEntry({10.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_MPA, new PoolEntry({11.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_ACU, new PoolEntry({12.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_PLPCDU_HEATSPREADER, new PoolEntry({13.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_TCS_BOARD, new PoolEntry({14.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_MAGNETTORQUER, new PoolEntry({15.0})); + localDataPoolMap.emplace(tcsCtrl::SENSOR_TMP1075_TCS_0, &tmp1075Tcs0); + localDataPoolMap.emplace(tcsCtrl::SENSOR_TMP1075_TCS_1, &tmp1075Tcs1); + localDataPoolMap.emplace(tcsCtrl::SENSOR_TMP1075_PLPCDU_0, &tmp1075PlPcdu0); + localDataPoolMap.emplace(tcsCtrl::SENSOR_TMP1075_PLPCDU_1, &tmp1075PlPcdu1); + localDataPoolMap.emplace(tcsCtrl::SENSOR_TMP1075_IF_BOARD, &tmp1075IfBrd); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_0_N_LOC_XFYFZM_PT_XF, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_6_R_LOC_XFYBZM_PT_XF, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_1_N_LOC_XBYFZM_PT_XB, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_7_R_LOC_XBYBZM_PT_XB, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_2_N_LOC_XFYBZB_PT_YB, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_8_R_LOC_XBYBZB_PT_YB, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_3_N_LOC_XFYBZF_PT_YF, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_9_R_LOC_XBYBZB_PT_YF, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_4_N_LOC_XMYFZF_PT_ZF, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_10_N_LOC_XMYBZF_PT_ZF, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_5_N_LOC_XFYMZB_PT_ZB, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::SUS_11_R_LOC_XBYMZB_PT_ZB, - new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_0_N_LOC_XFYFZM_PT_XF, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_6_R_LOC_XFYBZM_PT_XF, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_1_N_LOC_XBYFZM_PT_XB, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_7_R_LOC_XBYBZM_PT_XB, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_2_N_LOC_XFYBZB_PT_YB, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_8_R_LOC_XBYBZB_PT_YB, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_3_N_LOC_XFYBZF_PT_YF, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_9_R_LOC_XBYBZB_PT_YF, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_4_N_LOC_XMYFZF_PT_ZF, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_10_N_LOC_XMYBZF_PT_ZF, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_5_N_LOC_XFYMZB_PT_ZB, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::SUS_11_R_LOC_XBYMZB_PT_ZB, new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::COMPONENT_RW, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::COMPONENT_RW, new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_Q7S, new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::BATTERY_TEMP_1, - new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::BATTERY_TEMP_2, - new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::BATTERY_TEMP_3, - new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::BATTERY_TEMP_4, - new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_RW1, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_RW2, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_RW3, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_RW4, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_STAR_TRACKER, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_SYRLINKS_POWER_AMPLIFIER, - new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_SYRLINKS_BASEBAND_BOARD, - new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_MGT, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_ACU, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_PDU1, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_PDU2, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_1_P60DOCK, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_2_P60DOCK, new PoolEntry({0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_GYRO_0_SIDE_A, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_GYRO_1_SIDE_A, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_GYRO_2_SIDE_B, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_GYRO_3_SIDE_B, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_MGM_0_SIDE_A, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_MGM_2_SIDE_B, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::TEMP_ADC_PAYLOAD_PCDU, - new PoolEntry({0.0})); - localDataPoolMap.emplace(thermalControllerDefinitions::HEATER_SWITCH_LIST, &heaterSwitchStates); - localDataPoolMap.emplace(thermalControllerDefinitions::HEATER_CURRENT, &heaterCurrent); + localDataPoolMap.emplace(tcsCtrl::TEMP_Q7S, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::BATTERY_TEMP_1, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::BATTERY_TEMP_2, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::BATTERY_TEMP_3, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::BATTERY_TEMP_4, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_RW1, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_RW2, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_RW3, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_RW4, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_STAR_TRACKER, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_SYRLINKS_POWER_AMPLIFIER, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_SYRLINKS_BASEBAND_BOARD, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_MGT, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_ACU, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_PDU1, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_PDU2, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_1_P60DOCK, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_2_P60DOCK, new PoolEntry({0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_GYRO_0_SIDE_A, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_GYRO_1_SIDE_A, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_GYRO_2_SIDE_B, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_GYRO_3_SIDE_B, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_MGM_0_SIDE_A, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_MGM_2_SIDE_B, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::TEMP_ADC_PAYLOAD_PCDU, new PoolEntry({0.0})); + localDataPoolMap.emplace(tcsCtrl::HEATER_SWITCH_LIST, &heaterSwitchStates); + localDataPoolMap.emplace(tcsCtrl::HEATER_CURRENT, &heaterCurrent); poolManager.subscribeForRegularPeriodicPacket( subdp::RegularHkPeriodicParams(sensorTemperatures.getSid(), false, 10.0)); @@ -239,12 +204,14 @@ ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& lo LocalPoolDataSetBase* ThermalController::getDataSetHandle(sid_t sid) { switch (sid.ownerSetId) { - case thermalControllerDefinitions::SENSOR_TEMPERATURES: + case tcsCtrl::SENSOR_TEMPERATURES: return &sensorTemperatures; - case thermalControllerDefinitions::SUS_TEMPERATURES: + case tcsCtrl::SUS_TEMPERATURES: return &susTemperatures; - case thermalControllerDefinitions::DEVICE_TEMPERATURES: + case tcsCtrl::DEVICE_TEMPERATURES: return &deviceTemperatures; + case tcsCtrl::HEATER_SET: + return &heaterInfo; default: return nullptr; } diff --git a/mission/controller/ThermalController.h b/mission/controller/ThermalController.h index 122ae8f6..a161b0eb 100644 --- a/mission/controller/ThermalController.h +++ b/mission/controller/ThermalController.h @@ -77,10 +77,10 @@ class ThermalController : public ExtendedControllerBase { HeaterHandler& heaterHandler; - thermalControllerDefinitions::SensorTemperatures sensorTemperatures; - thermalControllerDefinitions::SusTemperatures susTemperatures; - thermalControllerDefinitions::DeviceTemperatures deviceTemperatures; - thermalControllerDefinitions::HeaterInfo heaterInfo; + tcsCtrl::SensorTemperatures sensorTemperatures; + tcsCtrl::SusTemperatures susTemperatures; + tcsCtrl::DeviceTemperatures deviceTemperatures; + tcsCtrl::HeaterInfo heaterInfo; lp_vec_t currentVecPdu2 = lp_vec_t(gp_id_t(objects::PDU2_HANDLER, PDU::pool::PDU_CURRENTS)); diff --git a/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h b/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h index 57ffdb62..fcea7e6d 100644 --- a/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h +++ b/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h @@ -6,9 +6,9 @@ #include "devices/heaterSwitcherList.h" -namespace thermalControllerDefinitions { +namespace tcsCtrl { -enum SetIds : uint32_t { +enum SetId : uint32_t { SENSOR_TEMPERATURES = 0, DEVICE_TEMPERATURES = 1, SUS_TEMPERATURES = 2, @@ -219,6 +219,6 @@ class HeaterInfo : public StaticLocalDataSet<12> { lp_var_t heaterCurrent = lp_var_t(sid.objectId, PoolIds::HEATER_CURRENT, this); }; -} // namespace thermalControllerDefinitions +} // namespace tcsCtrl #endif /* MISSION_CONTROLLER_CONTROLLERDEFINITIONS_THERMALCONTROLLERDEFINITIONS_H_ */ diff --git a/mission/devices/HeaterHandler.cpp b/mission/devices/HeaterHandler.cpp index d42fd390..28085105 100644 --- a/mission/devices/HeaterHandler.cpp +++ b/mission/devices/HeaterHandler.cpp @@ -30,8 +30,8 @@ HeaterHandler::HeaterHandler(object_id_t setObjectId_, GpioIF* gpioInterface_, H if (mainLineSwitcher == nullptr) { throw std::invalid_argument("HeaterHandler::HeaterHandler: Invalid PowerSwitchIF"); } - heaterMutex = MutexFactory::instance()->createMutex(); - if (heaterMutex == nullptr) { + heaterHealthAndStateMutex = MutexFactory::instance()->createMutex(); + if (heaterHealthAndStateMutex == nullptr) { throw std::runtime_error("HeaterHandler::HeaterHandler: Creating Mutex failed"); } auto mqArgs = MqArgs(setObjectId_, static_cast(this)); @@ -114,7 +114,7 @@ void HeaterHandler::readCommandQueue() { continue; } result = modeHelper.handleModeCommand(&command); - if(result == returnvalue::OK) { + if (result == returnvalue::OK) { continue; } } while (result == returnvalue::OK); @@ -141,7 +141,11 @@ ReturnValue_t HeaterHandler::executeAction(ActionId_t actionId, MessageQueueId_t auto action = static_cast(data[1]); // Always accepts OFF commands if (action == SwitchAction::SET_SWITCH_ON) { - HasHealthIF::HealthState health = heater.healthDevice->getHealth(); + HasHealthIF::HealthState health; + { + MutexGuard mg(heaterHealthAndStateMutex); + health = heater.healthDevice->getHealth(); + } if (health == HasHealthIF::FAULTY or health == HasHealthIF::PERMANENT_FAULTY or health == HasHealthIF::NEEDS_RECOVERY) { return HasHealthIF::OBJECT_NOT_HEALTHY; @@ -264,7 +268,10 @@ void HeaterHandler::handleSwitchOnCommand(heater::Switchers heaterIdx) { triggerEvent(GPIO_PULL_HIGH_FAILED, result); } else { triggerEvent(HEATER_WENT_ON, heaterIdx, 0); - heater.switchState = ON; + { + MutexGuard mg(heaterHealthAndStateMutex); + heater.switchState = ON; + } } } else { triggerEvent(SWITCH_ALREADY_ON, heaterIdx); @@ -311,10 +318,9 @@ void HeaterHandler::handleSwitchOffCommand(heater::Switchers heaterIdx) { << " low" << std::endl; triggerEvent(GPIO_PULL_LOW_FAILED, result); } else { - result = heaterMutex->lockMutex(); - heater.switchState = OFF; - if (result == returnvalue::OK) { - heaterMutex->unlockMutex(); + { + MutexGuard mg(heaterHealthAndStateMutex); + heater.switchState = OFF; } triggerEvent(HEATER_WENT_OFF, heaterIdx, 0); // When all switches are off, also main line switch will be turned off @@ -339,7 +345,7 @@ void HeaterHandler::handleSwitchOffCommand(heater::Switchers heaterIdx) { } HeaterHandler::SwitchState HeaterHandler::checkSwitchState(heater::Switchers switchNr) const { - MutexGuard mg(heaterMutex); + MutexGuard mg(heaterHealthAndStateMutex); return heaterVec.at(switchNr).switchState; } @@ -354,8 +360,16 @@ ReturnValue_t HeaterHandler::switchHeater(heater::Switchers heater, SwitchState void HeaterHandler::announceMode(bool recursive) { triggerEvent(MODE_INFO, mode, submode); + + SwitchState states[helper.heaters.size()]; + { + MutexGuard mg(heaterHealthAndStateMutex); + for (unsigned idx = 0; idx < helper.heaters.size(); idx++) { + states[idx] = heaterVec[idx].switchState; + } + } for (unsigned idx = 0; idx < helper.heaters.size(); idx++) { - if (heaterVec[idx].switchState == SWITCH_ON) { + if (states[idx] == ON) { EventManagerIF::triggerEvent(helper.heaters[idx].first->getObjectId(), MODE_INFO, MODE_ON, 0); } else { EventManagerIF::triggerEvent(helper.heaters[idx].first->getObjectId(), MODE_INFO, MODE_OFF, @@ -386,7 +400,7 @@ object_id_t HeaterHandler::getObjectId() const { return SystemObject::getObjectI bool HeaterHandler::allSwitchesOff() { bool allSwitchesOrd = false; - MutexGuard mg(heaterMutex); + MutexGuard mg(heaterHealthAndStateMutex); /* Or all switches. As soon one switch is on, allSwitchesOrd will be true */ for (power::Switch_t switchNr = 0; switchNr < heater::NUMBER_OF_SWITCHES; switchNr++) { allSwitchesOrd = allSwitchesOrd || heaterVec.at(switchNr).switchState; @@ -419,7 +433,7 @@ uint32_t HeaterHandler::getSwitchDelayMs(void) const { return 2000; } HasHealthIF::HealthState HeaterHandler::getHealth(heater::Switchers heater) { auto* healthDev = heaterVec.at(heater).healthDevice; if (healthDev != nullptr) { - MutexGuard mg(heaterMutex); + MutexGuard mg(heaterHealthAndStateMutex); return healthDev->getHealth(); } return HasHealthIF::HealthState::FAULTY; diff --git a/mission/devices/HeaterHandler.h b/mission/devices/HeaterHandler.h index ecb77ad1..9a776058 100644 --- a/mission/devices/HeaterHandler.h +++ b/mission/devices/HeaterHandler.h @@ -135,7 +135,7 @@ class HeaterHandler : public ExecutableObjectIF, HeaterMap heaterVec = {}; - MutexIF* heaterMutex = nullptr; + MutexIF* heaterHealthAndStateMutex = nullptr; HeaterHelper helper; ModeHelper modeHelper; diff --git a/tmtc b/tmtc index 556060a3..d1f96cb8 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 556060a3f3e204e7a171385d31a3ec409755c6b1 +Subproject commit d1f96cb83d287ea6f7714631fa944eb2c7fe17b8