Summary
Incoming Resource transfers over an established Link are never
processed. Resource::accept() is not implemented, and the
Type::Packet::RESOURCE_ADV case in Link.cpp is inside a /*z ... */
comment block. This makes it impossible to receive LXMF messages on a
microReticulum node, since LXMF delivers messages as Resources over Links.
Environment
- microReticulum 0.2.10 (via varna9000/microReticulum_Firmware)
- nRF52840 (Heltec Mesh Node T114, SX1262)
- Peer: Sideband on Android
Observed behaviour
Link establishment works and is fast — 179 ms from request to proof:
11:01:11.814 [RX ] 86B via LoRaInterface
11:01:11.879 [VRB] Validating link request b65d7cf808470db511f83b001376829e
11:01:12.058 [TX ] 118B via LoRaInterface
All resource chunks then arrive at the radio layer:
[RX ] 83B
[RX ] 243B
[RX ] 99B
[RX ] 51B
No further TX follows. ~20 s later the peer times out and opens a new
link with a fresh ID, repeating indefinitely. Transport statistics
confirm nothing is completed: lt: 0 rcp: 0 across the whole session.
Cause
In src/Link.cpp, the RESOURCE_ADV case (around line 1144) is entirely
within /*z ... */. Beyond being disabled, the block would not compile
as-is — it still contains Python syntax carried over from the reference
implementation:
elif _object->_resource_strategy == ACCEPT_ALL:
RNS.Resource.accept(packet, _object->_callbacks.resource_concluded)
- Python keyword-argument calls:
Resource::accept(packet, callback=...)
In src/Resource.cpp, grep -n "accept\|RESOURCE_PRF\|send_proof"
returns nothing — the receive path (accept, part reassembly, hashmap
handling, proof generation) has no implementation.
Note that Resource::validate_proof() exists, but that is the sending
side verifying an incoming proof, not the receiving side generating one.
Impact
Any node built on microReticulum can act as a transport node but cannot
be addressed directly. Transport, path table and announce forwarding all
work correctly — this affects only Resource reception. Board-independent.
Notes
Resource.h:22 records that std::function is unavailable on the NRF52
framework, so callbacks use raw function pointers. Worth keeping in mind
for whichever design the receive path adopts.
Summary
Incoming Resource transfers over an established Link are never
processed.
Resource::accept()is not implemented, and theType::Packet::RESOURCE_ADVcase inLink.cppis inside a/*z ... */comment block. This makes it impossible to receive LXMF messages on a
microReticulum node, since LXMF delivers messages as Resources over Links.
Environment
Observed behaviour
Link establishment works and is fast — 179 ms from request to proof:
All resource chunks then arrive at the radio layer:
No further TX follows. ~20 s later the peer times out and opens a new
link with a fresh ID, repeating indefinitely. Transport statistics
confirm nothing is completed:
lt: 0 rcp: 0across the whole session.Cause
In
src/Link.cpp, theRESOURCE_ADVcase (around line 1144) is entirelywithin
/*z ... */. Beyond being disabled, the block would not compileas-is — it still contains Python syntax carried over from the reference
implementation:
elif _object->_resource_strategy == ACCEPT_ALL:RNS.Resource.accept(packet, _object->_callbacks.resource_concluded)Resource::accept(packet, callback=...)In
src/Resource.cpp,grep -n "accept\|RESOURCE_PRF\|send_proof"returns nothing — the receive path (
accept, part reassembly, hashmaphandling, proof generation) has no implementation.
Note that
Resource::validate_proof()exists, but that is the sendingside verifying an incoming proof, not the receiving side generating one.
Impact
Any node built on microReticulum can act as a transport node but cannot
be addressed directly. Transport, path table and announce forwarding all
work correctly — this affects only Resource reception. Board-independent.
Notes
Resource.h:22records thatstd::functionis unavailable on the NRF52framework, so callbacks use raw function pointers. Worth keeping in mind
for whichever design the receive path adopts.