I have been looking in the code and am trying to find where the variables used in the Location struct are defined in terms of axis system, sign conventions, units and ranges. I have looked in /AP_Common/Location.h.
AP_Common.h doesn’t have the information you are looking for? The only one that stands out to me as being undefined across the system is the ellipsoid that is used, a quick git grep seems to indicate that it is WGS-84, although I’m not sure we actually enforce that on a GPS receiver anywhere. HAE != MSL is one that particularly stands out though.
There’s other stuff that’s undefined, for example Longitude = longitude * 10**7.
What are the units of longitude? - I think it’s degrees, what’s the valid range? - I think it’s ± 180E7, Is it positive going east/west? - I think it follows the east is positive convention. I inferred this by digging through the code and looking at how it is used, but shouldn’t have to do so for a fundamental data type.
I am working on a PR to do GPS blending at the moment, so will update the documentation for this data type at the same time.
I think we should specify it as being WGS-84. The height datum used is a significant issue when combining data from different GPS receivers.