gsutil-mirrors / crcmod

Unofficial mirror of crcmod (https://bitbucket.org/cmcqueen1975/crcmod). This repository may disappear, so do not depend on it.
MIT License
4 stars 7 forks source link

Issue with crc check #2

Open giusmos opened 9 months ago

giusmos commented 9 months ago

Hi all, I would like to implement the following matlab crc check algorithm in Python using crcmod library:

crc8 = comm.CRCGenerator('Polynomial','z^8 + z^2 + z + 1', 'InitialConditions',1,'DirectMethod',true,'FinalXOR',1);
codeword = crc8([0; 0; 1; 0; 0; 1; 1; 1; 1; 0; 1; 0; 0; 1; 1; 1]);
crc= codeword(end-8+1:end)';

I have implemented it in the following way in python:

crc8_func = crcmod.mkCrcFun(0x107, initCrc=1, rev=False, xorOut=1)
crc_received = [0,0,1,0,0,1,1,1,1,0,1,0,0,1,1,1]
crc = crc8_func(bytes(crc_received))

The expected result should be:

10010001 (binary) or 145 (decimal) or 91 (hex)

But instead I get:

10101001 in binary. Do you know what I am doing wrong?

Thanks in advance for the help.

giusmos commented 9 months ago

I have found the error, it should be initCRC=0 and xorOut=0xFF.

crc8_func = crcmod.mkCrcFun(0x107, rev=False, initCrc=0, xorOut=0xFF)