sys/checksum/doc.md
@defgroup sys_checksum Checksum @ingroup sys_hashes @brief Checksum function libraries
This module provides a number of checksum functions. Most notably is the @ref sys_checksum_crc16_ccitt and the @ref sys_checksum_ucrc16 modules which provide support for the CRC16 checksum.
@ref sys_checksum_crc16_ccitt only provides an implementation of the CCITT
flavor of CRC16 (polynomial @$ x^{16} + x^{12} + x^{5} + 1 @$) for big-endian
numbers with starting seed 0x1d0f (though others can be provided), while
@ref sys_checksum_ucrc16 is more generalized, since it takes the
hexadecimal representation of the polynomial as a parameter and provides
functions and standardized polynomials for both big- and little-endian
numbers.
The caveat of @ref sys_checksum_ucrc16 is that it is significantly slower (approximately factor 8) than @ref sys_checksum_crc16_ccitt since the latter is able to calculate the checksum byte-wise, while the first calculates needs to calculate it bit-wise. @ref sys_checksum_crc16_ccitt achieves this advantage by using a look-up table that provides the checksum for every possible byte-value. It thus trades of memory against speed. If your platform is rather small equipped in memory you should prefer the @ref sys_checksum_ucrc16 version.