mirror of
https://github.com/ratspeak/ratdeck.git
synced 2026-08-28 13:34:27 +00:00
Route large LXMF messages through Resource transfer over link
When link payload exceeds MDU (263 bytes), use Link::start_resource_transfer() instead of failing. This enables sending files, images, and long messages (>295 bytes content) via the microReticulum Resource protocol. Delivery path selection: 1. Link active + payload ≤ MDU → single link packet (existing) 2. Link active + payload > MDU → Resource transfer (NEW) 3. No link → opportunistic (existing, fails for >MDU)
This commit is contained in:
@@ -153,11 +153,21 @@ bool LXMFManager::sendDirect(LXMFMessage& msg) {
|
||||
linkPayload.insert(linkPayload.end(), payload.begin(), payload.end());
|
||||
RNS::Bytes linkBytes(linkPayload.data(), linkPayload.size());
|
||||
if (linkBytes.size() <= RNS::Type::Reticulum::MDU) {
|
||||
Serial.printf("[LXMF] sending via link: %d bytes to %s\n",
|
||||
// Small enough for single link packet
|
||||
Serial.printf("[LXMF] sending via link packet: %d bytes to %s\n",
|
||||
(int)linkBytes.size(), msg.destHash.toHex().substr(0, 8).c_str());
|
||||
RNS::Packet packet(_outLink, linkBytes);
|
||||
RNS::PacketReceipt receipt = packet.send();
|
||||
if (receipt) { sent = true; }
|
||||
} else {
|
||||
// Too large for single packet — use Resource transfer
|
||||
Serial.printf("[LXMF] sending via link resource: %d bytes to %s\n",
|
||||
(int)linkBytes.size(), msg.destHash.toHex().substr(0, 8).c_str());
|
||||
if (_outLink.start_resource_transfer(linkBytes)) {
|
||||
sent = true;
|
||||
} else {
|
||||
Serial.println("[LXMF] resource transfer failed to start");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user