1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-23 16:25:26 +03:00
inav/lib/main/MAVLink
Marcelo Bezerra 69bd3e9d93
[SITL OSX] Fix some of the warnings and add macosx SITL build to workflows (#9063)
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).
2023-05-25 13:12:03 +02:00
..
common MAVLink V2 library (auto-generated) 2021-02-28 18:26:02 +00:00
minimal MAVLink V2 library (auto-generated) 2021-02-28 18:26:02 +00:00
.gitignore mavgen library generator scripts 2021-02-28 18:25:07 +00:00
checksum.h MAVLink V2 library (auto-generated) 2021-02-28 18:26:02 +00:00
generate.bat mavgen library generator scripts 2021-02-28 18:25:07 +00:00
generate.sh Remove MAVLink inline modifiers 2021-04-06 11:42:25 +01:00
mavlink_conversions.h MAVLink V2 library (auto-generated) 2021-02-28 18:26:02 +00:00
mavlink_get_info.h MAVLink V2 library (auto-generated) 2021-02-28 18:26:02 +00:00
mavlink_helpers.h [SITL OSX] Fix some of the warnings and add macosx SITL build to workflows (#9063) 2023-05-25 13:12:03 +02:00
mavlink_sha256.h MAVLink V2 library (auto-generated) 2021-02-28 18:26:02 +00:00
mavlink_types.h MAVLink V2 library (auto-generated) 2021-02-28 18:26:02 +00:00
protocol.h Remove MAVLink inline modifiers 2021-04-06 11:42:25 +01:00
README.md Remove MAVLink inline modifiers 2021-04-06 11:42:25 +01:00

MAVLink Generator (mavgen)

This directory contains the MAVLink library and scripts to automatically generate it from MAVLink definitions.

In order to run it, you will need Python and some other libraries installed.

Then, run the appropriate script (generate.sh for Linux, generate.bat for Windows) to automatically re-generate the library.

IMPORTANT NOTE

By default, the MAVLink library declares all of its functions as inline, which results in common functions being duplicated many times. After generating the library, protocol.h must be modified, and all inline keywords removed. This is performed automatically by generate.sh, but not by generate.bat as Windows batch files do not have an equivalent to sed. So, this must be done manually on Windows.