- Announce lxst.telephony destination alongside LXMF announces so
remote peers discover both messaging and call paths together
- Add periodic re-announcing in CallManager (3-hour interval,
matching reference LXST Telephony implementation)
- Auto-request identity path from network when unknown, with 5s
retry loop (mirrors existing LXMF pattern in reticulum_wrapper)
- Move setupLxstCallManager() to first position in setupBridges()
so Telephone is available immediately after Python init (was last,
causing up to ~47s delay before calls could be placed)
- Remove stale "call.audio" announce handler that could never match
the actual "lxst.telephony" aspect
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove device hash query complexity for USB RNodes since CMD_DEV_HASH
returns a different hash than what's used for Bluetooth naming. USB
interfaces now simply use "RNode USB" as the default name.
The device hash query code is retained in KotlinUSBBridge for potential
future use (debugging, device identification).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Configure TCPClientInterface.SYNCHRONOUS_START = False during RNS import
to run TCP connections in background threads instead of blocking.
Problem: Reticulum initialization was taking 15.7s, exceeding the 15s
ANR timeout. The main cause was synchronous TCP connection attempts to
unreachable hosts, each blocking for up to 5 seconds.
Solution: Set SYNCHRONOUS_START = False after importing RNS but before
calling RNS.Reticulum(). This makes TCP connections non-blocking while
preserving all reconnection logic (initial_connect() already handles
success/failure paths and spawns reconnect threads as needed).
Result: Initialization time reduced from 15.7s to 11.9s, well under
the 15s timeout threshold.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>