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).
Both FrSky and Jeti can use 24 channels. INAV doesn't handle the additional channels gracefully, certainly from Jeti. This PR increases the channel count to 24. But, does not apply to F411 or F722.
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.