#ifndef _H_OVEN_CTL #define _H_OVEN_CTL /* // operational states #define OP_CONFIG 0 #define OP_STAND_ALONE 1 #define OP_REMOTE 2*/ enum OVEN_MODE { OM_CONFIG, OM_CALIBRATION, OM_STAND_ALONE, OM_REMOTE }; enum COMMAND { SEND_CONFIG, RECV_CONFIG, SEND_STATE, RECV_STEPS }; #define E_DT_MIN 1 // temperature dt too small #define E_DT_MAX 2 // temperature dt too big #define E_TIME_MAX 4 // reflow process does take too long #define E_TS_TOO_SHORT 8 // Ts duration too short #define E_TS_TOO_LONG 16 // Ts duration too long #define E_TL_TOO_SHORT 32 // Tl duration too short #define E_TL_TOO_LONG 64 // Tl duration too long #define E_TP_TOO_SHORT 128 // Tp duration too short #define E_TP_TOO_LONG 256 // Tp duration too long #define E_CONFIG 512 // error happened in config state // profile states enum PROFILE_STATE { START_STATE, PREHEAT_STATE, RAMP_UP_STATE, TAL_FIRST_STATE, PEAK_STATE, TAL_SECOND_STATE, RAMP_DOWN_STATE, END_STATE, ERROR_STATE }; #include class LiquidCrystal; class DFR_Key; class Profile; extern Profile profile; class OvenCtl { public: OvenCtl(); void loop(); // void set_config_state(); private: // system time, timestamps and temperatures from sensors int time; // profile seconds int temperature; // actual oven temp int last_temperature; // last oven temp float actual_dt; // actual difference from last to actual temperatur // thermostat float set_min; float set_max; int set_dt_min; int set_dt_max; float ramp_up_hysteresis; // duration in seconds float ramp_down_hysteresis; // duration in seconds float actual_hysteresis; // duration in seconds // ui stuff boolean disable_checks; // state machine unsigned int error_condition; OVEN_MODE oven_mode; PROFILE_STATE profile_state; boolean is_oven_heating; void print_status(); void control_oven(); void set_temp(int, int, int, int); void get_temp(); void check_dt(); void check_max_duration(); // void set_start_state(); // void set_preheat_state(); // void set_tal_first_state(); // void set_ramp_up_state(); // void set_peak_state(); // void set_tal_second_state(); // void set_ramp_down_state(); // void set_end_state(); // void set_error_state(); // void handle_profile_states(); void handle_stand_alone_state(); void handle_remote_state(); // void handle_config_state(); // void handle_start_state(); // void handle_ramp_up_state(); // void handle_preheat_state(); // void handle_tal_first_state(); // void handle_peak_state(); // void handle_tal_second_state(); // void handle_ramp_down_state(); // void handle_end_state(); // void handle_error_state(); // void check_Ts_duration_min(); // void check_Ts_duration_max(); // void check_Tl_duration_min(); // void check_Tl_duration_max(); // void check_Tp_duration_min(); // void check_Tp_duration_max(); // commands void send_state(); void send_config(); void recv_config(); void dispatch_remote_cmd(COMMAND cmd); }; #endif