1
ewconfig/scripts/minimodem-bidirectional

53 lines
1.3 KiB
Python
Executable File

#! /usr/bin/env python3
import argparse
import sys
import subprocess
import time
def main() -> int:
# Handle program arguments
ap = argparse.ArgumentParser(
prog="minimodem-bidirectional",
description="Spawn a pair of minimodem instances to communicate in full duplex",
)
ap.add_argument(
"modem_args", nargs=argparse.REMAINDER, help="Arguments to pass to minimodem"
)
args = ap.parse_args()
# Start by spawning a listener
rx_process = subprocess.Popen(
["minimodem", "--rx", *args.modem_args], stdout=sys.stdout
)
# If this process fails, we should exit
if rx_process.poll() is not None:
return rx_process.returncode
# Now spawn a sender
tx_process = subprocess.Popen(
["minimodem", "--tx", *args.modem_args], stdin=sys.stdin
)
# Again, check if this process fails
if tx_process.poll() is not None:
return tx_process.returncode
# Loop, waiting for everything to finish
try:
while True:
time.sleep(1)
if rx_process.poll() is not None:
break
if tx_process.poll() is not None:
break
except KeyboardInterrupt:
pass
return 0
if __name__ == "__main__":
sys.exit(main())