fix: drainer pymavlink dans le thread principal sans run_in_executor

run_in_executor + blocking=False retournait None dans un thread
séparé sans rien peupler dans mav.messages. Drain direct dans
la boucle asyncio avec while recv_match() pour vider tout le
buffer à chaque tick de 50ms.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
nicoboy
2026-06-21 17:26:37 +02:00
parent 7979619c38
commit 1b47ce124d

View File

@ -84,9 +84,9 @@ async def monitor_armed(drone):
async def drain_pymavlink(): async def drain_pymavlink():
"""Draine pymavlink en boucle pour peupler mav.messages (dernier msg par type).""" """Draine pymavlink en boucle pour peupler mav.messages (dernier msg par type)."""
loop = asyncio.get_running_loop()
while True: while True:
await loop.run_in_executor(None, lambda: mav.recv_match(blocking=False)) while mav.recv_match(blocking=False) is not None:
pass
await asyncio.sleep(0.05) await asyncio.sleep(0.05)
async def monitor_telemetry(drone): async def monitor_telemetry(drone):