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 Andrew Lunn 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 version. 16// 17// eCos is distributed in the hope that it will be useful, but WITHOUT ANY 18// WARRANTY; without even the implied warranty of MERCHANTABILITY or 19// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 20// for more details. 21// 22// You should have received a copy of the GNU General Public License along 23// with eCos; if not, write to the Free Software Foundation, Inc., 24// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 25// 26// As a special exception, if other files instantiate templates or use macros 27// or inline functions from this file, or you compile this file and link it 28// with other works to produce a work based on this file, this file does not 29// by itself cause the resulting work to be covered by the GNU General Public 30// License. However the source code for this file must still be made available 31// in accordance with section (3) of the GNU General Public License. 32// 33// This exception does not invalidate any other reasons why a work based on 34// this file might be covered by the GNU General Public License. 35// 36// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. 37// at http://sources.redhat.com/ecos/ecos-license/ 38// ------------------------------------------- 39//####ECOSGPLCOPYRIGHTEND#### 40//========================================================================== 41//#####DESCRIPTIONBEGIN#### 42// 43// Author(s): Andrew Lunn 44// Contributors: Andrew Lunn 45// Date: 2002-08-06 46// Purpose: 47// Description: 48// 49// This code is part of eCos (tm). 50// 51//####DESCRIPTIONEND#### 52// 53//========================================================================== 54 55#ifndef _SERVICES_CRC_CRC_H_ 56#define _SERVICES_CRC_CRC_H_ 57 58#if 0 59#include <cyg/infra/cyg_type.h> 60#else 61#include <stdint.h> 62typedef uint32_t cyg_uint32; 63typedef uint16_t cyg_uint16; 64#endif 65 66#ifndef __externC 67# ifdef __cplusplus 68# define __externC extern "C" 69# else 70# define __externC extern 71# endif 72#endif 73 74// Compute a CRC, using the POSIX 1003 definition 75 76__externC cyg_uint32 77cyg_posix_crc32(unsigned char *s, int len); 78 79// Gary S. Brown's 32 bit CRC 80 81__externC cyg_uint32 82cyg_crc32(unsigned char *s, int len); 83 84// Gary S. Brown's 32 bit CRC, but accumulate the result from a 85// previous CRC calculation 86 87__externC cyg_uint32 88cyg_crc32_accumulate(cyg_uint32 crc, unsigned char *s, int len); 89 90// Ethernet FCS Algorithm 91 92__externC cyg_uint32 93cyg_ether_crc32(unsigned char *s, int len); 94 95// Ethernet FCS algorithm, but accumulate the result from a previous 96// CRC calculation. 97 98__externC cyg_uint32 99cyg_ether_crc32_accumulate(cyg_uint32 crc, unsigned char *s, int len); 100 101// 16 bit CRC with polynomial x^16+x^12+x^5+1 102 103__externC cyg_uint16 104cyg_crc16(unsigned char *s, int len); 105 106#endif // _SERVICES_CRC_CRC_H_ 107 108 109 110