- Generalize and improve JSON processing code.
- Prevent mesh passwords from containing " characters to avoid messing up the JSON processing.
- Improve documentation.
- 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.
- Ensure espnowDelay and floodingMeshDelay always performs maintenance.
- Rework MutexTracker to use shared_ptr.
- Change enums to enum class.
- Change typedef to using.
- Add HeapMonitor class.
- Make _messageIDs be a map instead of an unordered_map to reduce heap usage.
- Use the possibly broken wifi_country ESP8266 API to check for legal WiFi channels when setting WiFi channels.
- Make MessageData, RequestData and ResponseData contain a TimeTracker rather than inherit from TimeTracker.
- Add deprecated attribute to TransmissionResult.
- Remove superfluous elses.
- Reduce cyclomatic complexity.
- Change postfix ++ and -- to prefix.
- Generalize getEncryptedConnectionIterator method.
- Increase code NRVO compatibility.
- Change _connectionAttemptTimeoutMs type from int32_t to uint32_t.
- Add deprecated attribute to ESP8266WiFiMesh.
- Add some constness to TypeConversionFunctions.
- Move base36 arrays to PROGMEM in TypeConversionFunctions.cpp.
- Add deprecated atttribute to SHA1 and MD5 hashes.
- Remove _warningsEnabled in CryptoInterface since this has been replaced by the deprecated attribute.
- Prefix all TypeConversion getters with "get".
- Improve comments.
- Fix merge conflict.
- Replace const with constexpr where possible.
- Use default constructor instead of copy constructor for IPAddress variable initialization.
- Add MeshTypeConversionFunctions namespace around TypeConversionFunctions.
- Add MeshUtilityFunctions namespace around UtilityFunctions.
- Add ESP8266WIFIMESH_DISABLE_COMPATIBILITY preprocessor flag to retain compatibility with old code despite new namespaces.
- Add setLogEntryLifetimeMs and setBroadcastResponseTimeoutMs methods to EspnowMeshBackend.
- Move FloodingMesh constant definitions from header to .cpp file to reduce the risk of extra RAM consumption.
- Add deactivateAP method to FloodingMesh.
- Make deactivateAP static and add new non-static deactivateControlledAP method to MeshBackendBase.
- Add example of how to transfer null values using multiStrings to HelloEspnow.ino.
- Improve documentation.
- Improve comments.
- 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.
- Add more HMAC and hash functions to CryptoInterface.
- Add MeshCryptoInterface as a holder of mesh specific crypto functionality.
- Rename broadcastMetadataDelimiter to metadataDelimiter in FloodingMesh since it is not just used for broadcasts, and to save some typing.
- Move cryptographic functions from JsonTranslator to CryptoInterface.
- Make AP activation separate from FloodingMesh::begin().
- Fix English bug.
- 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 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.