#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_ */