Gr_crc16


#1

Hi all,

I need to check payload data with only 2 crc bytes. Unfortunately my
transmitter sends only data with 2 crc bytes. There is only the gr_crc32
module in gnuradio core with an algorithm that uses a table array with
256
elements. I want to ask if there is someone out there who has had a
similar
problem and implemented a gr_crc16 module? Please give me some help
because I
don’t know how was created this table and which algorithm was used?

Thanks in advance,
Luis


#2

Hi Luis,
There have been two flavors of 16 bit CRCs in use for a
long time and you probably need to determine which of these your
transmitter uses.
The clue is that the “CCITT” algorithm calls for the computed CRC to
be initialized to all ones, while for the “other” one (called “CRC16” in
the 70s when I was implementing HDLC the hard way) a zero initial
value is used. A quick set of Googles suggests both polynomials are
still in use.
The other discriminator is that CCITT is called “polynomial 0x1021”
while CRC16 is “0x8005”. In other notation CCITT is X^16 + X^12 + X^5 +
1.
If you don’t get a solution within a week, remind me by direct
mail, as I’ll be past a deadline then. Adding this to gr would be the
right speed for my old brain if somebody hasn’t already written it.

Regards,
Pete AD4L