示例#1
0
 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)
示例#2
0
        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)
示例#3
0
    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)
示例#4
0
        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 )
示例#5
0
        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 )
示例#6
0
        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)
示例#7
0
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