Commit graph

316 commits

Author SHA1 Message Date
Dirk Hohndel
6dd6e90684 Don't force the first divecomputer to CCR just because there's po2 value
The existing code was bogus as it used cur_dive->dc instead of cur_dc
(i.e., it always changed the first dive computer, even if the po2 was
found in a different one).

But fundamentally I consider this bogus. We are not doing the right thing
here - some dive computer send us pO2 values that are just the calculated
pO2 at a depth and NOT a setpoint, yet we pretend those are setpoints and
then turn these dives into CCR dives.

This needs to done differently.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-13 21:07:22 -08:00
Dirk Hohndel
1527cd0d05 More useful debug prints
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-13 14:45:38 -08:00
Dirk Hohndel
8c3efd2a22 Improve parsing of older XML files in order to auto create dive sites
While the existing code worked with a couple of hand crafted examples it
turns out it did a poor job with most of my files. Oops.

Depending on whether we find name or coordinates first, we need to
identify existing sites in either case and do the right thing.

The challeng here are multiple dives at the same site with slightly
different GPS coordinates. If the name is read first, these all get merged
into one (and we warn about the different GPS data). But if GPS gets read
first, we create separate dive sites with the same name.

We need a sane UI to consolidate these - but we can't completely automate
this... it's possible that these ARE the same site and the GPS data is
just imprecise (for example, multiple dives at the same time with GPS
locations from the Subsurface companion app). The user should be able to
either pick one of the GPS locations, or keep multiple (for example,
different buoyes for the same site and you want to keep the different
markers).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-13 12:42:44 -08:00
Dirk Hohndel
d4f2b72148 Make special backup when switching XML versions
Since the last few dozen commits change the format in irreversible ways
and could therefore be destructive and lose data for testers of the
development version, let's try to be extra careful and create "special"
backup files that aren't overwritten by subsequent backups. At least this
way people can go back to the previous state.

Of course people using the git backend don't have to worry about this as
they always can go back to any earlier save.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-12 23:35:52 -08:00
Dirk Hohndel
9ca600e114 Fix remaining gps references when parsing XML files
Clearly I didn't run into these before in my testing.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-12 21:30:57 -08:00
Dirk Hohndel
cd28e88bee Improve helper functions
Sometimes we want to create a dive site just based on a name, sometimes we
have both a name and GPS coordinates. Let's make a helper for either case.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-12 11:19:27 -08:00
Dirk Hohndel
4b15b9dfe9 Save and parse dive site structures to XML
Read and write divesite sections in the XML file.

Read divelogs of version 2 and create dive site structures on the fly.
Read version 3 files that have divesiteid instead of location / gps.

Saves version 3 files where dives no longer have location and gps but
instead refer to a divesiteid

The commit contains quite a few fprintf(stderr,...) in order to allow
better monitoring of the parsing / transforming of locations and gps to
dive sites. This will need to be removed later.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-12 11:19:27 -08:00
Anton Lundin
4a8e1485e1 DLF import: Correct format for NDL/TTS/Temp
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 12:33:49 +12:00
Anton Lundin
a4e06bb68e DLF import: Parse CNS value from event to.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 12:33:42 +12:00
Anton Lundin
87153cefaa DLF import: Add bailout flag to GF-changed event
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 12:33:38 +12:00
Anton Lundin
f0e68137d7 DLF import: parse and import surfacepressure
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 12:33:32 +12:00
Anton Lundin
bc3b56a969 DLF import: cleanup start mode decoding
As i thought, only 3 bits there where dive mode. Only look at those.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 12:33:23 +12:00
Miika Turkia
9c4a4cb9f8 Different log record types added for DLF import
The events we decode from DLF file are divided between log record types
(1 through 5). Thus we need to parse the events from all of these record
types.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 07:09:05 +12:00
Miika Turkia
f45602f4f8 Add missing DLF events
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 07:08:54 +12:00
Anton Lundin
8997fc88a3 DLF import: set no_o2sensors in CCR/PSCR mode
This triggers the rest of the code to treat the sensor value as our
ppO2 value.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-22 06:26:49 +12:00
Anton Lundin
e0c0ba4836 Set divemode to FREEDIVE now when we support that
Previous code mapped all our free dive inputs to OC, but now when we
actually have a FREEDIVE divemode, we can do better.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-22 06:02:34 +12:00
Robert C. Helling
e219bc70f8 Refactor dctype -> divemode
... and repair a failed rebase (sorry).

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-10 17:27:25 -08:00
Dirk Hohndel
6f25713408 Add more infrastructure for a separate dive table
This will allow us to download the dives from the dive computer into a
separate table just for that purpose and not into the main dive_table.

