scanner_view.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "scanner_view.h"
  2. void draw_scanner_view(Canvas* canvas, i2cScanner* i2c_scanner) {
  3. canvas_clear(canvas);
  4. canvas_set_color(canvas, ColorBlack);
  5. canvas_draw_rframe(canvas, 0, 0, 128, 64, 3);
  6. char count_text[46];
  7. char count_text_fmt[] = "Peripherals Found: %d";
  8. canvas_set_font(canvas, FontSecondary);
  9. snprintf(count_text, sizeof(count_text), count_text_fmt, (int)i2c_scanner->nb_found);
  10. canvas_draw_str_aligned(canvas, 3, 3, AlignLeft, AlignTop, count_text);
  11. uint8_t x_pos = 0;
  12. uint8_t y_pos = 0;
  13. uint8_t idx_to_print = 0;
  14. for(uint8_t i = 0; i < (int)i2c_scanner->nb_found; i++) {
  15. idx_to_print = i + i2c_scanner->menu_index * 3;
  16. if(idx_to_print >= MAX_I2C_ADDR) {
  17. break;
  18. }
  19. snprintf(
  20. count_text, sizeof(count_text), "0x%02x ", (int)i2c_scanner->addresses[idx_to_print]);
  21. const uint8_t x_start = 3;
  22. if(i < 4) {
  23. x_pos = x_start + (i * 26);
  24. y_pos = 15;
  25. } else if(i < 8) {
  26. x_pos = x_start + ((i - 4) * 26);
  27. y_pos = 25;
  28. } else if(i < 12) {
  29. x_pos = x_start + ((i - 8) * 26);
  30. y_pos = 35;
  31. } else {
  32. break;
  33. }
  34. canvas_draw_str_aligned(canvas, x_pos, y_pos, AlignLeft, AlignTop, count_text);
  35. }
  36. // Right cursor
  37. y_pos = 14 + i2c_scanner->menu_index;
  38. canvas_draw_rbox(canvas, 125, y_pos, 3, 10, 1);
  39. // Button
  40. canvas_draw_rbox(canvas, 45, 48, 45, 13, 3);
  41. canvas_set_color(canvas, ColorWhite);
  42. canvas_draw_icon(canvas, 50, 50, &I_Ok_btn_9x9);
  43. canvas_draw_str_aligned(canvas, 62, 51, AlignLeft, AlignTop, "Scan");
  44. }