From 66138a67cc125ebf75f488d98fe385879137a2f8 Mon Sep 17 00:00:00 2001 From: Anders <andlo151@student.liu.se> Date: Sat, 6 Jun 2020 14:16:02 +0200 Subject: [PATCH] - Add protected getters for _forwardingBacklog and _macIgnoreList in FloodingMesh. --- libraries/ESP8266WiFiMesh/src/FloodingMesh.cpp | 18 +++++++++++------- libraries/ESP8266WiFiMesh/src/FloodingMesh.h | 4 ++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266WiFiMesh/src/FloodingMesh.cpp b/libraries/ESP8266WiFiMesh/src/FloodingMesh.cpp index 8f883c282..434df2fca 100644 --- a/libraries/ESP8266WiFiMesh/src/FloodingMesh.cpp +++ b/libraries/ESP8266WiFiMesh/src/FloodingMesh.cpp @@ -132,21 +132,21 @@ void FloodingMesh::performMeshInstanceMaintenance() { EspnowMeshBackend::performEspnowMaintenance(); - for(std::list<std::pair<String, bool>>::iterator backlogIterator = _forwardingBacklog.begin(); backlogIterator != _forwardingBacklog.end(); ) + for(std::list<std::pair<String, bool>>::iterator backlogIterator = getForwardingBacklog().begin(); backlogIterator != getForwardingBacklog().end(); ) { std::pair<String, bool> &messageData = *backlogIterator; if(messageData.second) // message encrypted { - _macIgnoreList = messageData.first.substring(0, 12) + ','; // The message should contain the messageID first + getMacIgnoreList() = messageData.first.substring(0, 12) + ','; // The message should contain the messageID first encryptedBroadcastKernel(messageData.first); - _macIgnoreList = emptyString; + getMacIgnoreList() = emptyString; } else { broadcastKernel(messageData.first); } - backlogIterator = _forwardingBacklog.erase(backlogIterator); + backlogIterator = getForwardingBacklog().erase(backlogIterator); EspnowMeshBackend::performEspnowMaintenance(); // It is best to performEspnowMaintenance frequently to keep the Espnow backend responsive. Especially if each encryptedBroadcast takes a lot of time. } @@ -229,7 +229,7 @@ void FloodingMesh::clearMessageLogs() void FloodingMesh::clearForwardingBacklog() { - _forwardingBacklog.clear(); + getForwardingBacklog().clear(); } void FloodingMesh::setMessageHandler(const messageHandlerType messageHandler) { _messageHandler = messageHandler; } @@ -247,6 +247,10 @@ uint8_t *FloodingMesh::getOriginMac(uint8_t *macArray) const return macArray; } +std::list<std::pair<String, bool>> & FloodingMesh::getForwardingBacklog() { return _forwardingBacklog; } + +String & FloodingMesh::getMacIgnoreList() { return _macIgnoreList; } + uint32_t FloodingMesh::maxUnencryptedMessageLength() const { return getEspnowMeshBackendConst().getMaxMessageLength() - MESSAGE_ID_LENGTH - (getEspnowMeshBackendConst().getMeshName().length() + 1); // Need room for mesh name + delimiter @@ -421,7 +425,7 @@ String FloodingMesh::_defaultRequestHandler(const String &request, MeshBackendBa { message = broadcastTarget + remainingRequest.substring(0, messageIDEndIndex + 1) + message; assert(message.length() <= _espnowBackend.getMaxMessageLength()); - _forwardingBacklog.emplace_back(message, getEspnowMeshBackend().receivedEncryptedTransmission()); + getForwardingBacklog().emplace_back(message, getEspnowMeshBackend().receivedEncryptedTransmission()); } } @@ -464,7 +468,7 @@ void FloodingMesh::_defaultNetworkFilter(const int numberOfNetworks, MeshBackend // Connect to any APs which contain meshInstance.getMeshName() if(meshNameIndex >= 0) { - if(_macIgnoreList.indexOf(TypeCast::macToString(WiFi.BSSID(networkIndex))) == -1) // If the BSSID is not in the ignore list + if(getMacIgnoreList().indexOf(TypeCast::macToString(WiFi.BSSID(networkIndex))) == -1) // If the BSSID is not in the ignore list { if(EspnowMeshBackend *espnowInstance = TypeCast::meshBackendCast<EspnowMeshBackend *>(&meshInstance)) { diff --git a/libraries/ESP8266WiFiMesh/src/FloodingMesh.h b/libraries/ESP8266WiFiMesh/src/FloodingMesh.h index b77a8e698..eccbb8e96 100644 --- a/libraries/ESP8266WiFiMesh/src/FloodingMesh.h +++ b/libraries/ESP8266WiFiMesh/src/FloodingMesh.h @@ -308,6 +308,10 @@ protected: * @param macArray An uint8_t array which contains the MAC address to store. The method will store the first 6 bytes of the array. */ void setOriginMac(const uint8_t *macArray); + + std::list<std::pair<String, bool>> & getForwardingBacklog(); + + String & getMacIgnoreList(); // Experimental, may break in the future. private: