def test_convert_to_lsb_list(self): bytes_list = convert_to_lsb_list(0x04030201, 4) self.assertEqual(len(bytes_list), 4) self.assertEqual(bytes_list[0], 0x80) ## 0b 1000 0000 self.assertEqual(bytes_list[1], 0x40) ## 0b 0100 0000 self.assertEqual(bytes_list[2], 0xC0) ## 0b 1100 0000 self.assertEqual(bytes_list[3], 0x20) ## 0b 0010 0000
def test_hw_crc8_calculate_3_reverse(self): data = 0x000300 dataSize = 24 poly = 0x1BF poly = reverse_number(poly, 8) bytes_list = convert_to_lsb_list(data, dataSize / 8) calc_crc = hw_crc8_calculate(bytes_list, poly, 0x00, 0x00) calc_crc = reverse_number(calc_crc, 8) self.assertEqual(calc_crc, 0x50) ## 80
def test_hw_crc8_calculate_1_reverse(self): data = 0x12 dataSize = 8 poly = 0xBF poly = reverse_number(poly, 8) bytes_list = convert_to_lsb_list(data, dataSize / 8) calc_crc = hw_crc8_calculate(bytes_list, poly, 0x00, 0x00) calc_crc = reverse_number(calc_crc, 8) self.assertEqual(calc_crc, 0x3F) ## 63
def calculateLSB(self, dataMask, polyMask): # return self.calculateLSBClassic(dataMask, polyMask) if dataMask.dataSize % 8 != 0: ## fast crc only supports full bytes return self.calculateLSBClassic(dataMask, polyMask) bytesList = convert_to_lsb_list(dataMask.dataNum, dataMask.dataSize / 8) poly = reverse_number(polyMask.dataNum, polyMask.dataSize) initReg = reverse_number(self.registerInit, polyMask.dataSize) xor_val = reverse_number(self.xorOut, polyMask.dataSize) calc_crc = hw_crc8_calculate(bytesList, poly, initReg, xor_val) return reverse_number(calc_crc, polyMask.dataSize)