Skip to content

feat(fm): DTMF keypad for FM mode (DM) - #174

Merged
dc0sk merged 2 commits into
mainfrom
feat/dtmf-keypad
Jul 25, 2026
Merged

feat(fm): DTMF keypad for FM mode (DM)#174
dc0sk merged 2 commits into
mainfrom
feat/dtmf-keypad

Conversation

@dc0sk

@dc0sk dc0sk commented Jul 25, 2026

Copy link
Copy Markdown
Owner

FR-FM-02. A DTMF button on the FM panel opens a 4×4 keypad (09, AD, *, #), each key sending one DM tone.

This is the part of the gap-analysis item worth building: sending DTMF for repeater and link control is impossible over a remote link any other way.

Scoped down deliberately

  • 6 stored sequences — config work, deferred to a follow-up.
  • 1750 Hz tone burst — has no documented CAT command in D12 (searched). Un-buildable, not un-built; guessing a command is the RO/RA wire-format trap this project has hit.

send_dtmf refuses a non-DTMF character rather than emitting a malformed DM.

Verification

  • The encoder over every keypad digit, and non-digit refusal — by test.
  • The popup on screen by forcing it open in --demo: the standard telephone grid (1 2 3 A / 4 5 6 B / 7 8 9 C / * 0 # D).

A method note: several xdotool clicks missed the FM-row button by ~40 px, so rather than keep guessing coordinates I confirmed the overlay via its open flag — the wiring mirrors the working memories/about overlays.

Branches from main (v0.7.0).

🤖 Generated with Claude Code

https://claude.ai/code/session_01KiAgfnGv746wwVBSfFkoRY

dc0sk and others added 2 commits July 25, 2026 15:55
FR-FM-02. A DTMF button on the FM panel opens a 4x4 keypad (0-9, A-D, *, #),
each key sending one DM tone. This is the part of the gap-analysis item worth
building: sending DTMF for repeater and link control is impossible over a
remote link any other way.

Scoped down deliberately. The 6 stored DTMF sequences are config work, deferred
to a follow-up. The 1750 Hz tone burst has no documented CAT command in D12
(searched), so it is un-buildable rather than un-built - guessing a command is
the RO/RA wire-format trap.

send_dtmf refuses a non-DTMF character rather than emitting a malformed DM.

Verified: the encoder over every keypad digit by test; the popup on screen by
forcing it open in --demo (the standard telephone grid renders). Several
xdotool clicks missed the FM-row button by ~40 px, so rather than keep guessing
coordinates I confirmed the overlay via its open flag - the wiring mirrors the
working memories and about overlays.

324 tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KiAgfnGv746wwVBSfFkoRY
@dc0sk
dc0sk merged commit 5e4a00f into main Jul 25, 2026
3 checks passed
dc0sk added a commit that referenced this pull request Jul 25, 2026
DTMF (#174) and the DATA-lag fix (#176) landed on main; both are additive to
the transverter work. Kept both test functions (a brace was split at the
DTMF/XVTR seam), both sets of state fields, and both docs; ledger 3.x block
renumbered to remove duplicates.
@dc0sk dc0sk mentioned this pull request Jul 25, 2026
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