Skip to content

task: split Button and buzzer into Node Settings and Message Settings (#975) #978

Open

Description

@diffwireauto

Parent: #975

Corrected 2026-10-24. The first version said a buzzer-only radio gets "a dead button section or nothing" from today's screen. That was wrong: device_ui_view.dart:41-42 already shows each half from its own bit, and only the entry tile is gated on the OR. It also used the T1000-E as the buzzer-only example; that board has both. The firmware question it waited on is answered, below. This is a placement change, not a gating fix.

Split the Button and buzzer screen into two independently placed panes.

Today one entry tile, "Button and buzzer" (settings_screen.dart:465-489, body DeviceUiView), lives under Node Settings and is shown when either supportsButtonMatrix || supportsNotifyScope. Inside it each half already follows its own bit. The problem is that the buzzer has nothing to do with the node's identity, and a buzzer-only radio shows an entry titled for a button it does not have.

Build

  • Button actions stays under Node Settings, shown only when caps byte 2 0x02 (OFFBAND_CAP2_BUTTON_MATRIX) is set.
  • Buzzer and tones moves into Message Settings beside Notifications, shown only when caps byte 2 0x01 (OFFBAND_CAP2_NOTIFY_SCOPE) is set. Message Settings already advertises "Notifications and message handling" in its subtitle.
  • Both halves keep their current behavior and wire writes; only placement and the entry gates change.

Firmware facts (answered, verified on firmware-base)

The two bits are set independently: NOTIFY_SCOPE where PIN_BUZZER is defined, BUTTON_MATRIX where PIN_USER_BTN is (MyMesh.cpp:3012, :3018). Real buzzer-only boards, confirmed by AmberForge 2026-10-24: m5stack_unit_c6l, thinknode_m9, wio-tracker-l1-eink. Nothing is needed from firmware.

Sequenced after #969 because both edit settings_screen.dart (file-convergence rule).

Done when

  • All four combinations render correctly: button only, buzzer only, both, neither. A radio without a capability shows no row for it and emits no command for it.
  • flutter analyze and flutter test clean.

Filed by MistyLynx (session 6c0d5797).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions