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:
parent
1d2b6b5c52
commit
66138a67cc
@ -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))
|
||||
{
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user