Blip default firmware
Default firmware for blip which collects data from all onboard sensors and sends it over BLE. We use something we are calling Indrium as our specification for the data format.
Indrium is a protobuf spec we are using for sensor data. Protobuf is a serialization format and it doesn't say anything about the transport layer (which couild be BLE, or serial, or TCP etc.). Indrium spec contains BLE transport layer requirements also, like the UUIDs of the service and characteristec, and how large packets will be divided into smaller chunks (fragmentation).
Although this may increase the number of bytes that need to be sent, especially for smaller packets, it is structured data which is easy to parse using libraries generated with protobuf tools. In firmware we use nanopb library for parsing/generating protobuf messages.
The linked document contains information about BLE specific portions of the protocol also. Please see: BLE transport specification.
No special build instructions, except that for now,
Zephyr needs a certain
branch, currently at
This branch is based off
Zephyr release v1.14, we only added drivers code for
which is not yet in mainline zephyr (it's in the process of being merged).
To get to this branch:
cd /path/to/zephyr/ git remote add electronut https://github.com/electronut/zephyr.git git fetch --all git checkout electronut/blip_dev
Building the firmware:
cd /path/to/default_fw git submodule init && git submodule update # for nanopb . ~/repos/zephyrproject/zephyr/zephyr-env.sh mkdir build cd build cmake -GNinja -DBOARD=nrf52_blip .. ninja flash