71 lines
2.0 KiB
C
71 lines
2.0 KiB
C
#pragma once
|
|
|
|
#include "sdkconfig.h"
|
|
|
|
#include <time.h>
|
|
|
|
#define MAX_TEMPERATURE_ENTRIES_PER_DAY 24U
|
|
|
|
#define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_DAY (CONFIG_TEMP_RETURN_FLOW_LOWER_LIMIT_DAY / 10.0f)
|
|
#define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_NIGHT (CONFIG_TEMP_RETURN_FLOW_LOWER_LIMIT_NIGHT / 10.0f)
|
|
#define CHAMBER_TEMPERATURE_TARGET (CONFIG_TEMP_CHAMBER_TARGET / 10.0f)
|
|
#define CHAMBER_TEMPERATURE_THRESHOLD (CONFIG_TEMP_CHAMBER_THRESHOLD / 10.0f)
|
|
#define SUMMER_MODE_TEMPERATURE_THRESHOLD_HIGH (CONFIG_TEMP_SUMMER_MODE_HIGH / 10.0f)
|
|
#define SUMMER_MODE_TEMPERATURE_THRESHOLD_LOW (CONFIG_TEMP_SUMMER_MODE_LOW / 10.0f)
|
|
#define CIRCULATION_PUMP_TEMPERATURE_THRESHOLD (CONFIG_TEMP_CIRCULATION_PUMP_THRESHOLD / 10.0f)
|
|
#define BURNER_FAULT_DETECTION_THRESHOLD CONFIG_BURNER_FAULT_DETECTION_SECONDS
|
|
|
|
typedef enum _ControlState
|
|
{
|
|
CONTROL_STARTING,
|
|
CONTROL_HEATING,
|
|
CONTROL_OUTDOOR_TOO_WARM,
|
|
CONTROL_RETURN_FLOW_TOO_WARM,
|
|
CONTROL_FAULT_BURNER,
|
|
CONTROL_FAULT_SAFETY,
|
|
CONTROL_FAULT_SNTP,
|
|
} eControlState;
|
|
|
|
typedef enum _BurnerState
|
|
{
|
|
BURNER_UNKNOWN, // Burner is disabled or state after enabling is still unkown
|
|
BURNER_FIRED, // Burner fired successfully
|
|
BURNER_FAULT // Burner was unable to fire successfully
|
|
} eBurnerState;
|
|
|
|
typedef enum _ControlWeekday
|
|
{
|
|
MONDAY,
|
|
TUESDAY,
|
|
WEDNESDAY,
|
|
THURSDAY,
|
|
FRIDAY,
|
|
SATURDAY,
|
|
SUNDAY,
|
|
} eControlWeekday;
|
|
|
|
typedef struct _ControlTimestamp
|
|
{
|
|
uint8_t hour;
|
|
uint8_t minute;
|
|
} sControlTimestamp;
|
|
|
|
typedef struct _ControlTemperatureEntry
|
|
{
|
|
sControlTimestamp timestamp;
|
|
float fReturnFlowTemperature;
|
|
float fChamberTemperature;
|
|
} sControlTemperatureEntry;
|
|
|
|
typedef struct _ControlDay
|
|
{
|
|
eControlWeekday day;
|
|
size_t entryCount; // number of entries for each day
|
|
sControlTemperatureEntry aTemperatureEntries[MAX_TEMPERATURE_ENTRIES_PER_DAY];
|
|
} sControlDay;
|
|
|
|
void initControl(void);
|
|
eControlState getControlState(void);
|
|
eControlWeekday getControlCurrentWeekday(void);
|
|
sControlTemperatureEntry getControlCurrentTemperatureEntry(void);
|