- Remove setMeshInstance method from RequestData class.
- Remove delay(50) and WiFi.disconnect() from setup() in the examples since those statements do not seem to have an effect any longer.
- Improve documentation.
- Add uint8ArrayToMultiString and bufferedUint8ArrayToMultiString TypeConversionFunctions to facilitate transfer of Strings containing null values.
- Add HKDF to CryptoInterface.
- Add ChaCha20 + Poly1305 AEAD to CryptoInterface.
- Add customizable nonce generator to CryptoInterface.
- Add ability to automatically encrypt/decrypt ESP-NOW messages via AEAD (ChaCha20 + Poly1305), independent from encrypted ESP-NOW connections.
- Greatly improve performance of incrementSessionKey, espnowGetMessageID, espnowSetMessageID and all non-template TypeConversionFunctions. The average performance increase is roughly a factor 5. Fun fact: Printing a MAC to a HEX String is now over twice as fast when using TypeConversionFunctions compared to using standard functionality like sprintf.
- Add uint64ToUint8Array and uint8ArrayToUint64 TypeConversionFunctions.
- Make it possible to use String values as ESP-NOW and FloodingMesh key seeds, instead of just requiring plain key arrays.
- Add customizable responseTransmittedHook to sendEspnowResponses.
- Add _responsesToSendMutex to make the new responseTransmittedHook safe to use.
- Remove verboseModePrinting from sendPeerRequestConfirmations method to reduce performance variations.
- Fix faulty messageID generation in FloodingMesh.
- Make assert checks more complete and easier to understand in the setMetadataDelimiter method of FloodingMesh.
- Rename EspnowEncryptionKey to EspnowEncryptedConnectionKey since there are now multiple encryption keys.
- Rename acceptsUnencryptedRequests to acceptsUnverifiedRequests, unencryptedMessageID to unsynchronizedMessageID, receivedEncryptedMessage to receivedEncryptedTransmission, since there are now multiple modes of encryption.
- Rename resultArrayLength to outputLength in CryptoInterface and remove its value restrictions in order to match the BearSSL functionality.
- Improve performance of FloodingMesh::encryptedBroadcast.
- Rename FloodingMesh methods maxUnencryptedMessageSize/maxEncryptedMessageSize to maxUnencryptedMessageLength/maxEncryptedMessageLength, so that String length naming is consistent within the library.
- Update examples to illustrate the new features.
- Improve comments.
- 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.
- Add createPermanentConnections argument to attemptAutoEncryptingTransmission method.
- Reduce risk of misinterpreting acks by adding check for ack sender MAC.
- Reduce _encryptionRequestTimeoutMs from 500 ms to 300 ms since this should give enough (100 %) margin to the level where problems start appearing (150 ms timeout) and also save a lot of time in case of request failure.
- Improve comments.
- Add HelloEspnow.ino example to demonstrate the ESP-NOW mesh backend features.
- Deprecate the ESP8266WiFiMesh class in favour of the new ESP-NOW and TCP/IP backends.
- Update the TCP/IP mesh backend to use the new lwIP version preprocessor flag and remove obsolete preprocessor flags.