59 lines
1.4 KiB
Python
Executable file
59 lines
1.4 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
import time
|
|
from codecs import encode
|
|
from socket import AF_INET, SO_SNDBUF, SOCK_STREAM, SOL_SOCKET, socket
|
|
|
|
import click
|
|
import serial
|
|
|
|
|
|
@click.command()
|
|
@click.option("-f", "--frequency", default=40680000, help="Frequency to tune to")
|
|
@click.option("--rx", default=10, help="Receive pin")
|
|
@click.option("--bias", default=11, help="Bias pin")
|
|
def bridge(frequency, rx, bias):
|
|
sock = socket(AF_INET, SOCK_STREAM)
|
|
sock.setsockopt(SOL_SOCKET, SO_SNDBUF, 1024 * 100)
|
|
|
|
with serial.Serial("/dev/ttyACM0", baudrate=10_000_000) as fp:
|
|
print("Resetting...")
|
|
fp.write(b"\r\n")
|
|
|
|
time.sleep(0.1)
|
|
|
|
while fp.in_waiting:
|
|
fp.read(fp.in_waiting)
|
|
time.sleep(0.1)
|
|
|
|
print("Connecting to localhost:1234...")
|
|
sock.connect(("localhost", 1234))
|
|
|
|
print(f"Starting RX {rx}/{bias} at {frequency}...")
|
|
fp.write(f"brx {rx} {bias} {frequency}\r\n".encode("ascii"))
|
|
fp.read_until(b"$")
|
|
|
|
try:
|
|
while True:
|
|
bstr = fp.read(64)
|
|
assert len(bstr) == 64
|
|
|
|
try:
|
|
assert len(bstr) == sock.send(bstr)
|
|
except ConnectionRefusedError:
|
|
pass
|
|
|
|
except ConnectionError:
|
|
pass
|
|
|
|
except KeyboardInterrupt:
|
|
pass
|
|
|
|
finally:
|
|
fp.write(b"\r\n")
|
|
print("Bye.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
bridge()
|