#pragma once #include "outputs.h" #include "inputs.h" #include "sdkconfig.h" #include #define MAX_ERROR_STRING_SIZE 64U #define NUMBER_OF_SENSOR_SANITY_CHECKS 4U #define SENSOR_LIMIT_CHAMBER_MAX (CONFIG_SENSOR_LIMIT_CHAMBER_MAX / 10.0f) #define SENSOR_LIMIT_CHAMBER_MIN (CONFIG_SENSOR_LIMIT_CHAMBER_MIN / 10.0f) #define SENSOR_LIMIT_OUTDOOR_MAX (CONFIG_SENSOR_LIMIT_OUTDOOR_MAX / 10.0f) #define SENSOR_LIMIT_OUTDOOR_MIN (CONFIG_SENSOR_LIMIT_OUTDOOR_MIN / 10.0f) #define SENSOR_LIMIT_INLET_MAX (CONFIG_SENSOR_LIMIT_INLET_MAX / 10.0f) #define SENSOR_LIMIT_INLET_MIN (CONFIG_SENSOR_LIMIT_INLET_MIN / 10.0f) #define SENSOR_LIMIT_RETURN_MAX (CONFIG_SENSOR_LIMIT_RETURN_MAX / 10.0f) #define SENSOR_LIMIT_RETURN_MIN (CONFIG_SENSOR_LIMIT_RETURN_MIN / 10.0f) typedef enum _SensorErrorState { SENSOR_NO_ERROR, SENSOR_TOO_HIGH, SENSOR_TOO_LOW, SENSOR_UNCHANGED, SENSOR_NOT_FOUND } eSensorErrorState; typedef enum _SafetyState { SAFETY_NO_ERROR, SAFETY_SENSOR_ERROR, SAFETY_INTERNAL_ERROR } eSafetyState; typedef sMeasurement (*GetSensorValue)(); typedef struct _TemperatureSensorLimit { float max; // Maximum temperature limit float min; // Minimum temperature limit } sTemperatureSensorLimit; typedef struct _SensorSanityCheck { eSensorErrorState state; char name[MAX_ERROR_STRING_SIZE]; sTemperatureSensorLimit sSensorLimit; float fSensorTemperatureLast; uint32_t uUnchangedCounter; GetSensorValue getSensor; } sSensorSanityCheck; void initSafety(void); void getSensorSanityStates(sSensorSanityCheck *pSensorSanityChecks); eSafetyState getSafetyState(void);