aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-02-12 22:08:43 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-02-12 22:45:47 -0800
commitd032c2a5c53820a3abec983ba9d61366c1f346fd (patch)
treee43a6c8c2950c04bb889733549093228bd277385
parent9ca600e114cd5f12a17c6a2d39d445f76eb67b0a (diff)
downloadsubsurface-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.c7
-rw-r--r--uemis.c23
-rw-r--r--uemis.h2
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);
}
diff --git a/uemis.c b/uemis.c
index b6cadb848..1f4db09cf 100644
--- a/uemis.c
+++ b/uemis.c
@@ -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;
}
diff --git a/uemis.h b/uemis.h
index 32c4bdc24..ad4fa10de 100644
--- a/uemis.h
+++ b/uemis.h
@@ -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