Lightweight CRC16 checksum algorithms.
More...
Lightweight CRC16 checksum algorithms.
This CRC16 implementation does not use pre-calculated lookup tables and is thus very lightweight (memory-wise), but as a caveat slower (about factor 8) than the version with pre-calculated lookup tables.
Additionally compared to CRC16-CCITT this is a generalized implementation. One can easily exchange generator polynomials and starting seeds.
◆ UCRC16_CCITT_POLY_BE
#define UCRC16_CCITT_POLY_BE (0x1021) |
Various generator polynomials.
CRC16-CCITT polynomial (big-endian)
Definition at line 43 of file ucrc16.h.
◆ ucrc16_calc_be()
uint16_t ucrc16_calc_be |
( |
const uint8_t * |
buf, |
|
|
size_t |
len, |
|
|
uint16_t |
poly, |
|
|
uint16_t |
seed |
|
) |
| |
Calculate CRC16 (big-endian version)
- Parameters
-
[in] | buf | Start of memory are to checksum |
[in] | len | Number of bytes in buf to calculate checksum for |
[in] | poly | The generator polynomial for the checksum |
[in] | seed | The seed (starting value) for the checksum |
- Returns
- Checksum of the specified memory area based on
seed
and poly
- Note
- The return value is not the complement of the sum but the sum itself
◆ ucrc16_calc_le()
uint16_t ucrc16_calc_le |
( |
const uint8_t * |
buf, |
|
|
size_t |
len, |
|
|
uint16_t |
poly, |
|
|
uint16_t |
seed |
|
) |
| |
Calculate CRC16 (little-endian version)
- Parameters
-
[in] | buf | Start of memory are to checksum |
[in] | len | Number of bytes in buf to calculate checksum for |
[in] | poly | The generator polynomial for the checksum |
[in] | seed | The seed (starting value) for the checksum |
- Returns
- Checksum of the specified memory area based on
seed
and poly
- Note
- The return value is not the complement of the sum but the sum itself