diff options
author | Diego Elio Pettenò <flameeyes@flameeyes.eu> | 2016-02-13 01:08:32 +0100 |
---|---|---|
committer | Diego Elio Pettenò <flameeyes@flameeyes.eu> | 2016-02-13 01:08:32 +0100 |
commit | f507bb35dcd72a147f4f795464e034dfac929d05 (patch) | |
tree | 85e12c5fd61b88f02c7dfc9184fc0789cdbe6014 /glucometerutils/drivers/lifescan_common.py | |
parent | Update documentation, reference the new glucometer-protocols repository. (diff) | |
download | glucometerutils-f507bb35dcd72a147f4f795464e034dfac929d05.tar glucometerutils-f507bb35dcd72a147f4f795464e034dfac929d05.tar.gz glucometerutils-f507bb35dcd72a147f4f795464e034dfac929d05.tar.bz2 glucometerutils-f507bb35dcd72a147f4f795464e034dfac929d05.tar.lz glucometerutils-f507bb35dcd72a147f4f795464e034dfac929d05.tar.xz glucometerutils-f507bb35dcd72a147f4f795464e034dfac929d05.tar.zst glucometerutils-f507bb35dcd72a147f4f795464e034dfac929d05.zip |
Diffstat (limited to 'glucometerutils/drivers/lifescan_common.py')
-rw-r--r-- | glucometerutils/drivers/lifescan_common.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/glucometerutils/drivers/lifescan_common.py b/glucometerutils/drivers/lifescan_common.py index 9a60ab6..f37903a 100644 --- a/glucometerutils/drivers/lifescan_common.py +++ b/glucometerutils/drivers/lifescan_common.py @@ -26,3 +26,27 @@ class InvalidSerialNumber(exceptions.Error): """The serial number is not as expected.""" def __init__(self, serial_number): self.message = 'Serial number %s is invalid.' % serial_number + + +def crc_ccitt(data): + """Calculate the CRC-16-CCITT with LifeScan's common seed. + + Args: + data: (bytes) the data to calculate the checksum of + + Returns: + (int) The 16-bit integer value of the CRC-CCITT calculated. + + This function uses the non-default 0xFFFF seed as used by multiple + LifeScan meters. + """ + crc = 0xffff + + for byte in data: + crc = (crc >> 8) & 0xffff | (crc << 8) & 0xffff + crc ^= byte + crc ^= (crc & 0xff) >> 4 + crc ^= (((crc << 8) & 0xffff) << 4) & 0xffff + crc ^= (crc & 0xff) << 5 + + return (crc & 0xffff) |