I really dislike the code that's in place that dates back to the very
earliest code written for Subsurface. Dumping the dives straight into the
main dive_table seems really stupid to me.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-09 15:06:18 -08:00
Anton Lundin
48b091c369 DLF import: Document unknown fields
Signed-off-by: Anton Lundin <glance@acc.umu.se>
2015-01-05 14:09:48 -08:00
Anton Lundin
ea7f861d3d DLF import: Decode and import ceiling information
This imports the ceiling information as stopdepth, our way of showing a
ceiling.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-05 14:08:55 -08:00
Anton Lundin
ac6e84c4fd DLF import: Decode and import temperature
These decodings and constants makes the numbers line up perfectly with
the numbers presented on wetnotes.com.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-05 14:08:42 -08:00
Anton Lundin
11542d84f7 DLF import: Decode and import NDL and TTS
The units of these values are guessed, but these values makes they match
up well with the values we calculate ourself.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-05 14:08:06 -08:00
Anton Lundin
5e56bbf2aa DLF import: Decode ppO2
This decodes the ppO2 value stored in the DLF files. It looks like the
DiveSoft Freedom computers always stores the ppO2 value, even for OC
dives.
This import only stores the ppO2 value from CCR and PSCR dives, where
these values comes from sensors and makes sense to store.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-05 14:07:54 -08:00
Anton Lundin
6f3ef2a964 DLF import: Restructure depth decoding
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-05 14:07:38 -08:00
Anton Lundin
da42b0b79d Record the cylinder idx on DLF gaschange
Use the new and fancy cylinder idx to record which cylinder we change to
on the DLF import.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-30 08:29:00 -08:00
Anton Lundin
46f4dbf93d Parse more DLF event types
These event types and names where found by sending different data to the
wetnotes.com web page.

I couldn't find where the setpoint settings where stored for the
SP-events, but when looking at the web page, it was clearly stating that
it saw a setpoint of 0.0 bar somewhere in there.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-29 16:22:06 -08:00
Anton Lundin
aad1fbcf56 Document a DLF-event type more.
This event type is found in the DLF file Robert got sent. The wetnotes
application can't display files containing this event type.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-29 16:21:50 -08:00
Anton Lundin
eda1234621 Use GASCHANGE2 constant for DLF GASCHANGE
And this encodes helium part to in the gaschange.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-29 16:21:33 -08:00
Anton Lundin
ab208c8fef Restructure DLF sample parsing
There are more event types than 1, so parse that as a unsigned char and
not as a bool.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-29 16:21:23 -08:00
Anton Lundin
ed91a6373c Verify the file header magic before importing DLF
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-29 09:25:13 -08:00
Anton Lundin
123b104d09 Add the dive start DLF event type
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-28 20:31:41 -08:00
Anton Lundin
c2be872f49 Parse info from the DLF header
After some reverse-engineering i managed to figure out a couple of
values stored in the dive header.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-28 20:31:14 -08:00
Anton Lundin
c5467b0d73 Parse time on only one place in DLF import
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-28 20:19:24 -08:00
Anton Lundin
e86d298734 Switch to using unsigned char in DLF import
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-28 20:19:19 -08:00
Dirk Hohndel
542ff7fc36 Fix compiler warning: parse_dlf_buffer needs to return 0 on success
Simply running off the end of a non-void function isn't nice.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-28 06:51:28 -08:00
Miika Turkia
eab52183a8 Set dive_table for Divesoft import
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-28 06:43:14 -08:00
Miika Turkia
b000e1b591 Support gaschange events on Divesoft Freedom import
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-28 06:42:49 -08:00
Miika Turkia
ce1f69f025 Initial support for Divesoft Freedom
This parses the dive profile from Divesoft Freedom log file. Only the
depth profile is currently supported. There is also something wrong as
the log file cannot be given as parameter but must be opened or imported
once Subsurface is running. Note that so far no metadata is parsed.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-28 06:41:21 -08:00
Miika Turkia
1e04aec7fd Preconfigured import of Subsurface CSV log file
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-26 08:43:43 -08:00
Miika Turkia
7ab71604ec Improve error messages on database imports
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-20 11:30:57 -08:00
Miika Turkia
028b937034 Import location from Cobalt DB
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-20 11:29:46 -08:00
Miika Turkia
f8fc3b9236 Remove placeholder location and buddy fields
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-20 11:29:42 -08:00
Miika Turkia
61002381e9 Stub for collecting visibility on Cobalt DB import
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-20 11:29:37 -08:00
Miika Turkia
82dea858eb Add buddy support to Cobalt DB import
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-20 11:29:32 -08:00
Miika Turkia
066e95bd38 Fix maximum depth on Cobalt import
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-20 11:29:26 -08:00
Miika Turkia
ff81672bd8 Include cylinder information in Cobalt import
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-20 11:29:14 -08:00
Miika Turkia
3be4aa47b5 Bare implementation of Cobalt Divelog Program
This implements importing of dive profile and temperature graph along
with some meta data from a Cobalt Divelog database.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-20 11:28:57 -08:00
Dirk Hohndel
d9be07670c Don't ignore when we can't parse a file
We are quite inconsistent when it comes to reporting back errors.
One case where this caused somewhat unexpected behavior was when the
user would try to open a .csv file by passing it as command line
argument. The file was silently ignored, but treated as if it had been
opened successfully.

Now we issue a somewhat reasonable error message.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-08 11:28:23 -08:00
Miika Turkia
7bc5a62ca1 Fix DM4/DM5 import
The implementation of import for DM5 removed the profileBlob from SQL
query, thus breaking the backward compatibility on import of old dives.
Need to have bot profile and sample blobs within the query...

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-04 16:27:08 -06:00
Miika Turkia
65432a1f6c Parse converted DM4 logs on DM5 import
"Converted" DM4 logs are not actually converted, only the database
structure is updated. According to Rainer we should be able to read the
dive profile from the old format in this case.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-03 11:03:03 -08:00