def test_convert_to_msb_list(self): bytes_list = convert_to_msb_list(0x04030201, 4) self.assertEqual(len(bytes_list), 4) self.assertEqual(bytes_list[0], 0x04) self.assertEqual(bytes_list[1], 0x03) self.assertEqual(bytes_list[2], 0x02) self.assertEqual(bytes_list[3], 0x01)
def test_hw_crc8_calculate_msb_xor(self): data = 0x0D00C0F0FFFFFF dataSize = 56 poly = 0x1D xorOut = 0x8F bytes_list = convert_to_msb_list(data, dataSize / 8) calc_crc = hw_crc8_calculate(bytes_list, poly, 0x00, xorOut) self.assertEqual(calc_crc, 0x90)
def calculateMSB(self, dataMask, polyMask): # return self.calculateMSBClassic(dataMask, polyMask) if dataMask.dataSize % 8 != 0: ## fast crc only supports full bytes return self.calculateMSBClassic(dataMask, polyMask) bytesList = convert_to_msb_list(dataMask.dataNum, dataMask.dataSize / 8) return hw_crc8_calculate(bytesList, polyMask.dataNum, self.registerInit, self.xorOut)
def test_hw_crc16_calculate_param_reflect(self): data = 0x030201 dataSize = 24 poly = 0x1BF msb_bytes_list = convert_to_msb_list( data, dataSize / 8 ) param_crc = hw_crc16_calculate_param( msb_bytes_list, poly, 0x00, 0x00, False, True ) self.assertEqual( param_crc, 12084 ) ## check relation reflect_bits_list( msb_bytes_list ) calc_crc = hw_crc16_calculate( msb_bytes_list, poly, 0x00, 0x00 ) self.assertEqual( param_crc, calc_crc )
def test_hw_crc16_calculate_param_reverse(self): data = 0x030201 dataSize = 24 poly = 0x1BF msb_bytes_list = convert_to_msb_list( data, dataSize / 8 ) param_crc = hw_crc16_calculate_param( msb_bytes_list, poly, 0x00, 0x00, True, False ) self.assertEqual( param_crc, 15082 ) ## check relation msb_bytes_list.reverse() calc_crc = hw_crc16_calculate( msb_bytes_list, poly, 0x00, 0x00 ) self.assertEqual( param_crc, calc_crc )
def test_hw_crc8_calculate_msb(self): data = 0x0D00C0F0FFFFFF dataSize = 56 poly = 0x1D xorOut = 0x00 ## 0x0D -- 0b 0000 1101 ## 0xB0 -- 0b 1011 0000 bytes_list = convert_to_msb_list(data, dataSize / 8) self.assertEqual(bytes_list[0], 0x0D) calc_crc = hw_crc8_calculate(bytes_list, poly, 0x00, xorOut) self.assertEqual(calc_crc, 0x1F)
def morph_data(inputData, crcSize): dataList = [] for data in inputData: dataMask = data[0] if dataMask.dataSize % 8 != 0: print "unable to morph data -- unsupported data size" return [] crcMask = data[1] if crcMask.dataSize != crcSize: print "unable to morph data -- unsupported crc:", crcMask.dataSize return [] # crcMask = data[1] bytesList = convert_to_msb_list(dataMask.dataNum, dataMask.dataSize / 8) dataList.append((bytesList, crcMask.dataNum)) #rev_crc = reverse_number( crcMask.dataNum, crcSize ) #dataList.append( (bytesList, rev_crc) ) return dataList