Fix late packet callback binding for inbound Links
Handle the case where an inbound Link payload is decrypted before the app packet callback has been installed on that Link object. When Link::receive() sees decrypted plaintext with no packet callback, it now invokes the owner destination’s link-established callback as a late binding opportunity, then dispatches the already-decrypted payload if the callback was installed.
This prevents valid inbound Link messages from ending at RNSLINKRX event=no_packet_callback after decrypt_ok, and allows the app-level RX handler to report the received payload.
main.cpp: fixed the “only sends once” bug by replacing last_tx_second with a UTC minute key, so Bob/CY/DAN can send once per active peer every minute at their scheduled second.
TBeamSupremeLoRaInterface.cpp: added RSSI/SNR to receive-side PHY logging, including accepted frames, malformed frames, and simulated PHY drops.
main.cpp: added RSSI/SNR to RX ANNOUNCE and inbound RX LINK establishment logs.
README.md: added updated RSSI/SNR examples and a table for RNSLINKREQ, RNSPROOF_DELAY, RNSPROOF, RNSLRRTT, RNSLINKRX, and RNSDEC.
Sender/recipient use board IDs for easier log aggregation.
Iteration count is still included and increments per peer.
Send cadence is now once per minute at the node’s allocated slot only. Removed the previous slot + 30s second send.
Removed noisy app-internal diagnostics like APP LINK..., APP RX..., and TX LINK SKIP.
Set Reticulum library logging to LOG_WARNING, which suppresses heap/path-store/entries/byte-count style diagnostics while preserving warnings/errors.
Fixed inherited physical slot label Fay to Flo.
Updated the README with the message cadence and examples
Kept all units in transport mode with reticulum.transport_enabled(true).
Removed physical blocking: SIM_PHY_BLOCK_BOB_CY=0, no per-unit block.
Removed the extra deep transmission/debug flags from platformio.ini.
Kept the 204 announcement schedule/protocol.
Removed intentional Link teardown after message cycles.
Every unit now attempts an outbound Link to every peer that announces.
Added retry health behavior: 3 Link attempts within 3 minutes, then wait for a fresh announce before trying that peer again.
Preserved substantive parseable logs: TX ANNOUNCE, RX ANNOUNCE, TX LINKREQUEST, LINK ACTIVE, TX LINK, RX LINK, retry/failure/reset events.
Updated copied helper scripts to point at 205_sustained_link.
Updated README for the new exercise behavior.
I changed it to:
first announce: immediately after startup once microReticulum is ready
second announce: after ANNOUNCEMENT_2 seconds
later announces: every ANNOUNCEMENT_REPEAT seconds