From 33bd5cb63a276dad101c53af730c49120f07616f Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 16 Nov 2022 17:33:19 +0100 Subject: [PATCH] this is going to be annoying --- dummies/TemperatureSensorsDummy.cpp | 28 +++++++++++-------- dummies/TemperatureSensorsDummy.h | 3 +- mission/controller/ThermalController.cpp | 2 ++ mission/controller/ThermalController.h | 8 ++++++ .../ThermalControllerDefinitions.h | 7 +++-- mission/devices/HeaterHandler.cpp | 2 +- mission/devices/HeaterHandler.h | 5 ++-- 7 files changed, 36 insertions(+), 19 deletions(-) diff --git a/dummies/TemperatureSensorsDummy.cpp b/dummies/TemperatureSensorsDummy.cpp index 52190ee8..ccf3f0a7 100644 --- a/dummies/TemperatureSensorsDummy.cpp +++ b/dummies/TemperatureSensorsDummy.cpp @@ -7,7 +7,8 @@ TemperatureSensorsDummy::TemperatureSensorsDummy() : ExtendedControllerBase(objects::RTD_0_IC3_PLOC_HEATSPREADER), - max31865Set(this, MAX31865::MAX31865_SET_ID) { + max31865PlocHeatspreaderSet(objects::RTD_0_IC3_PLOC_HEATSPREADER, MAX31865::MAX31865_SET_ID), + max31865PlocMissionboardSet(objects::RTD_1_IC4_PLOC_MISSIONBOARD, MAX31865::MAX31865_SET_ID) { ObjectManager::instance()->insert(objects::RTD_1_IC4_PLOC_MISSIONBOARD, this); ObjectManager::instance()->insert(objects::RTD_2_IC5_4K_CAMERA, this); ObjectManager::instance()->insert(objects::RTD_3_IC6_DAC_HEATSPREADER, this); @@ -37,6 +38,8 @@ ReturnValue_t TemperatureSensorsDummy::initialize() { } } + max31865PlocHeatspreaderSet.temperatureCelcius = 20.0; + max31865PlocMissionboardSet.temperatureCelcius = 20.0; return returnvalue::OK; } @@ -48,18 +51,18 @@ void TemperatureSensorsDummy::performControlOperation() { iteration++; value = sin(iteration / 80. * M_PI) * 10; - ReturnValue_t result = max31865Set.read(); + ReturnValue_t result = max31865PlocHeatspreaderSet.read(); if (result != returnvalue::OK) { sif::warning << "Failed to read temperature from MAX31865 dataset" << std::endl; } - max31865Set.rtdValue = value - 5; - max31865Set.temperatureCelcius = value; + max31865PlocHeatspreaderSet.rtdValue = value - 5; + max31865PlocHeatspreaderSet.temperatureCelcius = value; if ((iteration % 100) < 20) { - max31865Set.setValidity(false, true); + max31865PlocHeatspreaderSet.setValidity(false, true); } else { - max31865Set.setValidity(true, true); + max31865PlocHeatspreaderSet.setValidity(true, true); } - max31865Set.commit(); + max31865PlocHeatspreaderSet.commit(); } ReturnValue_t TemperatureSensorsDummy::initializeLocalDataPool( @@ -78,11 +81,12 @@ ReturnValue_t TemperatureSensorsDummy::initializeLocalDataPool( LocalPoolDataSetBase* TemperatureSensorsDummy::getDataSetHandle(sid_t sid) { sif::debug << "getHandle" << std::endl; - switch (sid.ownerSetId) { - case MAX31865::MAX31865_SET_ID: - return &max31865Set; - default: - return nullptr; + if (sid.objectId == objects::RTD_0_IC3_PLOC_HEATSPREADER) { + return &max31865PlocHeatspreaderSet; + } else if (sid.objectId == objects::RTD_1_IC4_PLOC_MISSIONBOARD) { + return &max31865PlocMissionboardSet; + } else { + return nullptr; } } diff --git a/dummies/TemperatureSensorsDummy.h b/dummies/TemperatureSensorsDummy.h index e41a9af0..0fcdfadb 100644 --- a/dummies/TemperatureSensorsDummy.h +++ b/dummies/TemperatureSensorsDummy.h @@ -23,7 +23,8 @@ class TemperatureSensorsDummy : public ExtendedControllerBase { private: int iteration = 0; float value = 0; - MAX31865::Max31865Set max31865Set; + MAX31865::Max31865Set max31865PlocHeatspreaderSet; + MAX31865::Max31865Set max31865PlocMissionboardSet; void noise(); }; diff --git a/mission/controller/ThermalController.cpp b/mission/controller/ThermalController.cpp index 45f26f8b..3e228ad5 100644 --- a/mission/controller/ThermalController.cpp +++ b/mission/controller/ThermalController.cpp @@ -102,6 +102,8 @@ void ThermalController::performControlOperation() { copyDevices(); deviceTemperatures.commit(); } + + // TODO: Heater control } ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& localDataPoolMap, diff --git a/mission/controller/ThermalController.h b/mission/controller/ThermalController.h index 5071d811..d401c5b5 100644 --- a/mission/controller/ThermalController.h +++ b/mission/controller/ThermalController.h @@ -8,6 +8,12 @@ #include #include +struct TempLimits { + TempLimits(float lowerLimit, float upperLimit) : lowerLimit(lowerLimit), upperLimit(upperLimit) {} + float lowerLimit; + float upperLimit; +}; + class ThermalController : public ExtendedControllerBase { public: static const uint16_t INVALID_TEMPERATURE = 999; @@ -75,6 +81,8 @@ class ThermalController : public ExtendedControllerBase { SUS::SusDataset susSet10; SUS::SusDataset susSet11; + TempLimits eBandLimits = TempLimits(10.0, 20.0); + // Initial delay to make sure all pool variables have been initialized their owners Countdown initialCountdown = Countdown(DELAY); diff --git a/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h b/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h index 9f800bec..0c16d3ea 100644 --- a/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h +++ b/mission/controller/controllerdefinitions/ThermalControllerDefinitions.h @@ -102,12 +102,13 @@ class SensorTemperatures : public StaticLocalDataSet sensor_startracker = lp_var_t(sid.objectId, PoolIds::SENSOR_STARTRACKER, this); lp_var_t sensor_rw1 = lp_var_t(sid.objectId, PoolIds::SENSOR_RW1, this); - lp_var_t sensor_dro = lp_var_t(sid.objectId, PoolIds::SENSOR_DRO, this); lp_var_t sensor_scex = lp_var_t(sid.objectId, PoolIds::SENSOR_SCEX, this); + lp_var_t sensor_tx_modul = lp_var_t(sid.objectId, PoolIds::SENSOR_TX_MODUL, this); + // E-Band module + lp_var_t sensor_dro = lp_var_t(sid.objectId, PoolIds::SENSOR_DRO, this); + lp_var_t sensor_mpa = lp_var_t(sid.objectId, PoolIds::SENSOR_MPA, this); lp_var_t sensor_x8 = lp_var_t(sid.objectId, PoolIds::SENSOR_X8, this); lp_var_t sensor_hpa = lp_var_t(sid.objectId, PoolIds::SENSOR_HPA, this); - lp_var_t sensor_tx_modul = lp_var_t(sid.objectId, PoolIds::SENSOR_TX_MODUL, this); - lp_var_t sensor_mpa = lp_var_t(sid.objectId, PoolIds::SENSOR_MPA, this); lp_var_t sensor_acu = lp_var_t(sid.objectId, PoolIds::SENSOR_ACU, this); lp_var_t sensor_plpcdu_heatspreader = lp_var_t(sid.objectId, PoolIds::SENSOR_PLPCDU_HEATSPREADER, this); diff --git a/mission/devices/HeaterHandler.cpp b/mission/devices/HeaterHandler.cpp index 17bdf640..61a44de6 100644 --- a/mission/devices/HeaterHandler.cpp +++ b/mission/devices/HeaterHandler.cpp @@ -322,7 +322,7 @@ HeaterHandler::SwitchState HeaterHandler::checkSwitchState(heater::Switchers swi } ReturnValue_t HeaterHandler::switchHeater(heater::Switchers heater, ReturnValue_t onOff) { - return sendSwitchCommand(heater, onOff); + return sendSwitchCommand(heater, onOff); } bool HeaterHandler::allSwitchesOff() { diff --git a/mission/devices/HeaterHandler.h b/mission/devices/HeaterHandler.h index dce6454a..271e1bd1 100644 --- a/mission/devices/HeaterHandler.h +++ b/mission/devices/HeaterHandler.h @@ -40,7 +40,8 @@ class HeaterHandler : public ExecutableObjectIF, public PowerSwitchIF, public SystemObject, public HasActionsIF { - friend class ThermalController; + friend class ThermalController; + public: static const uint8_t INTERFACE_ID = CLASS_ID::HEATER_HANDLER; @@ -60,7 +61,7 @@ class HeaterHandler : public ExecutableObjectIF, virtual ~HeaterHandler(); -protected: + protected: ReturnValue_t switchHeater(heater::Switchers heater, ReturnValue_t onOff); ReturnValue_t performOperation(uint8_t operationCode = 0) override;