#ifndef STATES_H #define STATES_H #include "stm32f0xx_hal.h" #include "config.h" typedef struct { int32_t temp; uint8_t temp_frac; uint8_t state_resume; uint8_t state; int32_t setpoint; uint8_t pid_enabled; uint8_t error_code; } therm_status_t; typedef union { struct { uint32_t boottobrew; uint32_t temp_units; uint32_t windup_guard; uint32_t k_p; uint32_t k_i; uint32_t k_d; int32_t temp_offset; uint32_t ignore_error; int32_t setpoint_brew; int32_t setpoint_steam; uint32_t control_mode; uint32_t plant_type; uint32_t hysteresis; } val; uint16_t data[128]; } therm_settings_t; enum tempunits { TEMP_UNITS_CELSIUS = 0, TEMP_UNITS_FAHRENHEIT, }; enum state { STATE_IDLE = 0, STATE_SETMODE, STATE_SETPLANTTYPE, STATE_SETHYSTERESIS, STATE_SETP, STATE_SETI, STATE_SETD, STATE_SETSTEPS, STATE_SETWINDUP, STATE_SETBOOTTOBREW, STATE_SETUNITS, STATE_SETTEMPOFFSET, STATE_PREHEAT, STATE_MAINTAIN, STATE_TC_ERROR, STATE_RESET, }; enum control_mode { MODE_PID = 0, MODE_THERMOSTAT, }; enum plant_type { PLANT_HEATER = 0, PLANT_COOLER, }; enum GOTO_MODE { #ifdef BOOTLOADER_SHORTCUT MODE_BOOTLOADER, #endif MODE_HEAT, MODE_SETUP, MODE_RESET, MODE_SIZE, }; enum RESET_MODE { RESET_REBOOT = 0, RESET_DEFAULTS, RESET_BOOTLOADER, RESET_EXIT, RESET_SIZE, }; #endif