smart-oil-heating-control-s.../main/safety.h
2024-12-21 22:02:16 +01:00

43 lines
998 B
C

#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);