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();
|
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;
|
std::pair<String, bool> &messageData = *backlogIterator;
|
||||||
if(messageData.second) // message encrypted
|
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);
|
encryptedBroadcastKernel(messageData.first);
|
||||||
_macIgnoreList = emptyString;
|
getMacIgnoreList() = emptyString;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
broadcastKernel(messageData.first);
|
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.
|
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()
|
void FloodingMesh::clearForwardingBacklog()
|
||||||
{
|
{
|
||||||
_forwardingBacklog.clear();
|
getForwardingBacklog().clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FloodingMesh::setMessageHandler(const messageHandlerType messageHandler) { _messageHandler = messageHandler; }
|
void FloodingMesh::setMessageHandler(const messageHandlerType messageHandler) { _messageHandler = messageHandler; }
|
||||||
@ -247,6 +247,10 @@ uint8_t *FloodingMesh::getOriginMac(uint8_t *macArray) const
|
|||||||
return macArray;
|
return macArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::list<std::pair<String, bool>> & FloodingMesh::getForwardingBacklog() { return _forwardingBacklog; }
|
||||||
|
|
||||||
|
String & FloodingMesh::getMacIgnoreList() { return _macIgnoreList; }
|
||||||
|
|
||||||
uint32_t FloodingMesh::maxUnencryptedMessageLength() const
|
uint32_t FloodingMesh::maxUnencryptedMessageLength() const
|
||||||
{
|
{
|
||||||
return getEspnowMeshBackendConst().getMaxMessageLength() - MESSAGE_ID_LENGTH - (getEspnowMeshBackendConst().getMeshName().length() + 1); // Need room for mesh name + delimiter
|
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;
|
message = broadcastTarget + remainingRequest.substring(0, messageIDEndIndex + 1) + message;
|
||||||
assert(message.length() <= _espnowBackend.getMaxMessageLength());
|
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()
|
// Connect to any APs which contain meshInstance.getMeshName()
|
||||||
if(meshNameIndex >= 0)
|
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))
|
if(EspnowMeshBackend *espnowInstance = TypeCast::meshBackendCast<EspnowMeshBackend *>(&meshInstance))
|
||||||
{
|
{
|
||||||
|
@ -309,6 +309,10 @@ protected:
|
|||||||
*/
|
*/
|
||||||
void setOriginMac(const uint8_t *macArray);
|
void setOriginMac(const uint8_t *macArray);
|
||||||
|
|
||||||
|
std::list<std::pair<String, bool>> & getForwardingBacklog();
|
||||||
|
|
||||||
|
String & getMacIgnoreList(); // Experimental, may break in the future.
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
EspnowMeshBackend _espnowBackend;
|
EspnowMeshBackend _espnowBackend;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user