This is a bugfix for package ugps.
Current code parses following GPRMC
$GPRMC,185834.0,A,2335.766399,S,04635.923564,W,0.0,,191017,0.0,E,A*20
as
position: -22.929440 -45.932056
with this fix it's being parsed correctly as
position: -23.596106 -46.598721
Signed-off-by: Giovani Milanez Espindola <gespindola@advantech-bb.com>
>From
092b311a3c8911ce9da3f913787b77397e88b4a8 Mon Sep 17 00:00:00 2001
From: Giovani Espindola <gespindola@advantech-bb.com>
Date: Thu, 19 Oct 2017 15:54:05 -0200
Subject: [PATCH] Only convert lat and lon to negative after parsing
float lat = strtof(nmea_params[3].str, NULL);
float lon = strtof(nmea_params[5].str, NULL);
- if (*nmea_params[4].str == 'S')
- lat *= -1.0;
- if (*nmea_params[6].str == 'W')
- lon *= -1.0;
-
degrees = floor(lat / 100.0);
minutes = lat - (degrees * 100.0);
lat = degrees + minutes / 60.0;
minutes = lon - (degrees * 100.0);
lon = degrees + minutes / 60.0;
+ if (*nmea_params[4].str == 'S')
+ lat *= -1.0;
+ if (*nmea_params[6].str == 'W')
+ lon *= -1.0;
+
snprintf(latitude, sizeof(latitude), "%f", lat);
snprintf(longitude, sizeof(longitude), "%f", lon);