Module ddCommunication.protocols.LCPWirelessProtocol.HelperMethods
Expand source code
CRC_TABLE = [
'\x00',
'\x07',
'\x0E',
'\x09',
'\x1C',
'\x1B',
'\x12',
'\x15',
'\x38',
'\x3F',
'\x36',
'\x31',
'\x24',
'\x23',
'\x2A',
'\x2D',
'\x70',
'\x77',
'\x7E',
'\x79',
'\x6C',
'\x6B',
'\x62',
'\x65',
'\x48',
'\x4F',
'\x46',
'\x41',
'\x54',
'\x53',
'\x5A',
'\x5D',
'\xE0',
'\xE7',
'\xEE',
'\xE9',
'\xFC',
'\xFB',
'\xF2',
'\xF5',
'\xD8',
'\xDF',
'\xD6',
'\xD1',
'\xC4',
'\xC3',
'\xCA',
'\xCD',
'\x90',
'\x97',
'\x9E',
'\x99',
'\x8C',
'\x8B',
'\x82',
'\x85',
'\xA8',
'\xAF',
'\xA6',
'\xA1',
'\xB4',
'\xB3',
'\xBA',
'\xBD',
'\xC7',
'\xC0',
'\xC9',
'\xCE',
'\xDB',
'\xDC',
'\xD5',
'\xD2',
'\xFF',
'\xF8',
'\xF1',
'\xF6',
'\xE3',
'\xE4',
'\xED',
'\xEA',
'\xB7',
'\xB0',
'\xB9',
'\xBE',
'\xAB',
'\xAC',
'\xA5',
'\xA2',
'\x8F',
'\x88',
'\x81',
'\x86',
'\x93',
'\x94',
'\x9D',
'\x9A',
'\x27',
'\x20',
'\x29',
'\x2E',
'\x3B',
'\x3C',
'\x35',
'\x32',
'\x1F',
'\x18',
'\x11',
'\x16',
'\x03',
'\x04',
'\x0D',
'\x0A',
'\x57',
'\x50',
'\x59',
'\x5E',
'\x4B',
'\x4C',
'\x45',
'\x42',
'\x6F',
'\x68',
'\x61',
'\x66',
'\x73',
'\x74',
'\x7D',
'\x7A',
'\x89',
'\x8E',
'\x87',
'\x80',
'\x95',
'\x92',
'\x9B',
'\x9C',
'\xB1',
'\xB6',
'\xBF',
'\xB8',
'\xAD',
'\xAA',
'\xA3',
'\xA4',
'\xF9',
'\xFE',
'\xF7',
'\xF0',
'\xE5',
'\xE2',
'\xEB',
'\xEC',
'\xC1',
'\xC6',
'\xCF',
'\xC8',
'\xDD',
'\xDA',
'\xD3',
'\xD4',
'\x69',
'\x6E',
'\x67',
'\x60',
'\x75',
'\x72',
'\x7B',
'\x7C',
'\x51',
'\x56',
'\x5F',
'\x58',
'\x4D',
'\x4A',
'\x43',
'\x44',
'\x19',
'\x1E',
'\x17',
'\x10',
'\x05',
'\x02',
'\x0B',
'\x0C',
'\x21',
'\x26',
'\x2F',
'\x28',
'\x3D',
'\x3A',
'\x33',
'\x34',
'\x4E',
'\x49',
'\x40',
'\x47',
'\x52',
'\x55',
'\x5C',
'\x5B',
'\x76',
'\x71',
'\x78',
'\x7F',
'\x6A',
'\x6D',
'\x64',
'\x63',
'\x3E',
'\x39',
'\x30',
'\x37',
'\x22',
'\x25',
'\x2C',
'\x2B',
'\x06',
'\x01',
'\x08',
'\x0F',
'\x1A',
'\x1D',
'\x14',
'\x13',
'\xAE',
'\xA9',
'\xA0',
'\xA7',
'\xB2',
'\xB5',
'\xBC',
'\xBB',
'\x96',
'\x91',
'\x98',
'\x9F',
'\x8A',
'\x8D',
'\x84',
'\x83',
'\xDE',
'\xD9',
'\xD0',
'\xD7',
'\xC2',
'\xC5',
'\xCC',
'\xCB',
'\xE6',
'\xE1',
'\xE8',
'\xEF',
'\xFA',
'\xFD',
'\xF4',
'\xF3']
def calculate_crc(buffer, len):
buffer = buffer.decode("charmap")
crc8 = '\x00'
for i in range(len):
crc8 = CRC_TABLE[ord(buffer[i]) ^ ord(crc8)]
return crc8.encode("charmap")
def calculate_crc_arr(buffer):
length = len(buffer)
buffer = bytes(buffer).decode("charmap")
crc8 = '\x00'
for i in range(length):
crc8 = CRC_TABLE[ord(buffer[i]) ^ ord(crc8)]
return int.from_bytes(crc8.encode("charmap"), byteorder="little")
def ReadBit(BitField, bitNum):
"""
Reads a single bit from the bitfield and returns its value.
The bitnum parameter is which bit needs to be read.
bitnum starts at 0
"""
return (BitField & (1 << bitNum)) > 0
def WriteBit(BitField, bitnum, value: bool):
"""
Sets a single bit in the given BitField and returns said BitField with the bit set
bitnum starts at 0
"""
return (BitField & (~(1 << bitnum))) | (value << bitnum)
Functions
def ReadBit(BitField, bitNum)
-
Reads a single bit from the bitfield and returns its value. The bitnum parameter is which bit needs to be read.
bitnum starts at 0
Expand source code
def ReadBit(BitField, bitNum): """ Reads a single bit from the bitfield and returns its value. The bitnum parameter is which bit needs to be read. bitnum starts at 0 """ return (BitField & (1 << bitNum)) > 0
def WriteBit(BitField, bitnum, value: bool)
-
Sets a single bit in the given BitField and returns said BitField with the bit set
bitnum starts at 0
Expand source code
def WriteBit(BitField, bitnum, value: bool): """ Sets a single bit in the given BitField and returns said BitField with the bit set bitnum starts at 0 """ return (BitField & (~(1 << bitnum))) | (value << bitnum)
def calculate_crc(buffer, len)
-
Expand source code
def calculate_crc(buffer, len): buffer = buffer.decode("charmap") crc8 = '\x00' for i in range(len): crc8 = CRC_TABLE[ord(buffer[i]) ^ ord(crc8)] return crc8.encode("charmap")
def calculate_crc_arr(buffer)
-
Expand source code
def calculate_crc_arr(buffer): length = len(buffer) buffer = bytes(buffer).decode("charmap") crc8 = '\x00' for i in range(length): crc8 = CRC_TABLE[ord(buffer[i]) ^ ord(crc8)] return int.from_bytes(crc8.encode("charmap"), byteorder="little")