On Saturday, July 20, 2019, 9:10:36 AM, Tomasz Mon wrote:
> On Sat, Jul 20, 2019 at 5:37 AM Tomasz Mon <deso...@gmail.com> wrote:
>> The advantage of 1) over 2) is the ability to be able, if the CRC is
>> incorrect, to tell what the correct CRC should have been.
>> Approach 2) allows only to veify if the CRC is correct - but at the
>> advantage of being able to take full bytes as input.

> Approach 2) is now implemented [1].

One of the properties of LFSRs is that a 1 bit in the input toggles a
completely predictable set of register bits *at any point in the
future*. This isn't often useful for most CRC caculations on variable
sized input, as the cost of working out which those bits are vastly
outweighs most other methods.

But here we have a fixed 11 bit input, so we don't need to carry
around such a big table:

int crc5(int v)
{
  static const char ival = 0x08;
  static const char bvals[11] = {
    0x1f, 0x1d, 0x1c, 0x0e, 0x07, 0x11, 0x1a, 0x0d, 0x14, 0x0a, 0x05
  };

  int rv = ival;
  for ( int i=0 ; i<11 ; i++ ) {
    if (v & (1<<(10-i))) rv ^= bvals[i];
  }
  return rv;
}

(Tested and produces same values as USB spec's example perl script.)

> [1] https://code.wireshark.org/review/#/c/34025/
> ___________________________________________________________________________
> 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-requ...@wireshark.org?subject=unsubscribe 




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-requ...@wireshark.org?subject=unsubscribe

Reply via email to