diff --git a/tunerlistd/main.py b/tunerlistd/main.py index d1d1ca1..b7579c2 100644 --- a/tunerlistd/main.py +++ b/tunerlistd/main.py @@ -5,8 +5,16 @@ # ANDROID AUTO: Play, Pause, Toggle play, Next track, Previous track, Home, Phone, Call end, # Voice command, Left, Right, Up, Down, Scroll wheel, Back, Enter -BUTTON_MAPPINGS = { +def send_to_radio(btn): + tunerlist.send_button(btn) +def send_to_aa(btn): + queue.put_nowait(dumps({"button": btn})) + +BUTTON_MAPPINGS = { + "VOL_UP": (send_to_radio, "VOL_UP"), + "VOL_DOWN": (send_to_radio, "VOL_DOWN"), + "PAUSE": (send_to_radio, "PAUSE") } # ----------------------------------------------------------------------------------------- @@ -21,12 +29,6 @@ from fastapi.responses import PlainTextResponse, JSONResponse from asyncio import create_task, CancelledError, Queue from uvicorn import run -def send_to_radio(btn): - tunerlist.send_button(btn) - -def send_to_aa(btn): - queue.put_nowait(dumps({"button": btn})) - app = FastAPI() background_tasks = [] @@ -75,10 +77,9 @@ async def button_listener(): try: while True: button = await buttons.queue.get() - if button in ("VOL_UP", "VOL_DOWN", "PAUSE"): - create_task(tunerlist.send_button(button)) - else: - pass + if button in BUTTON_MAPPINGS: + func, arg = BUTTON_MAPPINGS[button] + func(arg) except CancelledError: pass @@ -113,18 +114,11 @@ async def websocket_endpoint(websocket: WebSocket): async def state_endpoint(): return dumps(state_to_send) -@app.get("/button", response_class=PlainTextResponse) -async def button_endpoint(request: Request): - btn = request.query_params.get("btn") - if btn is None: - return "No button specified" - await tunerlist.send_button(btn) - return btn - @app.get("/btn", response_class=PlainTextResponse) async def emulated_button(request: Request): btn = request.query_params.get("btn") print("CD Changer button: ", btn) + buttons.queue.put_nowait(btn) if __name__ == "__main__": run(app=app, host="0.0.0.0", port=5959, log_level="info")