autotest: cover MAVLink camera relays, selectors and gimbal routing

Exercise MT11 and AVT camera and gimbal behaviour, telemetry-driven
targeting, RTSP bounds, target refresh, capture-status expiry and
backpressure-safe stream replies.

Verify unicast routing and opt-in telemetry, extended parameter replies
from isolated links, forced home and origin events, and MT11 directory
listing and XML downloads through a unicast connection.

Check native camera identity across isolated and broadcast links,
default, configured and colliding component IDs, mixed native and servo
cameras, and native versus configured mount associations.

Cover camera and gimbal selectors for live commands and missions,
including legacy NaN values under floating-point traps, video stream
selection, native gimbal IDs, cached attitude frames and FC-owned
camera ACK identity. Fix the MAVFTP import ordering required by Ruff.
This commit is contained in:
Andrew Tridgell
2026-09-23 08:59:12 +10:00
parent ddde38a549
commit 5ee1e70498
2 changed files with 1941 additions and 15 deletions
File diff suppressed because it is too large Load Diff
+5 -3
View File
@@ -12598,13 +12598,16 @@ Also, ignores heartbeats not from our target system'''
mav=mav,
)
def poll_message(self, message_id, timeout=10, quiet=False, mav=None, target_sysid=None, target_compid=None, p2=0):
def poll_message(self, message_id, timeout=10, quiet=False, mav=None, target_sysid=None, target_compid=None, p2=0,
response_source=None):
if mav is None:
mav = self.mav
if target_sysid is None:
target_sysid = self.sysid_thismav()
if target_compid is None:
target_compid = 1
if response_source is None:
response_source = (target_sysid, target_compid)
if isinstance(message_id, str):
message_id = eval("mavutil.mavlink.MAVLINK_MSG_ID_%s" % message_id)
tstart = self.get_sim_time() # required for timeout in run_cmd_get_ack to work
@@ -12627,8 +12630,7 @@ Also, ignores heartbeats not from our target system'''
continue
if m.id != message_id:
continue
if (m.get_srcSystem() != target_sysid or
m.get_srcComponent() != target_compid):
if (m.get_srcSystem(), m.get_srcComponent()) != response_source:
continue
return m