I am looking at using a CRC to provide single bit error correction and multiple bit error detection. I have worked with CRCs before and know how to implement them. But I am lacking some of the theoretical background on how to choose the polynomial. My data packets are a total of 191 bits with a 31 bit header containing the CRC and 160 data bits. The header will have its own error correction. I am trying to determine an optimal CRC polynomial for the whole packet. Currently there is space in the header for a CRC-8. I may be able to find a few spare bits to make the CRC 10 or 12 bits if I have to.
Any pointers to show me how to evaluate a polynomial? Or any shortcuts that can be recommended? I guess this has been done before.