aethersdr / aethersdr/AetherSDR

MEM button paints optimistically while the model waits for the radio echo

Open Beginner friendly
#5,545 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug good first issue GUI maintainer-review priority: low
Dominant language
C++
Stars
221
Forks
117
Avg merge
2d 7h
Merged PRs (30d)
299

Description

Summary

The MEM button in the TX applet is a checkable QPushButton, so Qt paints it checked the
instant it is clicked, while the model waits for the radio to echo the change back. If
that echo never arrives, MEM reads lit while memoriesEnabled() is still false.

src/gui/TxApplet.cpp:447-450:

connect(m_memBtn, &QPushButton::toggled, this, [this](bool on) {
    if (!m_updatingFromModel && m_model)
        m_model->setAtuMemories(on);
});

TransmitModel::setAtuMemories() (:440) only emits atu set memories_enabled=N and
latches nothing, which is correct under Principle II. The one thing that re-syncs the
button is syncAtuIndicators() (:679-684), and that runs on atuStateChanged(), i.e.
only when the radio actually reports back.

Why it matters

This is the same optimistic-paint shape #5292 corrected for the sibling ATU button. Its
summary says so directly:

Makes ATU checked state authoritative from model readback rather than the button's
optimistic click toggle.

That change landed for ATU and left MEM as it was.

The practical consequence showed up in #5510: the natural diagnostic question is "is the
MEM button lit?", and on a radio that does not echo, the answer is a misleading yes. The
operator sees a lit MEM and a dead Pre-tune entry, which is unexplainable from the UI.

Status

Latent, not currently biting. Verified on a FLEX-6700 running 26.9.2: the radio
echoes atu status both on sub atu all and on change, so the button and the model
agree there. It would bite on any radio or firmware that does not echo.

Filing it because it is cheap to fix, there is an in-repo precedent to copy, and its
main cost today is making a diagnostic question untrustworthy.


73, Ozy K6OZY - model: claude-opus-5

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/gui/TxApplet.cpp around lines 447-450 and compare the sibling ATU correction described in issue #5292. Trace syncAtuIndicators() and TransmitModel::setAtuMemories() to confirm the current MEM state flow. Done means the MEM button reflects model or radio readback rather than an optimistic click when no echo arrives.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop, frontend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
84/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.