Embedded User Interfaces

Team: Jared Moulton

Project

Embedded interfaces are constrained, outdated, and non-portable

  • Solved the lack of portability in embedded user interfaces by creating a UI library that runs on all desktop OSs and microcontroller class hardware
  • Implemented a reactive system of state management on embedded devices for perfectly efficient updates and minimal renders
  • Brings modern UI APIs to embedded systems
  • Eliminates need for tree diffing and prevents expensive view construction code from being called multiple times
  • Hot reloading of compiled UI with minimal changes for fast iteration

System

System flow diagram

Methods

  • Built a new portable UI library that could be used to build user interfaces across the standard platforms as well as embedded devices.
  • Created abstraction layer over rendering backends ensuring GPU acceleration on desktop and CPU rendering on microcontrollers
  • Designed flexibility for future hardware-accelerated graphics capabilities on microcontrollers

Conclusion

  • Achieved code portability with zero changes required between desktop and embedded targets
  • Created functional demo of a smart home controller UI
  • Reactive state system delivers efficient updates as designed
  • Implementation of binary hot reloading capability for embedded systems
  • Development of additional renderer backend utilizing hardware-accelerated peripherals on embedded devices
  • Bridges gap between desktop and embedded UI development experiences