CCR mode and our implementation of the setpoint
Jef Driesen
jef at libdivecomputer.org
Sun Feb 8 14:34:58 PST 2015
On 06-02-15 23:16, Robert C. Helling wrote:
> quick answer: The problem is that it is not a _dive_ that is CCR or OC, it is
> really a moment in time. Actually, the realisation that it was a bad design
> idea to mark a whole dive (or even more stupid: a dive computer) with a dive
> mode (used to be dctype) is not very helpful in situations like bailout or
> decoing on OC (e.g. a habitat). The dive mode is really time based and should
> thus be handled by events. The function that you mention is there to move in
> that direction: It adds a corresponding event at t=0 to make the event based
> information (which is more fine grained) agree with the dive mode of the dive
> (or: dive computer). I was hoping to completely get rid of the dive mode
> eventually (in the per dive sense) as I think the doubled information about
> the dive mode has to be resolved in this direction.
Most dive computers have a divemode setting per dive. The Shearwater is one of
the exceptions here, with its divemode setting per sample.
I don't agree that a per dive divemode setting is a design mistake. In most
cases changing divemode during the dive simply doesn't make any sense. For
example, I don't know any device that supports switching from freedive/gauge to
oc/cc (or vice versa). The only scenarios that do make sense to me are the ones
you describe (e.g. bailout or deco). But I assume such a dive is still
considered a CC dive, right? It's still useful info, it just serves a different
purpose.
So I guess what we really want here is not to get rid of the per dive divemode
setting, but some way to indicate the switch from CC to OC. That could be done
with a per sample divemode (as the shearwater does) or a bailout event (as the
ostc does).
> But that is separate from the double semantic of SAMPLE_EVENT_PO2 which I was
> not aware of and which is simply bad. I am convinced, we need some event that
> has the meaning “this is a set-point change of a CCR with the special meaning
> of a set-point of zero being OC or actually non-CCR like e.g. PSCR).
>
> I can see that the problem is related to an earlier confusion we had between
> pO2 and O2setpoint (those were one variable at some point): Before we were
> dealing with sensor data, the only information about the gas a CCR diver was
> breathing, was the set point. But with sensor data (which we will be having
> also for pscr dives which will cause another minor headache) that is no
> longer true. So now, we use the set point only as a default for the actual
> pO2 if there is no better sensor data available.
>
> So what is the way to proceed? We need to disentangle the two event types:
> CCR set point changes and high/low pO2 warnings. Did we inherit this
> ambiguity from libdivecomputer or is that only using that event for the
> latter meaning? I wrote code that inserted these events in two places: The
> function you quote inserts them only at t=0 and those should thus be trivial
> to find. But there is also the profile context menu which adds set point
> changes. And that also adds these events.
See my response to Dirk's mail.
Jef
More information about the subsurface
mailing list