Documentation
Extensions
Apps by other authors: their own dashboard rows, alerts and wheel commands — only with your permission.
An extension is an ordinary Android app written by someone other than the author of LoEUC. While the phone holds a wheel, LoEUC connects to the extension and gives it exactly what you allowed: reading telemetry, adding rows to the Extensions tile, raising alerts and sending commands to the wheel. LoEUC's source code is not needed for this; only the contract is open.
Extensions are available on Android only.
Where they are#
Settings → Link and sensors → Extensions. That is the list of installed extensions and the state of each. Tap one to open its page: what it asks for, its settings, its switches and the command journal.
Until you allow an extension, LoEUC does not connect to it and gives it nothing.
What you allow#
The permission screen lists everything the extension declares about itself:
- that it reads the wheel's telemetry — the same readings, as often as the dashboard gets them;
- whether it needs your location — you grant that with a separate switch, and without it the position is not in what the extension receives;
- which rows it adds to the tile;
- which alerts it may raise;
- which commands it may send to the wheel — in words and, for the author's own command, as its bytes.
The extension cannot do anything beyond what it declared: LoEUC refuses any key it does not know. If an update changes what the extension asks for, or the extension turns out to be signed with a different key, LoEUC asks again.
An extension affects the wheel you are standing on. Allow only what you trust the author of. LoEUC guarantees that only a declared command reaches the wheel, but it cannot check that the declaration is honest.
What LoEUC never allows#
- Powering the wheel off while it is moving.
- Sending a command during dump playback or a demo ride.
- Writing to the wheel while a plugin upload, a bank check or a PID apply is running.
- More than four commands a second.
- Sending gyroscope calibration or the bootloader entry to the brands where those commands are known.
The extension receives the reason for every refusal, and the journal shows every command: the time, the key, the bytes and how it ended.
The Extensions tile#
Extension rows share one tile, added with the plus button like any other. It shows as many rows as fit its height. A value the extension has not updated for five seconds turns into a dash. Tapping the tile opens the extensions screen.
Alerts#
Extension alerts are played by the same engine as your own alerts, and your alerts always come first: an extension cannot talk over a speed or PWM alert.
For authors#
The contract is MIT-licensed: the loeuc-extension-api module in the
loeuc-core repository, the guide in
docs/extensions.md, and working examples: examples/android-extension (a tile row and an alert) and examples/android-extension-hud, a bridge to your own BLE device with an ESP32 sketch. LoEUC hands the extension telemetry, the extension forwards it to your display, and the display's button becomes the wheel's horn and headlight. Sign the extension
with any key of your own; there is nothing to register with LoEUC.