You've already forked TEF6686_Driver
add bandwidth setting to xrd
This commit is contained in:
44
xrd.py
44
xrd.py
@@ -47,33 +47,40 @@ def authenticate(conn):
|
||||
if data.strip() == expected_hash.strip(): return True
|
||||
|
||||
def process_command(tef: TEF6686, data: bytes, state):
|
||||
if data.startswith(b"T"):
|
||||
freq = int(data.decode().removeprefix("T").strip()) // 10
|
||||
out = b""
|
||||
for cmd in data.splitlines():
|
||||
if cmd.startswith(b"T"):
|
||||
freq = int(cmd.decode().removeprefix("T").strip()) // 10
|
||||
state['last_tune'] = freq
|
||||
tef.FM_Tune_To(1, freq)
|
||||
return f"T{freq*10}\n".encode()
|
||||
elif data.startswith(b"G"):
|
||||
eqims = int(data.decode().removeprefix("G").strip(), 2)
|
||||
out += f"T{freq*10}\n".encode()
|
||||
elif cmd.startswith(b"G"):
|
||||
eqims = int(cmd.decode().removeprefix("G").strip(), 2)
|
||||
state['last_eqims'] = eqims
|
||||
tef.FM_Set_ChannelEqualizer((eqims & 1) == 1)
|
||||
tef.FM_Set_MphSuppression((eqims & 2) == 2)
|
||||
return f"G{bin(eqims).removeprefix('0b').zfill(2)}\n".encode()
|
||||
elif data.startswith(b"B"):
|
||||
mono = bool(int(data.decode().removeprefix("B").strip(), 2))
|
||||
out += f"G{bin(eqims).removeprefix('0b').zfill(2)}\n".encode()
|
||||
elif cmd.startswith(b"B"):
|
||||
mono = bool(int(cmd.decode().removeprefix("B").strip(), 2))
|
||||
state['forced_mono'] = mono
|
||||
tef.FM_Set_Stereo_Min(2 if mono else 0)
|
||||
return f"B{int(mono)}\n".encode()
|
||||
elif data.startswith(b"D"):
|
||||
deemp = int(data.decode().removeprefix("D").strip())
|
||||
out += f"B{int(mono)}\n".encode()
|
||||
elif cmd.startswith(b"D"):
|
||||
deemp = int(cmd.decode().removeprefix("D").strip())
|
||||
time = 500 if deemp == 0 else (750 if deemp == 1 else 0)
|
||||
state['deemp'] = deemp
|
||||
tef.FM_Set_Deemphasis(time)
|
||||
return f"D{deemp}\n".encode()
|
||||
out += f"D{deemp}\n".encode()
|
||||
elif cmd.startswith(b"x"):
|
||||
out += b"OK\n"
|
||||
elif cmd.startswith(b"W"):
|
||||
bw = int(cmd.decode().removeprefix("W").strip())
|
||||
auto = (bw == 0)
|
||||
tef.FM_Set_Bandwidth(auto, 2360 if auto else (bw // 100))
|
||||
state['bw'] = bw
|
||||
out += f"W{bw}\n".encode()
|
||||
|
||||
if data.startswith(b"x"):
|
||||
return b"OK"
|
||||
|
||||
return None
|
||||
return out
|
||||
|
||||
def send_signal_status(tef: TEF6686, conn, state):
|
||||
_, _, stereo, _ = tef.FM_Get_Processing_Status()
|
||||
@@ -124,7 +131,8 @@ def run_server():
|
||||
'last_tune': 9500,
|
||||
'last_eqims': 0b11,
|
||||
'forced_mono': False,
|
||||
'deemp': 0
|
||||
'deemp': 0,
|
||||
'bw': 0
|
||||
}
|
||||
|
||||
try:
|
||||
@@ -146,6 +154,7 @@ def run_server():
|
||||
conn.sendall(f"G{bin(state['last_eqims']).removeprefix('0b').zfill(2)}\n".encode())
|
||||
conn.sendall(f"B{int(state['forced_mono'])}\n".encode())
|
||||
conn.sendall(f"D{state['deemp']}\n".encode())
|
||||
conn.sendall(f"W{state['bw']}\n".encode())
|
||||
conn.setblocking(False)
|
||||
|
||||
ss_timer = libtimer.Timer()
|
||||
@@ -155,6 +164,7 @@ def run_server():
|
||||
try:
|
||||
data = conn.recv(1024)
|
||||
if not data: break
|
||||
print(data)
|
||||
resp = process_command(tef, data, state)
|
||||
if resp: conn.sendall(resp)
|
||||
except ConnectionResetError: break
|
||||
|
||||
Reference in New Issue
Block a user