While technically legal, it's unlikely to have been tested and an
allocatee might do silly things. Also makes the logic a bit more clear
and improves the failure message.
this fixes an issue when developing for ChibiOS AP_Periph targets
where loading the elf file in gdb doesn't allow it to run as it
doesn't have the correct AP_Periph signature (crc, board type etc)
This patch modifies the elf file to fill in the signature, so when you
load in gdb the bootloader will be able to run the signature checks
and load the firmware
It is technically legal to receive an "allocation" of the broadcast node
ID. Fortunately, this was already ignored by `canardSetLocalNodeID`,
though it would trigger an assertion failure if those were enabled.
Fix by rejecting that ID. There is effectively no change in behavior
(except possibly fixes using moving baseline GPSes) but the code now
correctly ignores that ID and retries the allocation as it did before.
this is going to be used for changing the rate of a specific instance of a message at some stage
we have to reject it for now so that when the index is used the GCS is told that their message is invalid in this older version of the autopilot
it is possible to build for boards without storage (so no Posix, no Fatafs), but still have scripts in ROMFS.
In this case we will use the backend AP_Filesystem_backend base class when doing file operations. This will alway fail to open directories, so when we try to load scripts from SCRIPTS_DIRECTORY it will always fail.
This leads to a warning being emitted:
Lua: State memory usage: 2796 + 5227
AP: Lua: open directory (./scripts) failed
AP: hello, world
Time has wrapped
Which isn't great.
Detect we are working on this filesystem and don't warn.
The biggest feature here is the massive whitelist. Many features can be marked as compiled-in but will be elided by the compiler as it isn't called anywhere. That's OK, but it does mean we can't check for its presence or absence based on symbols.
the signing key structure is not marked as packed, which means it has
a 4 byte padding between the uint32_t magic and the uint64_t
timestamp. This gets written to the database and valgrind warns about
a write of uninitialised bytes. It is harmless as when the structure
is read the field is not used