testArduino/mission/Controller/ArduinoTCSTemperatureSensor...

57 lines
1.9 KiB
C++

/*
HELP
*/
#include <mission/Controller/ArduinoTCSTemperatureSensor.h>
#include <fsfw/ipc/QueueFactory.h>
ArduinoTCSTemperatureSensor::ArduinoTCSTemperatureSensor(object_id_t setObjectid,
float *inputTemperature, PoolVariableIF *poolVariable,
uint8_t vectorIndex, Parameters parameters, uint32_t datapoolId,
DataSet *outputSet, ThermalModuleIF *thermalModule) :
AbstractTemperatureSensor(setObjectid, thermalModule), parameters(parameters),
inputTemperature(*inputTemperature), poolVariable(poolVariable),
outputValidity(datapoolId, outputSet, PoolVariableIF::VAR_READ_WRITE)
/*DataPool::poolIdAndPositionToPid(poolVariable->getDataPoolId(), vectorIndex)*/
/*outputTemperature(datapoolId, outputSet, PoolVariableIF::VAR_WRITE)*/ {
}
ArduinoTCSTemperatureSensor::~ArduinoTCSTemperatureSensor() {}
void ArduinoTCSTemperatureSensor::setInvalid() {
inputTemperature = INVALID_TEMPERATURE;
outputValidity.setValid(false);
}
void ArduinoTCSTemperatureSensor::doChildOperation() {
getTemperature();
// Loop with isValid doesn't work
/*if (!poolVariable->isValid() || !healthHelper.healthTable->isHealthy(getObjectId())) {
setInvalid();
return;
}*/
if (inputTemperature<parameters.lowerLimit || inputTemperature>parameters.upperLimit){
outputValidity.setValid(PoolVariableIF::INVALID);
inputTemperature = INVALID_TEMPERATURE;
} else {
outputValidity.setValid(PoolVariableIF::VALID);
}
}
float ArduinoTCSTemperatureSensor::getTemperature() {
return inputTemperature;
}
bool ArduinoTCSTemperatureSensor::isValid() {
// To modify?
return outputValidity.isValid();
}
void ArduinoTCSTemperatureSensor::resetOldState() {}
ReturnValue_t ArduinoTCSTemperatureSensor::getParameter(uint8_t domainId, uint16_t parameterId,
ParameterWrapper *parameterWrapper,
const ParameterWrapper *newValues, uint16_t startAtIndex){
return HasReturnvaluesIF::RETURN_OK;
}