1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-21 10:26:06 +03:00

- Add protected getters for _forwardingBacklog and _macIgnoreList in FloodingMesh.

This commit is contained in:
Anders 2020-06-06 14:16:02 +02:00
parent 1d2b6b5c52
commit 66138a67cc
2 changed files with 15 additions and 7 deletions

View File

@ -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))
{

View File

@ -309,6 +309,10 @@ protected:
*/
void setOriginMac(const uint8_t *macArray);
std::list<std::pair<String, bool>> & getForwardingBacklog();
String & getMacIgnoreList(); // Experimental, may break in the future.
private:
EspnowMeshBackend _espnowBackend;