thermalController upgrade
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit

This commit is contained in:
Irini Kosmidou 2023-02-06 21:13:17 +01:00
parent 77aff26204
commit 4f8fdc973f

View File

@ -984,6 +984,7 @@ void ThermalController::copyDevices() {
} }
void ThermalController::ctrlAcsBoard() { void ThermalController::ctrlAcsBoard() {
// TODO: fix
heater::Switchers switchNr = heater::HEATER_2_ACS_BRD; heater::Switchers switchNr = heater::HEATER_2_ACS_BRD;
heater::Switchers redSwitchNr = heater::HEATER_0_OBC_BRD; heater::Switchers redSwitchNr = heater::HEATER_0_OBC_BRD;
@ -991,13 +992,13 @@ void ThermalController::ctrlAcsBoard() {
// A side // A side
if (chooseOf4Sensors(switchNr, deviceTemperatures.gyro0SideA, deviceTemperatures.mgm0SideA, if (chooseOf4Sensors(switchNr, deviceTemperatures.gyro0SideA, deviceTemperatures.mgm0SideA,
deviceTemperatures.gyro1SideA, sensorTemperatures.sensor_tcs_board)) { deviceTemperatures.gyro1SideA, sensorTemperatures.sensor_tcs_board)) {
ctrlHeater(switchNr, redSwitchNr, &acsBoardLimits); ctrlHeater(switchNr, redSwitchNr, acsBoardLimits);
return; return;
} }
// B side // B side
if (chooseOf4Sensors(switchNr, deviceTemperatures.gyro2SideB, deviceTemperatures.mgm2SideB, if (chooseOf4Sensors(switchNr, deviceTemperatures.gyro2SideB, deviceTemperatures.mgm2SideB,
deviceTemperatures.gyro3SideB, sensorTemperatures.sensor_tcs_board)) { deviceTemperatures.gyro3SideB, sensorTemperatures.sensor_tcs_board)) {
ctrlHeater(switchNr, redSwitchNr, &acsBoardLimits); ctrlHeater(switchNr, redSwitchNr, acsBoardLimits);
} }
} }
} }
@ -1008,33 +1009,20 @@ void ThermalController::ctrlMgt() {
static_cast<ThermalComponentIF::StateRequest>(imtqThermalSet.heaterRequest.value); static_cast<ThermalComponentIF::StateRequest>(imtqThermalSet.heaterRequest.value);
if (heaterReq == ThermalComponentIF::STATE_REQUEST_OPERATIONAL) { if (heaterReq == ThermalComponentIF::STATE_REQUEST_OPERATIONAL) {
heater::Switchers switchNr = heater::HEATER_2_ACS_BRD; sensors[0].first = sensorTemperatures.sensor_magnettorquer.isValid();
heater::Switchers redSwitchNr = heater::HEATER_3_PCDU_PDU; sensors[0].second = sensorTemperatures.sensor_magnettorquer.value;
sensors[1].first = deviceTemperatures.mgt.isValid();
if (chooseHeater(switchNr, redSwitchNr)) { sensors[1].second = deviceTemperatures.mgt.value;
bool sensorTempAvailable = true; sensors[2].first = sensorTemperatures.sensor_plpcdu_heatspreader.isValid();
sensors[2].second = sensorTemperatures.sensor_plpcdu_heatspreader.value;
if (sensorTemperatures.sensor_magnettorquer.isValid()) { numSensors = 3;
sensorTemp = sensorTemperatures.sensor_magnettorquer.value; ctrlComponentTemperature(heater::HEATER_2_ACS_BRD, heater::HEATER_3_PCDU_PDU,
} else if (deviceTemperatures.mgt.isValid()) { mgtLimits);
sensorTemp = deviceTemperatures.mgt.value;
} else if (sensorTemperatures.sensor_plpcdu_heatspreader.isValid()) {
sensorTemp = sensorTemperatures.sensor_plpcdu_heatspreader.value;
} else {
if (heaterHandler.checkSwitchState(switchNr)) {
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
}
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
sensorTempAvailable = false;
}
if (sensorTempAvailable) {
ctrlHeater(switchNr, redSwitchNr, &mgtLimits);
}
}
} }
} }
void ThermalController::ctrlRw() { void ThermalController::ctrlRw() {
//TODO: better solution?
heater::Switchers switchNr = heater::HEATER_6_DRO; heater::Switchers switchNr = heater::HEATER_6_DRO;
heater::Switchers redSwitchNr = heater::HEATER_6_DRO; heater::Switchers redSwitchNr = heater::HEATER_6_DRO;
redSwitchNrInUse = false; redSwitchNrInUse = false;
@ -1059,7 +1047,7 @@ void ThermalController::ctrlRw() {
sensorTempAvailable = false; sensorTempAvailable = false;
} }
if (sensorTempAvailable) { if (sensorTempAvailable) {
ctrlHeater(switchNr, redSwitchNr, &rwLimits); ctrlHeater(switchNr, redSwitchNr, rwLimits);
} }
// RW2 // RW2
sensorTempAvailable = true; sensorTempAvailable = true;
@ -1159,33 +1147,50 @@ void ThermalController::ctrlTcsBoard() {
} }
void ThermalController::ctrlObc() { void ThermalController::ctrlObc() {
ctrlComponentTemperature(heater::HEATER_0_OBC_BRD, heater::HEATER_2_ACS_BRD, sensors[0].first = deviceTemperatures.q7s.isValid();
deviceTemperatures.q7s, sensorTemperatures.tmp1075Tcs1, sensors[0].second = deviceTemperatures.q7s.value;
sensorTemperatures.tmp1075Tcs0, &obcLimits); sensors[1].first = sensorTemperatures.tmp1075Tcs1.isValid();
sensors[1].second = sensorTemperatures.tmp1075Tcs1.value;
sensors[2].first = sensorTemperatures.tmp1075Tcs0.isValid();
sensors[2].second = sensorTemperatures.tmp1075Tcs0.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_0_OBC_BRD, heater::HEATER_2_ACS_BRD, obcLimits);
if (componentAboveCutOffLimit) { if (componentAboveCutOffLimit) {
triggerEvent(OBC_OVERHEATING); triggerEvent(OBC_OVERHEATING);
} }
} }
void ThermalController::ctrlObcIfBoard() { void ThermalController::ctrlObcIfBoard() {
ctrlComponentTemperature(heater::HEATER_0_OBC_BRD, heater::HEATER_2_ACS_BRD, sensors[0].first = deviceTemperatures.q7s.isValid();
deviceTemperatures.q7s, sensorTemperatures.tmp1075Tcs0, sensors[0].second = deviceTemperatures.q7s.value;
sensorTemperatures.tmp1075Tcs1, &obcIfBoardLimits); sensors[1].first = sensorTemperatures.tmp1075Tcs0.isValid();
sensors[1].second = sensorTemperatures.tmp1075Tcs0.value;
sensors[2].first = sensorTemperatures.tmp1075Tcs1.isValid();
sensors[2].second = sensorTemperatures.tmp1075Tcs1.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_0_OBC_BRD, heater::HEATER_2_ACS_BRD, obcIfBoardLimits);
} }
void ThermalController::ctrlSBandTransceiver() { void ThermalController::ctrlSBandTransceiver() {
ctrlComponentTemperature(heater::HEATER_7_S_BAND, heater::HEATER_4_CAMERA, sensors[0].first = deviceTemperatures.syrlinksPowerAmplifier.isValid();
deviceTemperatures.syrlinksPowerAmplifier, sensors[0].second = deviceTemperatures.syrlinksPowerAmplifier.value;
deviceTemperatures.syrlinksBasebandBoard, sensors[1].first = deviceTemperatures.syrlinksBasebandBoard.isValid();
sensorTemperatures.sensor_4k_camera, sBandTransceiverLimits); sensors[1].second = deviceTemperatures.syrlinksBasebandBoard.value;
sensors[2].first = sensorTemperatures.sensor_4k_camera.isValid();
sensors[2].second = sensorTemperatures.sensor_4k_camera.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_7_S_BAND, heater::HEATER_4_CAMERA, sBandTransceiverLimits);
if (componentAboveCutOffLimit) { if (componentAboveCutOffLimit) {
triggerEvent(SYRLINKS_OVERHEATING); triggerEvent(SYRLINKS_OVERHEATING);
} }
} }
void ThermalController::ctrlPcduP60Board() { void ThermalController::ctrlPcduP60Board() {
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, sensors[0].first = deviceTemperatures.temp1P60dock.isValid();
deviceTemperatures.temp1P60dock, deviceTemperatures.temp2P60dock, sensors[0].second = deviceTemperatures.temp1P60dock.value;
deviceTemperatures.temp2P60dock, pcduP60BoardLimits); sensors[1].first = deviceTemperatures.temp2P60dock.isValid();
sensors[1].second = deviceTemperatures.temp2P60dock.value;
numSensors = 2;
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, pcduP60BoardLimits);
} }
void ThermalController::ctrlPcduAcu() { void ThermalController::ctrlPcduAcu() {
@ -1204,107 +1209,156 @@ void ThermalController::ctrlPcduAcu() {
} else if (sensorTemperatures.sensor_acu.isValid()) { } else if (sensorTemperatures.sensor_acu.isValid()) {
sensorTemp = sensorTemperatures.sensor_acu.value; sensorTemp = sensorTemperatures.sensor_acu.value;
} else { } else {
if (heaterHandler.checkSwitchState(switchNr)) {
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
}
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr); triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
sensorTempAvailable = false; sensorTempAvailable = false;
} }
if (sensorTempAvailable) { if (sensorTempAvailable) {
ctrlHeater(switchNr, redSwitchNr, &pcduAcuLimits); ctrlHeater(switchNr, redSwitchNr, pcduAcuLimits);
} }
} }
} }
void ThermalController::ctrlPcduPdu() { void ThermalController::ctrlPcduPdu() {
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, sensors[0].first = deviceTemperatures.pdu1.isValid();
deviceTemperatures.pdu1, deviceTemperatures.pdu2, sensors[0].second = deviceTemperatures.pdu1.value;
deviceTemperatures.pdu2, &pcduPduLimits); sensors[1].first = deviceTemperatures.pdu2.isValid();
sensors[1].second = deviceTemperatures.pdu2.value;
sensors[2].first = sensorTemperatures.tmp1075Tcs0.isValid();
sensors[2].second = sensorTemperatures.tmp1075Tcs0.value;
numSensors = 2;
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, pcduPduLimits);
} }
void ThermalController::ctrlPlPcduBoard() { void ThermalController::ctrlPlPcduBoard() {
heater::Switchers switchNr = heater::HEATER_3_PCDU_PDU; sensors[0].first = sensorTemperatures.tmp1075PlPcdu0.isValid();
heater::Switchers redSwitchNr = heater::HEATER_2_ACS_BRD; sensors[0].second = sensorTemperatures.tmp1075PlPcdu0.value;
sensors[1].first = sensorTemperatures.tmp1075PlPcdu1.isValid();
if (chooseHeater(switchNr, redSwitchNr)) { sensors[1].second = sensorTemperatures.tmp1075PlPcdu1.value;
if (chooseOf4Sensors(switchNr, sensorTemperatures.tmp1075PlPcdu0, sensorTemperatures.tmp1075PlPcdu1, sensors[2].first = deviceTemperatures.adcPayloadPcdu.isValid();
deviceTemperatures.adcPayloadPcdu, sensors[2].second = deviceTemperatures.adcPayloadPcdu.value;
sensorTemperatures.sensor_plpcdu_heatspreader)) { sensors[3].first = sensorTemperatures.sensor_plpcdu_heatspreader.isValid();
ctrlHeater(switchNr, redSwitchNr, &plPcduBoardLimits); sensors[3].second = sensorTemperatures.sensor_plpcdu_heatspreader.value;
numSensors = 4;
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, plPcduBoardLimits);
if (componentAboveCutOffLimit) { if (componentAboveCutOffLimit) {
triggerEvent(PLPCDU_OVERHEATING, switchNr); triggerEvent(PLPCDU_OVERHEATING);
}
}
} }
} }
void ThermalController::ctrlPlocMissionBoard() { void ThermalController::ctrlPlocMissionBoard() {
ctrlComponentTemperature(heater::HEATER_1_PLOC_PROC_BRD, heater::HEATER_0_OBC_BRD, sensors[0].first = sensorTemperatures.sensor_ploc_heatspreader.isValid();
sensorTemperatures.sensor_ploc_heatspreader, sensors[0].second = sensorTemperatures.sensor_ploc_heatspreader.value;
sensorTemperatures.sensor_ploc_missionboard, sensors[1].first = sensorTemperatures.sensor_ploc_missionboard.isValid();
sensorTemperatures.sensor_dac_heatspreader, plocMissionBoardLimits); sensors[1].second = sensorTemperatures.sensor_ploc_missionboard.value;
sensors[2].first = sensorTemperatures.sensor_dac_heatspreader.isValid();
sensors[2].second = sensorTemperatures.sensor_dac_heatspreader.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_1_PLOC_PROC_BRD, heater::HEATER_0_OBC_BRD, plocMissionBoardLimits);
if (componentAboveCutOffLimit) { if (componentAboveCutOffLimit) {
triggerEvent(PLOC_OVERHEATING); triggerEvent(PLOC_OVERHEATING);
} }
} }
void ThermalController::ctrlPlocProcessingBoard() { void ThermalController::ctrlPlocProcessingBoard() {
ctrlComponentTemperature(heater::HEATER_1_PLOC_PROC_BRD, heater::HEATER_0_OBC_BRD, sensors[0].first = sensorTemperatures.sensor_ploc_missionboard.isValid();
sensorTemperatures.sensor_ploc_missionboard, sensors[0].second = sensorTemperatures.sensor_ploc_missionboard.value;
sensorTemperatures.sensor_ploc_heatspreader, sensors[1].first = sensorTemperatures.sensor_ploc_heatspreader.isValid();
sensorTemperatures.sensor_dac_heatspreader, plocProcessingBoardLimits); sensors[1].second = sensorTemperatures.sensor_ploc_heatspreader.value;
sensors[2].first = sensorTemperatures.sensor_dac_heatspreader.isValid();
sensors[2].second = sensorTemperatures.sensor_dac_heatspreader.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_1_PLOC_PROC_BRD, heater::HEATER_0_OBC_BRD, plocProcessingBoardLimits);
} }
void ThermalController::ctrlDac() { void ThermalController::ctrlDac() {
ctrlComponentTemperature(heater::HEATER_1_PLOC_PROC_BRD, heater::HEATER_0_OBC_BRD, sensors[0].first = sensorTemperatures.sensor_dac_heatspreader.isValid();
sensorTemperatures.sensor_dac_heatspreader, sensors[0].second = sensorTemperatures.sensor_dac_heatspreader.value;
sensorTemperatures.sensor_ploc_missionboard, sensors[1].first = sensorTemperatures.sensor_ploc_missionboard.isValid();
sensorTemperatures.sensor_ploc_heatspreader, &dacLimits); sensors[1].second = sensorTemperatures.sensor_ploc_missionboard.value;
sensors[2].first = sensorTemperatures.sensor_ploc_heatspreader.isValid();
sensors[2].second = sensorTemperatures.sensor_ploc_heatspreader.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_1_PLOC_PROC_BRD, heater::HEATER_0_OBC_BRD, dacLimits);
} }
void ThermalController::ctrlCameraBody() { void ThermalController::ctrlCameraBody() {
ctrlComponentTemperature(heater::HEATER_4_CAMERA, heater::HEATER_6_DRO, sensors[0].first = sensorTemperatures.sensor_4k_camera.isValid();
sensorTemperatures.sensor_4k_camera, sensorTemperatures.sensor_dro, sensors[0].second = sensorTemperatures.sensor_4k_camera.value;
sensorTemperatures.sensor_mpa, &cameraLimits); sensors[1].first = sensorTemperatures.sensor_dro.isValid();
sensors[1].second = sensorTemperatures.sensor_dro.value;
sensors[2].first = sensorTemperatures.sensor_mpa.isValid();
sensors[2].second = sensorTemperatures.sensor_mpa.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_4_CAMERA, heater::HEATER_6_DRO, cameraLimits);
} }
void ThermalController::ctrlDro() { void ThermalController::ctrlDro() {
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, sensors[0].first = sensorTemperatures.sensor_dro.isValid();
sensorTemperatures.sensor_dro, sensorTemperatures.sensor_4k_camera, sensors[0].second = sensorTemperatures.sensor_dro.value;
sensorTemperatures.sensor_mpa, &droLimits); sensors[1].first = sensorTemperatures.sensor_4k_camera.isValid();
sensors[1].second = sensorTemperatures.sensor_4k_camera.value;
sensors[2].first = sensorTemperatures.sensor_mpa.isValid();
sensors[2].second = sensorTemperatures.sensor_mpa.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, droLimits);
} }
void ThermalController::ctrlX8() { void ThermalController::ctrlX8() {
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, sensors[0].first = sensorTemperatures.sensor_x8.isValid();
sensorTemperatures.sensor_x8, sensorTemperatures.sensor_hpa, sensors[0].second = sensorTemperatures.sensor_x8.value;
sensorTemperatures.sensor_tx_modul, &x8Limits); sensors[1].first = sensorTemperatures.sensor_hpa.isValid();
sensors[1].second = sensorTemperatures.sensor_hpa.value;
sensors[2].first = sensorTemperatures.sensor_tx_modul.isValid();
sensors[2].second = sensorTemperatures.sensor_tx_modul.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, x8Limits);
} }
void ThermalController::ctrlTx() { void ThermalController::ctrlTx() {
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, sensors[0].first = sensorTemperatures.sensor_tx_modul.isValid();
sensorTemperatures.sensor_tx_modul, sensorTemperatures.sensor_x8, sensors[0].second = sensorTemperatures.sensor_tx_modul.value;
sensorTemperatures.sensor_mpa, &txLimits); sensors[1].first = sensorTemperatures.sensor_x8.isValid();
sensors[1].second = sensorTemperatures.sensor_x8.value;
sensors[2].first = sensorTemperatures.sensor_mpa.isValid();
sensors[2].second = sensorTemperatures.sensor_mpa.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, txLimits);
} }
void ThermalController::ctrlMpa() { void ThermalController::ctrlMpa() {
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, sensors[0].first = sensorTemperatures.sensor_mpa.isValid();
sensorTemperatures.sensor_mpa, sensorTemperatures.sensor_hpa, sensors[0].second = sensorTemperatures.sensor_mpa.value;
sensorTemperatures.sensor_tx_modul, &mpaLimits); sensors[1].first = sensorTemperatures.sensor_hpa.isValid();
sensors[1].second = sensorTemperatures.sensor_hpa.value;
sensors[2].first = sensorTemperatures.sensor_tx_modul.isValid();
sensors[2].second = sensorTemperatures.sensor_tx_modul.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, mpaLimits);
} }
void ThermalController::ctrlHpa() { void ThermalController::ctrlHpa() {
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, sensors[0].first = sensorTemperatures.sensor_hpa.isValid();
sensorTemperatures.sensor_hpa, sensorTemperatures.sensor_x8, sensors[0].second = sensorTemperatures.sensor_hpa.value;
sensorTemperatures.sensor_mpa, &hpaLimits); sensors[1].first = sensorTemperatures.sensor_x8.isValid();
sensors[1].second = sensorTemperatures.sensor_x8.value;
sensors[2].first = sensorTemperatures.sensor_mpa.isValid();
sensors[2].second = sensorTemperatures.sensor_mpa.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_4_CAMERA, hpaLimits);
if (componentAboveCutOffLimit) { if (componentAboveCutOffLimit) {
triggerEvent(HPA_OVERHEATING); triggerEvent(HPA_OVERHEATING);
} }
} }
void ThermalController::ctrlScexBoard() { void ThermalController::ctrlScexBoard() {
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_5_STR, sensors[0].first = sensorTemperatures.sensor_scex.isValid();
sensorTemperatures.sensor_scex, sensorTemperatures.sensor_x8, sensors[0].second = sensorTemperatures.sensor_scex.value;
sensorTemperatures.sensor_hpa, &scexBoardLimits); sensors[1].first = sensorTemperatures.sensor_x8.isValid();
sensors[1].second = sensorTemperatures.sensor_x8.value;
sensors[2].first = sensorTemperatures.sensor_hpa.isValid();
sensors[2].second = sensorTemperatures.sensor_hpa.value;
numSensors = 3;
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_5_STR, scexBoardLimits);
} }
void ThermalController::ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr, void ThermalController::ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr,