| /********************************************************************** | |
| * | |
| * Filename: crc.h | |
| * | |
| * Description: A header file describing the various CRC standards. | |
| * | |
| * Notes: | |
| * | |
| * | |
| * Copyright (c) 2000 by Michael Barr. This software is placed into | |
| * the public domain and may be used for any purpose. However, this | |
| * notice must not be changed or removed and no warranty is either | |
| * expressed or implied by its publication or distribution. | |
| **********************************************************************/ | |
| #ifndef _crc_h | |
| #define _crc_h | |
| #include <stddef.h> | |
| /* | |
| * Select the CRC standard from the list that follows. | |
| */ | |
| #define CRC_CCITT | |
| #if defined(CRC_CCITT) | |
| typedef unsigned short crc; | |
| #define CRC_NAME "CRC-CCITT" | |
| #define POLYNOMIAL 0x1021 | |
| #define INITIAL_REMAINDER 0xFFFF | |
| #define FINAL_XOR_VALUE 0x0000 | |
| #define REFLECT_DATA FALSE | |
| #define REFLECT_REMAINDER FALSE | |
| #define CHECK_VALUE 0x29B1 | |
| #elif defined(CRC16) | |
| typedef unsigned short crc; | |
| #define CRC_NAME "CRC-16" | |
| #define POLYNOMIAL 0x8005 | |
| #define INITIAL_REMAINDER 0x0000 | |
| #define FINAL_XOR_VALUE 0x0000 | |
| #define REFLECT_DATA TRUE | |
| #define REFLECT_REMAINDER TRUE | |
| #define CHECK_VALUE 0xBB3D | |
| #elif defined(CRC32) | |
| typedef unsigned long crc; | |
| #define CRC_NAME "CRC-32" | |
| #define POLYNOMIAL 0x04C11DB7 | |
| #define INITIAL_REMAINDER 0xFFFFFFFF | |
| #define FINAL_XOR_VALUE 0xFFFFFFFF | |
| #define REFLECT_DATA TRUE | |
| #define REFLECT_REMAINDER TRUE | |
| #define CHECK_VALUE 0xCBF43926 | |
| #else | |
| #error "One of CRC_CCITT, CRC16, or CRC32 must be #define'd." | |
| #endif | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| void crcInit(void); | |
| crc crcSlow(unsigned char const message[], size_t nBytes); | |
| crc crcFast(unsigned char const message[], size_t nBytes); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* _crc_h */ |