diff --git a/common/crc.c b/common/crc.c index 0237fb36a..22bfad035 100644 --- a/common/crc.c +++ b/common/crc.c @@ -126,3 +126,11 @@ uint32_t CRC8Legic(uint8_t *buff, size_t size) { crc_update2(&crc, buff[i], 8); return reflect8(crc_finish(&crc)); } +// width=8 poly=0x107, init=0x2C refin=true refout=true xorout=0x0000 check=0 name="CRC-8/CARDX" +uint32_t CRC8Cardx(uint8_t *buff, size_t size) { + crc_t crc; + crc_init_ref(&crc, 8, 0x107, 0x2C, 0, true, true); + for (size_t i = 0; i < size; ++i) + crc_update2(&crc, buff[i], 8); + return crc_finish(&crc); +} diff --git a/common/crc.h b/common/crc.h index 6dcfe918f..772c278b8 100644 --- a/common/crc.h +++ b/common/crc.h @@ -73,4 +73,6 @@ uint32_t CRC4Legic(uint8_t *buff, size_t size); // Calculate CRC-8/Legic checksum uint32_t CRC8Legic(uint8_t *buff, size_t size); +// Calculate CRC-8/Cardx checksum +uint32_t CRC8Cardx(uint8_t *buff, size_t size); #endif /* __CRC_H */