diff options
author | glerch <guido.lerch@gmail.com> | 2015-09-10 17:29:19 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-09-10 12:31:35 -0700 |
commit | 8e82e14b1ece64e0ecc87e6ff942605d4ed53ce7 (patch) | |
tree | d65885a059b67bbf72297fe37b1ad5d82a403574 /uemis-downloader.c | |
parent | e7fa81f9ea72068824547279ed838f17a28d2524 (diff) | |
download | subsurface-8e82e14b1ece64e0ecc87e6ff942605d4ed53ce7.tar.gz |
Uemis downloader: new logic for divespots
Changed the do_uemis_import to load divespots right after matching
the dive details.
Logic implemented to verify that we are not duplicating divespots by
comparing the uuid from get_dive_site_by_uuid(dive->dive_site_uuid)
with the one from get_dive_site_uuid_by_name
Signed-off-by: glerch <guido.lerch@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'uemis-downloader.c')
-rw-r--r-- | uemis-downloader.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/uemis-downloader.c b/uemis-downloader.c index 9abdccaae..ca35a0960 100644 --- a/uemis-downloader.c +++ b/uemis-downloader.c @@ -892,8 +892,11 @@ static bool process_raw_buffer(device_data_t *devdata, uint32_t deviceid, char * if (for_dive) *for_dive = atoi(val); } else if (!is_log && dive && !strcmp(tag, "divespot_id")) { - dive->dive_site_uuid = create_dive_site("from Uemis", dive->when); - track_divespot(val, dive->dc.diveid, dive->dive_site_uuid); + int divespot_id = atoi(val); + if (divespot_id != -1) { + dive->dive_site_uuid = create_dive_site("from Uemis", dive->when); + uemis_mark_divelocation(dive->dc.diveid, divespot_id, dive->dive_site_uuid); + } #if UEMIS_DEBUG & 2 fprintf(debugfile, "Created divesite %d for diveid : %d\n", dive->dive_site_uuid, dive->dc.diveid); #endif @@ -1202,6 +1205,20 @@ const char *do_uemis_import(device_data_t *data) fprintf(debugfile, "Matching divelog id %d from %s with dive details %d\n", dive->dc.diveid, dTime, iDiveToRead); #endif last_found_log_file_nr = dive_to_read; + int divespot_id = uemis_get_divespot_id_by_diveid(dive->dc.diveid); + if (load_uemis_divespot(mountpath, divespot_id)) { + struct dive_site *nds = get_dive_site_by_uuid(dive->dive_site_uuid); + struct dive_site *ods = NULL; + if (nds) { + (void)get_dive_site_uuid_by_name(nds->name, &ods); + if (ods) { + if (nds->uuid != ods->uuid) { + delete_dive_site(nds->uuid); + dive->dive_site_uuid = ods->uuid; + } + } + } + } } else { /* in this case we found a deleted file, so let's increment */ #if UEMIS_DEBUG & 2 |