00001 // -*- C++ -*- 00018 #ifndef COIL_CRC_H 00019 #define COIL_CRC_H 00020 00021 #include <sys/types.h> 00022 00023 namespace coil 00024 { 00025 /* 00026 * @if jp 00027 * 00028 * @brief CRC-16 計算関数 00029 * 00030 * CRC種類: CRC-CCITT 00031 * CRC多項式: x^16 + x^12 + x^5 + 1 (0x1021) 00032 * 初期値: 0xFFFF 00033 * 出力XOR: 0x0000 00034 * 入力ビット反転: なし 00035 * 出力ビット反転: なし 00036 * ビットシフト: 左 00037 * 00038 * @param str データストリーム 00039 * @param len データ長 00040 * 00041 * @return 計算結果 00042 * 00043 * @else 00044 * 00045 * @brief CRC-16 calculation function 00046 * 00047 * CRC type: CRC-CCITT 00048 * CRC generator polynomial: x^16 + x^12 + x^5 + 1 (0x1021) 00049 * Initial value: 0xFFFF 00050 * Output XOR: 0x0000 00051 * Input bit inversion: None 00052 * Output bit inversion: None 00053 * Bit shift: left 00054 * 00055 * @param str Data stream 00056 * @param len Data length 00057 * 00058 * @return Result calculation 00059 * 00060 * @endif 00061 */ 00062 unsigned short crc16(const char* str, size_t len); 00063 00103 unsigned long crc32(const char* str, size_t len); 00104 }; //namespace coil 00105 00106 #endif // COIL_CRC_H