#pragma once
#include <time.h>

#define MAX_TEMPERATURE_ENTRIES_PER_DAY 24U

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 _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);