Also swaps to using an AP_Enum for the SBAS type, and fixes up the fact
that the prearm/failure reasons should be using the config step, rather
then the init blob index
This fixes a configuration problem with SBF unit's where sometimes we
fail to detect the GPS unit continously, until it's been manually
configured. This was tested by doing a hard reset to the GPS unit.
This also now accepts a set of defines from the hwdef, or build
environment, which allows us to specify extra config options.
This improves log analysis of bad GPS health messages when you have a
report of bad GPS health but lost the MAVLink message, or didn't have
access to the autopilot log with the information for some reason.
If the event pin floats, this can lead to UART congestion, causing the
EKF to reject the GPS data, and the vehicle will drift around the sky in
a most disturbing manner
In file included from ../../libraries/AP_GPS/AP_GPS_SBF.cpp:22:
../../libraries/AP_GPS/AP_GPS_SBF.h:75:14: warning: private field
'last_injected_data_ms' is not used [-Wunused-private-field]
uint32_t last_injected_data_ms = 0;
^
../../libraries/AP_GPS/AP_GPS_SBF.h:210:7: warning: private field
'RxError_bits' is not used [-Wunused-private-field]
} RxError_bits;
Note: The config string of "spm, Rover, StandAlone+SBAS+DGPS+RTK\n" is
incompatible with AsteRx-M FW 3.6.3 and will result in refusing to
arm/pass configuration checks
Due to the way the headers are organized a single change in a
AP_GPS backend would trigger a rebuild for most of the files in the
project. Time could be saved by using ccache (since most of the things
didn't change) but we can do better, i.e. re-organize
the headers so we don't have to re-build everything.
This makes internal headers internal and then other libraries only
depend on the AP_GPS.h header.