changeset 7:25f0c04e1654

has_response in _send_command
author drewp@bigasterisk.com
date Sun, 05 Feb 2023 14:30:44 -0800
parents ca63391a2214
children 5441581186f8
files telemetrix_local.py
diffstat 1 files changed, 13 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/telemetrix_local.py	Sun Feb 05 14:28:57 2023 -0800
+++ b/telemetrix_local.py	Sun Feb 05 14:30:44 2023 -0800
@@ -15,6 +15,7 @@
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 """
 
+from typing import Optional
 import asyncio
 # import socket
 # import struct
@@ -2153,23 +2154,8 @@
         :returns: This method never returns
         """
         while True:
-            if self.shutdown_flag:
-                break
-            try:
-                if not self.ip_address:
-                    packet_length = await self.serial_port.read()
-                else:
-
-                    packet_length = ord(await self.sock.read())
-
-            except TypeError:
-                continue
-
-            # get the rest of the packet
-            if not self.ip_address:
-                packet = await self.serial_port.read(packet_length)
-            else:
-                packet = list(await self.sock.read(packet_length))
+            log.debug('dispatch loop: waiting for serial')
+            packet = await self._send_command([], has_response=True)
 
             report = packet[0]
             await self.report_dispatch[report](packet[1:])
@@ -2488,7 +2474,7 @@
     async def _features_report(self, report):
         self.reported_features = report[0]
 
-    async def _send_command(self, command):
+    async def _send_command(self, command, has_response=False):
         """
         This is a private utility method.
 
@@ -2510,6 +2496,14 @@
             else:
                 await self.sock.write(send_message)
                 # await asyncio.sleep(.1)
+
+        if not has_response:
+            return None
         else:
-            await self.sock.write(send_message)
             # await asyncio.sleep(.1)
+            header = await self.serial_port.read(1)
+            packet_length = header[0]
+            pkt = await self.serial_port.read(packet_length)
+            log.debug(f'got response {list(pkt)}')
+
+            return pkt