CFS_IO_LIB icon indicating copy to clipboard operation
CFS_IO_LIB copied to clipboard

TMTF_UpdateErrCtrlField strange CRC

Open hartib opened this issue 6 years ago • 0 comments

I have checked the CRC implementation of the TM with several other implementations and the one in TMTF_UpdateErrCtrlField seems to disagree with the others. If I read CCSDS 132.0-B-2 and http://reveng.sourceforge.net/crc-catalogue/16.htm#crc.cat-bits.16 correctly the CRC is the CRC-16/IBM-3740 (also CRC-16/CCITT-FALSE). For the test sequence 123456789 this is supposed to produce 0x29b1. So does the algorithm in https://github.com/nasa/channel-emulator/blob/master/lib/TM_Transfer_Frame.cpp and the one in https://github.com/Stefan-Korner/SpacePyLibrary/blob/master/UTIL/CRC.py.

TMTF_UpdateErrCtrlField however produces 0xa69d which corresponds to none of the CRCs with poly 0x1021.

To produce the right result the code in the function should be something like:

                byte = (reg >> 8) & 0xff;
                reg = (reg << 8);
                reg ^= crc_table[byte ^ *ptr];
                ptr++;

So, which of the CRCs is right?

harti

hartib avatar Dec 03 '18 09:12 hartib