FreeInkUI

On this page

xpui on FreeInkUI

xpui_fui.cpp implements the C ABI in xpui_fui.h against the FreeInk SDK's UI library. It binds to freeink::ui::DisplayTarget, which needs nothing but a raw 1-bit framebuffer and ships its own Noto Sans bitmap font, so this file is firmware-agnostic: any board that can hand over a framebuffer can host xpui.

Using it

The header is the contract. It, ../src/raw.rs, this file and the Rust doubles move together. A firmware compiles two sources — xpui_fui.cpp and FreeInkUI's own src/FreeInkUI.cpp — with <freeink-sdk>/libs/ui/FreeInkUI/include and this directory on the include path, C++17 or later. Two calls at startup wire it up: xpui_fui_attach with the panel's framebuffer, and xpui_fui_set_present with the function that pushes a frame. ../docs/firmware.md has the build lines, the wiring, and what this build does not ship.

Checking it

The gate is the repository's; run ./build-and-test.sh from the root. Its the shim compiles stage compiles this file against the SDK named by FREEINK_SDK_INCLUDE, and skips with a note when that is unset.

Where next

../docs/firmware.mdadding it to a firmware, wiring it up, what the build does not ship, checking it compiles by hand
../docs/coverage.mdwhich FreeInkUI components this file uses, and which it does not

Edit this page on GitHubIt lives in xpui-backends; a correction goes there.