Merge pull request #1278 from mc-hamster/router

Update to flooding router -- add 'isPacketLocal' and change to sniffReceived
pull/1273/head^2
Jm Casler 2022-03-06 16:11:58 -08:00 zatwierdzone przez GitHub
commit e22601b599
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 27 dodań i 3 usunięć

Wyświetl plik

@ -48,6 +48,14 @@ bool FloodingRouter::inRangeOfRouter()
return false;
}
bool FloodingRouter::isPacketLocal(const MeshPacket *p)
{
// TODO: Figure out if a packet is from a local node
return false;
}
void FloodingRouter::sniffReceived(const MeshPacket *p, const Routing *c)
{
bool rebroadcastPacket = true;
@ -55,10 +63,18 @@ void FloodingRouter::sniffReceived(const MeshPacket *p, const Routing *c)
if (radioConfig.preferences.role == Role_Repeater || radioConfig.preferences.role == Role_Router) {
rebroadcastPacket = true;
} else if ((radioConfig.preferences.role == Role_Default) && inRangeOfRouter()) {
DEBUG_MSG("Role_Default - rx_snr > 13\n");
} else if ((radioConfig.preferences.role == Role_Default)) {
rebroadcastPacket = false;
if (inRangeOfRouter()) {
// In Range of a router
rebroadcastPacket = false;
} else if (!isPacketLocal(p)) {
// The packet did not come from a local source
rebroadcastPacket = false;
}
}
if ((p->to == NODENUM_BROADCAST) && (p->hop_limit > 0) && (getFrom(p) != getNodeNum() && rebroadcastPacket)) {

Wyświetl plik

@ -60,6 +60,14 @@ class FloodingRouter : public Router, protected PacketHistory
*/
virtual bool inRangeOfRouter();
/**
* Is the packet from a device that is physically near this node?
*
* Calculated based on the received SNR.
* @return true if the received packet is physically close to this node.
*/
virtual bool isPacketLocal(const MeshPacket *p);
/**
* Look for broadcasts we need to rebroadcast
*/