diff options
Diffstat (limited to 'test/web/serial.py')
| -rw-r--r-- | test/web/serial.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/web/serial.py b/test/web/serial.py new file mode 100644 index 0000000..83833a4 --- /dev/null +++ b/test/web/serial.py @@ -0,0 +1,25 @@ +"""Raw PTY to local reference server: exercise a UART-like byte stream.""" +import os +import pty +import select +import socket +import sys +import tty + +master, slave = pty.openpty() +tty.setraw(slave) +host, port = sys.argv[1].split(":") +peer = socket.create_connection((host, int(port))) +print(os.ttyname(slave), flush=True) +while True: + ready, _, _ = select.select([master, peer], [], []) + for source in ready: + data = os.read(master, 19) if source == master else peer.recv(23) + if not data: + sys.exit(0) + if source == master: + peer.sendall(data) + else: + while data: + written = os.write(master, data) + data = data[written:] |
