ThermalController: events for overheating
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
This commit is contained in:
@ -3,7 +3,6 @@
|
||||
#include <bsp_q7s/core/CoreDefinitions.h>
|
||||
#include <fsfw/datapool/PoolReadGuard.h>
|
||||
#include <fsfw/thermal/ThermalComponentIF.h>
|
||||
#include <fsfw/thermal/ThermalModuleIF.h>
|
||||
#include <fsfw_hal/devicehandlers/devicedefinitions/MgmLIS3HandlerDefs.h>
|
||||
#include <linux/devices/devicedefinitions/StarTrackerDefinitions.h>
|
||||
#include <mission/devices/devicedefinitions/BpxBatteryDefinitions.h>
|
||||
@ -989,16 +988,14 @@ void ThermalController::ctrlAcsBoard() {
|
||||
|
||||
if (heaterAvailable) {
|
||||
// A side
|
||||
chooseOf5Sensors(switchNr, deviceTemperatures.gyro0SideA, deviceTemperatures.mgm0SideA,
|
||||
deviceTemperatures.gyro1SideA, deviceTemperatures.mgm0SideA,
|
||||
sensorTemperatures.sensor_tcs_board);
|
||||
chooseOf4Sensors(switchNr, deviceTemperatures.gyro0SideA, deviceTemperatures.mgm0SideA,
|
||||
deviceTemperatures.gyro1SideA, sensorTemperatures.sensor_tcs_board);
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &acsBoardLimits);
|
||||
}
|
||||
// B side
|
||||
chooseOf5Sensors(switchNr, deviceTemperatures.gyro2SideB, deviceTemperatures.mgm2SideB,
|
||||
deviceTemperatures.gyro3SideB, deviceTemperatures.mgm2SideB,
|
||||
sensorTemperatures.sensor_tcs_board);
|
||||
chooseOf4Sensors(switchNr, deviceTemperatures.gyro2SideB, deviceTemperatures.mgm2SideB,
|
||||
deviceTemperatures.gyro3SideB, sensorTemperatures.sensor_tcs_board);
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &acsBoardLimits);
|
||||
}
|
||||
@ -1151,6 +1148,9 @@ void ThermalController::ctrlObc() {
|
||||
ctrlComponentTemperature(heater::HEATER_0_OBC_BRD, heater::HEATER_2_ACS_BRD,
|
||||
deviceTemperatures.q7s, sensorTemperatures.tmp1075Tcs1,
|
||||
sensorTemperatures.tmp1075Tcs0, &obcLimits);
|
||||
if (componentOverheating) {
|
||||
triggerEvent(OBC_OVERHEATING);
|
||||
}
|
||||
}
|
||||
|
||||
void ThermalController::ctrlObcIfBoard() {
|
||||
@ -1164,6 +1164,9 @@ void ThermalController::ctrlSBandTransceiver() {
|
||||
deviceTemperatures.syrlinksPowerAmplifier,
|
||||
deviceTemperatures.syrlinksBasebandBoard,
|
||||
sensorTemperatures.sensor_4k_camera, &sBandTransceiverLimits);
|
||||
if (componentOverheating) {
|
||||
triggerEvent(SYRLINKS_OVERHEATING);
|
||||
}
|
||||
}
|
||||
void ThermalController::ctrlPcduP60Board() {
|
||||
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD,
|
||||
@ -1219,6 +1222,9 @@ void ThermalController::ctrlPlPcduBoard() {
|
||||
sensorTemperatures.sensor_plpcdu_heatspreader);
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &plPcduBoardLimits);
|
||||
if (componentOverheating) {
|
||||
triggerEvent(PLPCDU_OVERHEATING, switchNr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1228,6 +1234,9 @@ void ThermalController::ctrlPlocMissionBoard() {
|
||||
sensorTemperatures.sensor_ploc_heatspreader,
|
||||
sensorTemperatures.sensor_ploc_missionboard,
|
||||
sensorTemperatures.sensor_dac_heatspreader, &plocMissionBoardLimits);
|
||||
if (componentOverheating) {
|
||||
triggerEvent(PLOC_OVERHEATING);
|
||||
}
|
||||
}
|
||||
|
||||
void ThermalController::ctrlPlocProcessingBoard() {
|
||||
@ -1278,6 +1287,9 @@ void ThermalController::ctrlHpa() {
|
||||
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA,
|
||||
sensorTemperatures.sensor_hpa, sensorTemperatures.sensor_x8,
|
||||
sensorTemperatures.sensor_mpa, &hpaLimits);
|
||||
if (componentOverheating) {
|
||||
triggerEvent(HPA_OVERHEATING);
|
||||
}
|
||||
}
|
||||
|
||||
void ThermalController::ctrlScexBoard() {
|
||||
@ -1288,20 +1300,25 @@ void ThermalController::ctrlScexBoard() {
|
||||
|
||||
void ThermalController::ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr,
|
||||
struct TempLimits* tempLimit) {
|
||||
componentOverheating = false;
|
||||
// Heater off
|
||||
if (not heaterHandler.checkSwitchState(switchNr)) {
|
||||
if (sensorTemp < (*tempLimit).opLowerLimit) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::ON);
|
||||
sif::info << "ThermalController::ctrlHeater: Heater" << switchNr << " ON" << std::endl;
|
||||
}
|
||||
// Heater on
|
||||
} else if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
if (sensorTemp >= (*tempLimit).opLowerLimit + TEMP_OFFSET) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
sif::info << "ThermalController::ctrlHeater: Heater" << switchNr << " OFF" << std::endl;
|
||||
}
|
||||
} else if (not redSwitchNrInUse) {
|
||||
if (heaterHandler.checkSwitchState(redSwitchNr)) {
|
||||
if (sensorTemp >= (*tempLimit).cutOffLimit) {
|
||||
componentOverheating = true;
|
||||
heaterHandler.switchHeater(redSwitchNr, HeaterHandler::SwitchState::OFF);
|
||||
sif::info << "ThermalController::ctrlHeater: Heater" << redSwitchNr << " OFF" << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1327,15 +1344,16 @@ void ThermalController::chooseSensor(heater::Switchers switchNr, const lp_float_
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3) {
|
||||
sensorTempAvailable = true;
|
||||
|
||||
if (sensor1.isValid()) {
|
||||
if (sensor1.isValid() and sensor1.value != INVALID_TEMPERATURE) {
|
||||
sensorTemp = sensor1.value;
|
||||
} else if (sensor2.isValid()) {
|
||||
} else if (sensor2.isValid() and sensor2.value != INVALID_TEMPERATURE) {
|
||||
sensorTemp = sensor2.value;
|
||||
} else if (sensor3.isValid()) {
|
||||
} else if (sensor3.isValid() and sensor3.value != INVALID_TEMPERATURE) {
|
||||
sensorTemp = sensor3.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
sif::info << "ThermalController::ctrlHeater: Heater" << switchNr << " OFF" << std::endl;
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
@ -1363,40 +1381,18 @@ void ThermalController::chooseOf4Sensors(heater::Switchers switchNr, const lp_fl
|
||||
const lp_float_t& sensor4) {
|
||||
sensorTempAvailable = true;
|
||||
|
||||
if (sensor1.isValid()) {
|
||||
if (sensor1.isValid() and sensor1.value != INVALID_TEMPERATURE) {
|
||||
sensorTemp = sensor1.value;
|
||||
} else if (sensor2.isValid()) {
|
||||
} else if (sensor2.isValid() and sensor2.value != INVALID_TEMPERATURE) {
|
||||
sensorTemp = sensor2.value;
|
||||
} else if (sensor3.isValid()) {
|
||||
} else if (sensor3.isValid() and sensor3.value != INVALID_TEMPERATURE) {
|
||||
sensorTemp = sensor3.value;
|
||||
} else if (sensor4.isValid()) {
|
||||
} else if (sensor4.isValid() and sensor4.value != INVALID_TEMPERATURE) {
|
||||
sensorTemp = sensor4.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
}
|
||||
}
|
||||
void ThermalController::chooseOf5Sensors(heater::Switchers switchNr, const lp_float_t& sensor1,
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3,
|
||||
const lp_float_t& sensor4, const lp_float_t& sensor5) {
|
||||
sensorTempAvailable = true;
|
||||
|
||||
if (sensor1.isValid()) {
|
||||
sensorTemp = sensor1.value;
|
||||
} else if (sensor2.isValid()) {
|
||||
sensorTemp = sensor2.value;
|
||||
} else if (sensor3.isValid()) {
|
||||
sensorTemp = sensor3.value;
|
||||
} else if (sensor4.isValid()) {
|
||||
sensorTemp = sensor4.value;
|
||||
} else if (sensor5.isValid()) {
|
||||
sensorTemp = sensor5.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
sif::info << "ThermalController::ctrlHeater: Heater" << switchNr << " OFF" << std::endl;
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
|
Reference in New Issue
Block a user