Files
MeshCore/tools/hil/serial_session.py

29 lines
1016 B
Python

"""Open an already configured serial session without a bridge reset pulse."""
import os
def open_configured_session(port):
# POSIX pySerial normally applies DTR before RTS when opening. Some
# bridge drivers initially assert both lines; clearing DTR first pulses
# ESP32 EN. Defer DTR until RTS is released. Windows configures both in
# one DCB operation and uses dsrdtr for real handshaking, so leave it alone.
# The caller selects DTR and supplies the already configured port; no USB
# inventory or pySerial import is needed here.
defer_dtr = os.name == "posix" and not port.dtr
previous_dsrdtr = port.dsrdtr
try:
if defer_dtr:
port.dsrdtr = True
port.open()
if defer_dtr:
port.rts = False
port.dtr = False
port.dsrdtr = previous_dsrdtr
except BaseException:
try:
port.close()
finally:
if defer_dtr:
port.dsrdtr = previous_dsrdtr
raise