96 lines
2.4 KiB
C
96 lines
2.4 KiB
C
|
#ifndef MISSION_CONTROLLERS_TCS_CORECOMPONENT_H_
|
||
|
#define MISSION_CONTROLLERS_TCS_CORECOMPONENT_H_
|
||
|
|
||
|
#include "../datapool/DataSet.h"
|
||
|
#include "../datapool/PoolVariable.h"
|
||
|
#include "ThermalComponentIF.h"
|
||
|
#include "AbstractTemperatureSensor.h"
|
||
|
#include "ThermalModule.h"
|
||
|
#include "ThermalMonitor.h"
|
||
|
|
||
|
class CoreComponent: public ThermalComponentIF {
|
||
|
public:
|
||
|
struct Parameters {
|
||
|
float lowerOpLimit;
|
||
|
float upperOpLimit;
|
||
|
float heaterOn;
|
||
|
float hysteresis;
|
||
|
float heaterSwitchoff;
|
||
|
};
|
||
|
|
||
|
static const uint16_t COMPONENT_TEMP_CONFIRMATION = 5;
|
||
|
|
||
|
CoreComponent(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, StateRequest initialTargetState =
|
||
|
ThermalComponentIF::STATE_REQUEST_OPERATIONAL);
|
||
|
|
||
|
virtual ~CoreComponent();
|
||
|
|
||
|
virtual HeaterRequest performOperation(uint8_t opCode);
|
||
|
|
||
|
void markStateIgnored();
|
||
|
|
||
|
object_id_t getObjectId();
|
||
|
|
||
|
uint8_t getDomainId() const;
|
||
|
|
||
|
virtual float getLowerOpLimit();
|
||
|
|
||
|
ReturnValue_t setTargetState(int8_t newState);
|
||
|
|
||
|
virtual void setOutputInvalid();
|
||
|
|
||
|
virtual ReturnValue_t getParameter(uint8_t domainId, uint16_t parameterId,
|
||
|
ParameterWrapper *parameterWrapper,
|
||
|
const ParameterWrapper *newValues, uint16_t startAtIndex);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
AbstractTemperatureSensor *sensor;
|
||
|
AbstractTemperatureSensor *firstRedundantSensor;
|
||
|
AbstractTemperatureSensor *secondRedundantSensor;
|
||
|
ThermalModuleIF *thermalModule;
|
||
|
|
||
|
db_float_t temperature;
|
||
|
db_int8_t targetState;
|
||
|
db_int8_t currentState;
|
||
|
db_uint8_t heaterRequest;
|
||
|
|
||
|
bool isHeating;
|
||
|
|
||
|
bool isSafeComponent;
|
||
|
|
||
|
float minTemp;
|
||
|
|
||
|
float maxTemp;
|
||
|
|
||
|
Parameters parameters;
|
||
|
|
||
|
ThermalMonitor temperatureMonitor;
|
||
|
|
||
|
const uint8_t domainId;
|
||
|
|
||
|
virtual float getTemperature();
|
||
|
virtual State getState(float temperature, Parameters parameters,
|
||
|
int8_t targetState);
|
||
|
|
||
|
virtual void checkLimits(State state);
|
||
|
|
||
|
virtual HeaterRequest getHeaterRequest(int8_t targetState,
|
||
|
float temperature, Parameters parameters);
|
||
|
|
||
|
virtual State getIgnoredState(int8_t state);
|
||
|
|
||
|
void updateMinMaxTemp();
|
||
|
|
||
|
virtual Parameters getParameters();
|
||
|
};
|
||
|
|
||
|
#endif /* MISSION_CONTROLLERS_TCS_CORECOMPONENT_H_ */
|