#include "common.h" #ifndef CONFIG_H #define CONFIG_H 1 /*[[[cog import avrxmegastuff import conf cog.out(f"#define EEPROM_ADDR_CONFIG {conf.EEPROM_ADDR_CONFIG}\n") ]]]*/ #define EEPROM_ADDR_CONFIG ((uint8_t*)0x0000) //[[[end]]] #include <avr/eeprom.h> typedef enum mode_enum { MODE_FORCE_CLOSE = 0x01, MODE_FORCE_OPEN = 0x02, MODE_FORCE_VIDANGE = 0x03, MODE_DEBIT = 0x04, MODE_AUTO = 0x05, MODE_POST_REFROI = 0x06, } mode_t; typedef struct config_struct { uint8_t mode; uint16_t vol_cuve; uint16_t Kp; uint16_t ti; int16_t consigne_temperature; uint16_t debit_max; uint8_t cst_ev; uint16_t debit_min1; uint16_t debit_min2; uint8_t minimum_step; uint16_t volume_manque_max; uint8_t m_rattrapage; uint16_t consigne_debit; int16_t post_refroi_T1; int16_t post_refroi_T2; int16_t post_refroi_cold_water_T1; int16_t post_refroi_cold_water_T2; int16_t post_refroi_hot_water_T1; int16_t post_refroi_hot_water_T2; uint16_t post_refroi_dmax; } config_t; typedef struct cconfig_struct { mode_t mode; float Kp; float ti; float consigne_temperature; float debit_max; float cst_ev; float debit_min1; float debit_min2; uint16_t minimum_step; float debit_no_action; float volume_manque_max; float m_rattrapage; float consigne_debit; float post_refroi_T1; float post_refroi_T2; float post_refroi_cold_water_T1; float post_refroi_cold_water_T2; float post_refroi_hot_water_T1; float post_refroi_hot_water_T2; float post_refroi_dmax; } cconfig_t; void config_read(); void config_write(); void cconfig_update(config_t *, cconfig_t *); void config_init(); uint8_t config_valid(cconfig_t *); void config_default(config_t *); void config_apply_new_config(config_t *); void config_mode_change(); extern config_t config; extern cconfig_t cconfig; #endif