scanner_view.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. canvas_draw_icon(canvas, 2, 13, &I_passport_happy3_46x49);
  7. canvas_set_font(canvas, FontPrimary);
  8. canvas_draw_str_aligned(canvas, 3, 3, AlignLeft, AlignTop, SCAN_MENU_TEXT);
  9. char count_text[46];
  10. char count_text_fmt[] = "Found: %d";
  11. canvas_set_font(canvas, FontSecondary);
  12. snprintf(count_text, sizeof(count_text), count_text_fmt, (int)i2c_scanner->nb_found);
  13. canvas_draw_str_aligned(canvas, 50, 3, AlignLeft, AlignTop, count_text);
  14. uint8_t x_pos = 0;
  15. uint8_t y_pos = 0;
  16. uint8_t idx_to_print = 0;
  17. for(uint8_t i = 0; i < (int)i2c_scanner->nb_found; i++) {
  18. idx_to_print = i + i2c_scanner->menu_index * 3;
  19. if(idx_to_print >= MAX_I2C_ADDR) {
  20. break;
  21. }
  22. snprintf(
  23. count_text, sizeof(count_text), "0x%02x ", (int)i2c_scanner->addresses[idx_to_print]);
  24. if(i < 3) {
  25. x_pos = 50 + (i * 26);
  26. y_pos = 15;
  27. } else if(i < 6) {
  28. x_pos = 50 + ((i - 3) * 26);
  29. y_pos = 25;
  30. } else if(i < 9) {
  31. x_pos = 50 + ((i - 6) * 26);
  32. y_pos = 35;
  33. } else if(i < 12) {
  34. x_pos = 50 + ((i - 9) * 26);
  35. y_pos = 45;
  36. } else if(i < 15) {
  37. x_pos = 50 + ((i - 12) * 26);
  38. y_pos = 55;
  39. } else {
  40. break;
  41. }
  42. canvas_draw_str_aligned(canvas, x_pos, y_pos, AlignLeft, AlignTop, count_text);
  43. }
  44. // Right cursor
  45. y_pos = 14 + i2c_scanner->menu_index;
  46. canvas_draw_rbox(canvas, 125, y_pos, 3, 10, 1);
  47. // Button
  48. canvas_draw_rbox(canvas, 70, 48, 45, 13, 3);
  49. canvas_set_color(canvas, ColorWhite);
  50. canvas_draw_icon(canvas, 75, 50, &I_Ok_btn_9x9);
  51. canvas_draw_str_aligned(canvas, 85, 51, AlignLeft, AlignTop, "Scan");
  52. }