Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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();
  }
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
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);
      }
    }
  }
}
Ejemplo n.º 8
0
static void
create_home_screen(void)
{
  widget_t* home_screen = home_screen_create();
  gui_push_screen(home_screen);
}