when we have corrupt input due to loss of bytes on a UART we can end
up with a u-blox packet with zero payload bytes. When that happens we
need to bypass payload reading as otherwise we will end up keeping
reading bytes until the driver resets at 4 seconds, causing a GPS
outage.
This was causing GPS outages every few hours in copters running 3.6.7,
and was also reproduced in SITL using SIM_GPS_BYTELOSS.
this frees up DMA for USART1_RX, which gives DMA for input over the
SERIAL5 WiFi port, which is important for applications where a
pixracer is being fed vision data over WiFi
AP_OABendyRuler: support exclusion polygons
AP_OADijkstra: support exclusion polygons
AC_Avoid: adjust_velocity supports exclusion polygons
AC_Avoidance: handle fence::get_boundary_points returning nullptr instead of setting num_points to zero
AC_Avoidance: Dijkstra's works with only exclusion polygons
AC_Avoidance: Dijkstra: check for fence counts instead of polyfence validity
We really only care whether fences can be returned - and they won't be
returned unless they are valid
AC_Avoidance: BendyRuler: just try to get inclusion fence rather than checking validity
AC_Avoidance: BendyRuler supports exclusion circles
AC_Avoid: Dijkstra support for exclusion circles
AC_Avoid: BendyRuler support for inclusion circles
AC_Avoid: stop an inclusion/exclusion circular fences
AC_Avoid: stop at inclusion/exclusion circular fences
AC_Avoid: fixes to Dijkstra's use of inclusion/exclusion circles and polygons
AP_Avoidance: take semaphores when interacting with AHRS and polyfence
AC_Avoid: Dijkstra's fix for some_fences_enabled inclusion circles
AC_Fence: add interface for retrieving exclusion polygons
AC_Fence: add interface to get exlusion polygons to polyfence loader
AC_Fence: add suport for inclusion circles
AC_Fence: add option for compiling-out FENCE_POINT protocol support
AC_Fence: get_exclusion_polygon and get_boundary_points set num_points to zero on failure
AC_Fence: use Debug(...) to hide debug messages
AC_PolyFence_loader: add methods to retrieve all inclusion zones
AC_PolyFence_loader: valid simply returns true if a polygon boundary can be returned
AC_Fence: add get_exclusion_circle
AC_Fence: add get_exclusion_circle_update_ms accessor
AC_Fence: PolyFence_loader gets inclusion circle accessors
AC_PolyFence_loader: add and use semaphore to protect loaded fence
AC_Fence: move fence breach check below fence type checks
This allows us to provide more information to the user about why they
are breached.
For example, if the radius is negative you are considered in breach of
it - but we'd tell you you were breached, not that your radius was
invalid
AC_Fence: clear the fence if we discover the user has set the fence count to zero
Tools: autotest: move clear_mission up, use it before running each test
Also have it understand MAV_MISSION_TYPE_ALL
Tools: autotest: add tests for polyfence
Tools: autotest: add tests for multiple inclusion polyfences
Tools: autotest: ensure we can't arm inside a circle exclusion zone
Tools: autotest: add test for arming outside an inclusion zone
Tools: autotest: add tests for upload timeout
Tools: autotest: add tests for not arming due to polygon zones
Tools: autotest: add test for fence point reboot survivability
Tools: autotest: add test for moving fence point
Tools: autotest: add some tests via MAVProxy
Tools: autotest: add test for avoiding polygonal exclusion zones
Tools: autotest: add test for object avoidance
Currently disabled as it doesn't pass where it seemingly should.
Tools: autotest: skip MAVProxy tests on older MAVProxy versions
Tools: autotest: adjust fence loading for lack of string back from MAVProxy
Tools: autotest: create a do_RTL function
Tools: autotest: cope with loading QGC-style fence files
Tools: autotest: add test for object-avoidance in guided mode
Tools: autotest: add OA test for auto mode
Tools: autotest: add test for bendy ruler in guided mode
Tools: autotest: adjust for new MAVProxy fence module not emitting old strings
Tools: autotest: add tests for prearming due to bad parameter values