[feat](trx-server): add APRS-IS IGate uplink (aprs.fi integration)

Forwards CRC-valid RF APRS packets to APRS-IS via plain TCP using the
TNC2 line format, making them visible on aprs.fi and other APRS-IS
consumers. Mirrors the pskreporter module in structure.

- New aprsfi.rs: IGate task with reconnect loop (exponential backoff
  1s→60s), login/logresp, 60s keepalive, 60s stats, passcode
  auto-computation from callsign (standard APRS hash algorithm)
- config.rs: AprsFiConfig struct with enabled/host/port/passcode fields
  and validation; default host rotate.aprs.net:14580
- main.rs: mod aprsfi; spawn task inside audio block when aprsfi.enabled
- trx-server.toml.example, CONFIGURATION.md: document [aprsfi] section
- Remove APRSFI_IMPLEMENTATION.rs planning artifact

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-23 18:23:35 +01:00
parent e12a3dfa4f
commit 0d6a35a933
6 changed files with 389 additions and 129 deletions
+11
View File
@@ -76,6 +76,17 @@ port = 4739
# If omitted, it is derived from [general].latitude/[general].longitude.
# receiver_locator = "JO93"
[aprsfi]
# Enable APRS-IS IGate uplink (forwards received RF APRS packets to APRS-IS / aprs.fi)
enabled = false
# APRS-IS server (rotate.aprs.net does DNS round-robin across all tier-2 servers)
host = "rotate.aprs.net"
port = 14580
# APRS-IS passcode. -1 = auto-computed from [general].callsign.
# passcode = -1
[decode_logs]
# Optional decoder message logs to files (APRS/CW/FT8/WSPR)
enabled = false