blob: b0031b20ab2e608eb49c0d3ff72be8f82f677e82 [file] [log] [blame]
Wolfgang Denkebd3deb2006-04-16 10:51:58 +02001/*
2 *==========================================================================
3 *
4 * crc.h
5 *
6 * Interface for the CRC algorithms.
7 *
8 *==========================================================================
Wolfgang Denkfb7f0062013-07-08 12:11:35 +02009 * SPDX-License-Identifier: eCos-2.0
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020010 *==========================================================================
11 *#####DESCRIPTIONBEGIN####
12 *
13 * Author(s): Andrew Lunn
14 * Contributors: Andrew Lunn
15 * Date: 2002-08-06
16 * Purpose:
17 * Description:
18 *
19 * This code is part of eCos (tm).
20 *
21 *####DESCRIPTIONEND####
22 *
23 *==========================================================================
24 */
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020025
26#ifndef _SERVICES_CRC_CRC_H_
27#define _SERVICES_CRC_CRC_H_
28
29#include <linux/types.h>
30
31#ifndef __externC
32# ifdef __cplusplus
33# define __externC extern "C"
34# else
35# define __externC extern
36# endif
37#endif
38
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020039/* Compute a CRC, using the POSIX 1003 definition */
40extern uint32_t
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020041cyg_posix_crc32(unsigned char *s, int len);
42
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020043/* Gary S. Brown's 32 bit CRC */
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020044
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020045extern uint32_t
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020046cyg_crc32(unsigned char *s, int len);
47
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020048/* Gary S. Brown's 32 bit CRC, but accumulate the result from a */
49/* previous CRC calculation */
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020050
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020051extern uint32_t
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020052cyg_crc32_accumulate(uint32_t crc, unsigned char *s, int len);
53
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020054/* Ethernet FCS Algorithm */
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020055
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020056extern uint32_t
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020057cyg_ether_crc32(unsigned char *s, int len);
58
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020059/* Ethernet FCS algorithm, but accumulate the result from a previous */
60/* CRC calculation. */
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020061
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020062extern uint32_t
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020063cyg_ether_crc32_accumulate(uint32_t crc, unsigned char *s, int len);
64
Stefan Roese084ff1e2016-03-03 09:34:12 +010065/* 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020066
Stefan Roese084ff1e2016-03-03 09:34:12 +010067uint16_t crc16_ccitt(uint16_t crc_start, unsigned char *s, int len);
Markus Klotzbuecher387f5412006-03-30 13:40:55 +020068
Wolfgang Denkebd3deb2006-04-16 10:51:58 +020069#endif /* _SERVICES_CRC_CRC_H_ */