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
|
if data.strip() == expected_hash.strip(): return True
|
||||||
|
|
||||||
def process_command(tef: TEF6686, data: bytes, state):
|
def process_command(tef: TEF6686, data: bytes, state):
|
||||||
if data.startswith(b"T"):
|
out = b""
|
||||||
freq = int(data.decode().removeprefix("T").strip()) // 10
|
for cmd in data.splitlines():
|
||||||
|
if cmd.startswith(b"T"):
|
||||||
|
freq = int(cmd.decode().removeprefix("T").strip()) // 10
|
||||||
state['last_tune'] = freq
|
state['last_tune'] = freq
|
||||||
tef.FM_Tune_To(1, freq)
|
tef.FM_Tune_To(1, freq)
|
||||||
return f"T{freq*10}\n".encode()
|
out += f"T{freq*10}\n".encode()
|
||||||
elif data.startswith(b"G"):
|
elif cmd.startswith(b"G"):
|
||||||
eqims = int(data.decode().removeprefix("G").strip(), 2)
|
eqims = int(cmd.decode().removeprefix("G").strip(), 2)
|
||||||
state['last_eqims'] = eqims
|
state['last_eqims'] = eqims
|
||||||
tef.FM_Set_ChannelEqualizer((eqims & 1) == 1)
|
tef.FM_Set_ChannelEqualizer((eqims & 1) == 1)
|
||||||
tef.FM_Set_MphSuppression((eqims & 2) == 2)
|
tef.FM_Set_MphSuppression((eqims & 2) == 2)
|
||||||
return f"G{bin(eqims).removeprefix('0b').zfill(2)}\n".encode()
|
out += f"G{bin(eqims).removeprefix('0b').zfill(2)}\n".encode()
|
||||||
elif data.startswith(b"B"):
|
elif cmd.startswith(b"B"):
|
||||||
mono = bool(int(data.decode().removeprefix("B").strip(), 2))
|
mono = bool(int(cmd.decode().removeprefix("B").strip(), 2))
|
||||||
state['forced_mono'] = mono
|
state['forced_mono'] = mono
|
||||||
tef.FM_Set_Stereo_Min(2 if mono else 0)
|
tef.FM_Set_Stereo_Min(2 if mono else 0)
|
||||||
return f"B{int(mono)}\n".encode()
|
out += f"B{int(mono)}\n".encode()
|
||||||
elif data.startswith(b"D"):
|
elif cmd.startswith(b"D"):
|
||||||
deemp = int(data.decode().removeprefix("D").strip())
|
deemp = int(cmd.decode().removeprefix("D").strip())
|
||||||
time = 500 if deemp == 0 else (750 if deemp == 1 else 0)
|
time = 500 if deemp == 0 else (750 if deemp == 1 else 0)
|
||||||
state['deemp'] = deemp
|
state['deemp'] = deemp
|
||||||
tef.FM_Set_Deemphasis(time)
|
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 out
|
||||||
return b"OK"
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
def send_signal_status(tef: TEF6686, conn, state):
|
def send_signal_status(tef: TEF6686, conn, state):
|
||||||
_, _, stereo, _ = tef.FM_Get_Processing_Status()
|
_, _, stereo, _ = tef.FM_Get_Processing_Status()
|
||||||
@@ -124,7 +131,8 @@ def run_server():
|
|||||||
'last_tune': 9500,
|
'last_tune': 9500,
|
||||||
'last_eqims': 0b11,
|
'last_eqims': 0b11,
|
||||||
'forced_mono': False,
|
'forced_mono': False,
|
||||||
'deemp': 0
|
'deemp': 0,
|
||||||
|
'bw': 0
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
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"G{bin(state['last_eqims']).removeprefix('0b').zfill(2)}\n".encode())
|
||||||
conn.sendall(f"B{int(state['forced_mono'])}\n".encode())
|
conn.sendall(f"B{int(state['forced_mono'])}\n".encode())
|
||||||
conn.sendall(f"D{state['deemp']}\n".encode())
|
conn.sendall(f"D{state['deemp']}\n".encode())
|
||||||
|
conn.sendall(f"W{state['bw']}\n".encode())
|
||||||
conn.setblocking(False)
|
conn.setblocking(False)
|
||||||
|
|
||||||
ss_timer = libtimer.Timer()
|
ss_timer = libtimer.Timer()
|
||||||
@@ -155,6 +164,7 @@ def run_server():
|
|||||||
try:
|
try:
|
||||||
data = conn.recv(1024)
|
data = conn.recv(1024)
|
||||||
if not data: break
|
if not data: break
|
||||||
|
print(data)
|
||||||
resp = process_command(tef, data, state)
|
resp = process_command(tef, data, state)
|
||||||
if resp: conn.sendall(resp)
|
if resp: conn.sendall(resp)
|
||||||
except ConnectionResetError: break
|
except ConnectionResetError: break
|
||||||
|
|||||||
Reference in New Issue
Block a user