From 28e3413ff66552f392fecee25068d634cdfe59fc Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 20 Oct 2018 14:12:15 -0400 Subject: Add 'location_t' data structure Instead of having people treat latitude and longitude as separate things, just add a 'location_t' data structure that contains both. Almost all cases want to always act on them together. This is really just prep-work for adding a few more locations that we track: I want to add a entry/exit location to each dive (independent of the dive site) because of how the Garmin Descent gives us the information (and hopefully, some day, other dive computers too). Signed-off-by: Linus Torvalds --- core/libdivecomputer.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'core/libdivecomputer.c') diff --git a/core/libdivecomputer.c b/core/libdivecomputer.c index acc6478b2..a4c21b423 100644 --- a/core/libdivecomputer.c +++ b/core/libdivecomputer.c @@ -569,7 +569,7 @@ static void set_dc_serial(struct divecomputer *dc, const char *serial) dc->deviceid = calculate_string_hash(serial); } -extern degrees_t parse_degrees(char *buf, char **end); +extern void parse_location(char *, location_t *); static void parse_string_field(struct dive *dive, dc_field_string_t *str) { @@ -591,14 +591,12 @@ static void parse_string_field(struct dive *dive, dc_field_string_t *str) /* GPS data? */ if (!strncmp(str->desc, "GPS", 3)) { char *line = (char *) str->value; - degrees_t latitude, longitude; + location_t location; - latitude = parse_degrees(line, &line); - if (*line == ',') line++; - longitude = parse_degrees(line, &line); + parse_location(line, &location); - if (latitude.udeg && longitude.udeg) - dive->dive_site_uuid = create_dive_site_with_gps(str->value, latitude, longitude, time(NULL)); + if (location.lat.udeg && location.lon.udeg) + dive->dive_site_uuid = create_dive_site_with_gps(str->value, &location, time(NULL)); } } #endif -- cgit v1.2.3-70-g09d2