Aeris A300CS patches [V3]

Jef Driesen jef at libdivecomputer.org
Fri Oct 10 05:20:20 PDT 2014


On 2014-10-08 12:27, Dirk Hohndel wrote:
> On Tue, Oct 07, 2014 at 09:09:35PM +0200, Jef Driesen wrote:
>> On 02-10-14 19:49, Dirk Hohndel wrote:
>> So I would like to already go ahead and apply the other patches:
>> 
>> Patch #3 and #4 look good to me. As explained before, the DTR/RTS 
>> shouldn't
>> cause any problems for other devices, because if it did I would 
>> already had
>> received plenty of bug reports from Windows users. One minor issues is 
>> that
>> I'm pretty sure the rb_profile_end field of the layout is actually 
>> 0x3FE00
>> instead of 0x40000. That's why I asked you for a full memory dump.
> 
> Sorry, busy flying to Bonaire and diving.
> 
>> For patch #5, where did you get the density value 1003 from? According 
>> to
>> your patch, only the water type is stored in the data, but not the 
>> density.
>> Since this is optional value, maybe we better leave this as zero?
> 
> OK

I have attached a slightly modified versions of your four patches. If 
you're happy with the changes I made, I'll push them already to the 
master branch.

>> Patch #6 is the only one where I don't understand the logic. Are they 
>> really
>> using this very weird encoding, or are we missing something? Am I 
>> correct
>> that if only 1,2,3 or 4 tanks are enabled, these are always the first 
>> ones?
> 
> I spent an evening playing with the simulator and their app. Trying 
> every
> single value this is the logic that I found. I think it would be a nice
> feature not to get the unused tanks, but my confidence that this is 
> 100%
> correct is not 100% :-/. The problem is... the only way to get this 
> more
> widely tested is to add the code and wait if it works as expected in 
> all
> circumstances.

Does that mean you found the trick to make the Aeris application talk to 
the simulator? Can you share what you did, because I had so success so 
far.

I think I found the logic. Look at the three relevant bits:

001 -> 1
011 -> 1
101 -> 1
111 -> 1
010 -> 2
110 -> 2
100 -> 3
000 -> 4

There is clearly a pattern here. All 4 combinations that map to one tank 
have the lowest bit set. With two tanks, the second bit is set. And so 
on. Thus this code should do the trick:

if (data[0x39] & 0x04) {
     *((unsigned int *) value) = 1;
} else if (data[0x39] & 0x08) {
     *((unsigned int *) value) = 2;
} else if (data[0x39] & 0x10) {
     *((unsigned int *) value) = 3;
} else {
     *((unsigned int *) value) = 4;
}

I included this change already in the attached patches.

Originally I was puzzled by the fact that there are multiple ways to 
encode some values. And that makes no sense at all. But then I realized 
you probably made up data with the simulator to try all possible bit 
patterns. I guess that in real data, we'll only see these 4 bit 
patterns:

001 -> 1
010 -> 2
100 -> 3
000 -> 4

Jef
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-initial-support-for-the-Aeris-A300CS.patch
Type: text/x-diff
Size: 8334 bytes
Desc: not available
URL: <http://libdivecomputer.org/pipermail/devel/attachments/20141010/af8b4f16/attachment-0004.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Aeris-A300CS-add-support-for-NDL-deco-data.patch
Type: text/x-diff
Size: 1469 bytes
Desc: not available
URL: <http://libdivecomputer.org/pipermail/devel/attachments/20141010/af8b4f16/attachment-0005.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-Aeris-A300CS-add-reporting-of-water-type-fresh-salt.patch
Type: text/x-diff
Size: 1349 bytes
Desc: not available
URL: <http://libdivecomputer.org/pipermail/devel/attachments/20141010/af8b4f16/attachment-0006.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0004-Aeris-A300CS-detect-the-number-of-cylinders-used.patch
Type: text/x-diff
Size: 1858 bytes
Desc: not available
URL: <http://libdivecomputer.org/pipermail/devel/attachments/20141010/af8b4f16/attachment-0007.patch>


More information about the devel mailing list