diff --git a/meshtastic/serial_interface.py b/meshtastic/serial_interface.py index 8d1397c..88f17de 100644 --- a/meshtastic/serial_interface.py +++ b/meshtastic/serial_interface.py @@ -94,16 +94,10 @@ class SerialInterface(StreamInterface): def close(self) -> None: """Close a connection to the device""" - if hasattr(self, "stream") and self.stream and getattr(self.stream, "is_open", False): - try: - self.stream.flush() - time.sleep(0.1) - except Exception as e: - logger.debug(f"Exception during flush: {e}") - try: - self.stream.close() - except Exception as e: - logger.debug(f"Exception during close: {e}") - self.stream = None + if self.stream: # Stream can be null if we were already closed + self.stream.flush() # FIXME: why are there these two flushes with 100ms sleeps? This shouldn't be necessary + time.sleep(0.1) + self.stream.flush() + time.sleep(0.1) logger.debug("Closing Serial stream") StreamInterface.close(self) diff --git a/meshtastic/stream_interface.py b/meshtastic/stream_interface.py index dc4109e..06ee28a 100644 --- a/meshtastic/stream_interface.py +++ b/meshtastic/stream_interface.py @@ -93,18 +93,15 @@ class StreamInterface(MeshInterface): logger.debug("Closing our port") # pylint: disable=E0203 - if hasattr(self, "stream") and self.stream is not None and getattr(self.stream, "is_open", False): + if not self.stream is None: # pylint: disable=E0203 - try: - self.stream.close() - except Exception as e: - logger.debug(f"Exception during close: {e}") + self.stream.close() # pylint: disable=W0201 self.stream = None def _writeBytes(self, b: bytes) -> None: """Write an array of bytes to our stream and flush""" - if self.stream and self.stream is not None and getattr(self.stream, "is_open", False): # ignore writes when stream is closed + if self.stream: # ignore writes when stream is closed self.stream.write(b) self.stream.flush() # win11 might need a bit more time, too @@ -116,7 +113,7 @@ class StreamInterface(MeshInterface): def _readBytes(self, length) -> Optional[bytes]: """Read an array of bytes from our stream""" - if self.stream and self.stream is not None and getattr(self.stream, "is_open", False): + if self.stream: return self.stream.read(length) else: return None @@ -226,12 +223,10 @@ class StreamInterface(MeshInterface): logger.error( f"Unexpected OSError, terminating meshtastic reader... {ex}" ) - traceback.print_exc() except Exception as ex: logger.error( f"Unexpected exception, terminating meshtastic reader... {ex}" ) - traceback.print_exc() finally: logger.debug("reader is exiting") self._disconnected()