Hi,
The Suunto Solution seems to be the only dc that doesn't support fingerprints. This annoys me because I can't fully rely on dc_device_set_fingerprint(3) and I like that function.
So I've added a hash function that creates a suunto solution fingerprint, then added the infrastructure to set, compare, and pass to the caller.
Caveat emptor! I haven't tested it because I don't have a suunto solution.
Downsides to using a hash function? It might be duplicated. However, given that this is a 128 bit hash, that's not terribly likely.
If this is ok, I can update the docs to reflect that setting the fingerprint is fully supported.
Best,
Kristaps
On 2017-01-19 23:06, Kristaps Dzonsons wrote:
The Suunto Solution seems to be the only dc that doesn't support fingerprints. This annoys me because I can't fully rely on dc_device_set_fingerprint(3) and I like that function.
So I've added a hash function that creates a suunto solution fingerprint, then added the infrastructure to set, compare, and pass to the caller.
The integration looks good, but the implementation of the hash function isn't portable. It depends for example on the endianess of the system and there might also be issues related to unaligned access. The fingerprint should always be identical and certainly independent of the underlying system.
I tested your code on a 64bit x86 and 32bit ARM system, and the generated fingerprints are different.
Caveat emptor! I haven't tested it because I don't have a suunto solution.
You can use the libdivecomputer simulator for testing:
http://libdivecomputer.org/simulator.html
I have test data available for (almost) every model supported by libdivecomputer.
Downsides to using a hash function? It might be duplicated. However, given that this is a 128 bit hash, that's not terribly likely.
I think the risk is pretty low, even with some very weak hash. Anyway, I wouldn't worry too much about collisions. The Suunto Solution is a very old model. I wouldn't be surprised if there are only a few users left.
If this is ok, I can update the docs to reflect that setting the fingerprint is fully supported.
Sure.
Jef