setting aside SAMPLE_EVENT_xxx ranges for applications
Jef Driesen
jef at libdivecomputer.org
Tue May 6 07:00:18 PDT 2014
On 2014-05-06 15:21, Dirk Hohndel wrote:
> On May 6, 2014, at 2:22 AM, Jef Driesen <jef at libdivecomputer.org>
> wrote:
>
>> On 2014-05-05 18:36, Dirk Hohndel wrote:
>>> chasing a bug in Subsurface today I realized that we are abusing
>>> existing event types internally since we don't have reserved event
>>> types
>>> that we know will not be used by libdivecomputer in the future.
>>> I guess there would be two solutions:
>>> a) we ask you to add events that you haven't seen in any dive
>>> computer,
>>> yet, so we can use them as synthetic events for our own purposes (so
>>> far
>>> this is only a "setpoint change" event that we use in the planner).
>>> b) you add a reserved range of numbers that we can simply redefine
>>> SAMPLE_EVENT_APP_RESERVED_1
>>> ...
>>> SAMPLE_EVENT_APP_RESERVED_8
>>> (or some reasonable number)
>>> Then we can do a
>>> #define SAMPLE_EVENT_SUBSURFACE_SP_CHANGE SAMPLE_EVENT_APP_RESERVED_1
>>> and all is well.
>>> What do you think?
>>
>> I'm not convinced this should be addressed with a change in
>> libdivecomputer. The right solution would be to define your own set of
>> events, and translate the libdivecomputer events to the corresponding
>> subsurface events. Why should other applications have to deal with
>> subsurface specific events? Imagine the mess we would end up with, if
>> all other applications start to request their own events too.
>
> Which is why I suggested SAMPLE_EVENT_APP_RESERVED_xx - so any app can
> use those as needed.
But then we introduce some unnecessary limit for libdivecomputer. Assume
we set SAMPLE_EVENT_APP_RESERVED to 255. That's probably plenty of room
for future events. But if we ever need more (unlikely, but who knows),
then I can't add more. Unless I change SAMPLE_EVENT_APP_RESERVED, and
break applications. So that's a bad solution for everyone.
>> Having said that, I think the easiest way to keep abusing the
>> libdivecomputer events (e.g. a direct one-to-one mapping) and add some
>> application defined events as well, is to set some high bit for your
>> application specific events. Right now, the highest value is 25
>> (SAMPLE_EVENT_GASCHANGE2) and that value is very unlikely to ever grow
>> past an 8 or 16 bits value.
>
> And no one will ever need more than 640k RAM.
Let's say, that by the time we need all 32 bits (about 16M possible
values) for the events, I probably lost my sanity already :-)
It's already a mess with just 25 events.
> Maybe you are right - we need to rip out the libdivecomputer event
> model and create our own and simply populate it from the data
> libdivecomputer provides us.
> That way we can deal with some of the other annoyances that we have
> inherited from libdivecomputer as well
I think that's the only correct solution.
Jef
More information about the devel
mailing list