summaryrefslogtreecommitdiff
path: root/recipes-navigation/gpsd/gpsd-3.23/0007-add-gll-vtg.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-navigation/gpsd/gpsd-3.23/0007-add-gll-vtg.patch')
-rw-r--r--recipes-navigation/gpsd/gpsd-3.23/0007-add-gll-vtg.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/recipes-navigation/gpsd/gpsd-3.23/0007-add-gll-vtg.patch b/recipes-navigation/gpsd/gpsd-3.23/0007-add-gll-vtg.patch
new file mode 100644
index 0000000..777c0ca
--- /dev/null
+++ b/recipes-navigation/gpsd/gpsd-3.23/0007-add-gll-vtg.patch
@@ -0,0 +1,74 @@
+From 596089b8582097c1f934a5d25035353f00118965 Mon Sep 17 00:00:00 2001
+From: Mykyta Dorokhin <mykyta.dorokhin@globallogic.com>
+Date: Tue, 28 Dec 2021 15:56:07 +0200
+Subject: [PATCH] add GLL and VTG to 'gpspipe -r' output in binary mode
+
+---
+ gpsd/pseudonmea.c | 37 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+diff --git a/gpsd/pseudonmea.c b/gpsd/pseudonmea.c
+index 2d63d0f..feb9867 100644
+--- a/gpsd/pseudonmea.c
++++ b/gpsd/pseudonmea.c
+@@ -171,6 +171,21 @@ void gpsd_position_fix_dump(struct gps_device_t *session,
+ * Differential base station ID */
+ (void)strlcat(bufp, ",", len);
+ nmea_add_checksum(bufp);
++
++ //$GNGGA,103527.00,4957.22994,N,03618.97862,E,1,12,0.89,180.3,M,17.0,M,,*4B
++ //$GNGLL,4957.22997,N,03618.97858,E,103526.00,A,A*7B
++ //we use the same values as in GGA sentence
++ char *bufgll = &bufp[strlen(bufp)];
++ (void)snprintf(bufgll, len,
++ "$GPGLL,%s,%c,%s,%c,%s,%c,A,",
++ lat_str,
++ ((session->gpsdata.fix.latitude > 0) ? 'N' : 'S'),
++ lon_str,
++ ((session->gpsdata.fix.longitude > 0) ? 'E' : 'W'),
++ time_str,
++ ((fixquality != FIX_QUALITY_INVALID) ? 'A' : 'V')
++ );
++ nmea_add_checksum(bufgll);
+ }
+ }
+
+@@ -183,6 +198,7 @@ static void gpsd_transit_fix_dump(struct gps_device_t *session,
+ char lat_str[BUF_SZ];
+ char lon_str[BUF_SZ];
+ char speed_str[BUF_SZ];
++ char kspeed_str[BUF_SZ];
+ char track_str[BUF_SZ];
+ char var_str[BUF_SZ];
+ char *var_dir = "";
+@@ -231,6 +247,27 @@ static void gpsd_transit_fix_dump(struct gps_device_t *session,
+ time2_str,
+ var_str, var_dir);
+ nmea_add_checksum(bufp);
++
++ //$GNRMC,114740.00,A,4957.22826,N,03618.97015,E,0.054,,091220,,,A*65
++ //$GNVTG,,T,,M,0.054,N,0.100,K,A*3D
++ //1 = Track made good
++ //2 = Fixed text 'T' indicates that track made good is relative to true north
++ //3 = Track made good, degrees Magnetic
++ //4 = Magnetic track indicator - 'M'
++ //5 = Speed over ground in knots
++ //6 = Fixed text 'N' indicates that speed over ground in in knots
++ //7 = Speed over ground in kilometers/hour
++ //8 = Fixed text 'K' indicates that speed over ground is in kilometers/hour
++ //we use the same values as in RMC sentence
++ char *bufvtg = &bufp[strlen(bufp)];
++ (void)snprintf(bufvtg, len,
++ "$GPVTG,%s,T,%s,M,%s,N,%s,K,A,",
++ track_str,
++ track_str,//it is not Magnetic track, but may be it is enough
++ speed_str,
++ f_str(session->gpsdata.fix.speed, "%.4f", kspeed_str)
++ );
++ nmea_add_checksum(bufvtg);
+ }
+
+ static void gpsd_binary_satellite_dump(struct gps_device_t *session,
+--
+2.25.1
+