Skip to content

Add rich e-ink dashboard and button paging to E290 repeater - #3141

Open
norfanos wants to merge 1 commit into
meshcore-dev:devfrom
norfanos:feat/e290-repeater-ui
Open

Add rich e-ink dashboard and button paging to E290 repeater#3141
norfanos wants to merge 1 commit into
meshcore-dev:devfrom
norfanos:feat/e290-repeater-ui

Conversation

@norfanos

@norfanos norfanos commented Aug 9, 2026

Copy link
Copy Markdown

The Heltec E290 repeater only showed node name + radio params on its 296x128 e-ink panel and didn't use the button. This adds a multi-page dashboard and wires up the Custom button on GPIO21.

  • variants/heltec_e290: PIN_USER_BTN 0 -> 21 (dedicated Custom button); keep the display live for the repeater (AUTO_OFF_MILLIS=0); construct user_btn with the internal pull-up (GPIO21 has no external pull and floats otherwise)
  • simple_repeater/UITask: e-ink-gated rich dashboard (Status / Radio / Traffic) built on the existing user_btn - short-press (CLICK) cycles pages, long-press keeps the existing power-off behaviour; gentler e-ink refresh cadence; honour AUTO_OFF_MILLIS=0 as never-auto-off
  • simple_repeater/MyMesh: expose getStats()/getNumNeighbours() for the UI (getStats also now backs the existing status request)
  • simple_repeater/main: pass the mesh into the UI task

OLED repeater variants keep their original compact view (gated on DisplayDriver::isEink()).

The Heltec E290 repeater only showed node name + radio params on its 296x128 e-ink panel and didn't use the button. This adds a multi-page dashboard and wires up the Custom button on GPIO21.

- variants/heltec_e290: PIN_USER_BTN 0 -> 21 (dedicated Custom button); keep the display live for the repeater (AUTO_OFF_MILLIS=0); construct user_btn with the internal pull-up (GPIO21 has no external pull and floats otherwise)
- simple_repeater/UITask: e-ink-gated rich dashboard (Status / Radio / Traffic) built on the existing user_btn - short-press (CLICK) cycles pages, long-press keeps the existing power-off behaviour; gentler e-ink refresh cadence; honour AUTO_OFF_MILLIS=0 as never-auto-off
- simple_repeater/MyMesh: expose getStats()/getNumNeighbours() for the UI (getStats also now backs the existing status request)
- simple_repeater/main: pass the mesh into the UI task

OLED repeater variants keep their original compact view (gated on DisplayDriver::isEink()).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant