#pragma once #include "outputs.h" #include "inputs.h" #define MAX_ERROR_STRING_SIZE 64U #define NUMBER_OF_SENSOR_SANITY_CHECKS 4U 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);