Skip to content

APRS message-services dropdown on Recipient field (SMS, Email, Winlink, WXBOT, ISS/satellite) #3569

@jensenpat

Description

@jensenpat

Summary

Add an APRS message-services dropdown to the APRS messaging UI so operators can address common APRS gateway/auto-responder services without memorizing their callsigns and message-text syntax. The trigger would be a small arrow/picker attached to the Recipient ("To") field; selecting a service pre-fills the destination callsign and seeds the message text with the correct command template (and a hint about character limits).

This is a discoverability/usability feature — all of these services already work today by manually typing the right destination callsign and body. The dropdown just makes them one tap away.

Where this lives in the code

The APRS messaging client landed in #3530 (AetherModem APRS client). Relevant spots:

  • Recipient field: m_aprsMsgTo — a plain QLineEdit with placeholder "To (N0CALL-7)", in src/gui/Ax25HfPacketDecodeDialog.cpp (~line 3025).
  • Send path: sendAprsMessageFromUi() (~line 3445) reads m_aprsMsgTo/m_aprsMsgText and calls AprsMessenger::sendMessage(to, text).
  • Encoder: aprs::encodeMessage() in AprsPacket.cpp (~line 594) builds the :ADDRESSEE :text{NN frame (addressee padded to 9 chars, uppercase).
  • Today the "To" field is populated only via station-table double-click, the roster right-click "Send Message to…" action, and message "Reply".

The dropdown would sit next to m_aprsMsgTo (an arrow button or a QComboBox affordance) and, on selection, call m_aprsMsgTo->setText(...) plus optionally seed m_aprsMsgText.

Proposed UX

  • Small down-arrow/caret button attached to the right of the "To" field (or a combo affordance).
  • Categories in the menu: SMS · Email · Winlink · Weather (WXBOT) · Satellite/ISS.
  • Selecting an entry:
    1. Sets the destination callsign (e.g. SMSGTE, EMAIL-2, WLNK-1, WXBOT).
    2. Pre-fills the message text with a template + placeholder (e.g. @15551234567 and put the cursor after it).
    3. Shows a short inline hint with the per-service char limit (most are ~67 chars of message text) and a one-line "what this does".
  • Satellite entries additionally suggest setting the TX path to a satellite path (e.g. ARISS / RS0ISS) rather than the terrestrial WIDE1-1,WIDE2-1 — worth a note since path matters more than addressee for sat work.

Services to include (with sample uses)

Limits: APRS message text is ~67 characters per message for most of these gateways. Destination is the addressee of an APRS message (the :ADDRESSEE :… field), not the AX.25 tocall.

1. SMS — SMSGTE

Send an SMS text to a phone; replies come back as APRS messages.

  • To: SMSGTE
  • Body: @<10-digit-number> <message> — e.g. @15551234567 Running 20 min late
  • Aliases: register a number with #mynumber add <number>; then address by alias instead of the full number to save characters.
  • Notes: unpublished inbound number (anti-spam); ~67 char limit including the number.

2. Email — EMAIL-2

APRS → email gateway. (Classic AnsToRosetta-style "EMAIL" service, now EMAIL-2.)

  • To: EMAIL-2
  • Body: <email@address> <message> — e.g. jane@example.com Landed safe, call you tonight
  • Setup: first send <your@email> to EMAIL-2 to register a short userid alias; replies are held ~24h and retrievable by sending get to EMAIL-2.

3. Winlink (email + one-line SMS) — WLNK-1 (APRSLink)

Full Winlink radio-email bridge driven over APRS messaging.

  • To: WLNK-1
  • Help / command list: send ?
  • One-line email/SMS: SMS <email-or-callsign> <message> — e.g. SMS bob@example.com QRV on 40m
  • Multi-line email: SP <email|callsign|alias> <subject>, then subsequent messages form the body, terminated by /EX.
  • Other commands: L (list), R# (read msg #), K#/Y# (kill/forward), P (playback), etc.
  • Notes: put WLNK-1 in your status/comment text to get new-mail alerts on the radio front panel.

4. Weather — WXBOT

Auto-responder returning a brief US NWS forecast / METAR for a location.

  • To: WXBOT
  • Body examples:
    • Boston,MA (city, USPS state abbrev — comma required)
    • Houston,TX Saturday
    • Honolulu,HI current
    • KJFK / KSFO (4-char ICAO → METAR; works internationally)
    • DW6273 (CWOP station id), 4/6-char Maidenhead grid, or 41.123/-122.112 lat/lon
    • bare (no body) → forecast for your last-heard position
  • Notes: METAR and CWOP queries are the only ones useful outside the US.

5. Satellite / ISS APRS digipeater

Not a message addressee service — this is about routing. Worth a menu entry that nudges the user to set the right path for working the ISS / sat digipeaters (and reminds them SMS/EMAIL gateways are reachable through the bird).

  • ISS digipeater: 145.825 MHz FM; path ARISS (a.k.a. RS0ISS). Successful digipeat shows RS0ISS* in the path; visible globally on aprs.fi.
  • Use: address a short (≤~60 char) message or position to a buddy, or to SMSGTE/EMAIL-2 to relay off-grid SMS/email via the pass.
  • Practical: best on passes >30–40° elevation; the digi is intermittent during the ~10-min pass.

Open questions / scope notes

  • Static vs. configurable list: ship a built-in list, but consider letting users add custom service entries (callsign + template + hint) in settings, since regional gateways vary.
  • Char-count helper: since most services cap at ~67 chars, a live character counter next to the message box would pair well with this (could be a follow-up).
  • Path coupling for satellite entries: decide whether selecting a sat entry should offer to switch the TX path, or just show a hint. Changing path is more intrusive than setting an addressee.
  • Regional accuracy: SMSGTE / EMAIL-2 / WLNK-1 / WXBOT are the well-known global instances; confirm current callsigns/SSIDs at ship time (services occasionally change SSIDs).

References


Follow-up to #3530.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GUIUser interfaceNew FeatureNew feature requestenhancementImprovement to existing featuregood first issueGood for newcomersmaintainer-reviewRequires maintainer review before any action is taken

    Type

    No type
    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