feat(pm3py): project scaffolding with CRC-16/A and protocol constants

This commit is contained in:
michael
2026-03-15 22:11:38 -07:00
commit 22dc438464
10 changed files with 296 additions and 0 deletions

17
tests/test_crc.py Normal file
View File

@@ -0,0 +1,17 @@
from pm3py.protocol import crc16_a
def test_crc16_a_empty():
assert crc16_a(b"") == 0x6363 # init 0xC6C6 reflected = 0x6363
def test_crc16_a_known_vector():
# Verified against C implementation: compute_crc(CRC_14443_A, ...)
# "123456789" is the standard CRC check string
data = b"123456789"
assert crc16_a(data) == 0xBF05
def test_crc16_a_ping_preamble():
# A CMD_PING preamble: magic=0x61334d50, length|ng=0x8020, cmd=0x0109
preamble = bytes.fromhex("504d3361208001090102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f")
crc = crc16_a(preamble)
assert isinstance(crc, int)
assert 0 <= crc <= 0xFFFF