static void static_setpoint_button_clicked(button_event_t* event) { if (event->id != EVT_BUTTON_CLICK) return; controller_settings_screen_t* s = widget_get_user_data(event->widget); unit_t temp_units = app_cfg_get_temp_unit(); float min; float max; char* title; if (s->controller == CONTROLLER_1) title = "Controller 1 Setpoint"; else title = "Controller 2 Setpoint"; float velocity_steps[] = { 0.1f, 0.5f, 1.0f }; if (temp_units == UNIT_TEMP_DEG_F) { min = MIN_TEMP_F; max = MAX_TEMP_F; } else{ min = MIN_TEMP_C; max = MAX_TEMP_C; } widget_t* static_setpoint_screen = quantity_select_screen_create( title, s->settings.static_setpoint, min, max, velocity_steps, 3, update_static_setpoint, s); gui_push_screen(static_setpoint_screen); }
int main(void) { halInit(); chSysInit(); get_device_id(); /* start stdout port */ sdStart(SD_STDIO, NULL); xflash_init(); cmdline_init(); rngStart(&RNGD); app_cfg_init(); check_for_faults(); gfx_init(); touch_init(); sensor_init(SENSOR_1, SD_OW1); sensor_init(SENSOR_2, SD_OW2); temp_control_init(CONTROLLER_1); temp_control_init(CONTROLLER_2); ota_update_init(); net_init(); web_api_init(); sntp_init(); gui_init(); thread_watchdog_init(); create_home_screen(); recovery_screen_create(); screen_saver_create(); if (palReadPad(PORT_SELF_TEST_EN, PAD_SELF_TEST_EN) == 0) { widget_t* self_test_screen = self_test_screen_create(); gui_push_screen(self_test_screen); } recovery_img_init(); while (TRUE) { cmdline_restart(); toggle_LED1(); } }
static void output_settings_button_clicked(button_event_t* event) { if (event->id != EVT_BUTTON_CLICK) return; output_settings_t* output_settings = widget_get_user_data(event->widget); widget_t* settings_screen = output_settings_screen_create(output_settings); gui_push_screen(settings_screen); }
static void build_offset_screen(offset_screen_t* s, char* title) { float velocity_steps[] = { 0.1f }; sensor_config_t* sensor_cfg = get_sensor_cfg(s->sensor_id); quantity_t probe_offset = app_cfg_get_probe_offset(sensor_cfg->sensor_serial); if (app_cfg_get_temp_unit() == UNIT_TEMP_DEG_C) { probe_offset.value *= (5.0f / 9.0f); probe_offset.unit = UNIT_TEMP_DEG_C; } widget_t* probe_offset_screen = quantity_select_screen_create( title, probe_offset, MIN_PROBE_OFFSET, MAX_PROBE_OFFSET, velocity_steps, 1, update_probe_offset, s); gui_push_screen(probe_offset_screen); }
static void click_sensor_button(button_event_t* event) { if (event->id != EVT_BUTTON_CLICK) return; widget_t* parent = widget_get_parent(event->widget); home_screen_t* s = widget_get_instance_data(parent); sensor_id_t sensor; if (event->widget == s->sensors[SENSOR_1].button) sensor = SENSOR_1; else sensor = SENSOR_2; widget_t* settings_screen = controller_settings_screen_create(sensor); gui_push_screen(settings_screen); }
static msg_t screen_saver_thread(void* arg) { (void)arg; chRegSetThreadName("screen_saver"); while (1) { screen_saver_t* s = arg; quantity_t screen_saver_timeout = app_cfg_get_screen_saver(); if (!s->active && screen_saver_timeout.value > .5f && (chTimeNow() - s->last_touch_time) > S2ST(60 * screen_saver_timeout.value)) { s->active = true; active = true; lcd_set_brightness(0); gui_push_screen(s->screen); } chThdSleepSeconds(10); } return 0; }
void textentry_screen_show(textentry_format_t format, text_handler_t text_handler, void* user_data) { int i; textentry_screen_t* screen = calloc(1, sizeof(textentry_screen_t)); screen->text_handler = text_handler; screen->user_data = user_data; switch (format) { case TXT_FMT_IP: screen->btn_layout = btn_layout_numeric; screen->num_rows = NUM_ROWS_NUMERIC; break; default: case TXT_FMT_ANY: screen->btn_layout = btn_layout_all; screen->num_rows = NUM_ROWS_ALL; break; } screen->widget = widget_create(NULL, &textentry_screen_widget_class, screen, display_rect); rect_t rect = { .x = 7, .y = 5, .width = 48, .height = 48, }; widget_t* back_btn = button_create(screen->widget, rect, img_cancel, WHITE, BLACK, back_button_clicked); button_set_up_bg_color(back_btn, BLACK); button_set_up_icon_color(back_btn, WHITE); button_set_down_bg_color(back_btn, BLACK); button_set_down_icon_color(back_btn, LIGHT_GRAY); button_set_disabled_bg_color(back_btn, BLACK); button_set_disabled_icon_color(back_btn, DARK_GRAY); rect.x = 7; rect.y = 65; for (i = 0; i < NUM_VISIBLE_ROWS; ++i) { int j; for (j = 0; j < NUM_BUTTONS_PER_ROW; ++j) { widget_t* b = button_create(screen->widget, rect, img_circle, WHITE, BLACK, char_button_clicked); button_set_font(b, font_opensans_regular_22); button_set_up_bg_color(b, BLACK); button_set_up_icon_color(b, WHITE); button_set_down_bg_color(b, BLACK); button_set_down_icon_color(b, LIGHT_GRAY); button_set_disabled_bg_color(b, BLACK); button_set_disabled_icon_color(b, DARK_GRAY); screen->buttons[i][j] = b; rect.x += 52; } rect.y += 58; rect.x = 7; } rect.x = 268; rect.y = 5; widget_t* b = button_create(screen->widget, rect, img_check, WHITE, BLACK, ok_button_clicked); button_set_up_bg_color(b, BLACK); button_set_up_icon_color(b, WHITE); button_set_down_bg_color(b, BLACK); button_set_down_icon_color(b, LIGHT_GRAY); button_set_disabled_bg_color(b, BLACK); button_set_disabled_icon_color(b, DARK_GRAY); rect.y = 65; b = button_create(screen->widget, rect, img_backspace, WHITE, BLACK, backspace_button_clicked); button_set_up_bg_color(b, BLACK); button_set_up_icon_color(b, WHITE); button_set_down_bg_color(b, BLACK); button_set_down_icon_color(b, LIGHT_GRAY); button_set_disabled_bg_color(b, BLACK); button_set_disabled_icon_color(b, DARK_GRAY); rect.y += 58; b = button_create(screen->widget, rect, img_up, WHITE, BLACK, up_button_clicked); button_set_up_bg_color(b, BLACK); button_set_up_icon_color(b, WHITE); button_set_down_bg_color(b, BLACK); button_set_down_icon_color(b, LIGHT_GRAY); button_set_disabled_bg_color(b, BLACK); button_set_disabled_icon_color(b, DARK_GRAY); rect.y += 58; b = button_create(screen->widget, rect, img_down, WHITE, BLACK, down_button_clicked); button_set_up_bg_color(b, BLACK); button_set_up_icon_color(b, WHITE); button_set_down_bg_color(b, BLACK); button_set_down_icon_color(b, LIGHT_GRAY); button_set_disabled_bg_color(b, BLACK); button_set_disabled_icon_color(b, DARK_GRAY); update_input_buttons(screen); rect.x = 60; rect.y = 8; rect.width = 200; screen->text_label = label_create(screen->widget, rect, "", font_opensans_regular_22, WHITE, 2); widget_set_background(screen->text_label, LIGHT_GRAY); gui_push_screen(screen->widget); } static void update_input_buttons(textentry_screen_t* screen) { int i; for (i = 0; i < NUM_VISIBLE_ROWS; ++i) { btn_row_t* row = &screen->btn_layout[screen->row_idx + i]; int j; for (j = 0; j < NUM_BUTTONS_PER_ROW; ++j) { widget_t* btn = screen->buttons[i][j]; const char* btn_text = (*row)[j]; if (btn_text == NULL) widget_hide(btn); else { if (*btn_text == ' ') button_set_icon(btn, img_space); else button_set_icon(btn, img_circle); button_set_text(btn, btn_text); widget_show(btn); } } } }
static void create_home_screen(void) { widget_t* home_screen = home_screen_create(); gui_push_screen(home_screen); }