tests: add/modify ack=True test
[renesas-ra-flasher] / src / RAConnect.py
index f753d24..d6d454a 100644 (file)
@@ -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