Packets have a fixed size of 0x80 bytes, while a single page is only 0x20 bytes long. Thus each read operation always returns 4 pages at once. Now, if the end-of-profile pointer is not nicely aligned on a packet boundary, then the download algorithm won't arrive exactly at the start address of the ringbuffer, because the ringbuffer is properly aligned. The consequence is that we won't even notice we reached the ringbuffer boundary and happily continue reading outside the ringbuffer. Oops! This is fixed by aligning the end-of-profile pointer, which guarantees that all read operations are now nicely aligned to packet boundaries.
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%