diff --git a/apps/python/zcash_fpga.py b/apps/python/zcash_fpga.py index 4413eca..4146003 100644 --- a/apps/python/zcash_fpga.py +++ b/apps/python/zcash_fpga.py @@ -1,6 +1,28 @@ + + class zcash_fpga: import serial import codecs + import struct + + def byt_to_ver(a): + return 'v{}.{}.{}'.format(a[2], a[1], a[0]) + + def byt_to_str(a): + return a[::-1].decode("utf-8") + + def byt_to_hex(a): + return a.hex() + + fpga_msg_type_dict = {'FPGA_IGNORE_RPL':int('80000002', 16), + 'FPGA_STATUS_RPL':int('80000001', 16), + 'RESET_FPGA_RPL':int('80000000', 16)} + + fpga_msg_dict = {fpga_msg_type_dict['FPGA_IGNORE_RPL']:{'name':'FPGA_IGNORE_RPL', 'feilds':[(8, 'ignored_header', byt_to_hex)]}, + fpga_msg_type_dict['FPGA_STATUS_RPL']:{'name':'FPGA_STATUS_RPL', 'feilds':[(4, 'version', byt_to_ver), (8, 'build_date', byt_to_str), (8, 'buid_host', byt_to_str), (8, 'cmd_cap', byt_to_hex)]}, + fpga_msg_type_dict['RESET_FPGA_RPL']:{'name':'RESET_FPGA_RPL', 'feilds':[]}} + + def __init__(self, COM='COM4'): self.s = self.serial.Serial(COM, 921600, timeout=1) #Test getting FPGA status @@ -11,18 +33,45 @@ class zcash_fpga: def get_status(self): self.s.write(self.codecs.decode('0800000001000000', 'hex')) # Parse reply - res = self.s.read(1024) - print(res) + self.get_reply() + def reset_fpga(self): + self.s.write(self.codecs.decode('0800000000000000', 'hex')) + # Parse reply - should be reset + res = self.get_reply() + if (self.struct.unpack('