ideas for representing repetitive dives
Jef Driesen
jef at libdivecomputer.org
Fri Nov 6 04:40:49 PST 2015
Giorgio,
Sorry for the late response. I have been a bit occupied with other
things the past few weeks.
I don't think libdivecomputer provides only a "least common denominator"
experience. The majority of the information (and if you ask me, also the
most interesting info) is common between all dive computers. We're
talking about general info like the date/time, maxdepth, divetime, and
of course the sample data. Those are the features that are supported
today. There is no doubt room for improvement here, but I think we
already cover quite some info.
You are absolute right that most devices also provide some additional
info that is not supported by libdivecomputer at all. There are two
reasons for that. Usually not only the encoding, but also the data
itself is highly device specific. That makes it rather difficult to
support it through a common device independent api. The other reason is
a more practical one. I only have a limited amount of time available, so
I try to spend it on those features that benefits most users, instead of
some exotic feature that only a few users care about.
My point of view is that if you want to squeeze out every single bit of
information, then you're probably better of with a device specific
application (like the one from the manufacturer), instead of a general
purpose application.
Having said all that, I'm not saying no to the idea of vendor specific
additions, if it doesn't have a major impact on the rest of the api, but
it's definitely not at the top of my priority list.
Going back to the subdives topic, I'm not convinced supporting such a
concept can be implemented without a major impact on the rest of the
api. Altering the behavior of the api, depending on whether the
application enables some special subdive mode, is also not my favorite
option. Having two separate code paths will make the api more complex
and harder to maintain.
Right now the two approaches that seems to make the most sense to me is
to:
1. Merge all subdives into one large dive. That's basically what we are
doing now. The main disadvantage in your particular case, is the we
loose the min/max temperature of each subdives. We can't use the
DC_FIELD_XXX api here (because that's per dive) and we can't use the
sample temperature either (because we don't know at which sample the
min/max temperature was measured).
2. Deliver each subdive separately. Since each subdive is now a separate
dive we can use the DC_FIELD_XXX api for the min/max temperature. The
main drawback here might be the large amount of very short dives. But on
the other hand, applications can easily group (free)dives again based on
the date/time information. Similar to how subsurface does group dives
into trips. If necessary we can always introduce a new field containing
the index in the subdive session to assist there. Some dive computers
have a similar concept for scuba dives: the repetitive dive number.
These two options is also how most other dive computers record
freedives: record one large dive covering the entire freedive session,
or record each freedive in the session as a separate dive. The
difference usually depends on the depth and/or surface time thresholds
of the dive computers. A short surface time threshold will result in
individual dives, while a larger threshold will result in one large
dive.
(I already discussed the above with Giorgio, but for the mailing list it
will be useful to provide some more context.)
Jef
On 2015-10-26 10:43, Giorgio Marzano wrote:
> Hi,
>
> I didn’t had much spare time in the last weeks, but I kept thinking
> about
> the idea of representing repetitive dives on libdivecomputer
>
>
> Initially I wrote a simple spreadsheets to summarize the pros and cons
> of
>
> possible
>
> approaches
>
> . Colors represents the “severity” of a drawback or of an impact and
> are my
> guesses.
>
> We may use it to confront ideas.
>
> Generally speaking I think that the API
>
> should really
>
> include a way to pass free-form data to the
>
> app, while right now everything is codified in the "least common
> multiple"
> of all the DC capabilities.
>
> It may seems a weird thing to do, but consider that
>
> each dc may have specific information which the
>
> user (who chooses and bought that DC)
>
> may want to be represented on the profile.
>
> I am thinking about alarms and statistics, and also the whole “subdive”
> stuff.
>
>
> It could be a good idea to introduce some kind of USER_EVENT (or
> USER_SAMPLE) with name, type (int, float, bool, string) and value
> fields.
>
> Parsers should use the USER_EVENT to report info which the app may
> choose
> to skip, draw as it is or elaborate.
>
>
> Then we may define policies on such events. Such that 'alarms name
> shall
> start with "AL_'" or similar to hint the apps.
>
>
> This would be, in my opinion, a
>
> progressive and
>
> low-impact
>
> way
>
> to improve flexibility of the API.
>
> Referring to the attached table, such change would allow for a simple a
> straight forward implementation of the workaround
>
> for the drawbacks of the “Merge Subdives” approach or for the whole
> “report
> session and dives in an unstructured way” stuff.
>
>
>
> Let me know what do you think about it.
>
> G
More information about the devel
mailing list