From 6b76eb3df6acdca097ca9359dfce9a4586301db9 Mon Sep 17 00:00:00 2001 From: Marcelo Aquino Date: Fri, 30 Jan 2015 18:39:09 -0200 Subject: [PATCH] fix a possible parent repeater loop --- libraries/MySensors/MyGateway.cpp | 1 + libraries/MySensors/MySensor.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/MySensors/MyGateway.cpp b/libraries/MySensors/MyGateway.cpp index 2785ec9..909112e 100644 --- a/libraries/MySensors/MyGateway.cpp +++ b/libraries/MySensors/MyGateway.cpp @@ -47,6 +47,7 @@ void MyGateway::begin(rf24_pa_dbm_e paLevel, uint8_t channel, rf24_datarate_e da } nc.nodeId = 0; + nc.parentNodeId = 0; nc.distance = 0; inclusionMode = 0; buttonTriggeredInclusion = false; diff --git a/libraries/MySensors/MySensor.cpp b/libraries/MySensors/MySensor.cpp index d0311aa..be6c842 100755 --- a/libraries/MySensors/MySensor.cpp +++ b/libraries/MySensors/MySensor.cpp @@ -287,7 +287,7 @@ boolean MySensor::process() { if (repeaterMode && command == C_INTERNAL && type == I_FIND_PARENT) { if (nc.distance == 255) { findParentNode(); - } else { + } else if (sender != nc.parentNodeId) { // Relaying nodes should always answer ping messages // Wait a random delay of 0-2 seconds to minimize collision // between ping ack messages from other relaying nodes