clang can be verbose with warnings, but some of it is probably valid when building a 64bit binary.
Highlighted changes:
* Call float versions of math functions to avoid conversion to double by the compiler (absf, sqrtf, roundf, etc)
* Make sure floating point constants are marked as floats, to avoid conversion to double by the compiler. (1.0 is a double, 1.0f is a float and when doing math between float and double, all values get upgraded to double!)
* Changed memcpy_fn in unit test AND SITL builds to be a macro to memcpy (instead of inline function calling memcpy), this fixes linker errors for memcpy as macos compiler mangles the symbol in a different way and would not work with asm("memcpy") call.
* Some simulator code made heavy use of doubles, but since all the data in INAV is float, that is probably overkill and some functions/macros had float in the name, while upconvertting to double.
Open questions:
* Should scale in osdFormatCentiNumber be changed to float? It is currently uint32_t but some of the scale defines are, correctly, not integer numbers.
* I changed CENTIDEGREES_TO_DEGREES to use float on the division path, but the code seems to be ok, or assuming it would be converted to integer anyway. Is this the correct solution?
* This still does not fix the invalid settings issues, I suspect it is related to the lack of linker scripts in clang, to preserve the section data of settings.
* Binary is still not multi platform (arm/x86_64).
This PR takes the existing Linear Descent option for RTH and enhances it. Firstly, Linear Descent is now no longer an RTH type. If previously using `AT_LEAST_LINEAR_DESCENT`, you should now just use `AT_LEAST` as the RTH type. Linear Descent is now a separate option that can be used with and other RTH type. To do this, the target altitude of the descent is now the `nav_rth_home_altitude`. In some cases, if flying below the home position, this could even be a linear ascent.
An option has also been added to decide how far away the linear descent starts. This is via the `nav_rth_linear_descent_start_distance` parameter. Current behaviour can be maintained by setting this to `0` [default]. You can also specify a distance from home when the descent begins. This is in metres and be up to 10km away. Of course, this value can be adjusted if required.