soc/tools/remote/comm_uart: be sure to flush in waiting bytes before read and write
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Fri, 15 Feb 2019 23:08:24 +0000 (00:08 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Fri, 15 Feb 2019 23:08:24 +0000 (00:08 +0100)
litex/soc/tools/remote/comm_uart.py

index b6a8f1c6ec8100c82f3e46772efc1bd5dd994cb0..0a056ec76438ade5cd33037df06328cec2f0b956 100644 (file)
@@ -38,7 +38,12 @@ class CommUART:
             remaining -= written
             pos += written
 
+    def _flush(self):
+        if self.port.inWaiting() > 0:
+            self.port.read(self.port.inWaiting())
+
     def read(self, addr, length=None):
+        self._flush()
         data = []
         length_int = 1 if length is None else length
         self._write([self.msg_type["read"], length_int])
@@ -53,6 +58,7 @@ class CommUART:
         return data
 
     def write(self, addr, data):
+        self._flush()
         data = data if isinstance(data, list) else [data]
         length = len(data)
         offset = 0