Files
smart-oil-heating-control-s…/main/inputs.h
2026-01-10 12:50:06 +01:00

60 lines
1.3 KiB
C

#pragma once
#include "sdkconfig.h"
#include <stddef.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define INITIALISATION_VALUE 0.0f
#define AVG10S_SAMPLE_SIZE 10U
#define AVG60S_SAMPLE_SIZE 60U
#define AVG24H_SAMPLE_SIZE 24U
#define PRED60S_SAMPLE_SIZE 60U
#define DAMPING_FACTOR_WARMER (CONFIG_DAMPING_FACTOR_WARMER * 0.00001f)
#define DAMPING_FACTOR_COLDER (CONFIG_DAMPING_FACTOR_COLDER * 0.00001f)
typedef enum _BurnerErrorState
{
NO_ERROR,
FAULT
} eBurnerErrorState;
typedef enum _MeasurementErrorState
{
MEASUREMENT_NO_ERROR,
MEASUREMENT_FAULT
} eMeasurementErrorState;
typedef struct _Average
{
float fValue;
float samples[MAX(AVG10S_SAMPLE_SIZE, MAX(AVG60S_SAMPLE_SIZE, AVG24H_SAMPLE_SIZE))];
size_t bufferIndex;
size_t bufferCount;
} sAverage;
typedef struct _Predict
{
float fValue;
float samples[PRED60S_SAMPLE_SIZE];
size_t bufferIndex;
size_t bufferCount;
} sPredict;
typedef struct _Measurement
{
float fCurrentValue;
float fDampedValue;
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);