2
2
#include "constants.h"
3
3
4
4
#include <furi.h>
5
+ #include <furi_hal_power.h>
5
6
#include <gui/gui.h>
6
7
#include <string.h>
7
8
@@ -41,14 +42,14 @@ static void render_callback(Canvas* const canvas, void* context) {
41
42
42
43
switch (gps_uart -> speed_units ) {
43
44
case KPH :
44
- snprintf (buffer , 64 , "%.2f km " , (double )(gps_uart -> status .speed * KNOTS_TO_KPH ));
45
+ snprintf (buffer , 64 , "%.2f Km/h " , (double )(gps_uart -> status .speed * KNOTS_TO_KPH ));
45
46
break ;
46
47
case MPH :
47
- snprintf (buffer , 64 , "%.2f mi " , (double )(gps_uart -> status .speed * KNOTS_TO_MPH ));
48
+ snprintf (buffer , 64 , "%.2f Mi/h " , (double )(gps_uart -> status .speed * KNOTS_TO_MPH ));
48
49
break ;
49
50
case KNOTS :
50
51
default :
51
- snprintf (buffer , 64 , "%.2f kn " , (double )gps_uart -> status .speed );
52
+ snprintf (buffer , 64 , "%.2f Kn " , (double )gps_uart -> status .speed );
52
53
break ;
53
54
}
54
55
@@ -94,6 +95,14 @@ int32_t gps_app(void* p) {
94
95
95
96
FuriMessageQueue * event_queue = furi_message_queue_alloc (8 , sizeof (PluginEvent ));
96
97
98
+ uint8_t attempts = 0 ;
99
+ bool otg_was_enabled = furi_hal_power_is_otg_enabled ();
100
+ while (!furi_hal_power_is_otg_enabled () && attempts ++ < 5 ) {
101
+ furi_hal_power_enable_otg ();
102
+ furi_delay_ms (10 );
103
+ }
104
+ furi_delay_ms (200 );
105
+
97
106
GpsUart * gps_uart = gps_uart_enable ();
98
107
99
108
gps_uart -> mutex = furi_mutex_alloc (FuriMutexTypeNormal );
@@ -159,6 +168,8 @@ int32_t gps_app(void* p) {
159
168
160
169
gps_uart_init_thread (gps_uart );
161
170
gps_uart -> changing_baudrate = true;
171
+ furi_mutex_release (gps_uart -> mutex );
172
+ view_port_update (view_port );
162
173
break ;
163
174
case InputKeyRight :
164
175
gps_uart -> speed_units ++ ;
@@ -175,11 +186,10 @@ int32_t gps_app(void* p) {
175
186
}
176
187
}
177
188
}
178
-
179
- view_port_update (view_port );
180
- furi_mutex_release (gps_uart -> mutex );
181
-
182
- if (gps_uart -> changing_baudrate ) {
189
+ if (!gps_uart -> changing_baudrate ) {
190
+ furi_mutex_release (gps_uart -> mutex );
191
+ view_port_update (view_port );
192
+ } else {
183
193
furi_delay_ms (1000 );
184
194
gps_uart -> changing_baudrate = false;
185
195
}
@@ -194,5 +204,9 @@ int32_t gps_app(void* p) {
194
204
furi_mutex_free (gps_uart -> mutex );
195
205
gps_uart_disable (gps_uart );
196
206
207
+ if (furi_hal_power_is_otg_enabled () && !otg_was_enabled ) {
208
+ furi_hal_power_disable_otg ();
209
+ }
210
+
197
211
return 0 ;
198
212
}
0 commit comments