#ifndef STATES_H #define STATES_H #include "stm32f3xx_hal.h" #include "config.h" typedef struct { float temp; uint8_t state_resume; uint8_t state; float setpoint; uint8_t pid_enabled; uint8_t error_code; uint8_t setpoint_index; } 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; float temp_offset; uint32_t ignore_error; float setpoints[MAX_SETPOINTS]; uint32_t control_mode; uint32_t sensor_type; uint32_t plant_type; uint32_t hysteresis; uint32_t setpoint_count; uint32_t setpoint_aux_select_enable; } val; uint16_t data[128]; } therm_settings_t; enum tempunits { TEMP_UNITS_CELSIUS = 0, TEMP_UNITS_FAHRENHEIT, }; enum state { STATE_IDLE = 0, STATE_SETSENSORTYPE, STATE_SETMODE, STATE_SETPLANTTYPE, STATE_SETSETPOINTCOUNT, STATE_SETSETPOINTAUXSELECTENABLE, 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 aux_select { AUX_DISABLE = 0, AUX_ENABLE, }; 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, }; enum SENSOR_TYPE { SENSOR_NTC = 0, SENSOR_TC_K, SENSOR_TC_E, SENSOR_TC_N, SENSOR_TC_R, SENSOR_TC_S, SENSOR_TC_T, }; #endif