diff --git a/bootloader/crc_patch.py b/bootloader/crc_patch.py index 59ec6befb14a5dc625139e8042363ce2ac86f3ed..4ba61e8e93c2360a82ca4990a807f21bf19b44df 100755 --- a/bootloader/crc_patch.py +++ b/bootloader/crc_patch.py @@ -1,16 +1,29 @@ #!/usr/bin/env python3 import sys -import crc16 + +try: + import crc16 + crcfun = crc16.crc16xmodem +except ImportError: + try: + import crcmod + crcfun = crcmod.predefined.mkCrcFun('xmodem') + except ImportError: + try: + import crcelk + crcfun = crcelk.CRC_XMODEM.calc_bytes + except ImportError: + raise Exception('Could not find a CRC implementation. Tried: crc16, crcmod, crcelk.') def main(): data = open(sys.argv[1], 'rb').read() - crc = crc16.crc16xmodem(data) + crc = crcfun(data) # print(crc) padded = data + bytes([crc >> 8, crc & 0xFF]) - crc = crc16.crc16xmodem(padded) + crc = crcfun(padded) # print(crc) open(sys.argv[1], 'wb').write(padded)