1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun *========================================================================== 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * crc.h 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Interface for the CRC algorithms. 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun *========================================================================== 9*4882a593Smuzhiyun * SPDX-License-Identifier: eCos-2.0 10*4882a593Smuzhiyun *========================================================================== 11*4882a593Smuzhiyun *#####DESCRIPTIONBEGIN#### 12*4882a593Smuzhiyun * 13*4882a593Smuzhiyun * Author(s): Andrew Lunn 14*4882a593Smuzhiyun * Contributors: Andrew Lunn 15*4882a593Smuzhiyun * Date: 2002-08-06 16*4882a593Smuzhiyun * Purpose: 17*4882a593Smuzhiyun * Description: 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * This code is part of eCos (tm). 20*4882a593Smuzhiyun * 21*4882a593Smuzhiyun *####DESCRIPTIONEND#### 22*4882a593Smuzhiyun * 23*4882a593Smuzhiyun *========================================================================== 24*4882a593Smuzhiyun */ 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #ifndef _SERVICES_CRC_CRC_H_ 27*4882a593Smuzhiyun #define _SERVICES_CRC_CRC_H_ 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #include <linux/types.h> 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #ifndef __externC 32*4882a593Smuzhiyun # ifdef __cplusplus 33*4882a593Smuzhiyun # define __externC extern "C" 34*4882a593Smuzhiyun # else 35*4882a593Smuzhiyun # define __externC extern 36*4882a593Smuzhiyun # endif 37*4882a593Smuzhiyun #endif 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun uint16_t crc16_ccitt(uint16_t crc_start, unsigned char *s, int len); 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #endif /* _SERVICES_CRC_CRC_H_ */ 44