Commit graph

291 commits

Author SHA1 Message Date
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
Miika Turkia
5adc3d2cfd Fix crash with converted DM5 log
If DM4 log file is converted to DM5, the sampleBlob is empty.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-03 11:02:58 -08:00
Miika Turkia
299133d7b1 Remove unused variables
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-18 06:08:41 +00:00
Miika Turkia
c7f803b878 Limit pressure and temperature values
Limit temperatures and cylinder pressures to somewhat sensible values.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-18 06:08:37 +00:00
Dirk Hohndel
1739042f34 Use cylinder use helper function
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-17 13:52:22 +00:00
Robert C. Helling
0d7c192e6e For CCR dives, the diluent cylinder is the current cylinder
Change the meaning that _the_ cylinder (as we treat it in OC dives) is the
diluent cylinder (rather than the O2 cylinder). This eliminates special
cases. Now, for CCR, we have to handle the O2 cylinder in addition
(rather than the diluent in addition).

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-17 11:45:06 +00:00
Dirk Hohndel
23304f69c0 Load and save the dc type for CCR dives
Oddly we already had code to load this from XML, but nothing else.
This makes the load from XML work like the rest of our code and adds the
save to XML plus the load and save for the git format.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-16 23:20:39 +00:00
Dirk Hohndel
202c5cbfeb Save CCR cylinder use in XML and git
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-16 22:13:12 +00:00
Miika Turkia
5807e4589f Initial support for Suunto DM5 import
This implements import from Suunto DM5 database, but there is something
wrong with some of the sample dives in the database I received as
sample. It seems that we should detect missing/bogus data and treat it
properly as divelogs.de does with the same dives. Anyway, when we have
proper data, this import appears to produce sensible results.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-15 08:15:15 -08:00
Dirk Hohndel
d6b4109409 Load and save extra data in Subsurface XML format
Includes test dive to test missing attributes and the overall syntax.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-07 12:59:15 -08:00
Miika Turkia
70d4b25146 Fix reading of CDATA elements
If the element we are parsing is of type XML_CDATA_SECTION_NODE, we have
to check the node's name from the parent.

Fixes #718

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-28 07:25:29 -07:00
Dirk Hohndel
71826cf776 Make the buffers const char *
Addresses a warning, but also seems more correct.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-26 20:37:12 -07:00
Miika Turkia
8fcc074b49 Support for importing Poseidon MK6 logs
This patch adds support for importing the logs from a Poseidon MK6
rebreather. This DC produces logs that contain of a .txt file that has
all the meta data and a .csv file that contains the sample readings. The
CSV file is different from the others in that it has a line per each
sample reading at given time. Thus we have to merge all the lines from
one point in time into one sample reading of ours.

[Dirk Hohndel: addressed some compiler warnings]

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-26 20:33:50 -07:00
Robert C. Helling
d42b07a30a Set dctype of dives with pO2 setpoint information to CCR.
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-22 06:14:24 -07:00
Robert C. Helling
5f44fdd9cf Make planner work again for CCR dives
The latest CCR patches had rendered the planner not usable for CCR dives.
This patch corrects this (and reenables the CCR set point column for
segments). The problem was that a new member setpoint of struct divepoint
had been introduced, but there was already po2 which had the same meaning.
This patch merges the two and renames them setpoint to prevent future
confusion.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-19 07:07:07 -07:00
Linus Torvalds
df4e26c875 Start sanitizing gaschange event information
Decode the gasmix data into a sane format when creating the event, and
add the (currently unused) ability to specify a gas change to a
particular cylinder rather than (or in addition to) the gasmix.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-12 07:45:37 -04:00
willem ferguson
46bb02e8fc CCR patch: Import and store oxygen sensor data
This patch allows the importing of oxygen sensor and setpoint data from
Poseidon CCR dive logs.
1) Change parse-xml.c to read up to three oxygen sensor values from xml.
   and to store the information in sample structures
2) Change parse-xml.c to read o2 setpoint values fro xml and to store
   it in sample structures
3) Change dive.c to delete all sensor and setpoint values where
   subsequent samples have sensor/setpoint values that are the same.
