Mares Smart Apnea

Jef Driesen jef at libdivecomputer.org
Wed Sep 9 04:41:55 PDT 2015


On 2015-09-04 12:25, Giorgio Marzano wrote:
> Right now, I noticed a bug in the mares_iconhd_get_model function, line 
> 120
> of mares_iconhd.c, where sizeof should be actually strlen.
> 
> if (memcmp (device->version + 0x46, models[i].name, /*sizeof*/ strlen
> (models[i].name) - 1) == 0) {

This is not a bug. The name field is a 16 byte array, not a string. The 
initialization with a sting literal is convenient. The remainder of the 
array will automatically get padded with zero bytes, which is exactly 
what we need.

The correct fix is to add a new entry containing "Mares Smart". Then, 
the next question is: what's the correct model number? According to the 
model number in the memory dump (e.g. byte at offset 0), it's 0x10 or 
SMART:

                 {"Smart",       SMART},
+               {"Smart Apnea", SMART},
                 {"Icon HD",     ICONHD},

But then how do we distinguish the normal smart from the apnea variant? 
That will be important, because both appear to use a different data 
format. The strange thing here is that the normal smart already had a 
freedive mode. The main difference is that we now not only get a summary 
of each freedive in the session, but also a detailed profile.

I wonder if there is some kind of format indicator in the header that we 
can use to distinguish between dives with the enhanced apnea format and 
the more limited normal format.

Jef


More information about the devel mailing list