#ifndef THERMALCOMPONENT_H_ #define THERMALCOMPONENT_H_ #include "CoreComponent.h" class ThermalComponent: public CoreComponent { public: struct Parameters { float lowerNopLimit; float lowerOpLimit; float upperOpLimit; float upperNopLimit; float heaterOn; float hysteresis; float heaterSwitchoff; }; struct NopParameters { float lowerNopLimit; float upperNopLimit; }; ThermalComponent(object_id_t reportingObjectId, uint8_t domainId, uint32_t temperaturePoolId, uint32_t targetStatePoolId, uint32_t currentStatePoolId, uint32_t requestPoolId, DataSet *dataSet, AbstractTemperatureSensor *sensor, AbstractTemperatureSensor *firstRedundantSensor, AbstractTemperatureSensor *secondRedundantSensor, ThermalModuleIF *thermalModule, Parameters parameters, Priority priority); virtual ~ThermalComponent(); ReturnValue_t setTargetState(int8_t newState); virtual ReturnValue_t setLimits( const uint8_t* data, uint32_t size); virtual ReturnValue_t getParameter(uint8_t domainId, uint16_t parameterId, ParameterWrapper *parameterWrapper, const ParameterWrapper *newValues, uint16_t startAtIndex); protected: NopParameters nopParameters; State getState(float temperature, CoreComponent::Parameters parameters, int8_t targetState); virtual void checkLimits(State state); virtual HeaterRequest getHeaterRequest(int8_t targetState, float temperature, CoreComponent::Parameters parameters); State getIgnoredState(int8_t state); }; #endif /* THERMALCOMPONENT_H_ */