Cloudlog Aurora WSJT‐X - magicbug/Cloudlog GitHub Wiki

WSJT-X Features in Cloudlog Aurora

This document describes the current WSJT-X integration implemented in Cloudlog Aurora.

1) WSJT-X UDP Server Integration

  • WSJT-X UDP listener runs when WSJTXServer is enabled.
  • Uses:
    • WsjtxUtils.WsjtxUdpServer
    • WsjtxUtils.WsjtxMessages
  • Entry points:
    • Form1.WSJTXThread(...)
    • WSJTXMesssages : IWsjtxUdpMessageHandler

2) Logged QSO Upload from WSJT-X

  • Handles WSJT-X LoggedAdif messages.
  • Uploads ADIF directly to Cloudlog via:
    • CloudlogHelper.UploadQSO(adifline, Properties.Settings.Default.WSJTXStationLocation)
  • Uses WSJT-X station location setting (WSJTXStationLocation) as Cloudlog station_profile_id.
  • After ADIF upload, extracts CALL and emits an internal logged-QSO event used by CQ list/auto-call state.

3) Decode Parsing and Candidate Extraction

3.1 CQ decode parsing

  • Handles WSJT-X Decode messages.
  • Extracts CQ callsigns from decode text.
  • Supports lines where CQ is not first token.
  • Ignores non-callsign CQ tokens (DX, TEST, etc.).

3.2 RR73/73 parsing

  • For exchange-style lines, parses second callsign on RR73/73 patterns.
  • Example:
    • PD1DOP ZA5G RR73 -> extracted callsign: ZA5G
  • RR73-derived rows are shown in CQ list for awareness/statusing.

3.3 Grid extraction

  • For CQ lines, extracts Maidenhead grid token where present.
  • Example:
    • CQ N1SK FN33 -> extracted grid: FN33

3.4 Raw decode event

  • Raw decode text is also published internally and used by auto-call progress detection.

3.5 SNR extraction

  • Decode SNR is extracted (when present in WSJT-X decode payloads).
  • SNR is cached per callsign row and used by CQ list display and auto-call filtering.

4) Status Tracking (Band + Mode + TX State)

  • Handles WSJT-X Status messages and caches:
    • band
    • mode
    • TX state (transmitting) when available from status fields.
  • Frequency is mapped to ham band labels (20m, 40m, 6m, 2m, 70cm, etc.).
  • Exposes recency snapshots for endpoint/status/decode stream health checks.

5) WSJT-X CQ List Window

  • Open from menu: File -> WSJT-X CQ List.
  • Form: WsjtxCqListForm
  • Columns:
    • UTC
    • Callsign
    • Call
    • Country
    • Grid
    • SNR
    • Decode
    • Count
  • De-duplicates by callsign, increments Count, and keeps newest entries at top.

5.1) CQ List Footer Controls

  • Footer is split into two rows:
    1. Control row (time filter, Auto prune, A+, A-, Next, Auto Call, Clear)
    2. Status + legend rows:
      • status row: WSJT-X stream badges plus runtime labels (Auto: ..., Retries: ...)
      • compact legend row: color legend + … Checking
  • Auto Call button is visually highlighted when enabled.

5.2) CQ List Layout Persistence

  • Persisted locally (primary app user data path, plus legacy compatibility path):
    • %AppData%\magicbug\Cloudlog Aurora\<version>\wsjtx_cq_list_layout.json
    • %LocalAppData%\Cloudlog Aurora\wsjtx_cq_list_layout.json (legacy compatibility)
  • Persisted values:
    • window size
    • window position
    • column widths
    • list font size (A- / A+)
    • time filter selection
    • Auto prune state

6) Cloudlog Worked-Status Lookup (Single Endpoint)

  • Endpoint used: POST /api/logbook_worked_status
  • Method:
    • CloudlogHelper.CheckWorkedStatusAsync(callsign, band, mode, gridsquare)
  • Request fields:
    • key
    • logbook_public_slug
    • callsign
    • optional band
    • optional mode
    • optional gridsquare
  • Parses:
    • callsign worked (worked.callsign_overall, worked.callsign_band)
    • country worked/confirmed (worked.country_*, confirmed.country.*)
    • grid worked (worked.grid_overall, worked.grid_band)

7) CQ List Status Mapping

7.1 Call column

  • = Found
  • = Not Worked
  • = Checking/Pending
  • ? = Unavailable
  • ! = Error

7.2 Country column

  • ✗ New Country (Overall)
  • ✗ New Country (Band)
  • ✗ Worked, Not Confirmed
  • ✓ Confirmed (...)
  • , ?, ! for checking/unavailable/error

7.3 Grid column

  • ✓ FN33 = worked grid
  • ✗ FN33 (Overall) = new overall grid
  • ✗ FN33 (Band) = new on-band grid
  • = checking/pending
  • ? = unavailable
  • ! = error
  • = no grid detected

8) CQ List Highlight Rules

Row color priority:

  1. New Country (Overall) -> red
  2. New Country (Band) -> amber
  3. New Grid (Overall/Band) -> black row with white text
  4. Not Worked callsign -> pink
  5. otherwise default colors

9) CQ List Interactions

9.1 Left click on row

  • Attempts WSJT-X Reply (TryStartQsoFromCq).
  • If no exact decode match is available, falls back to HighlightCallsign.

9.2 Context menu actions

  • Start QSO
  • Highlight in WSJT-X
  • Copy Callsign

