autotest: add test for statustext coming through via frsky passthrough
This commit is contained in:
parent
bde97596eb
commit
53ce463a90
@ -4265,6 +4265,52 @@ switch value'''
|
||||
"--uartF=tcp:6735" # serial5 spews to localhost:6735
|
||||
])
|
||||
frsky = FRSkyPassThrough(("127.0.0.1", 6735))
|
||||
|
||||
# waiting until we are ready to arm should ensure our wanted
|
||||
# statustext doesn't get blatted out of the ArduPilot queue by
|
||||
# random messages.
|
||||
self.wait_ready_to_arm()
|
||||
|
||||
# test we get statustext strings. This relies on ArduPilot
|
||||
# emitting statustext strings when we fetch parameters.
|
||||
self.mavproxy.send("param fetch\n")
|
||||
tstart = self.get_sim_time_cached()
|
||||
old_data = None
|
||||
text = ""
|
||||
while True:
|
||||
now = self.get_sim_time()
|
||||
if now - tstart > 60: # it can take a *long* time to get these messages down!
|
||||
raise NotAchievedException("Did not get statustext in time")
|
||||
frsky.update()
|
||||
data = frsky.get_data(0x5000) # no timestamping on this data, so we can't catch legitimate repeats.
|
||||
if data is None:
|
||||
continue
|
||||
# frsky sends each quartet three times; skip the suplicates.
|
||||
if old_data is not None and old_data == data:
|
||||
continue
|
||||
old_data = data
|
||||
self.progress("Got (0x%x)" % data)
|
||||
severity = 0
|
||||
last = False
|
||||
for i in 3, 2, 1, 0:
|
||||
x = (data >> i*8) & 0xff
|
||||
text += chr(x & 0x7f)
|
||||
self.progress(" x=0x%02x" % x)
|
||||
if x & 0x80:
|
||||
severity += 1 << i
|
||||
self.progress("Text sev=%u: %s" % (severity, str(text)))
|
||||
if (x & 0x7f) == 0x00:
|
||||
last = True
|
||||
if last:
|
||||
m = re.match("Ardu(Plane|Copter|Rover|Tracker|Sub) V[345]", text)
|
||||
if m is not None:
|
||||
want_sev = mavutil.mavlink.MAV_SEVERITY_INFO
|
||||
if severity != want_sev:
|
||||
raise NotAchievedException("Incorrect severity; want=%u got=%u" % (want_sev, severity))
|
||||
self.progress("Got statustext (%s)" % m.group(0))
|
||||
break
|
||||
text = ""
|
||||
|
||||
self.wait_ready_to_arm()
|
||||
self.drain_mav_unparsed()
|
||||
# anything with a lambda in here needs a proper test written.
|
||||
|
Loading…
Reference in New Issue
Block a user