Start of repeater role with in firmware

This commit is contained in:
Ben Meadors
2023-01-28 06:38:13 -06:00
parent cda7e8b6a5
commit de82119415
7 changed files with 564 additions and 343 deletions

View File

@@ -0,0 +1,27 @@
#include "RepeaterModule.h"
#include "MeshService.h"
#include "NodeDB.h"
#include "Router.h"
#include "configuration.h"
#include "main.h"
RepeaterModule *repeaterModule;
bool RepeaterModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_Routing *r)
{
printPacket("Repeater rebroadcasting", &mp);
meshtastic_MeshPacket *p = const_cast<meshtastic_MeshPacket *>(&mp);
router->send(p);
return true;
}
meshtastic_MeshPacket *RepeaterModule::allocReply()
{
return NULL;
}
RepeaterModule::RepeaterModule() : ProtobufModule("repeater", meshtastic_PortNum_ROUTING_APP, &meshtastic_Routing_msg)
{
isPromiscuous = true;
encryptedOk = true;
}

View File

@@ -0,0 +1,31 @@
#pragma once
#include "Channels.h"
#include "ProtobufModule.h"
/**
* Routing module for router control messages
*/
class RepeaterModule : public ProtobufModule<meshtastic_Routing>
{
public:
/** Constructor
* name is for debugging output
*/
RepeaterModule();
protected:
/** Called to handle a particular incoming message
@return true if you've guaranteed you've handled this message and no other handlers should be considered for it
*/
virtual bool handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_Routing *p) override;
/** Messages can be received that have the want_response bit set. If set, this callback will be invoked
* so that subclasses can (optionally) send a response back to the original sender. */
virtual meshtastic_MeshPacket *allocReply() override;
/// Override wantPacket to say we want to see all packets, not just those for our port number
virtual bool wantPacket(const meshtastic_MeshPacket *p) override { return true; }
};
extern RepeaterModule *repeaterModule;