Process ceiling events and store ceiling data in plot_info

This just creates the infrastructure but doesn't yet do anything useful
with the data.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Add plotting of the deco ceiling

Plot a red-shaded area on top of the depth profile to indicate the deco
ceiling (i.e., the area into which it isn't save to ascend at this point
of the dive.

So far this is of very limited use as libdivecomputer doesn't give us the
necessary information to plot this. I have sent patches for the OSTC to
Jef, hoping that he will include them in an update. I don't know how many
other dive computers will make this data available - I still need to add
this to our native Uemis support.

This commit also fixes two cut and paste errors in the previous commit
6540be9bd924 "Process ceiling events and store ceiling data in plot_info".

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Ignore last dive read from Uemis when starting with empty divelist

When the user closes the divelist and starts with an empty file it makes
no sense to assume that she only wants to download new dives since the
last time dives have been downloaded. So if the current divelist is empty
we ignore that information and start from the beginning again.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Instead of the ugly red boxes make the surface come down to ceiling

Based on suggestions from Linus (and a few iterations) we now simply have
the surface (i.e., background color / pattern) come down to where the
ceiling is. And we only do the angry red shading when the diver violates
the ceiling.

I think this looks much better.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Create the correct ceiling events for Uemis Zurich

The hold_depth field is rather misleading as it normally gives the safety
stop depth and only when the p_amb_tol goes "below the surface" does it
switch to showing the first deco stop depth.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Use correct surface pressure to detect ceiling with Uemis Zurich

The dive data contains the surface pressure prior to the dive, and that is
what we need to compare p_amb_tol to, not the standard 1013mbar.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fix cut and paste error in an error message

This has been around for a loooong time, I just happened to stamble across
it when reading the code...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Convert Uemis deco stop hold time to seconds

This is actually stored in minutes (which seems odd, given they allocate
16 bits for it... how much deco do these people want to be prepared for??)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Improve logic handling events

We now throw away redundant events, just as we throw away other redundant
data coming from the dive computer. Events are considered redundant if
they are less than 61 seconds apart and identical.

This also improves the display of the remaining events in the profile as
we now show the value of the event, if it is present (for example for a
deco event we show the duration of the deepest stop).

Finally, for events that define a range (so they set the beginning flag
and assume and end flag some time later) we no loger show the triangle but
assume that some other code handles visualizing them (as happens for the
ceiling events).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Merge branch 'ceiling-plot'

This enables plotting the ceiling in deco dives and also adds the
necessary code to the uemis importer. The only other dive computer this
has been tested with the OSTC and that needs a libdivecomputer patch in
order to provide the deco/ceiling information to Subsurface.

Fixes #5