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: