/********************************************************************** | |
* | |
* 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 | |
#define FALSE 0 | |
#define TRUE !FALSE | |
/* | |
* Select the CRC standard from the list that follows. | |
*/ | |
#define CRC32 | |
#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 | |
void crcInit(void); | |
crc crcSlow(unsigned char const message[], int nBytes); | |
crc crcFast(unsigned char const message[], int nBytes); | |
#endif /* _crc_h */ |