#pragma once #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define AVG10_SAMPLE_SIZE 10U #define AVG60_SAMPLE_SIZE 60U #define PRED60_SAMPLE_SIZE 60U typedef enum _BurnerErrorState { NO_ERROR, FAULT } eBurnerErrorState; typedef enum _MeasurementErrorState { 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 _Predict { float fValue; float samples[PRED60_SAMPLE_SIZE]; size_t bufferIndex; size_t bufferCount; } sPredict; typedef struct _Measurement { float fCurrentValue; sAverage average10s; sAverage average60s; sPredict predict60s; eMeasurementErrorState state; } sMeasurement; void initInputs(void); sMeasurement getChamberTemperature(void); sMeasurement getOutdoorTemperature(void); sMeasurement getInletFlowTemperature(void); sMeasurement getReturnFlowTemperature(void); eBurnerErrorState getBurnerError(void);