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. */ irda_fcs(__u16 fcs,__u8 c)25static 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 irda_calc_crc16( __u16 fcs, __u8 const *buf, size_t len); 32 33 #endif 34