@@ -20,39 +20,53 @@ void draw_sniffer_view(Canvas* canvas, i2cSniffer* i2c_sniffer) {
20
20
canvas_draw_str_aligned (canvas , 85 , 51 , AlignLeft , AlignTop , "Stop" );
21
21
}
22
22
canvas_set_color (canvas , ColorBlack );
23
+ if (i2c_sniffer -> first ) {
24
+ canvas_draw_str_aligned (canvas , 50 , 3 , AlignLeft , AlignTop , "Nothing Recorded" );
25
+ return ;
26
+ }
27
+ char text_buffer [8 ];
28
+ // nbFrame text
29
+ canvas_draw_str_aligned (canvas , 50 , 3 , AlignLeft , AlignTop , "Frame: " );
30
+ snprintf (text_buffer , sizeof (text_buffer ), "%d" , (int )i2c_sniffer -> menu_index + 1 );
31
+ canvas_draw_str_aligned (canvas , 85 , 3 , AlignLeft , AlignTop , text_buffer );
32
+ canvas_draw_str_aligned (canvas , 100 , 3 , AlignLeft , AlignTop , "/" );
33
+ snprintf (text_buffer , sizeof (text_buffer ), "%d" , (int )i2c_sniffer -> frame_index + 1 );
34
+ canvas_draw_str_aligned (canvas , 110 , 3 , AlignLeft , AlignTop , text_buffer );
23
35
// Address text
24
- char addr_text [8 ];
25
36
snprintf (
26
- addr_text ,
27
- sizeof (addr_text ),
37
+ text_buffer ,
38
+ sizeof (text_buffer ),
28
39
"0x%02x" ,
29
40
(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 );
41
+ canvas_draw_str_aligned (canvas , 50 , 13 , AlignLeft , AlignTop , "Addr: " );
42
+ canvas_draw_str_aligned (canvas , 75 , 13 , AlignLeft , AlignTop , text_buffer );
32
43
// R/W
33
44
if ((int )(i2c_sniffer -> frames [i2c_sniffer -> menu_index ].data [0 ]) % 2 == 0 ) {
34
- canvas_draw_str_aligned (canvas , 105 , 3 , AlignLeft , AlignTop , "W" );
45
+ canvas_draw_str_aligned (canvas , 105 , 13 , AlignLeft , AlignTop , "W" );
35
46
} else {
36
- canvas_draw_str_aligned (canvas , 105 , 3 , AlignLeft , AlignTop , "R" );
47
+ canvas_draw_str_aligned (canvas , 105 , 13 , AlignLeft , AlignTop , "R" );
37
48
}
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
49
// Frames content
50
+ const uint8_t x_min = 50 ;
51
+ const uint8_t y_min = 23 ;
46
52
uint8_t x_pos = 0 ;
47
- uint8_t y_pos = 23 ;
53
+ uint8_t y_pos = 0 ;
54
+ uint8_t row = 1 ;
55
+ uint8_t column = 1 ;
48
56
for (uint8_t i = 1 ; i < i2c_sniffer -> frames [i2c_sniffer -> menu_index ].data_index ; i ++ ) {
49
57
snprintf (
50
- addr_text ,
51
- sizeof (addr_text ),
58
+ text_buffer ,
59
+ sizeof (text_buffer ),
52
60
"0x%02x" ,
53
61
(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 );
62
+ x_pos = x_min + (column - 1 ) * 35 ;
63
+ y_pos = y_min + (row - 1 ) * 10 ;
64
+ column ++ ;
65
+ if (column > 2 ) {
66
+ column = 1 ;
67
+ row ++ ;
68
+ }
69
+ canvas_draw_str_aligned (canvas , x_pos , y_pos , AlignLeft , AlignTop , text_buffer );
56
70
if (i2c_sniffer -> frames [i2c_sniffer -> menu_index ].ack [i ]) {
57
71
canvas_draw_str_aligned (canvas , x_pos + 24 , y_pos , AlignLeft , AlignTop , "A" );
58
72
} else {
0 commit comments