When trying to send a command, the first attempt always fails. We receive the echo, but no data packet. A second attempt usually works, but we always get back the same data packet. That's cleary wrong. Now, when comparing the data packets with those of the Tusa application, I noticed something very interesting. When we request the first packet (page 0x0000), we get: W: 520000 R: 520000 R: 00880124056202000250002890470824...19202720002000200020002000204145 The Tusa application also request this page, but the response is completely different: W: 520000 R: 520000 R: 22182224222322092203220522112210...0000000000f021fc0000000000000045 The response we get is identical to the response that the Tusa application gets for page 0x0052: W: 520052 R: 520052 R: 00880124056202000250002890470824...19202720002000200020002000204145 The only difference here is the echo of the command. But the echo should be ignored, because it's generated by the pc interface, and not send by the dive computer. This is easily verified by the fact that we always receive an echo, even without a dive computer connected (e.g. only the pc interface). Notice how the command type (first byte) and page number (last byte) are identical (0x52) for this request! I suspect that somehow the command type ends up being interpreted as the page number. That would explain why we're always getting the same response: as far as the device is concerned we're always requesting page 0x52. This is probably also related to the fact that the device doesn't respond after the first request. It's not impossible that if the first command wasn't received correctly and we resend the command, the device receives something that contains parts of both attempts. By sending the command and reading the echo byte by byte instead of all at once, the above problem disappears.
Overview ======== Libdivecomputer is a cross-platform and open source library for communication with dive computers from various manufacturers. The official web site is: http://www.libdivecomputer.org/ The sourceforge project page is: http://sourceforge.net/projects/libdivecomputer/ Installation ============ On UNIX-like systems (including Linux, Mac OS X, MinGW), use the autotools based build system. Run the following commands from the top directory (containing this file) to configure, build and install the library and utilities: $ ./configure $ make $ make install If you downloaded the libdivecomputer source code directly from the git source code repository, then you need to create the configure script as the first step: $ autoreconf --install To uninstall libdivecomputer again, run: $ make uninstall Support ======= Please send bug reports, feedback or questions to the mailing list: http://libdivecomputer.org/cgi-bin/mailman/listinfo/devel or contact me directly: jef@libdivecomputer.org License ======= Libdivecomputer is free software, released under the terms of the GNU Lesser General Public License (LGPL). You can find a copy of the license in the file COPYING.
Description
Languages
C
98.3%
M4
1.2%
Makefile
0.5%