Skip to content

PTT stops working after global profile load #145

Description

@ten9876

Bug

After loading a global profile (profile global load), the radio destroys and recreates the active slice. During this process, the TX client handle resets to 0x00000000 and our client never re-requests TX assignment. PTT is non-functional until the user restarts the app.

Root Cause

The profile load sequence:

  1. profile global load "profileName" sent
  2. Radio sends slice 0 in_use=0 → our SliceModel is removed
  3. Radio rebuilds the slice with the profile's settings
  4. New slice 0 in_use=1 arrives → new SliceModel created
  5. We send slice set 0 active=1 but never re-request TX
  6. interlock tx_client_handle=0x00000000 — no client owns TX
  7. PTT/MOX commands are ignored

Log Evidence (from user LB9KJ, FLEX-6600 on macOS)

[11:22:43.253] slice 0 in_use=0 tx=1 active=0    ← slice destroyed
[11:22:43.253] MainWindow: slice removed 0
...
[11:22:43.622] slice 0 pan=0x40000000 mode=USB qsk=0 tx=1  ← slice recreated
[11:22:43.622] MainWindow: slice added 0
[11:22:43.622] TX: "C118|slice set 0 active=1"              ← active set, but no TX request
...
[11:23:43.621] interlock tx_client_handle=0x00000000 state=READY  ← nobody owns TX

Fix

In onSliceAdded(), after setting the slice active, check if it has tx=1 and re-send slice set <id> tx=1 to claim TX assignment. Or re-request TX after detecting a profile load completion.

Affected

Any user who loads a global profile from the Profiles menu after connecting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions