retransmission handling to await completion and extract LBT metadata

This commit is contained in:
Lloyd
2025-12-21 21:31:36 +00:00
parent 9834ae7059
commit 24866707f4
+7 -4
View File
@@ -166,8 +166,11 @@ class RepeaterHandler(BaseHandler):
else:
self.forwarded_count += 1
transmitted = True
# Schedule retransmit with delay
await self.schedule_retransmit(fwd_pkt, delay, airtime_ms)
# Schedule retransmit with delay (returns task)
tx_task = await self.schedule_retransmit(fwd_pkt, delay, airtime_ms)
# Wait for transmission to complete to get LBT metadata
await tx_task
# Extract LBT metadata after transmission
tx_metadata = getattr(fwd_pkt, '_tx_metadata', None)
@@ -637,7 +640,7 @@ class RepeaterHandler(BaseHandler):
return None
async def schedule_retransmit(self, fwd_pkt: Packet, delay: float, airtime_ms: float = 0.0):
"""Schedule a packet retransmission with delay and return the task."""
async def delayed_send():
await asyncio.sleep(delay)
try:
@@ -653,7 +656,7 @@ class RepeaterHandler(BaseHandler):
except Exception as e:
logger.error(f"Retransmit failed: {e}")
asyncio.create_task(delayed_send())
return asyncio.create_task(delayed_send())
def get_noise_floor(self) -> Optional[float]:
try: