safety state and input error detection

This commit is contained in:
2024-12-13 19:26:16 +01:00
parent a7f6973efd
commit 8205253b5a
6 changed files with 236 additions and 196 deletions

View File

@ -1,21 +1,40 @@
#pragma once
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define AVG10_SAMPLE_SIZE 10U
#define AVG60_SAMPLE_SIZE 60U
typedef enum _BurnerErrorState
{
NO_ERROR,
FAULT
} eBurnerErrorState;
typedef enum _MeasurementMode
typedef enum _MeasurementErrorState
{
CURRENT,
AVERAGE_10S,
AVERAGE_60S
} eMeasurementMode;
MEASUREMENT_NO_ERROR,
MEASUREMENT_FAULT
} eMeasurementErrorState;
typedef struct _Average
{
float fValue;
float samples[MAX(AVG10_SAMPLE_SIZE, AVG60_SAMPLE_SIZE)];
size_t bufferIndex;
size_t bufferCount;
} sAverage;
typedef struct _Measurement
{
float fCurrentValue;
sAverage average10s;
sAverage average60s;
eMeasurementErrorState state;
} sMeasurement;
void initInputs(void);
float getChamberTemperature(eMeasurementMode mode);
float getOutdoorTemperature(eMeasurementMode mode);
float getInletFlowTemperature(eMeasurementMode mode);
float getReturnFlowTemperature(eMeasurementMode mode);
sMeasurement getChamberTemperature(void);
sMeasurement getOutdoorTemperature(void);
sMeasurement getInletFlowTemperature(void);
sMeasurement getReturnFlowTemperature(void);
eBurnerErrorState getBurnerError(void);