Diff for /libelwix/src/crc.c between versions 1.6 and 1.6.36.1

version 1.6, 2019/12/30 18:11:16 version 1.6.36.1, 2024/10/10 23:53:00
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004 - 2019Copyright 2004 - 2024
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 67  const crcPoly_t crc_Poly[] = { Line 67  const crcPoly_t crc_Poly[] = {
         { 16, (u_int) 0x8005, "CRC-16-IBM" },           { 16, (u_int) 0x8005, "CRC-16-IBM" }, 
         { 24, (u_int) 0x864CFB, "CRC-24-Radix64" },           { 24, (u_int) 0x864CFB, "CRC-24-Radix64" }, 
         { 30, (u_int) 0x2030B9C7, "CRC-30-CDMA" },           { 30, (u_int) 0x2030B9C7, "CRC-30-CDMA" }, 
        { 32, (u_int) 0x04C11DB7, "CRC-32-802.3" }        { 32, (u_int) 0x04C11DB7, "CRC-32-802.3" },
         { 16, (u_int) 0x1021, "CRC-16-CCITT" },
         { 16, (u_int) 0x8408, "CRC-16-XMODEM" }
 };  };
   
   
Line 103  crcReflect(u_int crcNum, u_char crcBits) Line 105  crcReflect(u_int crcNum, u_char crcBits)
 u_int  u_int
 crcCalc(u_char * __restrict psBuf, u_int bufLen, u_char crcBits, u_char RevOpts, u_int initCRC, u_int xorCRC)  crcCalc(u_char * __restrict psBuf, u_int bufLen, u_char crcBits, u_char RevOpts, u_int initCRC, u_int xorCRC)
 {  {
        const u_int bits = sizeof(int) * 8 - crcBits;        u_int bits = sizeof(int) * 8;
         u_int poly, crchibit, crc;          u_int poly, crchibit, crc;
         register u_int i, j, b, ch;          register u_int i, j, b, ch;
   
Line 112  crcCalc(u_char * __restrict psBuf, u_int bufLen, u_cha Line 114  crcCalc(u_char * __restrict psBuf, u_int bufLen, u_cha
         switch (crcBits) {          switch (crcBits) {
                 case 1:                  case 1:
                         poly = crc_Poly[0].poly_num;                          poly = crc_Poly[0].poly_num;
                           bits -= crc_Poly[0].poly_bits;
                         break;                          break;
                 case 4:                  case 4:
                         poly = crc_Poly[1].poly_num;                          poly = crc_Poly[1].poly_num;
                           bits -= crc_Poly[1].poly_bits;
                         break;                          break;
                 case 5:                  case 5:
                         poly = crc_Poly[2].poly_num;                          poly = crc_Poly[2].poly_num;
                           bits -= crc_Poly[2].poly_bits;
                         break;                          break;
                 case 6:                  case 6:
                         poly = crc_Poly[3].poly_num;                          poly = crc_Poly[3].poly_num;
                           bits -= crc_Poly[3].poly_bits;
                         break;                          break;
                 case 7:                  case 7:
                         poly = crc_Poly[4].poly_num;                          poly = crc_Poly[4].poly_num;
                           bits -= crc_Poly[4].poly_bits;
                         break;                          break;
                 case 8:                  case 8:
                         poly = crc_Poly[5].poly_num;                          poly = crc_Poly[5].poly_num;
                           bits -= crc_Poly[5].poly_bits;
                         break;                          break;
                 case 10:                  case 10:
                         poly = crc_Poly[6].poly_num;                          poly = crc_Poly[6].poly_num;
                           bits -= crc_Poly[6].poly_bits;
                         break;                          break;
                 case 11:                  case 11:
                         poly = crc_Poly[7].poly_num;                          poly = crc_Poly[7].poly_num;
                           bits -= crc_Poly[7].poly_bits;
                         break;                          break;
                 case 12:                  case 12:
                         poly = crc_Poly[8].poly_num;                          poly = crc_Poly[8].poly_num;
                           bits -= crc_Poly[8].poly_bits;
                         break;                          break;
                 case 15:                  case 15:
                         poly = crc_Poly[9].poly_num;                          poly = crc_Poly[9].poly_num;
                           bits -= crc_Poly[9].poly_bits;
                         break;                          break;
                 case 16:                  case 16:
                         poly = crc_Poly[10].poly_num;                          poly = crc_Poly[10].poly_num;
                           bits -= crc_Poly[10].poly_bits;
                         break;                          break;
                 case 24:                  case 24:
                         poly = crc_Poly[11].poly_num;                          poly = crc_Poly[11].poly_num;
                           bits -= crc_Poly[11].poly_bits;
                         break;                          break;
                 case 30:                  case 30:
                         poly = crc_Poly[12].poly_num;                          poly = crc_Poly[12].poly_num;
                           bits -= crc_Poly[12].poly_bits;
                         break;                          break;
                 case 32:                  case 32:
                         poly = crc_Poly[13].poly_num;                          poly = crc_Poly[13].poly_num;
                           bits -= crc_Poly[13].poly_bits;
                         break;                          break;
                   case 161:
                           poly = crc_Poly[14].poly_num;
                           bits -= crc_Poly[14].poly_bits;
                           crcBits = crc_Poly[14].poly_bits;
                           break;
                   case 162:
                           poly = crc_Poly[15].poly_num;
                           bits -= crc_Poly[15].poly_bits;
                           crcBits = crc_Poly[15].poly_bits;
                           break;
                 default:                  default:
                         elwix_SetErr(EINVAL, "crcCalc(): Unsupported CRC method!!!");                          elwix_SetErr(EINVAL, "crcCalc(): Unsupported CRC method!!!");
                         return -1;                          return -1;
Line 190  crcCalc(u_char * __restrict psBuf, u_int bufLen, u_cha Line 216  crcCalc(u_char * __restrict psBuf, u_int bufLen, u_cha
   
   
 /*  /*
 * crc16_ext() - Checksum ver.2 calculation in X/Y modem communication * crc16_xy() - Checksum calculation in X/Y modem communication
  *   *
  * @buf = Data for calculation   * @buf = Data for calculation
  * @bufLen = Length of data   * @bufLen = Length of data
  * return: Checksum   * return: Checksum
  */   */
 u_short  u_short
crc16_ext(u_char * __restrict buf, int bufLen)crc16_xy(u_char * __restrict buf, int bufLen)
 {  {
         u_short crc, x;          u_short crc, x;
         register u_short i;          register u_short i;
Line 227  crc16_ext(u_char * __restrict buf, int bufLen) Line 253  crc16_ext(u_char * __restrict buf, int bufLen)
 }  }
   
 /*  /*
 * crc16() - Checksum calculation in X/Y modem communication * crc16_ccitt() - Checksum calculation
  *   *
  * @buf = Data for calculation   * @buf = Data for calculation
  * @bufLen = Length of data   * @bufLen = Length of data
  * return: Checksum   * return: Checksum
  */   */
 u_short  u_short
crc16(u_char * __restrict buf, int bufLen)crc16_ccitt(u_char * __restrict buf, int bufLen)
 {  {
         u_short crc;          u_short crc;
         register u_char i;          register u_char i;

Removed from v.1.6  
changed lines
  Added in v.1.6.36.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>