From 398f0d8761c12907d5d656ecb6ca2691a4a15d58 Mon Sep 17 00:00:00 2001 From: John Poole Date: Wed, 3 Jun 2026 20:38:11 -0700 Subject: [PATCH] Modified project microReticulum: Fix late packet callback binding for inbound Links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- exercises/.gitignore | 3 +++ exercises/205_sustained_link/README.md | 2 ++ 2 files changed, 5 insertions(+) diff --git a/exercises/.gitignore b/exercises/.gitignore index 374a903..5e3faed 100644 --- a/exercises/.gitignore +++ b/exercises/.gitignore @@ -10,3 +10,6 @@ examples # optional: timestamped outputs if you expand later *_magnetometer_readings*.log +# pending future project +308_ble_six_unit_mesh* + diff --git a/exercises/205_sustained_link/README.md b/exercises/205_sustained_link/README.md index 37ba8de..e517dd8 100644 --- a/exercises/205_sustained_link/README.md +++ b/exercises/205_sustained_link/README.md @@ -75,6 +75,8 @@ The following `RNS...` prefixes are generated by the linked microReticulum tree | `RNSLINKRX` | `microReticulum/src/Link.cpp` | Link-associated packet receive path. It logs packet context, decrypt success, app packet callback entry/return, no-callback cases, and LRRTT dispatch. | | `RNSDEC` | `microReticulum/src/Link.cpp` | Link encryption/decryption token diagnostics, including encrypt attempts, decrypt attempts, and decrypt failure class. | +If `RNSLINKRX event=decrypt_ok` is followed by `event=no_packet_callback`, the encrypted Link payload was successfully decrypted but the application packet callback was not installed on that Link object. Current firmware asks the Link owner callback to bind late in that case, so the expected sequence is `late_owner_callback_enter`, `late_owner_callback_return callback=1`, `callback_enter`, and then the app-level `RX LINK: ...` line. + Reticulum library logging is set to warning level in this exercise. Heap, path-store, entries, and byte-count diagnostics are intentionally suppressed so serial logs remain focused on field-test results. # Build, Upload, And Monitor