@@ -9,7 +9,9 @@ struct FindMyMain {
9
9
10
10
typedef struct {
11
11
bool active ;
12
+ bool show_mac ;
12
13
uint8_t interval ;
14
+ uint8_t mac [6 ];
13
15
FindMyType type ;
14
16
} FindMyMainModel ;
15
17
@@ -20,20 +22,7 @@ static void findmy_main_draw_callback(Canvas* canvas, void* _model) {
20
22
canvas_set_font (canvas , FontPrimary );
21
23
22
24
canvas_draw_str (canvas , 4 , 11 , "FindMy Flipper" );
23
- canvas_set_font (canvas , FontSecondary );
24
- if (model -> active ) {
25
- canvas_draw_str (canvas , 4 , 49 , "Broadcast Active" );
26
- canvas_draw_icon (canvas , 78 , 42 , & I_Ok_btn_9x9 );
27
- } else {
28
- canvas_draw_str (canvas , 4 , 49 , "Broadcast Inactive" );
29
- }
30
- canvas_set_font (canvas , FontSecondary );
31
- canvas_draw_str (canvas , 4 , 21 , "Press <- to run in background" );
32
- canvas_set_font (canvas , FontSecondary );
33
- char interval_str [20 ];
34
- snprintf (interval_str , sizeof (interval_str ), "Ping Interval: %ds" , model -> interval );
35
- canvas_draw_str (canvas , 4 , 62 , interval_str );
36
- canvas_set_font (canvas , FontPrimary );
25
+
37
26
const char * network_text = "" ;
38
27
switch (model -> type ) {
39
28
case FindMyTypeApple :
@@ -48,8 +37,42 @@ static void findmy_main_draw_callback(Canvas* canvas, void* _model) {
48
37
default :
49
38
break ;
50
39
}
51
- canvas_draw_str (canvas , 4 , 32 , network_text );
52
- canvas_draw_icon (canvas , 6 + canvas_string_width (canvas , network_text ), 24 , & I_Lock_7x8 );
40
+
41
+ if (model -> show_mac == false) {
42
+ canvas_set_font (canvas , FontPrimary );
43
+ canvas_draw_str (canvas , 4 , 31 , network_text );
44
+ canvas_draw_icon (canvas , 6 + canvas_string_width (canvas , network_text ), 24 , & I_Lock_7x8 );
45
+ } else if (model -> show_mac == true) {
46
+ canvas_set_font (canvas , FontSecondary );
47
+ char mac_str [23 ];
48
+ snprintf (
49
+ mac_str ,
50
+ sizeof (mac_str ),
51
+ "MAC: %02X:%02X:%02X:%02X:%02X:%02X" ,
52
+ model -> mac [0 ],
53
+ model -> mac [1 ],
54
+ model -> mac [2 ],
55
+ model -> mac [3 ],
56
+ model -> mac [4 ],
57
+ model -> mac [5 ]);
58
+ canvas_draw_str (canvas , 4 , 40 , mac_str );
59
+ canvas_draw_str (canvas , 4 , 30 , network_text );
60
+ canvas_draw_icon (canvas , 6 + canvas_string_width (canvas , network_text ), 23 , & I_Lock_7x8 );
61
+ }
62
+ canvas_set_font (canvas , FontSecondary );
63
+ if (model -> active ) {
64
+ canvas_draw_str (canvas , 4 , 49 , "Broadcast Active" );
65
+ canvas_draw_icon (canvas , 78 , 41 , & I_Ok_btn_9x9 );
66
+ } else {
67
+ canvas_draw_str (canvas , 4 , 49 , "Broadcast Inactive" );
68
+ }
69
+ canvas_set_font (canvas , FontSecondary );
70
+ canvas_draw_str (canvas , 4 , 21 , "Press <- to run in background" );
71
+ canvas_set_font (canvas , FontSecondary );
72
+ char interval_str [20 ];
73
+ snprintf (interval_str , sizeof (interval_str ), "Ping Interval: %ds" , model -> interval );
74
+ canvas_draw_str (canvas , 4 , 62 , interval_str );
75
+
53
76
canvas_set_font (canvas , FontSecondary );
54
77
canvas_draw_str (canvas , 100 , 61 , "Config" );
55
78
canvas_draw_line (canvas , 100 , 51 , 127 , 51 );
@@ -107,6 +130,8 @@ FindMyMain* findmy_main_alloc(FindMy* app) {
107
130
{
108
131
model -> active = app -> state .beacon_active ;
109
132
model -> interval = app -> state .broadcast_interval ;
133
+ model -> show_mac = app -> state .show_mac ;
134
+ memcpy (model -> mac , app -> state .mac , sizeof (model -> mac ));
110
135
model -> type = app -> state .tag_type ;
111
136
},
112
137
false);
@@ -141,6 +166,22 @@ void findmy_main_update_active(FindMyMain* findmy_main, bool active) {
141
166
findmy_main -> view , FindMyMainModel * model , { model -> active = active ; }, true);
142
167
}
143
168
169
+ void findmy_main_toggle_mac (FindMyMain * findmy_main , bool show_mac ) {
170
+ furi_assert (findmy_main );
171
+ with_view_model (
172
+ findmy_main -> view , FindMyMainModel * model , { model -> show_mac = show_mac ; }, true);
173
+ }
174
+
175
+ void findmy_main_update_mac (FindMyMain * findmy_main , uint8_t * mac ) {
176
+ with_view_model (
177
+ findmy_main -> view ,
178
+ FindMyMainModel * model ,
179
+ {
180
+ memcpy (model -> mac , mac , sizeof (model -> mac ));
181
+ furi_hal_bt_reverse_mac_addr (model -> mac );
182
+ },
183
+ true);
184
+ }
144
185
void findmy_main_update_interval (FindMyMain * findmy_main , uint8_t interval ) {
145
186
furi_assert (findmy_main );
146
187
with_view_model (
0 commit comments