43 lines
998 B
C
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); |