sender_view.c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "sender_view.h"
  2. void draw_sender_view(Canvas* canvas, i2cSender* i2c_sender) {
  3. canvas_clear(canvas);
  4. canvas_set_color(canvas, ColorBlack);
  5. canvas_draw_rframe(canvas, 0, 0, 128, 64, 3);
  6. if(!i2c_sender->scanner->scanned) {
  7. scan_i2c_bus(i2c_sender->scanner);
  8. }
  9. canvas_set_font(canvas, FontSecondary);
  10. if(i2c_sender->scanner->nb_found <= 0) {
  11. canvas_draw_str_aligned(canvas, 20, 5, AlignLeft, AlignTop, "No peripherals found");
  12. return;
  13. }
  14. // Send Button
  15. canvas_draw_rbox(canvas, 45, 48, 45, 13, 3);
  16. canvas_set_color(canvas, ColorWhite);
  17. canvas_draw_icon(canvas, 50, 50, &I_Ok_btn_9x9);
  18. canvas_draw_str_aligned(canvas, 62, 51, AlignLeft, AlignTop, "Send");
  19. // Addr
  20. canvas_set_color(canvas, ColorBlack);
  21. canvas_draw_str_aligned(canvas, 3, 5, AlignLeft, AlignTop, "Addr: ");
  22. canvas_draw_icon(canvas, 33, 5, &I_ButtonLeft_4x7);
  23. canvas_draw_icon(canvas, 68, 5, &I_ButtonRight_4x7);
  24. char addr_text[8];
  25. snprintf(
  26. addr_text,
  27. sizeof(addr_text),
  28. "0x%02x",
  29. (int)i2c_sender->scanner->addresses[i2c_sender->address_idx]);
  30. canvas_draw_str_aligned(canvas, 43, 5, AlignLeft, AlignTop, addr_text);
  31. // Value
  32. canvas_draw_str_aligned(canvas, 3, 15, AlignLeft, AlignTop, "Value: ");
  33. canvas_draw_icon(canvas, 33, 17, &I_ButtonUp_7x4);
  34. canvas_draw_icon(canvas, 68, 17, &I_ButtonDown_7x4);
  35. snprintf(addr_text, sizeof(addr_text), "0x%02x", (int)i2c_sender->value);
  36. canvas_draw_str_aligned(canvas, 43, 15, AlignLeft, AlignTop, addr_text);
  37. if(i2c_sender->must_send) {
  38. i2c_send(i2c_sender);
  39. }
  40. // Result
  41. canvas_draw_str_aligned(canvas, 3, 25, AlignLeft, AlignTop, "Result: ");
  42. if(i2c_sender->sended) {
  43. uint8_t row = 1;
  44. uint8_t column = 1;
  45. const uint8_t x_min = 3;
  46. const uint8_t y_min = 25;
  47. uint8_t x_pos = 0;
  48. uint8_t y_pos = 0;
  49. for(uint8_t i = 0; i < sizeof(i2c_sender->recv); i++) {
  50. x_pos = x_min + (column - 1) * 35;
  51. if(row == 1) {
  52. x_pos += 40;
  53. }
  54. y_pos = y_min + (row - 1) * 10;
  55. snprintf(addr_text, sizeof(addr_text), "0x%02x", (int)i2c_sender->recv[i]);
  56. canvas_draw_str_aligned(canvas, x_pos, y_pos, AlignLeft, AlignTop, addr_text);
  57. column++;
  58. if((row > 1 && column > 3) || (row == 1 && column > 2)) {
  59. column = 1;
  60. row++;
  61. }
  62. if(row > 2) {
  63. break;
  64. }
  65. }
  66. }
  67. }