v0.26.1
Apache NuttX RTOS backend — feature = "nuttx" runs mirui against /dev/fbN framebuffer + /dev/inputN touchscreen + optional /dev/kbdN keyboard, verified on ESP32-C3 (ST7735 SPI LCD) and qemu virtio-gpu. The framebuffer pointer comes straight from FBIOGET_PLANEINFO with no mmap. PointerState and the DPI scale heuristic are shared with the Linux backends via a small cross-platform refactor.
Added
feature = "nuttx"— opt-in NuttX backend onlibc0.2, gated ontarget_os = "nuttx".NuttxFbSurface::open(NuttxConfig)wires the framebuffer, touchscreen, optional keyboard, and a SIGTERM/SIGINT quit handler.- Framebuffer via
FBIOGET_VIDEOINFO/FBIOGET_PLANEINFO(direct pointer, RGB565 / RGB888 / BGRA8888 / RGBA8888). NuttxConfig::use_paninfocontrols per-frameFBIOPAN_DISPLAY;Noneauto-detects (virtio-gpu / DRM-style fb pan, SPI LCD doesn't).- Multi-touch via the shared
PointerState; optional/dev/kbdNkeyboard mapping X11 keysyms. - Diagnostics go through NuttX
syslog(3)(libstd's stderr blocks on USB-Serial/JTAG consoles). NuttxConfig:fb_path,touch_path,keyboard_path,display_index,overscan_inset_percent,scale,use_paninfo.
- Framebuffer via
- NuttX target CI gate — compiles the
nuttxfeature forriscv32imac-unknown-nuttx-elf.
Fixed
framebuffer()view extents are validated againstfblenat open, so an overscan offset can't build an out-of-bounds slice.flushclamps rect endpoints to display bounds instead of only the width/height.
Changed
PointerState+InputAxismoved to a cross-platformsurface/input_state.rs(and the DPI heuristic tosurface/scale.rs) so the NuttX backend reuses them verbatim.