Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def read_from_crypto():
- data = []
- firsttwo = mcp2221.I2C_Read(ATECC608A_addr,0x02)
- sleep(0.02)
- if firsttwo == -1: #crytpo is not responding
- return(0,0xFE,False)
- bytecount = firsttwo[0] #1 byte
- status = firsttwo[1]
- print("bytecount:",bytecount)
- print("firsttwo:",firsttwo)
- if bytecount < 11: # we have read 2, can read up to another 8
- data_crc = mcp2221.I2C_Read(ATECC608A_addr, bytecount - 0x02)
- sleep(0.02)
- else: # read 8 bytes
- data_crc = list(mcp2221.I2C_Read(ATECC608A_addr, 0x08))
- sleep(0.02)
- # this will loop 'i' times getting bytes at a time.
- for i in range((bytecount-10)//8):
- data_crc.extend(mcp2221.I2C_Read(ATECC608A_addr, 0x08))
- sleep(0.02)
- if ((bytecount-10) % 0x08) > 0:
- data_crc.extend(mcp2221.I2C_Read(ATECC608A_addr, (bytecount-2) % 0x08))
- print(bytecount-2, data_crc)
- crc_msb = data_crc[len(data_crc)-1] << 8
- crc_lsb = data_crc[len(data_crc)-2]
- rx_crc = crc_msb + crc_lsb
- data = data_crc[0:-2]
- #print("bytecount:\t" + str(hex(bytecount[0])))
- ## compute teh CRC ##
- computearray = firsttwo + data
- reversedarray = []
- for byte in computearray:
- reversedarray.append(reflect_byte(byte))
- crc16 = crcmod.mkCrcFun(0x18005,0x00,False,0x00)
- crc_calc = crc16(bytearray(reversedarray))
- if crc_calc == rx_crc:
- crc_state = True
- else:
- crc_state = False
- return(status,data,crc_state)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement