diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2015-02-12 22:08:43 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-02-12 22:45:47 -0800 |
commit | d032c2a5c53820a3abec983ba9d61366c1f346fd (patch) | |
tree | e43a6c8c2950c04bb889733549093228bd277385 | |
parent | 9ca600e114cd5f12a17c6a2d39d445f76eb67b0a (diff) | |
download | subsurface-d032c2a5c53820a3abec983ba9d61366c1f346fd.tar.gz |
Change UEMIS infrastructure to use dive sites
Which is actually much more natural to the way the UEMIS stores things...
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | uemis-downloader.c | 7 | ||||
-rw-r--r-- | uemis.c | 23 | ||||
-rw-r--r-- | uemis.h | 2 |
3 files changed, 13 insertions, 19 deletions
diff --git a/uemis-downloader.c b/uemis-downloader.c index 7ce25cd57..b9ea57b62 100644 --- a/uemis-downloader.c +++ b/uemis-downloader.c @@ -638,12 +638,12 @@ static void parse_divespot(char *buf) uemis_set_divelocation(divespot, locationstring, latitude, longitude); } -static void track_divespot(char *val, int diveid, char **location, degrees_t *latitude, degrees_t *longitude) +static void track_divespot(char *val, int diveid, uint32_t dive_site_uuid) { int id = atoi(val); if (id >= 0 && id > nr_divespots) nr_divespots = id; - uemis_mark_divelocation(diveid, id, location, latitude, longitude); + uemis_mark_divelocation(diveid, id, dive_site_uuid); return; } @@ -783,7 +783,8 @@ static bool process_raw_buffer(device_data_t *devdata, uint32_t deviceid, char * if (for_dive) *for_dive = atoi(val); } else if (!log && dive && !strcmp(tag, "divespot_id")) { - track_divespot(val, dive->dc.diveid, &dive->location, &dive->latitude, &dive->longitude); + dive->dive_site_uuid = create_dive_site("from Uemis"); + track_divespot(val, dive->dc.diveid, dive->dive_site_uuid); } else if (dive) { parse_tag(dive, tag, val); } @@ -103,9 +103,7 @@ struct uemis_helper { int diveid; int lbs; int divespot; - char **location; - degrees_t *latitude; - degrees_t *longitude; + int dive_site_uuid; struct uemis_helper *next; }; static struct uemis_helper *uemis_helper = NULL; @@ -150,27 +148,22 @@ int uemis_get_weight_unit(int diveid) return 0; } -void uemis_mark_divelocation(int diveid, int divespot, char **location, degrees_t *latitude, degrees_t *longitude) +void uemis_mark_divelocation(int diveid, int divespot, uint32_t dive_site_uuid) { struct uemis_helper *hp = uemis_get_helper(diveid); hp->divespot = divespot; - hp->location = location; - hp->longitude = longitude; - hp->latitude = latitude; + hp->dive_site_uuid = dive_site_uuid; } void uemis_set_divelocation(int divespot, char *text, double longitude, double latitude) { struct uemis_helper *hp = uemis_helper; -#if 0 /* seems overkill */ - if (!g_utf8_validate(text, -1, NULL)) - return; -#endif while (hp) { - if (hp->divespot == divespot && hp->location) { - *hp->location = strdup(text); - hp->longitude->udeg = round(longitude * 1000000); - hp->latitude->udeg = round(latitude * 1000000); + if (hp->divespot == divespot) { + struct dive_site *ds = get_dive_site_by_uuid(hp->dive_site_uuid); + ds->name = strdup(text); + ds->longitude.udeg = round(longitude * 1000000); + ds->latitude.udeg = round(latitude * 1000000); } hp = hp->next; } @@ -14,7 +14,7 @@ extern "C" { void uemis_parse_divelog_binary(char *base64, void *divep); int uemis_get_weight_unit(int diveid); -void uemis_mark_divelocation(int diveid, int divespot, char **location, degrees_t *latitude, degrees_t *longitude); +void uemis_mark_divelocation(int diveid, int divespot, uint32_t dive_site_uuid); void uemis_set_divelocation(int divespot, char *text, double longitude, double latitude); typedef struct |