# HG changeset patch # User drewp@bigasterisk.com # Date 1675636244 28800 # Node ID 25f0c04e165486b430fc53f72493b35e2564362a # Parent ca63391a2214adebe1698b35244a88936d67601c has_response in _send_command diff -r ca63391a2214 -r 25f0c04e1654 telemetrix_local.py --- 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