From 37bacdd83df3b0affaea232745695c6b787c3cb8 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Thu, 30 Mar 2023 03:58:22 +0300 Subject: [PATCH] GPS NMEA -> Ability to see speed in Km/h Use right button to switch between modes --- applications/external/gps_nmea_uart/README.md | 1 + applications/external/gps_nmea_uart/gps.c | 13 ++++++++++++- applications/external/gps_nmea_uart/gps_uart.h | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/applications/external/gps_nmea_uart/README.md b/applications/external/gps_nmea_uart/README.md index 26a54a08f..129a6d0d8 100644 --- a/applications/external/gps_nmea_uart/README.md +++ b/applications/external/gps_nmea_uart/README.md @@ -12,6 +12,7 @@ repository. ## Modifications made by @xMasterX - Ability to change baudrate using Up button, hold button to switch between baudrates (9600, 57600, 115200) (i set 57600 as default) - Ok button will set backlight to always on mode, to disable press ok button again (it will restore default settings after app exit too) +- Long press Right button to change speed from knots to kilometers per hour - Exit from app using long press on back button instead of short press, may be useful in case you want to turn backlight on and accidentally click back ## Hardware Setup diff --git a/applications/external/gps_nmea_uart/gps.c b/applications/external/gps_nmea_uart/gps.c index 6df1de08f..0f4a7a1d5 100644 --- a/applications/external/gps_nmea_uart/gps.c +++ b/applications/external/gps_nmea_uart/gps.c @@ -37,7 +37,11 @@ static void render_callback(Canvas* const canvas, void* context) { canvas_draw_str_aligned(canvas, 96, 18, AlignCenter, AlignBottom, buffer); snprintf(buffer, 64, "%.1f", (double)gps_uart->status.course); canvas_draw_str_aligned(canvas, 21, 40, AlignCenter, AlignBottom, buffer); - snprintf(buffer, 64, "%.2f kn", (double)gps_uart->status.speed); + if(!gps_uart->speed_in_kms) { + snprintf(buffer, 64, "%.2f kn", (double)gps_uart->status.speed); + } else { + snprintf(buffer, 64, "%.2f km", (double)(gps_uart->status.speed * 1.852)); + } canvas_draw_str_aligned(canvas, 64, 40, AlignCenter, AlignBottom, buffer); snprintf( buffer, @@ -154,6 +158,13 @@ int32_t gps_app(void* p) { view_port_update(view_port); furi_mutex_release(gps_uart->mutex); break; + case InputKeyRight: + if(gps_uart->speed_in_kms) { + gps_uart->speed_in_kms = false; + } else { + gps_uart->speed_in_kms = true; + } + break; case InputKeyBack: processing = false; break; diff --git a/applications/external/gps_nmea_uart/gps_uart.h b/applications/external/gps_nmea_uart/gps_uart.h index 70ef53de6..5a42b9c58 100644 --- a/applications/external/gps_nmea_uart/gps_uart.h +++ b/applications/external/gps_nmea_uart/gps_uart.h @@ -33,6 +33,7 @@ typedef struct { uint32_t baudrate; bool changing_baudrate; bool backlight_on; + bool speed_in_kms; GpsStatus status; } GpsUart;