1 /****************************************************************************/
2 /* CRC32 stuff taken and adapted from lib_crc version 1.16 : */
3 /* Library : lib_crc */
5 /* Author : Lammert Bies 1999-2008 */
6 /* E-mail : info@lammertbies.nl */
7 /****************************************************************************/
9 /* the ATxmega series NVM CRC compatible polynom */
10 /* on ATxmega you can do this much faster in hardware */
11 #define P_32 0xEDB88320L
12 #define D_32 0xFFFFFFFFL
14 uint32_t crc_tab32_value(uint8_t address
) {
18 result
= (uint32_t)address
& 0xffL
;
20 if (result
& 0x00000001L
) result
= (result
>> 1) ^ P_32
;
21 else result
= result
>> 1;
27 uint32_t update_crc_32(uint32_t crc
, uint8_t c
) {
30 long_c
= (uint32_t)c
& 0xffL
;
33 crc
= (crc
>> 8) ^ crc_tab32_value(tmp
& 0xffL
);