X-Git-Url: https://robinkrens.nl/gitweb/?a=blobdiff_plain;f=src%2FRAConnect.py;h=d6d454a73f763daeaf0bd2c94951660c502ec660;hb=e7bccc825b135adb1246a371751e63fab8a9b36f;hp=f753d2461861ef2d76cd22c61105e052b05016a3;hpb=d9a2f67fb5240215d5bb3983935885b359e98b9a;p=renesas-ra-flasher diff --git a/src/RAConnect.py b/src/RAConnect.py index f753d24..d6d454a 100644 --- a/src/RAConnect.py +++ b/src/RAConnect.py @@ -2,6 +2,7 @@ import sys import time import usb.core import usb.util +from RAPacker import * MAX_TRANSFER_SIZE = 2048 + 6 # include header and footer @@ -16,7 +17,13 @@ class RAConnect: self.dev = None self.rx_ep = None self.tx_ep = None + self.chip_layout = [] + self.sel_area = 0 # default to Area 0 + self.find_device() + status_conn = self.inquire_connection() + if not status_conn: + self.confirm_connection() def find_device(self): self.dev = usb.core.find(idVendor=self.vendor_id, idProduct=self.product_id) @@ -38,19 +45,18 @@ class RAConnect: self.tx_ep = ep return True - raise ValueError("Device does not have a serial interface") + raise ValueError("Device does not have a CDC interface") - def establish_connection(self): - for i in range(self.max_tries): - try: - self.tx_ep.write(bytes([0x00]), self.timeout_ms) - ret = self.rx_ep.read(1, self.timeout_ms) - if ret[0] == 0x00: - print("Reply ACK received (0x00)") - return True - except usb.core.USBError as e: - print(f"Timeout: retry #{i}", e) - return False + + def inquire_connection(self): + packed = pack_pkt(INQ_CMD, "") + self.send_data(packed) + info = self.recv_data(7) + if info == bytearray(b'\x00') or info == bytearray(b''): + return False + msg = unpack_pkt(info) + #print("Connection already established") + return True def confirm_connection(self): for i in range(self.max_tries): @@ -67,6 +73,11 @@ class RAConnect: def authenticate_connection(self): raise Exception("Not implemented") + def set_chip_layout(self, cfg): + if cfg == None: + raise ValueError("Could net get chip layout") + self.chip_layout = cfg + def send_data(self, packed_data): if (self.tx_ep == None): return False