RTEMS 6.1-rc1
crc.h
1//==========================================================================
2//
3// crc.h
4//
5// Interface for the CRC algorithms.
6//
7//==========================================================================
8// ####ECOSGPLCOPYRIGHTBEGIN####
9// -------------------------------------------
10// This file is part of eCos, the Embedded Configurable Operating System.
11// Copyright (C) 2002, 2009 Free Software Foundation, Inc.
12//
13// eCos is free software; you can redistribute it and/or modify it under
14// the terms of the GNU General Public License as published by the Free
15// Software Foundation; either version 2 or (at your option) any later
16// version.
17//
18// eCos is distributed in the hope that it will be useful, but WITHOUT
19// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21// for more details.
22//
23// You should have received a copy of the GNU General Public License
24// along with eCos; if not, write to the Free Software Foundation, Inc.,
25// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26//
27// As a special exception, if other files instantiate templates or use
28// macros or inline functions from this file, or you compile this file
29// and link it with other works to produce a work based on this file,
30// this file does not by itself cause the resulting work to be covered by
31// the GNU General Public License. However the source code for this file
32// must still be made available in accordance with section (3) of the GNU
33// General Public License v2.
34//
35// This exception does not invalidate any other reasons why a work based
36// on this file might be covered by the GNU General Public License.
37// -------------------------------------------
38// ####ECOSGPLCOPYRIGHTEND####
39//==========================================================================
40//#####DESCRIPTIONBEGIN####
41//
42// Author(s): Andrew Lunn
43// Contributors: Andrew Lunn
44// Date: 2002-08-06
45// Purpose:
46// Description:
47//
48// This code is part of eCos (tm).
49//
50//####DESCRIPTIONEND####
51//
52//==========================================================================
53
54#ifndef _SERVICES_CRC_CRC_H_
55#define _SERVICES_CRC_CRC_H_
56
57#include <cyg/infra/cyg_type.h>
58
59#ifndef __externC
60# ifdef __cplusplus
61# define __externC extern "C"
62# else
63# define __externC extern
64# endif
65#endif
66
67// Compute a CRC, using the POSIX 1003 definition
68
69__externC cyg_uint32
70cyg_posix_crc32(unsigned char *s, int len);
71
72// Gary S. Brown's 32 bit CRC
73
74__externC cyg_uint32
75cyg_crc32(unsigned char *s, int len);
76
77// Gary S. Brown's 32 bit CRC, but accumulate the result from a
78// previous CRC calculation
79
80__externC cyg_uint32
81cyg_crc32_accumulate(cyg_uint32 crc, unsigned char *s, int len);
82
83// Ethernet FCS Algorithm
84
85__externC cyg_uint32
86cyg_ether_crc32(unsigned char *s, int len);
87
88// Ethernet FCS algorithm, but accumulate the result from a previous
89// CRC calculation.
90
91__externC cyg_uint32
92cyg_ether_crc32_accumulate(cyg_uint32 crc, unsigned char *s, int len);
93
94// 16 bit CRC with polynomial x^16+x^12+x^5+1
95
96__externC cyg_uint16
97cyg_crc16(unsigned char *s, int len);
98
99__externC cyg_uint16
100cyg_crc16_accumulate(cyg_uint16 crc, unsigned char *s, int len);
101
102#endif // _SERVICES_CRC_CRC_H_
103
104
105