From 42f5f6e943810b4453acdcdaedd5d28e24d2d633 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 3 Nov 2022 16:13:53 +0100 Subject: [PATCH] re-run generators, TCS ctrl adaption - Scoped TCS controller device temperature copy handling --- generators/bsp_q7s_events.csv | 13 +- generators/bsp_q7s_returnvalues.csv | 2 +- generators/events/translateEvents.cpp | 7 +- generators/objects/translateObjects.cpp | 2 +- linux/fsfwconfig/events/translateEvents.cpp | 7 +- linux/fsfwconfig/objects/translateObjects.cpp | 2 +- mission/controller/ThermalController.cpp | 653 +++++++++--------- tmtc | 2 +- 8 files changed, 334 insertions(+), 354 deletions(-) diff --git a/generators/bsp_q7s_events.csv b/generators/bsp_q7s_events.csv index 05354cdc..7dace6d3 100644 --- a/generators/bsp_q7s_events.csv +++ b/generators/bsp_q7s_events.csv @@ -132,12 +132,13 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path 12300;0x300c;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;linux/devices/ploc/PlocMemoryDumper.h 12301;0x300d;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;linux/devices/ploc/PlocMemoryDumper.h 12302;0x300e;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;linux/devices/ploc/PlocMemoryDumper.h -12401;0x3071;INVALID_TC_FRAME;HIGH;;linux/obc/PdecHandler.h -12402;0x3072;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;linux/obc/PdecHandler.h -12403;0x3073;CARRIER_LOCK;INFO;Carrier lock detected;linux/obc/PdecHandler.h -12404;0x3074;BIT_LOCK_PDEC;INFO;Bit lock detected (data valid);linux/obc/PdecHandler.h -12405;0x3075;LOST_CARRIER_LOCK_PDEC;INFO;Lost carrier lock;linux/obc/PdecHandler.h -12406;0x3076;LOST_BIT_LOCK_PDEC;INFO;Lost bit lock;linux/obc/PdecHandler.h +12401;0x3071;INVALID_TC_FRAME;HIGH;;linux/ipcore/PdecHandler.h +12402;0x3072;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;linux/ipcore/PdecHandler.h +12403;0x3073;CARRIER_LOCK;INFO;Carrier lock detected;linux/ipcore/PdecHandler.h +12404;0x3074;BIT_LOCK_PDEC;INFO;Bit lock detected (data valid);linux/ipcore/PdecHandler.h +12405;0x3075;LOST_CARRIER_LOCK_PDEC;INFO;Lost carrier lock;linux/ipcore/PdecHandler.h +12406;0x3076;LOST_BIT_LOCK_PDEC;INFO;Lost bit lock;linux/ipcore/PdecHandler.h +12407;0x3077;POLL_ERROR_PDEC;MEDIUM;;linux/ipcore/PdecHandler.h 12500;0x30d4;IMAGE_UPLOAD_FAILED;LOW;Image upload failed;linux/devices/startracker/StrHelper.h 12501;0x30d5;IMAGE_DOWNLOAD_FAILED;LOW;Image download failed;linux/devices/startracker/StrHelper.h 12502;0x30d6;IMAGE_UPLOAD_SUCCESSFUL;LOW;Uploading image to star tracker was successfulop;linux/devices/startracker/StrHelper.h diff --git a/generators/bsp_q7s_returnvalues.csv b/generators/bsp_q7s_returnvalues.csv index fe4c5cfc..72c0868f 100644 --- a/generators/bsp_q7s_returnvalues.csv +++ b/generators/bsp_q7s_returnvalues.csv @@ -1,7 +1,7 @@ Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path 0x0000;OK;System-wide code for ok.;0;HasReturnvaluesIF;fsfw/returnvalues/returnvalue.h 0x0001;Failed;Unspecified system-wide code for failed.;1;HasReturnvaluesIF;fsfw/returnvalues/returnvalue.h -0x60a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;160;CCSDS_HANDLER;mission/tmtc/CCSDSHandler.h +0x60a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;160;CCSDS_HANDLER;mission/tmtc/CcsdsIpCoreHandler.h 0x5d00;GOMS_PacketTooLong;;0;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h 0x5d01;GOMS_InvalidTableId;;1;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h 0x5d02;GOMS_InvalidAddress;;2;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h diff --git a/generators/events/translateEvents.cpp b/generators/events/translateEvents.cpp index 435474e8..dfaec6e0 100644 --- a/generators/events/translateEvents.cpp +++ b/generators/events/translateEvents.cpp @@ -1,7 +1,7 @@ /** - * @brief Auto-generated event translation file. Contains 233 translations. + * @brief Auto-generated event translation file. Contains 234 translations. * @details - * Generated on: 2022-10-27 09:17:50 + * Generated on: 2022-11-03 16:11:14 */ #include "translateEvents.h" @@ -144,6 +144,7 @@ const char *CARRIER_LOCK_STRING = "CARRIER_LOCK"; const char *BIT_LOCK_PDEC_STRING = "BIT_LOCK_PDEC"; const char *LOST_CARRIER_LOCK_PDEC_STRING = "LOST_CARRIER_LOCK_PDEC"; const char *LOST_BIT_LOCK_PDEC_STRING = "LOST_BIT_LOCK_PDEC"; +const char *POLL_ERROR_PDEC_STRING = "POLL_ERROR_PDEC"; const char *IMAGE_UPLOAD_FAILED_STRING = "IMAGE_UPLOAD_FAILED"; const char *IMAGE_DOWNLOAD_FAILED_STRING = "IMAGE_DOWNLOAD_FAILED"; const char *IMAGE_UPLOAD_SUCCESSFUL_STRING = "IMAGE_UPLOAD_SUCCESSFUL"; @@ -515,6 +516,8 @@ const char *translateEvents(Event event) { return LOST_CARRIER_LOCK_PDEC_STRING; case (12406): return LOST_BIT_LOCK_PDEC_STRING; + case (12407): + return POLL_ERROR_PDEC_STRING; case (12500): return IMAGE_UPLOAD_FAILED_STRING; case (12501): diff --git a/generators/objects/translateObjects.cpp b/generators/objects/translateObjects.cpp index 2fca9350..1e676cbc 100644 --- a/generators/objects/translateObjects.cpp +++ b/generators/objects/translateObjects.cpp @@ -2,7 +2,7 @@ * @brief Auto-generated object translation file. * @details * Contains 142 translations. - * Generated on: 2022-10-27 09:17:50 + * Generated on: 2022-11-03 16:11:14 */ #include "translateObjects.h" diff --git a/linux/fsfwconfig/events/translateEvents.cpp b/linux/fsfwconfig/events/translateEvents.cpp index 435474e8..dfaec6e0 100644 --- a/linux/fsfwconfig/events/translateEvents.cpp +++ b/linux/fsfwconfig/events/translateEvents.cpp @@ -1,7 +1,7 @@ /** - * @brief Auto-generated event translation file. Contains 233 translations. + * @brief Auto-generated event translation file. Contains 234 translations. * @details - * Generated on: 2022-10-27 09:17:50 + * Generated on: 2022-11-03 16:11:14 */ #include "translateEvents.h" @@ -144,6 +144,7 @@ const char *CARRIER_LOCK_STRING = "CARRIER_LOCK"; const char *BIT_LOCK_PDEC_STRING = "BIT_LOCK_PDEC"; const char *LOST_CARRIER_LOCK_PDEC_STRING = "LOST_CARRIER_LOCK_PDEC"; const char *LOST_BIT_LOCK_PDEC_STRING = "LOST_BIT_LOCK_PDEC"; +const char *POLL_ERROR_PDEC_STRING = "POLL_ERROR_PDEC"; const char *IMAGE_UPLOAD_FAILED_STRING = "IMAGE_UPLOAD_FAILED"; const char *IMAGE_DOWNLOAD_FAILED_STRING = "IMAGE_DOWNLOAD_FAILED"; const char *IMAGE_UPLOAD_SUCCESSFUL_STRING = "IMAGE_UPLOAD_SUCCESSFUL"; @@ -515,6 +516,8 @@ const char *translateEvents(Event event) { return LOST_CARRIER_LOCK_PDEC_STRING; case (12406): return LOST_BIT_LOCK_PDEC_STRING; + case (12407): + return POLL_ERROR_PDEC_STRING; case (12500): return IMAGE_UPLOAD_FAILED_STRING; case (12501): diff --git a/linux/fsfwconfig/objects/translateObjects.cpp b/linux/fsfwconfig/objects/translateObjects.cpp index 2fca9350..1e676cbc 100644 --- a/linux/fsfwconfig/objects/translateObjects.cpp +++ b/linux/fsfwconfig/objects/translateObjects.cpp @@ -2,7 +2,7 @@ * @brief Auto-generated object translation file. * @details * Contains 142 translations. - * Generated on: 2022-10-27 09:17:50 + * Generated on: 2022-11-03 16:11:14 */ #include "translateObjects.h" diff --git a/mission/controller/ThermalController.cpp b/mission/controller/ThermalController.cpp index 5beccb4e..18bbb82e 100644 --- a/mission/controller/ThermalController.cpp +++ b/mission/controller/ThermalController.cpp @@ -573,369 +573,342 @@ void ThermalController::copySus() { void ThermalController::copyDevices() { lp_var_t tempQ7s = lp_var_t(objects::CORE_CONTROLLER, core::PoolIds::TEMPERATURE); - ReturnValue_t result = tempQ7s.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read Q7S temperature" << std::endl; - deviceTemperatures.q7s.setValid(false); - deviceTemperatures.q7s = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.q7s = tempQ7s; - deviceTemperatures.q7s.setValid(tempQ7s.isValid()); + { + PoolReadGuard pg(&tempQ7s, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if(pg.getReadResult() == returnvalue::OK) { + deviceTemperatures.q7s = tempQ7s; + deviceTemperatures.q7s.setValid(tempQ7s.isValid()); + } else { + deviceTemperatures.q7s.setValid(false); + deviceTemperatures.q7s = static_cast(INVALID_TEMPERATURE); + } } - result = tempQ7s.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t battTemp1 = + lp_var_t(objects::BPX_BATT_HANDLER, BpxBattery::BATT_TEMP_1); + PoolReadGuard pg(&battTemp1, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read battery temperature 1" << std::endl; + deviceTemperatures.batteryTemp1.setValid(false); + deviceTemperatures.batteryTemp1 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.batteryTemp1 = battTemp1; + deviceTemperatures.batteryTemp1.setValid(battTemp1.isValid()); + } } - lp_var_t battTemp1 = - lp_var_t(objects::BPX_BATT_HANDLER, BpxBattery::BATT_TEMP_1); - result = battTemp1.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read battery temperature 1" << std::endl; - deviceTemperatures.batteryTemp1.setValid(false); - deviceTemperatures.batteryTemp1 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.batteryTemp1 = battTemp1; - deviceTemperatures.batteryTemp1.setValid(battTemp1.isValid()); + + { + lp_var_t battTemp2 = + lp_var_t(objects::BPX_BATT_HANDLER, BpxBattery::BATT_TEMP_2); + PoolReadGuard pg(&battTemp2, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read battery temperature 2" << std::endl; + deviceTemperatures.batteryTemp2.setValid(false); + deviceTemperatures.batteryTemp2 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.batteryTemp2 = battTemp2; + deviceTemperatures.batteryTemp2.setValid(battTemp2.isValid()); + } } - result = battTemp1.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t battTemp3 = + lp_var_t(objects::BPX_BATT_HANDLER, BpxBattery::BATT_TEMP_3); + PoolReadGuard pg(&battTemp3, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read battery temperature 3" << std::endl; + deviceTemperatures.batteryTemp3.setValid(false); + deviceTemperatures.batteryTemp3 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.batteryTemp3 = battTemp3; + deviceTemperatures.batteryTemp3.setValid(battTemp3.isValid()); + } } - lp_var_t battTemp2 = - lp_var_t(objects::BPX_BATT_HANDLER, BpxBattery::BATT_TEMP_2); - result = battTemp2.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read battery temperature 2" << std::endl; - deviceTemperatures.batteryTemp2.setValid(false); - deviceTemperatures.batteryTemp2 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.batteryTemp2 = battTemp2; - deviceTemperatures.batteryTemp2.setValid(battTemp2.isValid()); + + { + lp_var_t battTemp4 = + lp_var_t(objects::BPX_BATT_HANDLER, BpxBattery::BATT_TEMP_4); + PoolReadGuard pg(&battTemp4, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read battery temperature 4" << std::endl; + deviceTemperatures.batteryTemp4.setValid(false); + deviceTemperatures.batteryTemp4 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.batteryTemp4 = battTemp4; + deviceTemperatures.batteryTemp4.setValid(battTemp4.isValid()); + } } - result = battTemp2.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempRw1 = lp_var_t(objects::RW1, RwDefinitions::TEMPERATURE_C); + PoolReadGuard pg(&tempRw1, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read reaction wheel 1 temperature" << std::endl; + deviceTemperatures.rw1.setValid(false); + deviceTemperatures.rw1 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.rw1.setValid(tempRw1.isValid()); + deviceTemperatures.rw1 = tempRw1; + } } - lp_var_t battTemp3 = - lp_var_t(objects::BPX_BATT_HANDLER, BpxBattery::BATT_TEMP_3); - result = battTemp3.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read battery temperature 3" << std::endl; - deviceTemperatures.batteryTemp3.setValid(false); - deviceTemperatures.batteryTemp3 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.batteryTemp3 = battTemp3; - deviceTemperatures.batteryTemp3.setValid(battTemp3.isValid()); + + { + lp_var_t tempRw2 = lp_var_t(objects::RW2, RwDefinitions::TEMPERATURE_C); + PoolReadGuard pg(&tempRw2, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read reaction wheel 2 temperature" << std::endl; + deviceTemperatures.rw2.setValid(false); + deviceTemperatures.rw2 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.rw2.setValid(tempRw2.isValid()); + deviceTemperatures.rw2 = tempRw2; + } } - result = battTemp3.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempRw3 = lp_var_t(objects::RW3, RwDefinitions::TEMPERATURE_C); + PoolReadGuard pg(&tempRw3, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read reaction wheel 3 temperature" << std::endl; + deviceTemperatures.rw3.setValid(false); + deviceTemperatures.rw3 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.rw3.setValid(tempRw3.isValid()); + deviceTemperatures.rw3 = tempRw3; + } } - lp_var_t battTemp4 = - lp_var_t(objects::BPX_BATT_HANDLER, BpxBattery::BATT_TEMP_4); - result = battTemp4.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read battery temperature 4" << std::endl; - deviceTemperatures.batteryTemp4.setValid(false); - deviceTemperatures.batteryTemp4 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.batteryTemp4 = battTemp4; - deviceTemperatures.batteryTemp4.setValid(battTemp4.isValid()); + + { + lp_var_t tempRw4 = lp_var_t(objects::RW4, RwDefinitions::TEMPERATURE_C); + PoolReadGuard pg(&tempRw4, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read reaction wheel 4 temperature" << std::endl; + deviceTemperatures.rw4.setValid(false); + deviceTemperatures.rw4 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.rw4.setValid(tempRw4.isValid()); + deviceTemperatures.rw4 = tempRw4; + } } - result = battTemp4.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempStartracker = + lp_var_t(objects::STAR_TRACKER, startracker::MCU_TEMPERATURE); + PoolReadGuard pg(&tempStartracker, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read startracker temperature" << std::endl; + deviceTemperatures.startracker.setValid(false); + deviceTemperatures.startracker = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.startracker.setValid(tempStartracker.isValid()); + deviceTemperatures.startracker = tempStartracker; + } } - lp_var_t tempRw1 = lp_var_t(objects::RW1, RwDefinitions::TEMPERATURE_C); - result = tempRw1.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read reaction wheel 1 temperature" << std::endl; - deviceTemperatures.rw1.setValid(false); - deviceTemperatures.rw1 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.rw1.setValid(tempRw1.isValid()); - deviceTemperatures.rw1 = tempRw1; + + { + lp_var_t tempSyrlinksPowerAmplifier = + lp_var_t(objects::SYRLINKS_HK_HANDLER, syrlinks::TEMP_POWER_AMPLIFIER); + PoolReadGuard pg(&tempSyrlinksPowerAmplifier, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read syrlinks power amplifier temperature" + << std::endl; + deviceTemperatures.syrlinksPowerAmplifier.setValid(false); + deviceTemperatures.syrlinksPowerAmplifier = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.syrlinksPowerAmplifier.setValid(tempSyrlinksPowerAmplifier.isValid()); + deviceTemperatures.syrlinksPowerAmplifier = tempSyrlinksPowerAmplifier; + } } - result = tempRw1.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempSyrlinksBasebandBoard = + lp_var_t(objects::SYRLINKS_HK_HANDLER, syrlinks::TEMP_BASEBAND_BOARD); + PoolReadGuard pg(&tempSyrlinksBasebandBoard, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read syrlinks baseband board temperature" + << std::endl; + deviceTemperatures.syrlinksBasebandBoard.setValid(false); + deviceTemperatures.syrlinksBasebandBoard = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.syrlinksBasebandBoard.setValid(tempSyrlinksBasebandBoard.isValid()); + deviceTemperatures.syrlinksBasebandBoard = tempSyrlinksBasebandBoard; + } } - lp_var_t tempRw2 = lp_var_t(objects::RW2, RwDefinitions::TEMPERATURE_C); - result = tempRw2.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read reaction wheel 2 temperature" << std::endl; - deviceTemperatures.rw2.setValid(false); - deviceTemperatures.rw2 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.rw2.setValid(tempRw2.isValid()); - deviceTemperatures.rw2 = tempRw2; + + { + lp_var_t tempMgt = lp_var_t(objects::IMTQ_HANDLER, IMTQ::MCU_TEMPERATURE); + PoolReadGuard pg(&tempMgt, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read MGT temperature" << std::endl; + deviceTemperatures.mgt.setValid(false); + deviceTemperatures.mgt = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.mgt.setValid(tempMgt.isValid()); + deviceTemperatures.mgt = tempMgt; + } } - result = tempRw2.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_vec_t tempAcu = + lp_vec_t(objects::ACU_HANDLER, ACU::pool::ACU_TEMPERATURES); + PoolReadGuard pg(&tempAcu, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read ACU temperatures" << std::endl; + deviceTemperatures.acu.setValid(false); + deviceTemperatures.acu[0] = static_cast(INVALID_TEMPERATURE); + deviceTemperatures.acu[1] = static_cast(INVALID_TEMPERATURE); + deviceTemperatures.acu[2] = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.acu.setValid(tempAcu.isValid()); + deviceTemperatures.acu = tempAcu; + } } - lp_var_t tempRw3 = lp_var_t(objects::RW3, RwDefinitions::TEMPERATURE_C); - result = tempRw3.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read reaction wheel 3 temperature" << std::endl; - deviceTemperatures.rw3.setValid(false); - deviceTemperatures.rw3 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.rw3.setValid(tempRw3.isValid()); - deviceTemperatures.rw3 = tempRw3; + + { + lp_var_t tempPdu1 = lp_var_t(objects::PDU1_HANDLER, PDU::pool::PDU_TEMPERATURE); + PoolReadGuard pg(&tempPdu1, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read PDU1 temperature" << std::endl; + deviceTemperatures.pdu1.setValid(false); + deviceTemperatures.pdu1 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.pdu1.setValid(tempPdu1.isValid()); + deviceTemperatures.pdu1 = tempPdu1; + } } - result = tempRw3.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempPdu2 = lp_var_t(objects::PDU2_HANDLER, PDU::pool::PDU_TEMPERATURE); + PoolReadGuard pg(&tempPdu2, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read PDU2 temperature" << std::endl; + deviceTemperatures.pdu2.setValid(false); + deviceTemperatures.pdu2 = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.pdu2.setValid(tempPdu2.isValid()); + deviceTemperatures.pdu2 = tempPdu2; + } } - lp_var_t tempRw4 = lp_var_t(objects::RW4, RwDefinitions::TEMPERATURE_C); - result = tempRw4.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read reaction wheel 4 temperature" << std::endl; - deviceTemperatures.rw4.setValid(false); - deviceTemperatures.rw4 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.rw4.setValid(tempRw4.isValid()); - deviceTemperatures.rw4 = tempRw4; + + { + lp_var_t temp1P60dock = + lp_var_t(objects::P60DOCK_HANDLER, P60Dock::pool::P60DOCK_TEMPERATURE_1); + PoolReadGuard pg(&temp1P60dock, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read P60 dock temperature 1" << std::endl; + deviceTemperatures.temp1P60dock.setValid(false); + deviceTemperatures.temp1P60dock = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.temp1P60dock.setValid(temp1P60dock.isValid()); + deviceTemperatures.temp1P60dock = temp1P60dock; + } } - result = tempRw4.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t temp2P60dock = + lp_var_t(objects::P60DOCK_HANDLER, P60Dock::pool::P60DOCK_TEMPERATURE_2); + PoolReadGuard pg(&temp2P60dock, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read P60 dock temperature 2" << std::endl; + deviceTemperatures.temp2P60dock.setValid(false); + deviceTemperatures.temp2P60dock = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.temp2P60dock.setValid(temp2P60dock.isValid()); + deviceTemperatures.temp2P60dock = temp2P60dock; + } } - lp_var_t tempStartracker = - lp_var_t(objects::STAR_TRACKER, startracker::MCU_TEMPERATURE); - result = tempStartracker.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read startracker temperature" << std::endl; - deviceTemperatures.startracker.setValid(false); - deviceTemperatures.startracker = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.startracker.setValid(tempStartracker.isValid()); - deviceTemperatures.startracker = tempStartracker; + + { + lp_var_t tempGyro0 = lp_var_t(objects::GYRO_0_ADIS_HANDLER, ADIS1650X::TEMPERATURE); + PoolReadGuard pg(&tempGyro0, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read gyro 0 temperature" << std::endl; + deviceTemperatures.gyro0SideA.setValid(false); + deviceTemperatures.gyro0SideA = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.gyro0SideA.setValid(tempGyro0.isValid()); + deviceTemperatures.gyro0SideA = tempGyro0; + } } - result = tempStartracker.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempGyro1 = lp_var_t(objects::GYRO_1_L3G_HANDLER, L3GD20H::TEMPERATURE); + PoolReadGuard pg(&tempGyro1, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read gyro 1 temperature" << std::endl; + deviceTemperatures.gyro1SideA.setValid(false); + deviceTemperatures.gyro1SideA = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.gyro1SideA.setValid(tempGyro1.isValid()); + deviceTemperatures.gyro1SideA = tempGyro1; + } } - lp_var_t tempSyrlinksPowerAmplifier = - lp_var_t(objects::SYRLINKS_HK_HANDLER, syrlinks::TEMP_POWER_AMPLIFIER); - result = tempSyrlinksPowerAmplifier.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read syrlinks power amplifier temperature" - << std::endl; - deviceTemperatures.syrlinksPowerAmplifier.setValid(false); - deviceTemperatures.syrlinksPowerAmplifier = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.syrlinksPowerAmplifier.setValid(tempSyrlinksPowerAmplifier.isValid()); - deviceTemperatures.syrlinksPowerAmplifier = tempSyrlinksPowerAmplifier; + + { + lp_var_t tempGyro2 = lp_var_t(objects::GYRO_2_ADIS_HANDLER, ADIS1650X::TEMPERATURE); + PoolReadGuard pg(&tempGyro2, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read gyro 2 temperature" << std::endl; + deviceTemperatures.gyro2SideB.setValid(false); + deviceTemperatures.gyro2SideB = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.gyro2SideB.setValid(tempGyro2.isValid()); + deviceTemperatures.gyro2SideB = tempGyro2; + } } - result = tempSyrlinksPowerAmplifier.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempGyro3 = lp_var_t(objects::GYRO_3_L3G_HANDLER, L3GD20H::TEMPERATURE); + PoolReadGuard pg(&tempGyro3, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read gyro 3 temperature" << std::endl; + deviceTemperatures.gyro3SideB.setValid(false); + deviceTemperatures.gyro3SideB = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.gyro3SideB.setValid(tempGyro3.isValid()); + deviceTemperatures.gyro3SideB = tempGyro3; + } } - lp_var_t tempSyrlinksBasebandBoard = - lp_var_t(objects::SYRLINKS_HK_HANDLER, syrlinks::TEMP_BASEBAND_BOARD); - result = tempSyrlinksBasebandBoard.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read syrlinks baseband board temperature" - << std::endl; - deviceTemperatures.syrlinksBasebandBoard.setValid(false); - deviceTemperatures.syrlinksBasebandBoard = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.syrlinksBasebandBoard.setValid(tempSyrlinksBasebandBoard.isValid()); - deviceTemperatures.syrlinksBasebandBoard = tempSyrlinksBasebandBoard; + + { + lp_var_t tempMgm0 = + lp_var_t(objects::MGM_0_LIS3_HANDLER, MGMLIS3MDL::TEMPERATURE_CELCIUS); + PoolReadGuard pg(&tempMgm0, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read MGM 0 temperature" << std::endl; + deviceTemperatures.mgm0SideA.setValid(false); + deviceTemperatures.mgm0SideA = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.mgm0SideA.setValid(tempMgm0.isValid()); + deviceTemperatures.mgm0SideA = tempMgm0; + } } - result = tempSyrlinksBasebandBoard.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempMgm2 = + lp_var_t(objects::MGM_2_LIS3_HANDLER, MGMLIS3MDL::TEMPERATURE_CELCIUS); + PoolReadGuard pg(&tempMgm2, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read MGM 2 temperature" << std::endl; + deviceTemperatures.mgm2SideB.setValid(false); + deviceTemperatures.mgm2SideB = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.mgm2SideB.setValid(tempMgm2.isValid()); + deviceTemperatures.mgm2SideB = tempMgm2; + } } - lp_var_t tempMgt = lp_var_t(objects::IMTQ_HANDLER, IMTQ::MCU_TEMPERATURE); - result = tempMgt.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read MGT temperature" << std::endl; - deviceTemperatures.mgt.setValid(false); - deviceTemperatures.mgt = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.mgt.setValid(tempMgt.isValid()); - deviceTemperatures.mgt = tempMgt; - } - result = tempMgt.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_vec_t tempAcu = - lp_vec_t(objects::ACU_HANDLER, ACU::pool::ACU_TEMPERATURES); - result = tempAcu.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read ACU temperatures" << std::endl; - deviceTemperatures.acu.setValid(false); - deviceTemperatures.acu[0] = static_cast(INVALID_TEMPERATURE); - deviceTemperatures.acu[1] = static_cast(INVALID_TEMPERATURE); - deviceTemperatures.acu[2] = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.acu.setValid(tempAcu.isValid()); - deviceTemperatures.acu = tempAcu; - } - result = tempAcu.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempPdu1 = lp_var_t(objects::PDU1_HANDLER, PDU::pool::PDU_TEMPERATURE); - result = tempPdu1.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read PDU1 temperature" << std::endl; - deviceTemperatures.pdu1.setValid(false); - deviceTemperatures.pdu1 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.pdu1.setValid(tempPdu1.isValid()); - deviceTemperatures.pdu1 = tempPdu1; - } - result = tempPdu1.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempPdu2 = lp_var_t(objects::PDU2_HANDLER, PDU::pool::PDU_TEMPERATURE); - result = tempPdu2.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read PDU2 temperature" << std::endl; - deviceTemperatures.pdu2.setValid(false); - deviceTemperatures.pdu2 = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.pdu2.setValid(tempPdu1.isValid()); - deviceTemperatures.pdu2 = tempPdu1; - } - result = tempPdu2.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t temp1P60dock = - lp_var_t(objects::P60DOCK_HANDLER, P60Dock::pool::P60DOCK_TEMPERATURE_1); - result = temp1P60dock.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read P60 dock temperature 1" << std::endl; - deviceTemperatures.temp1P60dock.setValid(false); - deviceTemperatures.temp1P60dock = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.temp1P60dock.setValid(temp1P60dock.isValid()); - deviceTemperatures.temp1P60dock = temp1P60dock; - } - result = temp1P60dock.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t temp2P60dock = - lp_var_t(objects::P60DOCK_HANDLER, P60Dock::pool::P60DOCK_TEMPERATURE_2); - result = temp2P60dock.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read P60 dock temperature 2" << std::endl; - deviceTemperatures.temp2P60dock.setValid(false); - deviceTemperatures.temp2P60dock = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.temp2P60dock.setValid(temp2P60dock.isValid()); - deviceTemperatures.temp2P60dock = temp2P60dock; - } - result = temp2P60dock.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempGyro0 = lp_var_t(objects::GYRO_0_ADIS_HANDLER, ADIS1650X::TEMPERATURE); - result = tempGyro0.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read gyro 0 temperature" << std::endl; - deviceTemperatures.gyro0SideA.setValid(false); - deviceTemperatures.gyro0SideA = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.gyro0SideA.setValid(tempGyro0.isValid()); - deviceTemperatures.gyro0SideA = tempGyro0; - } - result = tempGyro0.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempGyro1 = lp_var_t(objects::GYRO_1_L3G_HANDLER, L3GD20H::TEMPERATURE); - result = tempGyro1.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read gyro 1 temperature" << std::endl; - deviceTemperatures.gyro1SideA.setValid(false); - deviceTemperatures.gyro1SideA = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.gyro1SideA.setValid(tempGyro1.isValid()); - deviceTemperatures.gyro1SideA = tempGyro1; - } - result = tempGyro1.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempGyro2 = lp_var_t(objects::GYRO_2_ADIS_HANDLER, ADIS1650X::TEMPERATURE); - result = tempGyro2.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read gyro 2 temperature" << std::endl; - deviceTemperatures.gyro2SideB.setValid(false); - deviceTemperatures.gyro2SideB = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.gyro2SideB.setValid(tempGyro2.isValid()); - deviceTemperatures.gyro2SideB = tempGyro2; - } - result = tempGyro2.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempGyro3 = lp_var_t(objects::GYRO_3_L3G_HANDLER, L3GD20H::TEMPERATURE); - result = tempGyro3.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read gyro 3 temperature" << std::endl; - deviceTemperatures.gyro3SideB.setValid(false); - deviceTemperatures.gyro3SideB = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.gyro3SideB.setValid(tempGyro3.isValid()); - deviceTemperatures.gyro3SideB = tempGyro3; - } - result = tempGyro3.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempMgm0 = - lp_var_t(objects::MGM_0_LIS3_HANDLER, MGMLIS3MDL::TEMPERATURE_CELCIUS); - result = tempMgm0.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read MGM 0 temperature" << std::endl; - deviceTemperatures.mgm0SideA.setValid(false); - deviceTemperatures.mgm0SideA = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.mgm0SideA.setValid(tempMgm0.isValid()); - deviceTemperatures.mgm0SideA = tempMgm0; - } - result = tempMgm0.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempMgm2 = - lp_var_t(objects::MGM_2_LIS3_HANDLER, MGMLIS3MDL::TEMPERATURE_CELCIUS); - result = tempMgm2.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read MGM 2 temperature" << std::endl; - deviceTemperatures.mgm2SideB.setValid(false); - deviceTemperatures.mgm2SideB = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.mgm2SideB.setValid(tempMgm2.isValid()); - deviceTemperatures.mgm2SideB = tempMgm2; - } - result = tempMgm2.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; - } - lp_var_t tempAdcPayloadPcdu = lp_var_t(objects::PLPCDU_HANDLER, plpcdu::TEMP); - result = tempAdcPayloadPcdu.read(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to read payload PCDU ADC temperature" << std::endl; - deviceTemperatures.adcPayloadPcdu.setValid(false); - deviceTemperatures.adcPayloadPcdu = static_cast(INVALID_TEMPERATURE); - } else { - deviceTemperatures.adcPayloadPcdu.setValid(tempAdcPayloadPcdu.isValid()); - deviceTemperatures.adcPayloadPcdu = tempAdcPayloadPcdu; - } - result = tempAdcPayloadPcdu.commit(); - if (result != returnvalue::OK) { - sif::warning << "ThermalController: Failed to commit" << std::endl; + + { + lp_var_t tempAdcPayloadPcdu = lp_var_t(objects::PLPCDU_HANDLER, plpcdu::TEMP); + PoolReadGuard pg(&tempAdcPayloadPcdu, MutexIF::TimeoutType::WAITING, MUTEX_TIMEOUT); + if (pg.getReadResult() != returnvalue::OK) { + sif::warning << "ThermalController: Failed to read payload PCDU ADC temperature" << std::endl; + deviceTemperatures.adcPayloadPcdu.setValid(false); + deviceTemperatures.adcPayloadPcdu = static_cast(INVALID_TEMPERATURE); + } else { + deviceTemperatures.adcPayloadPcdu.setValid(tempAdcPayloadPcdu.isValid()); + deviceTemperatures.adcPayloadPcdu = tempAdcPayloadPcdu; + } } } diff --git a/tmtc b/tmtc index 88302ef7..f62c67a1 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 88302ef7eb9581b8c280ab3c350c24b957a39565 +Subproject commit f62c67a11e54b99fdb60dab13e55456f16450951