#include <avr/crc16.h>
This header file provides a optimized inline functions for calculating 16 bit cyclic redundancy checks (CRC) using common polynomials.
Functions | |
static __inline__ uint16_t | _crc16_update (uint16_t __crc, uint8_t __data) |
static __inline__ uint16_t | _crc_xmodem_update (uint16_t __crc, uint8_t __data) |
static __inline__ uint16_t | _crc_ccitt_update (uint16_t __crc, uint8_t __data) |
|
Optimized CRC-16 calcutation.
Polynomial: x^16 + x^15 + x^2 + 1 (0xa001) This CRC is normally used in disk-drive controllers. |
|
Optimized CRC-CCITT calculation.
Polynomial: x^16 + x^12 + x^5 + 1 (0x8408) This is the CRC used by PPP and IrDA. See RFC1171 (PPP protocol) and IrDA IrLAP 1.1
uint16_t crc_ccitt_update (uint16_t crc, uint8_t data) { data ^= lo8 (crc); data ^= data << 4; return ((((uint16_t)data << 8) | hi8 (crc)) ^ (uint8_t)(data >> 4) ^ ((uint16_t)data << 3)); } |
|
Optimized CRC-XMODEM calculation.
Polynomial: x^16 + x^12 + x^5 + 1 (0x1021) This is the CRC used by the Xmodem-CRC protocol. The following is the equivalent functionality written in C.
|