1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-24 19:42:27 +03:00

- Make connectionQueue(), latestTransmissionOutcomes() and latestTransmissionSuccessful() methods static in order to match the underlying data storage.

- Make it possible to transfer elements directly between connectionQueues.

- Add defaultBSSID value.

- Fix bug where encrypted Espnow-connections expired 1 ms too late.

- Add MutexTracker::captureBan() functionality and use it in the espnowReceiveCallbackWrapper method to ensure a consistent mutex environment there.

- Rename acceptRequest to acceptRequests since several requests can be accepted, not just one.

- Reorganize EspnowMeshBackend.cpp.

- Split sendEspnowResponses() method into sendEspnowResponses() and sendPeerRequestConfirmations().

- Add sendStoredEspnowMessages() method to provide the same functionality as the previous version of sendEspnowResponses().

- Add logic for handling peerRequestConfirmations received at the same time as a peer request is being made, to avoid lockups when there are simultaneous cyclic peer requests.

- Add logic for handling simultaneous reciprocal peer requests.

- Include MAC addresses in HMAC calculations for peer requests and use HMAC for all unencrypted peer request messages, to make sure we receive valid MAC combinations.

- Add asserts to ensure ESP-NOW encryption integrity during code changes.

- Add estimatedMaxDuration argument to performEspnowMaintainance and related methods.

- Add methods to EncryptedConnectionData for setting peer MAC.

- Remove createEncryptionRequestMessage function from JsonTranslator since it is not used, to increase clarity.

- Add encryptedConnectionsSoftLimit() and related functionality.

- Add mutex to protect connectionQueue usage during attemptTransmission.

- Add _ongoingPeerRequestMac variable.

- Add reservedEncryptedConnections() method.

- Add TransmissionOutcomesUpdateHook() callback.

- Add constConnectionQueue() method to allow connectionQueue usage while connectionQueue mutex is active.

- Rearrange attemptAutoEncryptingTransmission argument order to increase efficiency.

- Add functionality for serializing the unencrypted ESP-NOW connection.

- Add some constness.

- Improve comments.

- Improve documentation.

- Update keywords.txt.
This commit is contained in:
Anders
2019-10-31 22:25:12 +01:00
parent b0ef9195b5
commit f8ec4f1c72
23 changed files with 981 additions and 533 deletions

View File

@ -119,7 +119,7 @@ void MeshBackendBase::setWiFiChannel(uint8 newWiFiChannel)
}
}
uint8 MeshBackendBase::getWiFiChannel()
uint8 MeshBackendBase::getWiFiChannel() const
{
return _meshWiFiChannel;
}
@ -147,28 +147,28 @@ void MeshBackendBase::setSSID(const String &newSSIDPrefix, const String &newSSID
}
}
String MeshBackendBase::getSSID() {return _SSID;}
String MeshBackendBase::getSSID() const {return _SSID;}
void MeshBackendBase::setSSIDPrefix(const String &newSSIDPrefix)
{
setSSID(newSSIDPrefix);
}
String MeshBackendBase::getSSIDPrefix() {return _SSIDPrefix;}
String MeshBackendBase::getSSIDPrefix() const {return _SSIDPrefix;}
void MeshBackendBase::setSSIDRoot(const String &newSSIDRoot)
{
setSSID("", newSSIDRoot);
}
String MeshBackendBase::getSSIDRoot() {return _SSIDRoot;}
String MeshBackendBase::getSSIDRoot() const {return _SSIDRoot;}
void MeshBackendBase::setSSIDSuffix(const String &newSSIDSuffix)
{
setSSID("", "", newSSIDSuffix);
}
String MeshBackendBase::getSSIDSuffix() {return _SSIDSuffix;}
String MeshBackendBase::getSSIDSuffix() const {return _SSIDSuffix;}
void MeshBackendBase::setMeshName(const String &newMeshName)
{
@ -195,10 +195,10 @@ void MeshBackendBase::setMeshPassword(const String &newMeshPassword)
restartAP();
}
String MeshBackendBase::getMeshPassword() {return _meshPassword;}
String MeshBackendBase::getMeshPassword() const {return _meshPassword;}
void MeshBackendBase::setMessage(const String &newMessage) {_message = newMessage;}
String MeshBackendBase::getMessage() {return _message;}
String MeshBackendBase::getMessage() const {return _message;}
void MeshBackendBase::setRequestHandler(MeshBackendBase::requestHandlerType requestHandler) {_requestHandler = requestHandler;}
MeshBackendBase::requestHandlerType MeshBackendBase::getRequestHandler() {return _requestHandler;}
@ -209,12 +209,15 @@ MeshBackendBase::responseHandlerType MeshBackendBase::getResponseHandler() {retu
void MeshBackendBase::setNetworkFilter(MeshBackendBase::networkFilterType networkFilter) {_networkFilter = networkFilter;}
MeshBackendBase::networkFilterType MeshBackendBase::getNetworkFilter() {return _networkFilter;}
void MeshBackendBase::setTransmissionOutcomesUpdateHook(MeshBackendBase::transmissionOutcomesUpdateHookType transmissionOutcomesUpdateHook) {_transmissionOutcomesUpdateHook = transmissionOutcomesUpdateHook;}
MeshBackendBase::transmissionOutcomesUpdateHookType MeshBackendBase::getTransmissionOutcomesUpdateHook() {return _transmissionOutcomesUpdateHook;}
void MeshBackendBase::setScanHidden(bool scanHidden)
{
_scanHidden = scanHidden;
}
bool MeshBackendBase::getScanHidden() {return _scanHidden;}
bool MeshBackendBase::getScanHidden() const {return _scanHidden;}
void MeshBackendBase::setAPHidden(bool apHidden)
{
@ -228,14 +231,14 @@ void MeshBackendBase::setAPHidden(bool apHidden)
}
}
bool MeshBackendBase::getAPHidden() {return _apHidden;}
bool MeshBackendBase::getAPHidden() const {return _apHidden;}
bool MeshBackendBase::latestTransmissionSuccessful()
bool MeshBackendBase::latestTransmissionSuccessfulBase(const std::vector<TransmissionOutcome> &latestTransmissionOutcomes)
{
if(latestTransmissionOutcomes().empty())
if(latestTransmissionOutcomes.empty())
return false;
else
for(TransmissionOutcome &transmissionOutcome : latestTransmissionOutcomes())
for(const TransmissionOutcome &transmissionOutcome : latestTransmissionOutcomes)
if(transmissionOutcome.transmissionStatus() != TS_TRANSMISSION_COMPLETE)
return false;