2026.6.24实现 QGC_WAYPOINTS → 系统内部航点格式 的转换链路

This commit is contained in:
2026-06-24 12:50:31 +08:00
parent a4c3f3510b
commit 25882a5f8b
4 changed files with 157 additions and 7 deletions
+16
View File
@@ -103,6 +103,7 @@ class RouterProxy:
# ---- 外部回调钩子 ----
self._state_callback = None
self._alert_callback = None
self._waypoints_callback = None
# ================================================================
# 内部工具
@@ -155,6 +156,13 @@ class RouterProxy:
self.req.connect(self.req_endpoint)
logger.warning("REQ socket 已重建")
def set_waypoints_callback(self, callback):
"""
注册 QGC_WAYPOINT 回调 (在 SUB 线程调用,不应阻塞)
callback 签名:callback(waypoint_data: dict)
"""
self._waypoint_callback = callback
# ================================================================
# 发送接口(线程安全)
# ================================================================
@@ -432,6 +440,14 @@ class RouterProxy:
logger.info("PX4_ACK: cmd=%s result=%s",
data.get("ref_cmd"), data.get("result"))
elif msg_type == "QGC_WAYPOINTS":
logger.info("📥 收到 QGC_WAYPOINTS: count=%d", data.get("count", 0))
if self._waypoints_callback:
try:
self._waypoints_callback(data)
except Exception as e:
logger.error("QGC_WAYPOINTS 回调异常: %s", e)
elif msg_type == "QUERY_REPLY":
# QUERY_REPLY 由 send_query 的同步 recv 处理,
# SUB 通道上的 QUERY_REPLY 暂不处理