File: /usr/src/linux/include/net/irda/crc.h
1 /*********************************************************************
2 *
3 * Filename: crc.h
4 * Version:
5 * Description: CRC routines
6 * Status: Experimental.
7 * Author: Dag Brattli <dagb@cs.uit.no>
8 * Created at: Mon Aug 4 20:40:53 1997
9 * Modified at: Sun May 2 20:25:23 1999
10 * Modified by: Dag Brattli <dagb@cs.uit.no>
11 *
12 ********************************************************************/
13
14 #ifndef IRDA_CRC_H
15 #define IRDA_CRC_H
16
17 #include <linux/types.h>
18
19 #define INIT_FCS 0xffff /* Initial FCS value */
20 #define GOOD_FCS 0xf0b8 /* Good final FCS value */
21
22 extern __u16 const irda_crc16_table[];
23
24 /* Recompute the FCS with one more character appended. */
25 static inline __u16 irda_fcs(__u16 fcs, __u8 c)
26 {
27 return (((fcs) >> 8) ^ irda_crc16_table[((fcs) ^ (c)) & 0xff]);
28 }
29
30 /* Recompute the FCS with len bytes appended. */
31 unsigned short crc_calc( __u16 fcs, __u8 const *buf, size_t len);
32
33 #endif
34