fsfw/thermal/AbstractTemperatureSensor.h

55 lines
1.5 KiB
C++

#ifndef ABSTRACTSENSOR_H_
#define ABSTRACTSENSOR_H_
#include "../health/HasHealthIF.h"
#include "../health/HealthHelper.h"
#include "../objectmanager/SystemObject.h"
#include "../tasks/ExecutableObjectIF.h"
#include "../parameters/ParameterHelper.h"
#include "../ipc/MessageQueueIF.h"
#include "ThermalModuleIF.h"
#include "tcsDefinitions.h"
class AbstractTemperatureSensor: public HasHealthIF,
public SystemObject,
public ExecutableObjectIF,
public ReceivesParameterMessagesIF {
public:
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::T_SENSORS;
static const Event TEMP_SENSOR_HIGH = MAKE_EVENT(0, SEVERITY::LOW);
static const Event TEMP_SENSOR_LOW = MAKE_EVENT(1, SEVERITY::LOW);
static const Event TEMP_SENSOR_GRADIENT = MAKE_EVENT(2, SEVERITY::LOW);
static constexpr float ZERO_KELVIN_C = -273.15;
AbstractTemperatureSensor(object_id_t setObjectid,
ThermalModuleIF *thermalModule);
virtual ~AbstractTemperatureSensor();
virtual MessageQueueId_t getCommandQueue() const;
ReturnValue_t initialize();
ReturnValue_t performHealthOp();
ReturnValue_t performOperation(uint8_t opCode);
virtual float getTemperature() = 0;
virtual bool isValid() = 0;
virtual void resetOldState() = 0;
ReturnValue_t setHealth(HealthState health);
HasHealthIF::HealthState getHealth();
protected:
MessageQueueIF* commandQueue;
HealthHelper healthHelper;
ParameterHelper parameterHelper;
virtual void doChildOperation() = 0;
void handleCommandQueue();
};
#endif /* ABSTRACTSENSOR_H_ */