summaryrefslogtreecommitdiffstats
path: root/uemis-downloader.c
AgeCommit message (Collapse)Author
2015-09-17Uemis downloader: fix algorithm to find matching dive detailsGravatar glerch
Implemented suggestion from Dirk on how to deal with dive details not being found. Also cleaned up some unused variables, got rid of the last_log_file_nr because it's not needed anymore. One thing in question I still need to check is whether we really need to decrease the dive_to_read if we find deleted dive details, this is still in but I dont think it's really needed. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-16Uemis downloader: code cleanupGravatar glerch
Removing an unused variable Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-16Uuemis downloader: make sure import reacts to cancelGravatar glerch
Fixed a bug where the import did not react on the cancel button by adding the check into the helper function as well. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-15Uemis downloader: new memory calculationGravatar glerch
New calculation doing better UEMIS memory handling leading into more dives being loaded at the same time while assuring we are not overrunning the memory. Also added the dialog message back, this was actually a bug I missed introduced in one of the earlier patches Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-15Uemis - fixup debuggingGravatar glerch
No actualy code changes, just some small chnages within the debugging such as removing reference from my /User/glerch/ home dir etc. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-14Uemis - bugfix wrong variable addressingGravatar glerch
Made a mistage when adressing a referenced variable Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-14Uemis downloader: more code restructuringGravatar glerch
Another helper function to make things easier to read - but actually even this helper is still quite complex so I'm not done yet as I'd like to simplyfy this even further. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-14Uemis downloader: code restructuringGravatar glerch
In order to make the code more readable and easier to debug, this moves a logical block into its own function. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-14Uemis bugfixGravatar glerch
Fixed a bug in do_uemis_download when cleaning up delted dives. My test for valid dives was wrong. now counting the nr of dives in the download table. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-11Uemis downloader: code optimizationGravatar glerch
Cleaned up the code in do_uemis_import, this way it should run a little faster as I am doing the check if the returned divespot is valid at an earlier point Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-11Uemis downloader: cleaning up debug bitsGravatar glerch
At some point I would like to understand the logic behind the debug bits, so I am not messing around with them. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-10Uemis downloader: remove memory leaksGravatar glerch
Found more memory leaks Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-10Uemis downloader: assure empty divespots are not addedGravatar glerch
If the load_uemis_divespot returns false we must assure we delete the divespot that was created during process_raw_buffer Also added some comments Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-10Uemis downloader: remove code not needed anymoreGravatar glerch
Cleaning up track_uemis_divespot because this function is not needed anymore. As I am loading the divespots now within do_uemis_import, I also adjusted the memory calculation - this is not completed yet. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-10Uemis downloader: new logic for divespotsGravatar glerch
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>
2015-09-10Uemis downloader: deleting code because of design changeGravatar glerch
Deleting unnecessary code to support future design change coming with the next patch Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-10Uemis downloader: new routine to load divespotsGravatar glerch
Added load_uemis_divespot. This will be used later in do_uemis_import to improve the amount of divespots that must be loaded actually. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-10Uemis downloader: fix bug when creating dive siteGravatar glerch
Use dive->when when creating a dive site instead of time(NULL) as Dirk suggested Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-09Fix another memory leak on uemis downloaderGravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-09Fix memory leak on uemis downloaderGravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-09Initialize variable before useGravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-09Two small string changesGravatar Dirk Hohndel
Reported by Ettore Atalan on Trnasifex. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-08Uemis downloader: don't use unknown type u_int32_tGravatar Lubomir I. Ivanov
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-07Uemis downloader: code cleanupGravatar glerch
Do some cleanup of the code, there might be more of that as I am still learning the Uemis code Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-07Uemis downloader: original dive number supportGravatar glerch
- enabled capturing of the original Uemis dive number - previousely the object_id was passed to dive as dive number - I am using a workaround (not nice but effective) by parsing the dive_no out of a copy of inbuf before the object_id is parsed. The reason why is that the dive_no comes before the object_id hence the normal parsing would miss it. Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-07Uemis downloader: multiple buddy supportGravatar glerch
- changed the uemis_add_string to support a delimiter in parameter 3 - passing each nickname to the parse_tag function appending dive->buddy with concatentated nicknames separaed by comma Signed-off-by: glerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-06Uemis downloader: change download logicGravatar Guido Lerch
- change the way how dive logs are mapped to dive details in do_uemis_import() - dives deleted on the Uemis will not be downloaded anymore (added function uemis_delete_dive_by_diveid) - change the way the memory consumption was checked to acknowledge very large files (trying to predic on how many more files fit into the buffer by calculating an average consumbtion over each divelogs block) - minimal design change to support the above [Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: add helper function to dump bufferGravatar Guido Lerch
[Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: add heler function to delete diveGravatar Guido Lerch
[Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: parse dive_no as wellGravatar Guido Lerch
[Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: add helper function to estimate memory needsGravatar Guido Lerch
[Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: parse_divespot should return if it was successfulGravatar Guido Lerch
But sadly the code then doesn't actually use that return value, so this is not quite perfect, yet. [Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: add constant for maximum number of ANS filesGravatar Guido Lerch
[Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: fix and move helper functionGravatar Guido Lerch
This function is only used in the Uemis downloader, and it got broken when we switched to using a separate table for the downloaded dives. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: various changes to the debugging outputGravatar Guido Lerch
This shouldn't change any of the actualy code, except when it comes to debugging output. [Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-05Uemis downloader: small whitespace changeGravatar Guido Lerch
This makes the comments line up more nicely and fixes some other random issues in preparation for the following changes. [Dirk Hohndel: refactored one huge commit into smaller pieces] Signed-off-by: Guido Lerch <guido.lerch@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-08-25Make created dive site uuid deterministicGravatar Dirk Hohndel
Having random uuids seemed like a good idea, but there are several situations where they really cause problems. One is merging dive file imports from V2 logfiles. Another is testing such imports. Instead of making the uuid random we now hash the name and add the timestamp of the first dive associated with this dive site to the hash (first in this context is "first encountered" with no guarantee that it is the chronologically first). This way V2 imports create deterministic uuids but uuid conflicts are still extremely unlikely, even if the user has multiple dive sites with the same name. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-24Uemis downloader: create the req.txt file if it went missingGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-22Better error handlingGravatar Dirk Hohndel
Most of these will likely have no big impact, but it's better not to just ignore them as they could lead to crashes. Uemis downloader: if lseek fails, return 0 Uemis downloader: consistently check for failure to open req.txt Zip file handling: dup could fail Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-21Uemis downloader: open returns -1 on errorGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-21Fix a number of resource leaksGravatar Dirk Hohndel
Free memory returned from parse_mkvi_value() Free memory returned from printGPSCoords() Free memory allocated in added_list and removed_list Free memory allocated when adding suffix to dive site name Free memory allocated in cache_deco_state() Free memory allocated in build_filename() Free memory allocated in get_utf8() Free memory allocated in alloc_dive() Free memory allocated as cache but never used Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-05-21Merge branch 'v4.4-branch' into newmasterGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-30Uemis downloader: better error reportingGravatar Dirk Hohndel
Tell the user if Subsurface can't write to the req.txt file. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-30Uemis downloader: adjust the threshold for stopping downloadsGravatar Dirk Hohndel
A complete batch of divelog and dive data takes about 20% of the available space (depending on how long those dives are). This is a hack and I can see this potentially going wrong, but the alternative is to be even more conservative and that has its own set of problems as it causes us to need more "unplug, wait, plug in again and restart" cycles. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-30Uemis downloader: download additional dive data after every batchGravatar Dirk Hohndel
This looks like a fairly big change but it mostly just moves a block of code inside an earlier loop and adjust a few variables around it. The completely broken and insane Uemis download protocol distributes data across different "databases" on the dive computer. The "divelogs" are downloaded in batches of 10 (most of the time), and with this change every time one of those batches is downloaded we straight away get the matching "dive" entries. Hopefully this will avoid having the download abort (for lack of space) before all components are loaded. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-30Uemis downloader: get the right values set before bailingGravatar Dirk Hohndel
This caused us to not read the auxiliary information for up to the last ten dives that were downloaded from the SDA. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-30Uemis downloader: even with an empty divelist, check where to startGravatar Dirk Hohndel
If the user hits retry from within the download dialog, the dive list might still be empty but we still have to look for the best point to restart. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-30Uemis downloader: allow continuing download by clicking RetryGravatar Dirk Hohndel
When we run out of space in the Uemis filesystem we return an error. The user could reasonably unplug the SDA, insert it again and then retry to continue the download (that's what we tell them to do). In that case we need to make sure we start at the correct dive otherwise the same dives keep getting downloaded over and over again. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-30uemis-downloader - arguments in wrong orderGravatar Marcos CARDINOT
method's signature: void uemis_set_divelocation(int divespot, char *text, double longitude, double latitude) Signed-off-by: Marcos CARDINOT <mcardinot@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-21Uemis downloader: adjust the threshold for stopping downloadsGravatar Dirk Hohndel
A complete batch of divelog and dive data takes about 20% of the available space (depending on how long those dives are). This is a hack and I can see this potentially going wrong, but the alternative is to be even more conservative and that has its own set of problems as it causes us to need more "unplug, wait, plug in again and restart" cycles. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>