static void brew_run_step() { g_state.step_start_tick = xTaskGetTickCount(); g_state.step_runtime = 0; // iterate will update this lcd_lock(); lcd_fill(0, 0, LCD_W, CRUMB_H, 0x0); lcd_background(0x0); lcd_text(0, 0, "Brewbot:Brewing"); lcd_fill(0, CRUMB_H - 2, LCD_W, 2, 0xFFFF); lcd_fill(0, CRUMB_H, LCD_W, LCD_H - CRUMB_H, COL_BG_NORM); lcd_fill(0, LCD_H - 1 * HH - 1, LCD_W / 2, 1, 0xFFFF); lcd_fill(LCD_W / 2, LCD_H - 1 * HH - 1, 1, HH, 0xFFFF); button_paint(brew_buttons); if (g_steps[g_state.step].buttons) button_paint(g_steps[g_state.step].buttons); lcd_background(COL_BG_NORM); lcd_printf(17, 0, 20, "%d.%s", g_state.step, g_steps[g_state.step].name); lcd_release(); log_brew(&g_state.log_file, "%.2d:%.2d Run step %d.%s\n", g_state.total_runtime / 60, g_state.total_runtime % 60, g_state.step, g_steps[g_state.step].name); g_steps[g_state.step].method(1); }
/** * The factory method that builds a GUI using the given factory. * * @param gui_factory_h The factory to use for building the GUI. */ static void generate_gui (gui_factory_handle gui_factory_h) { button_handle button1 = NULL, button2 = NULL, button3 = NULL; if (NULL == gui_factory_h) { return; } /* * The will create some buttons, call their paint functions, and then delete * them. Use your imagination for much more complicated GUIs being built in * real life. */ button1 = gui_factory_create_button(gui_factory_h); if (NULL == button1) { goto err_exit; } button2 = gui_factory_create_button(gui_factory_h); if (NULL == button2) { goto err_exit; } button3 = gui_factory_create_button(gui_factory_h); if (NULL == button3) { goto err_exit; } button_paint(button1); button_paint(button2); button_paint(button3); button_delete(button1); button_delete(button2); button_delete(button3); return; err_exit: if (NULL != button1) { button_delete(button1); } if (NULL != button2) { button_delete(button2); } if (NULL != button3) { button_delete(button3); } }
void brew_resume(int init) { if (init) { g_state.in_alarm = 0; lcd_lock(); lcd_fill(0, 0, LCD_W, CRUMB_H, 0x0); lcd_text(0, 0, "Brewbot:Resume at step"); lcd_fill(0, CRUMB_H - 2, LCD_W, 2, 0xFFFF); lcd_fill(0, CRUMB_H, LCD_W, LCD_H - CRUMB_H - 2 * HH, COL_BG_NORM); lcd_fill(0, LCD_H - 2 * HH - 2, LCD_W, 1, 0xFFFF); lcd_fill(0, LCD_H - 1 * HH - 1, LCD_W, 1, 0xFFFF); lcd_fill(LCD_W / 2, LCD_H - 2 * HH - 1, 1, 2 * HH, 0xFFFF); button_paint(resume_buttons); lcd_background(COL_BG_NORM); lcd_printf(10, 4, 30, "%d. %s", g_state.step + 1, brew_step_name(g_state.step)); lcd_release(); } else { log_brew(&g_state.log_file, "%.2d:%.2d Brew stopped\n", g_state.total_runtime / 60, g_state.total_runtime % 60); brewTaskStop(&brew_task); } }