The netapi notify API enables protocol-independent, cross-layer
notification events.
Lower layers in the network stack can use this to inform upper
layers of network events.
The RIOTBOOT_SKIP_COMPILE flag is already present in our code base, but
it did not really result in compilation of `riotboot` as a dependency of
another app to be skipped.
This fixes the issue and allows users to explicitly build riotboot for
a given set of boards upfront, and then build any number of apps
depending on `riotboot` to be build with `RIOTBOOT_SKIP_COMPILE=1` and
cutting the compilation time in half.
This is particularly valuable as various parameters such as
`RIOT_CI_BULLD` or `CCACHE` do not get passed down to the implicit
`riotboot` build. In a CI that makes use of `CCACHE`, this results in
the CI time quickly being dominated by implicit builds of `riotboot`
when many apps use SUIT.
The ESP-IDF WiFi interface wrapper always calls `xSemaphoreTakeRecursive` and `xSemaphoreGiveRecursive` for mutexes, regardless of whether they are recursive or not. Instead of an `assert`, the fix now also checks the type of the mutex in the functions for recursive mutexes and then calls the functions for normal mutexes if the mutex is not recursive.
- do not use `bash` in shebang, e.g. containers may not ship bash
- do not use `flock -w <timeout_secs> ...`, but
`timeout <timeout_secs> flock ...` to be portable to even busybox's
flock implementation
- sha512sum is more common on Linux than shasum
On a setup I have on my desk I can reliably get the I2C bus stuck. But
the current unstuck logic will not get it unstuck. Adding a full reset
of the SERCOM does fix the issue, though.
Co-authored-by: crasbe <crasbe@gmail.com>
The `setcontext()` implementation of glibc does restore the signal
mask to the target thread during the switch, libucontext [does not][1]
[1]: https://man.archlinux.org/man/libucontext.3.en#CAVEATS
Instead, we just manually enable signals again just before the call
to `setcontext()`.
With this, tests like `tests/core/mutex_canel` or `tests/core/irq` now
pass on `native64` when using libucontext.
Co-authored-by: crasbe <crasbe@gmail.com>
- split out the detection logic into a static helper function
- replace a forgotten debug `printf()` with `DEBUG()`
- add a `LOG_ERROR()` to when no device is detect to ease diagnosis of
a failing SPI bus / incorrect wiring / broken chip
- use a bullet-proof test:
- First set the modulation type to LoRa
- Then get the modulation type and expect it to be LoRa
Even if the reset of the devices fails (e.g. because the reset signal
is not connected) and the modulation would be different from LoRa, this
now should reliably detect the chip.