Skip to content

Add extensible UDP provider system with WSJT-X/JTDX/MSHV support#118

Open
Claude wants to merge 6 commits into
mainfrom
claude/add-extensible-udp-support
Open

Add extensible UDP provider system with WSJT-X/JTDX/MSHV support#118
Claude wants to merge 6 commits into
mainfrom
claude/add-extensible-udp-support

Conversation

@Claude
Copy link
Copy Markdown
Contributor

@Claude Claude AI commented Feb 14, 2026

Implements extensible UDP integration framework for third-party ham radio applications (WSJT-X, JTDX, MSHV, GridTracker, etc.), following QLog's multi-protocol approach. Enables automatic QSO logging, status monitoring, and decode streaming from digital mode applications.

Backend Implementation

UDP Provider Infrastructure

  • Extensible provider system: UdpProviderConfig model supports multiple UDP protocols with independent configuration
  • Dynamic lifecycle management: Providers start/stop based on settings changes without restart
  • Multicast support: Join multicast groups (e.g., 224.0.0.73) for multi-app scenarios
  • UDP forwarding: Rebroadcast datagrams to downstream apps (GridTracker, etc.)

WSJT-X Protocol Service

  • Binary protocol parser: Handles Qt-serialized messages (magic: 0xadbccbda, schema v3)
  • Message types: Status (frequency/mode), Decode (FT8/FT4/JT65), QSO Logged, ADIF
  • Big-endian deserialization: QDateTime, QTime, QString, primitive types
  • SignalR events: Real-time status/decode/QSO events to frontend
// Example: WSJT-X automatically logs QSOs from FT8 contacts
public record WsjtxQsoLoggedEvent(
    string DxCall,
    long TxFrequency,
    string Mode,
    DateTime TimeOn,
    DateTime TimeOff,
    string MyCall,
    string MyGrid
);

Event Integration

  • SignalR hub methods: OnWsjtxStatusReceived, OnWsjtxDecodeReceived, OnWsjtxQsoLogged
  • Event bus publishing: Decoupled communication for internal services
  • Status monitoring: UdpProviderStatusChangedEvent tracks listener state

Frontend Implementation

Settings Store

  • Provider configuration: Per-provider enable/disable, port, multicast, forwarding
  • Type-safe interfaces: UdpProviderConfig, UdpProviderSettings
  • Update methods: updateUdpProvider, updateUdpProviderSettings
  • Default providers: WSJT-X configured (port 2237, disabled by default)

Settings Navigation

  • Added "UDP Integrations" section to settings panel
  • Ready for configuration UI implementation

Architecture

Follows existing Log4YM patterns:

  • BackgroundService for UDP listeners
  • MongoDB/LiteDB persistence for configuration
  • SignalR for real-time updates
  • EventBus for service communication

Future Extensions

Framework designed for easy addition of:

  • Hamlib rigctl NET (UDP port 4532)
  • MSHV UDP integration
  • GridTracker multicast
  • Hamconnect (ports 9458, 12060)

Testing Notes

Backend builds successfully. Frontend has TypeScript strict mode errors in settings store (type annotations) that need resolution before UI component implementation.

Original prompt

This section details on the original issue you should resolve

<issue_title>Add extensible UDP support for additional third-party applications/devices (see QLog for reference)</issue_title>
<issue_description>## Feature request: Enhance UDP Integration for Third-Party Apps/Devices

Background:
Currently, Log4YM listens to UDP traffic from a few select sources such as PGXL and Antenna Genius. However, more advanced third-party integrations are possible—other applications (like those supported in QLog) use additional UDP listeners and emitters for interoperability.

Requested Features:

  • Research the integration approach in QLog, which supports multiple UDP-based connections (e.g., Hamlib, WSJT-X, JTDX, MSHV, GridTracker, Hamconnect, etc.).
  • Identify any additional UDP listeners or emitters (beyond current Log4YM support) commonly used by third-party loggers and digital-mode tools (e.g., UDP port 4532 for Hamlib/Net rigctl, multicast for GridTracker, custom integration for Hamconnect, and MSHV, etc.). Refer to these integration-related QLog issues for typical usage patterns and connection scenarios (multiple apps talking on different or the same UDP ports, multicast support, forwarding, port configuration, etc.).
  • Refactor and extend the current UDP configuration module in Log4YM to:
    • Make all supported third-party UDP integrations first-class citizens in the configuration UI.
    • Allow for addition/removal/configuration of listeners/emitters for each supported protocol/app.
    • Support multicast where appropriate (a feature requested for QLog’s WSJT-X integration, see QLog#172).
    • Document and expose well-known UDP integrations from the ham radio logger ecosystem.

Benefits:

  • Easier integrations with digital-mode and auxiliary radio tools (users of WSJT-X, JTDX, GridTracker, MSHV, Hamconnect, and more)
  • Flexible UDP configuration: advanced users can add/remove sources easily, and all supported traffic is clearly visible and manageable in the UI.

References for QLog UDP support and community needs:

Notes:

  • When researching QLog, look for user stories about UDP connection limitations and integration workflows.
  • Be sure to retain current integrations with PGXL, Antenna Genius, etc.
  • Consider a modular UI design for extensible UDP protocol management.</issue_description>

Comments on the Issue (you are @claude[agent] in this section)

Claude AI and others added 2 commits February 14, 2026 20:20
- Add UdpProviderSettings model with support for multiple UDP providers
- Implement WsjtxUdpService for WSJT-X/JTDX/MSHV UDP protocol
- Support multicast and forwarding capabilities
- Add UDP provider events (status, decode, QSO logged)
- Update SignalR hub interface for UDP provider events
- Register WSJT-X UDP service in Program.cs

The service supports:
- WSJT-X binary protocol (magic 0xadbccbda)
- Status, Decode, and QSO Logged messages
- Unicast and multicast listening
- UDP forwarding to other applications
- Dynamic configuration reloading

Co-authored-by: brianbruff <753297+brianbruff@users.noreply.github.com>
- Add UdpProviderConfig and UdpProviderSettings interfaces
- Add udpProviders to Settings interface and default settings
- Implement updateUdpProviderSettings and updateUdpProvider methods
- Add UDP Integrations section to settings navigation
- Configure WSJT-X as default provider (disabled by default)

Settings store now supports:
- Managing multiple UDP provider configurations
- Per-provider enable/disable toggle
- Port, multicast, and forwarding settings
- Provider-specific custom settings

Co-authored-by: brianbruff <753297+brianbruff@users.noreply.github.com>
@Claude Claude AI changed the title [WIP] Add extensible UDP support for third-party applications and devices Add extensible UDP provider system with WSJT-X/JTDX/MSHV support Feb 14, 2026
@Claude Claude AI requested a review from brianbruff February 14, 2026 20:22
@brianbruff brianbruff marked this pull request as ready for review February 17, 2026 23:19
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.

Add extensible UDP support for additional third-party applications/devices (see QLog for reference)

2 participants