diff --git a/inc/states.h b/inc/states.h new file mode 100644 --- /dev/null +++ b/inc/states.h @@ -0,0 +1,104 @@ +#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; +} 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 sensor_type; + 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_SETSENSORTYPE, + 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, +}; + +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