10) Auto Call Controls

10.1 Auto Call toggle

  • Button: Auto Call: Off/On
  • When enabled, periodically evaluates candidates and calls one target at a time.
  • Recommended WSJT-X setting for reliable control: Auto Sequence should be OFF.
  • Optional setting: Auto Sequence compatible mode (do not force TX halt) allows using WSJT-X Auto Sequence without Aurora issuing forced halt-TX when retries are exhausted.

10.2 Force Next button

  • Button: Next
  • Forces auto-call to drop current target and move to next eligible candidate.
  • Next is only usable when WSJT-X is not transmitting (disabled during TX; re-enabled when TX stops).

10.3 Auto-call candidate rules

  • Candidate categories are user-selectable in settings:
    • Not Worked callsigns
    • New Country (Overall)
    • New Grid (Overall)
    • band entities (New Country (Band) / New Grid (Band))
  • CQ-only filter is applied (RR73-derived rows are excluded for initiating).
  • Candidate freshness window is applied.
  • Minimum SNR threshold is applied (configurable; example -10 dB).

10.4 Auto-call safety guards

  • One active target lock (no parallel hopping).
  • Active target window timeout.
  • Max retries per target.
  • Min gap between attempts.
  • Temporary holdoff before re-calling same callsign.
  • Manual override pause after operator-initiated Start QSO / Highlight.
  • Optional manual-selection pause: selecting a CQ row can pause auto-call even without sending Start QSO / Highlight.
  • Suppressed while WSJT-X is transmitting.
  • Duplicate-TX-cycle guard: suppresses repeated TryStartQsoFromCq calls for the same candidate during the same active TX cycle.
  • Hard-stop if WSJT-X stream is stale (endpoint/status/decode recency checks fail).
  • Optional keep-monitoring mode can leave auto-call enabled and waiting for stream recovery instead of hard-stopping.
  • Band/mode drift guard: drops active target and re-evaluates when context changes.
  • Stuck-QSO timeout: if QSO lock is active but no matching decodes arrive for a timeout period, lock is cleared.

10.5 Auto-call progress monitoring

  • Monitors raw decode text for active target.
  • Detects report exchange tokens (+dd, -dd, R+dd, R-dd) and marks QSO in progress.
  • While QSO in progress, auto-call will not swap targets.
  • Detects 73/RR73 from active target to mark QSO completion state.
  • Optional strict mode supports waiting for 73 sequence confirmation from both sides.
  • Logged QSO event clears active in-progress state and advances to the next eligible candidate (if auto-call remains enabled).

10.6 Auto-call UI indicator

  • Status label in CQ list footer shows states like:
    • Auto: Idle
    • Auto: TX active
    • Auto: Cooldown Ns
    • Auto: In QSO <callsign>
    • Auto: Awaiting log <callsign>
    • Auto: <callsign> rX/Y Ns
    • Auto: Stopped (...)
  • Retry counter label is shown separately as Retries: <callsign> X/Y for easier debugging.
  • Active auto target row is visually marked (bold row) while being worked.

10.7 CQ Time Filtering

  • Time filter options: All, 30s, 60s, 120s, 300s.
  • Filtering is based on row LastSeenUtc.
  • Auto prune option removes stale rows automatically when outside selected window.
  • Filter view refreshes periodically while form is open.

10.8 WSJT-X Auto-call Settings (UI)

  • Auto-call tuning is user-configurable in Settings under the WSJT-X tab (WSJT-X Auto Call group):
    • candidate category checkboxes (Not Worked callsigns, new country, new grid, band entities)
    • max retries per target
    • candidate freshness window
    • active target window timeout
    • manual pause duration
    • stuck-QSO timeout duration
    • min gap between attempts
    • repeat holdoff duration
    • optional strict 73 completion mode (require both sides)
    • minimum decode SNR threshold
    • optional keep-monitoring mode when WSJT-X stream is stale
    • optional Auto Sequence compatible mode (disables forced halt-TX on retry exhaustion)
  • A visible help block in the UI explains what each option does.

11) CQ List Handling After Logged QSO

  • On WSJT-X LoggedAdif:
    • row for matching callsign is removed from CQ list
    • cached worked-status entries for that callsign are cleared
    • relevant auto-call active/in-progress state is cleared
    • if auto-call is active and logged callsign is current target, auto-call advances to next candidate

12) Console Diagnostics

For worked-status checks, console output includes:

  • endpoint URL
  • request JSON
  • raw response JSON

Also logs auto-call state transitions (enabled/disabled, target selected, retry/window move-on, stale-stream stop, etc.). Also logs skip-reason audit lines (TX active, cooldown, stale stream, no candidates, retries reached, drift, etc.).

13) Configuration Dependencies

For WSJT-X Cloudlog checks:

  • CloudlogURL must be set
  • CloudlogAPIKey must be set
  • WSJTXLogbookSlug should be set

Fallback behavior:

  • if WSJTXLogbookSlug is empty, falls back to TCPLogbookSlug

If config is missing, CQ statuses may show Unavailable.

14) Current Limitations / Notes

  • WSJT-X Reply start still requires an exact cached CQ decode for that callsign.
  • If no active WSJT-X UDP endpoint is observed, reply/highlight cannot be sent.
  • Auto-call reacts to decode/73 progression and Logged ADIF events but does not force WSJT-X internal logging.
⚠️ **GitHub.com Fallback** ⚠️