From de632c68d0f6b44e1173a0a27e64c300cc2a4075 Mon Sep 17 00:00:00 2001 From: david rice Date: Tue, 21 Apr 2026 16:23:43 +0100 Subject: [PATCH] Try tomorrow --- device_server.py | 6 ++++-- display_test_nexio.py | 15 +++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/device_server.py b/device_server.py index fb5dc1d..11d3b00 100644 --- a/device_server.py +++ b/device_server.py @@ -10,7 +10,7 @@ Add addresses to REGISTER_COMMANDS to capture more register ranges. import os import re -import signal +import socket import subprocess import threading @@ -94,7 +94,9 @@ def control_display(): if state == "on": with _video_lock: if _video_proc is not None and _video_proc.poll() is None: - _video_proc.send_signal(signal.SIGUSR1) + _sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + _sock.sendto(b'switch', ('127.0.0.1', 5001)) + _sock.close() return jsonify({"status": "video switched"}), 200 # fallback when video is not running os.system("echo 0 > /sys/class/graphics/fb0/blank") diff --git a/display_test_nexio.py b/display_test_nexio.py index 0fbaa18..21150dd 100644 --- a/display_test_nexio.py +++ b/display_test_nexio.py @@ -1,6 +1,7 @@ import gi -import signal # for signal.SIGUSR1 constant +import socket import struct +import threading import os gi.require_version('Gst', '1.0') @@ -130,9 +131,15 @@ def play_kiosk(): manager = KioskManager(pipeline) pipeline.set_property("uri", manager.videos[0]) - # SIGUSR1 → switch video (used by device_server PUT /display {"state":"on"}) - GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGUSR1, - lambda: manager.switch_video() or True) + # UDP trigger → switch video (device_server sends a packet to port 5001) + def _udp_listener(): + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.bind(('127.0.0.1', 5001)) + while True: + sock.recv(64) + GLib.idle_add(manager.switch_video) + + threading.Thread(target=_udp_listener, daemon=True).start() # --- INPUT MONITORING --- try: