Thermal controller and temperature bugfixes #266
@ -183,6 +183,7 @@ void initmission::initTasks() {
|
|||||||
objects::RTD_15_IC18_IMTQ,
|
objects::RTD_15_IC18_IMTQ,
|
||||||
};
|
};
|
||||||
tcsTask->addComponent(objects::TCS_BOARD_ASS);
|
tcsTask->addComponent(objects::TCS_BOARD_ASS);
|
||||||
|
tcsTask->addComponent(objects::THERMAL_CONTROLLER);
|
||||||
for (const auto& rtd : rtdIds) {
|
for (const auto& rtd : rtdIds) {
|
||||||
tcsTask->addComponent(rtd, DeviceHandlerIF::PERFORM_OPERATION);
|
tcsTask->addComponent(rtd, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
tcsTask->addComponent(rtd, DeviceHandlerIF::SEND_WRITE);
|
tcsTask->addComponent(rtd, DeviceHandlerIF::SEND_WRITE);
|
||||||
@ -228,13 +229,6 @@ void initmission::initTasks() {
|
|||||||
}
|
}
|
||||||
#endif /* OBSW_ADD_PLOC_SUPERVISOR */
|
#endif /* OBSW_ADD_PLOC_SUPERVISOR */
|
||||||
|
|
||||||
PeriodicTaskIF* thermalControllerTask = factory->createPeriodicTask(
|
|
||||||
"THERMAL_CTL_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
|
|
||||||
result = thermalControllerTask->addComponent(objects::THERMAL_CONTROLLER);
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
initmission::printAddObjectError("THERMAL_CONTROLLER", objects::THERMAL_CONTROLLER);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if OBSW_TEST_CCSDS_BRIDGE == 1
|
#if OBSW_TEST_CCSDS_BRIDGE == 1
|
||||||
PeriodicTaskIF* ptmeTestTask = factory->createPeriodicTask(
|
PeriodicTaskIF* ptmeTestTask = factory->createPeriodicTask(
|
||||||
"PTME_TEST", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
"PTME_TEST", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
||||||
@ -305,7 +299,6 @@ void initmission::initTasks() {
|
|||||||
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
supvHelperTask->startTask();
|
supvHelperTask->startTask();
|
||||||
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
|
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
|
||||||
thermalControllerTask->startTask();
|
|
||||||
sif::info << "Tasks started.." << std::endl;
|
sif::info << "Tasks started.." << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,17 @@ enum PoolIds : lp_id_t {
|
|||||||
SUS_5_N_LOC_XFYMZB_PT_ZB,
|
SUS_5_N_LOC_XFYMZB_PT_ZB,
|
||||||
SUS_11_R_LOC_XBYMZB_PT_ZB,
|
SUS_11_R_LOC_XBYMZB_PT_ZB,
|
||||||
|
|
||||||
COMPONENT_RW
|
COMPONENT_RW,
|
||||||
|
|
||||||
|
TEMP_Q7S,
|
||||||
|
TEMP_BATTERY,
|
||||||
|
TEMP_RW0,
|
||||||
|
TEMP_RW1,
|
||||||
|
TEMP_RW2,
|
||||||
|
TEMP_RW3,
|
||||||
|
TEMP_STAR_TRACKER,
|
||||||
|
TEMP_SYRLINKS_POWER_AMPLIFIER,
|
||||||
|
TEMP_SYRLINKS_BASEBAND_BOARD
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -95,6 +105,9 @@ class DeviceTemperatures : public StaticLocalDataSet<1> {
|
|||||||
|
|
||||||
DeviceTemperatures(object_id_t objectId)
|
DeviceTemperatures(object_id_t objectId)
|
||||||
: StaticLocalDataSet(sid_t(objectId, DEVICE_TEMPERATURES)) {}
|
: StaticLocalDataSet(sid_t(objectId, DEVICE_TEMPERATURES)) {}
|
||||||
|
|
||||||
|
lp_var_t<float> q7s =
|
||||||
|
lp_var_t<float>(sid.objectId, PoolIds::SUS_0_N_LOC_XFYFZM_PT_XF, this);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "Max31865EiveHandler.h"
|
#include "Max31865EiveHandler.h"
|
||||||
|
|
||||||
|
#include <fsfw/datapool/PoolReadGuard.h>
|
||||||
|
|
||||||
Max31865EiveHandler::Max31865EiveHandler(object_id_t objectId, object_id_t comIF,
|
Max31865EiveHandler::Max31865EiveHandler(object_id_t objectId, object_id_t comIF,
|
||||||
CookieIF* comCookie)
|
CookieIF* comCookie)
|
||||||
: DeviceHandlerBase(objectId, comIF, comCookie, nullptr),
|
: DeviceHandlerBase(objectId, comIF, comCookie, nullptr),
|
||||||
@ -154,6 +156,15 @@ ReturnValue_t Max31865EiveHandler::interpretDeviceReply(DeviceCommandId_t id,
|
|||||||
// calculate approximation
|
// calculate approximation
|
||||||
float approxTemp = exchangeStruct.adcCode / 32.0 - 256.0;
|
float approxTemp = exchangeStruct.adcCode / 32.0 - 256.0;
|
||||||
|
|
||||||
|
PoolReadGuard pg(&sensorDataset);
|
||||||
|
if (pg.getReadResult() != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::warning << "Max31865EiveHandler: Failed to read sensor dataset" << std::endl;
|
||||||
|
sensorDataset.temperatureCelcius.setValid(false);
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
sensorDataset.temperatureCelcius = approxTemp;
|
||||||
|
sensorDataset.temperatureCelcius.setValid(true);
|
||||||
|
|
||||||
if (debugMode) {
|
if (debugMode) {
|
||||||
if (debugDivider.checkAndIncrement()) {
|
if (debugDivider.checkAndIncrement()) {
|
||||||
sif::info << "Max31865: " << std::setw(20) << std::left << locString << std::right
|
sif::info << "Max31865: " << std::setw(20) << std::left << locString << std::right
|
||||||
|
@ -93,8 +93,12 @@ ReturnValue_t Tmp1075Handler::interpretDeviceReply(DeviceCommandId_t id, const u
|
|||||||
ReturnValue_t result = dataset.read();
|
ReturnValue_t result = dataset.read();
|
||||||
if (result == HasReturnvaluesIF::RETURN_OK) {
|
if (result == HasReturnvaluesIF::RETURN_OK) {
|
||||||
dataset.temperatureCelcius = tempValue;
|
dataset.temperatureCelcius = tempValue;
|
||||||
|
dataset.setValidity(true, true);
|
||||||
dataset.commit();
|
dataset.commit();
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
dataset.setValidity(false, true);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit 048a0ea447465b343c1067bd171b8b698c6e2006
|
Subproject commit cba2055c59de43c9e9572e8549e555aaab785481
|
Loading…
Reference in New Issue
Block a user