fix(satellite): Scan-Auftrag waehrend laufendem Scan wartet bis zum Ende
Kam sat_discover, waehrend schon ein Scan lief (z.B. der erste nach dem Start, ~25 s), wartete der Satellit nur 6 s und lieferte die bisherige Liste — nach einem Neustart leer → "Keine Geraete gefunden". Jetzt wartet er, bis der laufende Scan fertig ist (hoechstens SCAN_MAX_SEC). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1819,11 +1819,12 @@ class Satellite:
|
|||||||
if self._devices and fresh and not force:
|
if self._devices and fresh and not force:
|
||||||
return self._devices
|
return self._devices
|
||||||
if self._scanning:
|
if self._scanning:
|
||||||
# Laufenden Scan abwarten (grob)
|
# Laufenden Scan abwarten — bis er fertig ist (hoechstens SCAN_MAX_SEC).
|
||||||
for _ in range(30):
|
# Frueher nur 6 s: direkt nach dem Start (Scan ~25 s, Liste noch
|
||||||
|
# leer) kam so "keine Geraete gefunden" zurueck.
|
||||||
|
deadline = time.time() + SCAN_MAX_SEC + 5
|
||||||
|
while self._scanning and time.time() < deadline:
|
||||||
await asyncio.sleep(0.2)
|
await asyncio.sleep(0.2)
|
||||||
if not self._scanning:
|
|
||||||
break
|
|
||||||
return self._devices
|
return self._devices
|
||||||
self._scanning = True
|
self._scanning = True
|
||||||
self._scan_stage = "start"
|
self._scan_stage = "start"
|
||||||
|
|||||||
Reference in New Issue
Block a user