[PATCH 00/40] expo: Add an initial configuration editor

Simon Glass sjg at chromium.org
Thu Jun 1 18:22:24 CEST 2023


This series provides a means to edit board configuration in U-Boot in a
graphical manner. It supports multiple menu items and allows moving
between them and selecting items. The configuration is defined in a
data format so that code is not needed in most cases. This allows the
board configuration to be provided in the devicetree.

This is still at an early stage, since it only supports menus. Numeric
values are not supported. Most importantly it does not yet support
loading or saving the configuration selected by the user.

To try it out you can use something like:

    ./tools/expo.py -e test/boot/files/expo_layout.dts \
        -l test/boot/files/expo_layout.dts -o cedit.dtb
    ./u-boot -Tl -c "cedit load hostfs - cedit.dtb; cedit run"

Use the arrow keys to move between menus, enter to open a menu, escape
to exit.

Various minor fixes and improvements are provided in this series:
- Update STB TrueType library to latest
- Support clearing part of the video display
- Support multiple livetrees loaded at runtime
- Support loading and allocating a file
- Support proper measuring of text in expo
- Support simple themes for expo

This series is available at u-boot-dm/cedit-working


Simon Glass (40):
  binman: Correct coverage gap in control
  expo: Correct some header-file comments
  expo: Convert to using a string ID for the scene title
  sandbox: Fix quiting when the LCD window is closed
  test: Restore test behaviour on failure
  gpio: Avoid using an invalid ofnode
  dm: core: Avoid registering an inaccessible tree
  video: Drop #ifdefs from console_truetype
  video: Provide a way to clear part of the console
  expo: Store the console in the expo
  expo: Avoid automatically arranging the scene
  console: Correct truetype spacing error
  expo: Rename exp_set_text_mode()
  fs: Create functions to load and allocate a file
  cat: Update command to use fs_load_alloc()
  fdt: Align the start of the livetree
  fdt: Clarify the fdt pre-relocation warning
  fdt: Allow more general use of livetree
  bootstd: Add a separate log category for expo
  video: Correct docs for video_index_to_colour()
  video: Allow temporary colour changes
  console: Allow measuring the bounding box of text
  expo: Allow setting the start of the dynamic-ID range
  video: Use enum with video_index_to_colour()
  expo: Add width and height to objects
  expo: Use flags for objects
  expo: Calculate text bounding-box correctly
  expo: Set up the width and height of objects
  expo: Support simple themes
  expo: Move menu-item selection into a function
  expo: Support drawing of popup menus
  expo: Rename EXPOACT_POINT to EXPOACT_POINT_ITEM
  expo: Draw popup menus in both opened and closed states
  expo: Draw the current opened menu on top
  expo: Implement the keypress logic for popup menus
  expo: Add spacing around menus and items
  expo: Support building an expo from a description file
  expo: Add a configuration editor
  expo: Add tests for the configuration editor
  RFC: video: Update stb_truetype

 arch/sandbox/cpu/sdl.c            |    3 +-
 arch/sandbox/dts/cedit.dtsi       |   64 +
 arch/sandbox/dts/sandbox.dtsi     |    6 +
 arch/sandbox/dts/test.dts         |   13 +
 boot/Kconfig                      |   14 +
 boot/Makefile                     |    3 +-
 boot/bootflow_menu.c              |    6 +-
 boot/bootmeth-uclass.c            |   30 +-
 boot/cedit.c                      |  163 +++
 boot/expo.c                       |  102 +-
 boot/expo_build.c                 |  401 +++++
 boot/scene.c                      |  361 ++++-
 boot/scene_internal.h             |   84 +-
 boot/scene_menu.c                 |  290 +++-
 cmd/Kconfig                       |    9 +
 cmd/Makefile                      |    1 +
 cmd/cat.c                         |   47 +-
 cmd/cedit.c                       |   93 ++
 common/log.c                      |    1 +
 configs/sandbox_defconfig         |    1 +
 doc/develop/expo.rst              |  305 +++-
 doc/usage/cmd/cedit.rst           |   31 +
 doc/usage/index.rst               |    1 +
 drivers/core/ofnode.c             |   27 +-
 drivers/gpio/gpio-uclass.c        |    2 +-
 drivers/video/console_truetype.c  |  259 ++--
 drivers/video/stb_truetype.h      | 2257 ++++++++++++++++++++++++++---
 drivers/video/vidconsole-uclass.c |   42 +
 drivers/video/video-uclass.c      |   54 +-
 fs/fs.c                           |   58 +
 include/dm/of.h                   |    2 +
 include/dm/ofnode.h               |   10 +
 include/expo.h                    |  209 ++-
 include/fs.h                      |   38 +
 include/log.h                     |    2 +
 include/of_live.h                 |   10 +
 include/test/cedit-test.h         |   29 +
 include/test/ut.h                 |   36 +-
 include/video.h                   |   22 +-
 include/video_console.h           |   78 +
 lib/of_live.c                     |   11 +-
 test/boot/expo.c                  |  241 ++-
 test/boot/files/expo_layout.dts   |   84 ++
 test/dm/ofnode.c                  |   45 +
 test/dm/video.c                   |    6 +-
 test/py/tests/test_ut.py          |   10 +
 tools/binman/control.py           |    2 +-
 tools/expo.py                     |  130 ++
 48 files changed, 5110 insertions(+), 583 deletions(-)
 create mode 100644 arch/sandbox/dts/cedit.dtsi
 create mode 100644 boot/cedit.c
 create mode 100644 boot/expo_build.c
 create mode 100644 cmd/cedit.c
 create mode 100644 doc/usage/cmd/cedit.rst
 create mode 100644 include/test/cedit-test.h
 create mode 100644 test/boot/files/expo_layout.dts
 create mode 100755 tools/expo.py

-- 
2.41.0.rc0.172.g3f132b7071-goog



More information about the U-Boot mailing list