@@ -20,39 +20,53 @@ void draw_sniffer_view(Canvas* canvas, i2cSniffer* i2c_sniffer) {
2020canvas_draw_str_aligned (canvas ,85 ,51 ,AlignLeft ,AlignTop ,"Stop" );
2121 }
2222canvas_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 );
2335// Address text
24- char addr_text [8 ];
2536snprintf (
26- addr_text ,
27- sizeof (addr_text ),
37+ text_buffer ,
38+ sizeof (text_buffer ),
2839"0x%02x" ,
2940 (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 );
3243// R/W
3344if ((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" );
3546 }else {
36- canvas_draw_str_aligned (canvas ,105 ,3 ,AlignLeft ,AlignTop ,"R" );
47+ canvas_draw_str_aligned (canvas ,105 ,13 ,AlignLeft ,AlignTop ,"R" );
3748 }
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 );
4549// Frames content
50+ const uint8_t x_min = 50 ;
51+ const uint8_t y_min = 23 ;
4652uint8_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 ;
4856for (uint8_t i = 1 ;i < i2c_sniffer -> frames [i2c_sniffer -> menu_index ].data_index ;i ++ ) {
4957snprintf (
50- addr_text ,
51- sizeof (addr_text ),
58+ text_buffer ,
59+ sizeof (text_buffer ),
5260"0x%02x" ,
5361 (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 );
5670if (i2c_sniffer -> frames [i2c_sniffer -> menu_index ].ack [i ]) {
5771canvas_draw_str_aligned (canvas ,x_pos + 24 ,y_pos ,AlignLeft ,AlignTop ,"A" );
5872 }else {