RIOT
RIOT is a real-time multi-threading operating system written in C.
It has support for a large variety of devices, peripherals, and protocols.
For us most notably it explicitly supports the nrf52840dk
board and BLE through a port of the Apache Mynewt NimBLE stack.
[😄] Bluetooth Status
NimBLE is fully compliant with the Bluetooth 5.4 specifications with support for Bluetooth Mesh. Also notably there exists official certification for the version 1.1.0 of NimBLE that is Bluetooth 5.0 compliant.
[🙂] Rust Status
RIOT has official Rust support and proper instructions on how to use it.
Generally, it works by running C2Rust
and generating Rust bindings for the C code automatically.
In addition, there are provided wrappers that provide more proper methods of interacting with some components.
At the time of writing, there are no provided wrappers for using the NimBLE stack, so BLE interaction is done in unsafe {}
blocks using the Rust to C bindings.
By default, there is only a rust-hello-world
and rust-gcoap
example. We additionally provide a rust-ble-advertising
and rust-ble-scanning
example.
[😄] Renode Status
RIOT works in Renode with a modified UART driver that accounts for the way RIOT implemented their serial output. Thanks to the architecture of Renode, this modified UART driver can be provided externally.
Provided are Dockerfiles for building the examples and directly running them in renode.