Crops up in Python 3.8:
gpi_lat = self.tf_encode_gps_latitude(gpi.lat)
File "/home/pbarker/rc/ardupilot/Tools/autotest/common.py", line 6183, in tf_encode_gps_latitude
value = ((abs(lat)/100)*6) | 0x40000000
TypeError: unsupported operand type(s) for |: 'float' and 'int'
On the assumption that ArduPilot processes mavlink packets
synchronously (or at least in order), after we have run a timesync
roundtrip we can reasonably expect any mavlink command we have sent
prior to the roundtrip to have been processed, and we should be able to
see the results in the mavlink stream.
There's a race condition with MAVProxy; it's fetching parameters here
and seems to ignore our requests.
Also correct named parameter from retry to attempts
# need to wait for a heartbeat to arrive as then mavutil will
# select the correct set of messages for us to receive in
# self.mav.messages. You can actually recieve messages with
# recv_match and those will not be in self.mav.messages until
# you do this!
Also, wait_heartbeat ignores heartbeats from e.g. MAVProxy
It was observed from a log of a failed CI test that the ACK from
clearing the rally items took 6 wallclock seconds to arrive.
We were not waiting for that ACK to arrive before sending the request
for the mission item count, but if it has taken more than six seconds
for the ACK to arrive it is reasonable to assume that MISSION_COUNT
could very well take more than the 10 seconds we allow for it.
If we drain the mav before sending the request for the mission count we
should remove any signficiant timing problem due to a backlog of mavlnk
messages, but the amount of traffic here is problematic.
Also drain in lots of other places where we might be spending way too
long parsing messages.
MAVProxy's output is read by autotest via pexpect.
SITL's output is read by MAVProxy.
If we don't read MAVProxy's stdout then it doesn't read SITL and
everything stops.
Also, since we need to drain pexpects as part of reboot, and applying
parameter files requires rebooting... we need to append the expect
objects to the global list before we apply parameter files. So move
that call.