slop board

This commit is contained in:
legop3
2026-08-18 23:56:26 -04:00
parent 9615423e06
commit ea16e2c67a
@@ -523,16 +523,23 @@ void commissioning_loop(PairingSharedState* shared) {
// on when the physical button happened to be pressed. // on when the physical button happened to be pressed.
// BlueZ's command-line client exits after the SetDiscoveryFilter callback // BlueZ's command-line client exits after the SetDiscoveryFilter callback
// unless non-interactive mode has a timeout. Its explicit monitor mode is // unless non-interactive mode has a timeout. Its explicit monitor mode is
// equally important here: stdout is a worker-owned pipe rather than a // equally important because current bluetoothctl versions otherwise omit
// terminal, and current bluetoothctl versions otherwise report command // the asynchronous `[NEW]` and `[CHG]` device lines parsed below.
// acknowledgements such as `Discovery started` without forwarding the //
// asynchronous `[NEW]` and `[CHG]` device lines parsed below. A one-day // stdout and stderr are worker-owned pipes rather than a terminal. Fedora's
// timeout keeps that monitored client alive for unattended commissioning; // bluetoothctl therefore block-buffers even `Discovery started`, leaving a
// the worker normally stops it itself as soon as the board appears and // genuinely active scan indistinguishable from a hung process until the
// restarts it if the day expires. // one-day command exits. stdbuf replaces itself with bluetoothctl in the
// same PID while forcing both streams to flush each line immediately. That
// gives the watchdog and device parser live evidence without adding a
// pseudo-terminal or another process for the supervisor to manage.
//
// The one-day timeout keeps that monitored client alive for unattended
// commissioning; the worker normally stops it itself as soon as the board
// appears and restarts it if the day expires.
RunningCommand discovery = start_command({ RunningCommand discovery = start_command({
"bluetoothctl", "--monitor", "--timeout", kDiscoveryTimeoutSeconds, "stdbuf", "-oL", "-eL", "bluetoothctl", "--monitor", "--timeout",
"scan", "bredr"}); kDiscoveryTimeoutSeconds, "scan", "bredr"});
if (discovery.pid < 0) { if (discovery.pid < 0) {
emit_status("error", "", "could not start Bluetooth discovery: " + emit_status("error", "", "could not start Bluetooth discovery: " +
command_error_summary(discovery.transcript, "unknown process error")); command_error_summary(discovery.transcript, "unknown process error"));