Skip to content

Decode all remaining FT8 contest/special message types#354

Open
patrickrb wants to merge 2 commits into
devfrom
feat/decode-fd-messages
Open

Decode all remaining FT8 contest/special message types#354
patrickrb wants to merge 2 commits into
devfrom
feat/decode-fd-messages

Conversation

@patrickrb

Copy link
Copy Markdown
Owner

Summary

  • Implement decoding for DXpedition (0.1), EU VHF (0.2), Contesting (0.6), ARRL RTTY Roundup (i3=3), and WWROF contest (i3=5) message types
  • These were previously silently dropped (isValid=false) or mangled into free-text with i3/n3 overwritten to 0/0
  • DXpedition, RTTY, and WWROF get dedicated JNI handlers that populate structured Java fields (callsigns, hashes, report, contest flags)
  • EU VHF and Contesting decode correctly via the text-based fallback path
  • Fix the Java i3=5 formatter which was incorrectly labeled "EU VHF" — it's actually WWROF contest

Test plan

  • Build passes (verified — native compile clean, APK installed)
  • Tune to busy FT8 frequency during RTTY Roundup — RTTY messages decode with RST + state/serial
  • DXpedition messages appear during DX activity with fox hash, invited call, and report
  • Contesting (0.6) and EU VHF (0.2) messages render as formatted text via fallback
  • WWROF messages show TU flag, R-prefixed report, and 2-char grid
  • Spot check decoded messages match WSJT-X output for same signals

🤖 Generated with Claude Code

patrickrb and others added 2 commits June 26, 2026 18:00
…re toggling on

The class/transmitters/section inputs were gated behind `if (fieldDayEnabled)`,
but the toggle requires a valid section — making it impossible to fill in the
fields. Show them unconditionally so users can configure first, then enable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement DXpedition (0.1), EU VHF (0.2), Contesting (0.6), ARRL RTTY
Roundup (i3=3), and WWROF contest (i3=5) decoding in the C decoder and
JNI layer. These message types were previously silently dropped
(isValid=false) or mangled into free-text.

C layer (message.c/h, unpack.c/h):
- Add n3=6 to ftx_message_get_type() for Contesting
- Implement ftx_message_decode_dxped(), decode_rtty(), decode_wwrof()
- Add inline decode+format for EU VHF and Contesting in ftx_message_decode()
- Add corresponding unpack functions in unpack.c and wire into unpack77_fields()
- Add RTTY_STATES[64] lookup table for state/province codes
- Add hash10 callback to unpack_hash_interface_t for DXpedition fox hash

JNI layer (ft8_decode_jni.cpp):
- Add dedicated handlers for DXpedition, RTTY, WWROF that populate
  structured Java fields (callsigns, hashes, report, rtty_tu, r_flag,
  rtty_state, maidenGrid, dx_call_to2) with correct i3/n3 preserved
- EU VHF and Contesting fall through to text-based fallback

Java (Ft8Message.java):
- Fix i3=5 formatter from incorrect "EU VHF" to WWROF contest format
- Fix field comments for r_flag, rtty_tu, eu_serial

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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