TempHum_scene.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "Scenes.h"
  2. static View* view;
  3. static void TempHum_draw_callback(Canvas* canvas, void* _model) {
  4. UNUSED(_model);
  5. //Рисование бара
  6. canvas_draw_box(canvas, 0, 0, 128, 14);
  7. canvas_set_color(canvas, ColorWhite);
  8. canvas_set_font(canvas, FontPrimary);
  9. canvas_draw_str_aligned(canvas, 64, 7, AlignCenter, AlignCenter, "Unitemp");
  10. canvas_set_color(canvas, ColorBlack);
  11. if(app->sensors_count > 0) {
  12. for(uint8_t i = 0; i < app->sensors_count; i++) {
  13. canvas_set_font(canvas, FontPrimary);
  14. canvas_draw_str(canvas, 0, 24 + 10 * i, app->sensors[i]->name);
  15. canvas_set_font(canvas, FontSecondary);
  16. if(app->sensors[i]->status != UT_OK && app->sensors[i]->status != UT_EARLYPOOL) {
  17. canvas_draw_str(canvas, 96, 24 + 10 * i, "timeout");
  18. } else {
  19. char buff[20];
  20. snprintf(
  21. buff,
  22. sizeof(buff),
  23. "%2.1f*%c/%d%%",
  24. (double)app->sensors[i]->temp,
  25. app->settings.unit == CELSIUS ? 'C' : 'F',
  26. (int8_t)app->sensors[i]->hum);
  27. canvas_draw_str(canvas, 64, 24 + 10 * i, buff);
  28. }
  29. }
  30. } else {
  31. canvas_set_font(canvas, FontSecondary);
  32. if(app->sensors_count == 0) canvas_draw_str(canvas, 0, 24, "Sensors not found");
  33. }
  34. }
  35. void TempHum_secene_alloc(void) {
  36. view = view_alloc();
  37. view_set_context(view, app);
  38. view_set_draw_callback(view, TempHum_draw_callback);
  39. view_dispatcher_add_view(app->view_dispatcher, TEMPHUM_VIEW, view);
  40. }
  41. void TempHum_secene_free(void) {
  42. view_free(view);
  43. }