1969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe/* 2969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * crc16.h - CRC-16 routine 3969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * 4969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * Implements the standard CRC-16: 5969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * Width 16 6969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * Poly 0x8005 (x^16 + x^15 + x^2 + 1) 7969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * Init 0 8969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * 9969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com> 10969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * 11969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * This source code is licensed under the GNU General Public License, 12969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe * Version 2. See the file COPYING for more details. 13969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe */ 14969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe 15969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe#ifndef __CRC16_H 16969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe#define __CRC16_H 17969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe 18969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboeextern unsigned short const crc16_table[256]; 19969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe 2025dfa848abbb6c35b4d45fabd5a8e82cb77fb285Jens Axboeextern unsigned short fio_crc16(const void *buffer, unsigned int len); 21969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe 22969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboestatic inline unsigned short crc16_byte(unsigned short crc, 23969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe const unsigned char data) 24969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe{ 25969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe return (crc >> 8) ^ crc16_table[(crc ^ data) & 0xff]; 26969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe} 27969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe 28969f7ed32353ade93ea30542a4993b75b94e3f8aJens Axboe#endif /* __CRC16_H */ 29