Wireshark mailing list archives
Re: Calculating CRC5 of 11-bit data
From: John Sullivan <jsethdev () kanargh org uk>
Date: Sun, 21 Jul 2019 19:05:35 +0100
On Sunday, July 21, 2019, 6:37:48 AM, Tomasz Mon wrote:
On Sat, Jul 20, 2019 at 8:42 PM John Sullivan <jsethdev () kanargh org uk> wrote:But here we have a fixed 11 bit input
I am sorry, but I have completely missed out there there are two places where CRC5 is calculated: * In SETUP, OUT, IN, PING and SOF the CRC5 is calculated on 11 bits * In SPLIT the CRC5 is calculated on 19 bits
Ok. That's still only two shortish options.
static const char ival = 0x08;
This looks like swapped bit order to me. The CRC5 value for 11-bits of 0 is 0x02.
Yes, I was using the USB docs convention which always lists values in that order (lsbit first, wire transmission order). If the internal representation is in the sane order, then it's a simple matter to flip the table. (It simplifies the processing a tiny bit too.) Here is a version which handles 11 or 19 bit input and returns the value in opposite order (it also assumes the input is presented in the opposite order compared to the first version): int crc5(int v, int vl) { // Only 0x02 and 0x1d really required, for 11 or 19 bit input static const char ivals[20] = { 0x00, 0x04, 0x06, 0x07, 0x13, 0x19, 0x1c, 0x0a, 0x01, 0x10, 0x0c, 0x02, 0x05, 0x12, 0x0d, 0x16, 0x0f, 0x17, 0x1b, 0x1d }; static const char bvals[19] = { 0x1e, 0x15, 0x03, 0x06, 0x0c, 0x18, 0x19, 0x1b, 0x1f, 0x17, 0x07, 0x0e, 0x1c, 0x11, 0x0b, 0x16, 0x05, 0x0a, 0x14 }; int rv = ivals[vl]; for ( int i=0 ; i<vl ; i++ ) { if (v & (1<<i)) rv ^= bvals[19-vl+i]; } return rv; } Again, I've cross-checked the output with the examples/code at: https://www.usb.org/sites/default/files/crcdes.pdf John -- Dead stars still burn ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Calculating CRC5 of 11-bit data Tomasz Moń (Jul 19)
- Re: Calculating CRC5 of 11-bit data Ross Jacobs (Jul 19)
- Re: Calculating CRC5 of 11-bit data Tomasz Moń (Jul 19)
- Re: Calculating CRC5 of 11-bit data Guy Harris (Jul 19)
- Re: Calculating CRC5 of 11-bit data Tomasz Moń (Jul 19)
- Re: Calculating CRC5 of 11-bit data Tomasz Moń (Jul 20)
- Re: Calculating CRC5 of 11-bit data John Sullivan (Jul 20)
- Re: Calculating CRC5 of 11-bit data Tomasz Moń (Jul 20)
- Re: Calculating CRC5 of 11-bit data John Sullivan (Jul 21)
- Re: Calculating CRC5 of 11-bit data Tomasz Moń (Jul 25)
- Re: Calculating CRC5 of 11-bit data Tomasz Moń (Jul 19)
- Re: Calculating CRC5 of 11-bit data Ross Jacobs (Jul 19)