1
+ #include "sniffer_view.h"
2
+
3
+ void draw_sniffer_view (Canvas * canvas , i2cSniffer * i2c_sniffer ) {
4
+ canvas_clear (canvas );
5
+ canvas_set_color (canvas , ColorBlack );
6
+ canvas_draw_rframe (canvas , 0 , 0 , 128 , 64 , 3 );
7
+ canvas_draw_icon (canvas , 2 , 13 , & I_passport_happy2_46x49 );
8
+
9
+ canvas_set_font (canvas , FontPrimary );
10
+ canvas_draw_str_aligned (canvas , 3 , 3 , AlignLeft , AlignTop , SNIFF_MENU_TEXT );
11
+ canvas_set_font (canvas , FontSecondary );
12
+
13
+ // Button
14
+ canvas_draw_rbox (canvas , 70 , 48 , 45 , 13 , 3 );
15
+ canvas_set_color (canvas , ColorWhite );
16
+ canvas_draw_icon (canvas , 75 , 50 , & I_Ok_btn_9x9 );
17
+ if (!i2c_sniffer -> started ) {
18
+ canvas_draw_str_aligned (canvas , 85 , 51 , AlignLeft , AlignTop , "Start" );
19
+ } else {
20
+ canvas_draw_str_aligned (canvas , 85 , 51 , AlignLeft , AlignTop , "Stop" );
21
+ }
22
+ canvas_set_color (canvas , ColorBlack );
23
+ // Address text
24
+ char addr_text [8 ];
25
+ snprintf (
26
+ addr_text ,
27
+ sizeof (addr_text ),
28
+ "0x%02x" ,
29
+ (int )(i2c_sniffer -> frames [i2c_sniffer -> menu_index ].data [0 ] >> 1 ));
30
+ canvas_draw_str_aligned (canvas , 50 , 3 , AlignLeft , AlignTop , "Addr: " );
31
+ canvas_draw_str_aligned (canvas , 75 , 3 , AlignLeft , AlignTop , addr_text );
32
+ // R/W
33
+ if ((int )(i2c_sniffer -> frames [i2c_sniffer -> menu_index ].data [0 ]) % 2 == 0 ) {
34
+ canvas_draw_str_aligned (canvas , 105 , 3 , AlignLeft , AlignTop , "W" );
35
+ } else {
36
+ canvas_draw_str_aligned (canvas , 105 , 3 , AlignLeft , AlignTop , "R" );
37
+ }
38
+ // nbFrame text
39
+ canvas_draw_str_aligned (canvas , 50 , 13 , AlignLeft , AlignTop , "Frames: " );
40
+ snprintf (addr_text , sizeof (addr_text ), "%d" , (int )i2c_sniffer -> menu_index + 1 );
41
+ canvas_draw_str_aligned (canvas , 90 , 13 , AlignLeft , AlignTop , addr_text );
42
+ canvas_draw_str_aligned (canvas , 100 , 13 , AlignLeft , AlignTop , "/" );
43
+ snprintf (addr_text , sizeof (addr_text ), "%d" , (int )i2c_sniffer -> frame_index + 1 );
44
+ canvas_draw_str_aligned (canvas , 110 , 13 , AlignLeft , AlignTop , addr_text );
45
+ // Frames content
46
+ uint8_t x_pos = 0 ;
47
+ uint8_t y_pos = 23 ;
48
+ for (uint8_t i = 1 ; i < i2c_sniffer -> frames [i2c_sniffer -> menu_index ].data_index ; i ++ ) {
49
+ snprintf (
50
+ addr_text ,
51
+ sizeof (addr_text ),
52
+ "0x%02x" ,
53
+ (int )i2c_sniffer -> frames [i2c_sniffer -> menu_index ].data [i ]);
54
+ x_pos = 50 + (i - 1 ) * 35 ;
55
+ canvas_draw_str_aligned (canvas , x_pos , y_pos , AlignLeft , AlignTop , addr_text );
56
+ if (i2c_sniffer -> frames [i2c_sniffer -> menu_index ].ack [i ]) {
57
+ canvas_draw_str_aligned (canvas , x_pos + 24 , y_pos , AlignLeft , AlignTop , "A" );
58
+ } else {
59
+ canvas_draw_str_aligned (canvas , x_pos + 24 , y_pos , AlignLeft , AlignTop , "N" );
60
+ }
61
+ }
62
+ }
0 commit comments