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")