From 654d38ed3fb02f808b368971b565a79c7c87b576 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 28 Jan 2023 08:17:29 -0600 Subject: [PATCH] Router --- src/mesh/Router.cpp | 6 ------ src/modules/RepeaterModule.cpp | 15 +++++++++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/mesh/Router.cpp b/src/mesh/Router.cpp index 70659c6ca..e729a225d 100644 --- a/src/mesh/Router.cpp +++ b/src/mesh/Router.cpp @@ -192,12 +192,6 @@ void printBytes(const char *label, const uint8_t *p, size_t numbytes) */ ErrorCode Router::send(meshtastic_MeshPacket *p) { - // Skip the normal ceremony for repeaters - if (config.device.role == meshtastic_Config_DeviceConfig_Role_REPEATER) { - assert(iface); - return iface->send(p); - } - if (p->to == nodeDB.getNodeNum()) { LOG_ERROR("BUG! send() called with packet destined for local node!\n"); packetPool.release(p); diff --git a/src/modules/RepeaterModule.cpp b/src/modules/RepeaterModule.cpp index d9e1fa686..f4539f3bf 100644 --- a/src/modules/RepeaterModule.cpp +++ b/src/modules/RepeaterModule.cpp @@ -9,10 +9,17 @@ RepeaterModule *repeaterModule; bool RepeaterModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_Routing *r) { - printPacket("Repeater rebroadcasting message", &mp); - meshtastic_MeshPacket *p = const_cast(&mp); - router->send(p); - return true; + printPacket("Repeater observed message", &mp); + router->sniffReceived(&mp, r); + + // FIXME - move this to a non promsicious PhoneAPI module? + // Note: we are careful not to send back packets that started with the phone back to the phone + if ((mp.to == NODENUM_BROADCAST || mp.to == nodeDB.getNodeNum()) && (mp.from != 0)) { + printPacket("Delivering rx packet", &mp); + service.handleFromRadio(&mp); + } + + return false; } meshtastic_MeshPacket *RepeaterModule::allocReply()