4) Change profile.c to store the sensor/setpoint values from the samples
   into plotinfo.
5) Change the sample Poseidon xml log in the dives directory to ensure
   the correct order and hierarchy of the dive and divecomputer nodes.

[Dirk Hohndel: minor cleanup, removed debug code, whitespace]

Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-11 07:12:04 -04:00
willem ferguson
d1c521ce5e CCR patch: adapt code for diluent cylinder pressures (3)
This patch implements the cylinder pressure calculations for diluent
gas in CCR dive computers. This is the third patch for achieving this.
The following were performed:

1) Add two lines to try_to_fill_sample() in parse-xml so that
   diluent cylinder pressures are stored from XML dive log file
   into structures of sample.
2) Add one line to populate_plot_entries() in profile.c so that
   the diluent cylinder pressures are copied from structures of
   sample to structures of plot_info.
3) add three constant #defines in profile.h
4) change populate_pressure_information() in gaspressures.c in
   order to take into account pressure calculations for the
   diluent cylinder, calling subordinate functions in the
   appropriate way.
5) change create_plot_info_new() in profile.c in order to initiate
   the pressure calculations for the diluent cylinder.
6) Implement two debugging functions (one in profile.c, another
   in gaspressures.c). These debugging functions are activated
   by means of #defines.

Two function calls dealing with oxygen pressure are currently commented
out.  They will be activated in the following patch that attends to CCR
oxygen partial pressure calculation.

[Dirk Hohndel: rather massive whitespace cleanup]

Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-09-11 08:32:10 -07:00
Robert C. Helling
9bf6100aa7 Accept negative pressure readings
Sometimes the planner can produce negative pressures (i.e. when the
cylinders are not properly configured) or when the usser ignored
gas management (for whatever reason). When such a dive gets saved and
reread we should not display a further "Strange pressure reading"
warning on the command line.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-17 08:10:42 -07:00
Miika Turkia
7bbe71ff33 Detect proper event type based on helium content
Select proper SAMPLE_EVENT_GASCHANGE "version" based on helium content
on the mix.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-12 08:05:09 -07:00
Miika Turkia
97597dfd97 Add type for gaschange events, if missing
Subsurface has saved gas change events without type attribute at some
point. Thus we need to add the type when reading in log files, if it is
missing. (Gas change logic relies on the type field nowadays.)

Fixes #617
Fixes #600

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-12 08:04:55 -07:00
Anton Lundin
848a5352c7 Add support divecomputer based TTS
Since earlier have we had support for our own calculated TTS. This adds
support for holding TTS values reported by a dive computer.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-09 13:22:00 -07:00
Dirk Hohndel
f297d9f91e Fix picture loading
Signed vs unsigned comparisons are such a pain. Since we want offsets to
be +/- 30 minutes around the dive we need to allow negative offsets - but
duration_t was defined as uint32_t.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-08 12:29:06 -07:00
Henrik Brautaset Aronsen
630ec88dd4 Be more consistent in partial pressure naming
Lets just use pO₂ instead of PO2, ppO2, ppO₂, PO₂.
They all mean the same, but it's better to be
consistent

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-23 06:48:54 +08:00
Dirk Hohndel
0c8dbc2061 Simplify code
Since trimspace() null terminates the string, we can simply use strdup()
here.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-11 19:02:49 -07:00
Willem Ferguson
a0f5a74847 Provide for a dive_computer_type variable within dc structure
This patch lays the foundation for differentiating
 between open-circuit(OC)dives and rebreather dives
 (CCR). The following were done:
 1) In dive.h add an enum type dive_computer_type
 2) In dive.h add two more fields to the dc structure:
    a) dctype  (an enum field indicating dc type)
    b) no_o2sensor (indicating number of o2 sensors for this dc)
 3) In parse-xml.c add a function trimspace that strips any
    whitespace from a string. This is used by two functions:
    utf8_string as well as by get_dc_type, described below.
    The pointer to buffer is not changed in order to ensure
    consistency when the buffer is freed.
 4) In parse-xml.c add a function get_dc_type. This parses the
    dc_type string from xml and assigns an enum value which will
    later be returned to the function that parses
    the dc variables.

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-11 18:49:28 -07:00