- 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.
- Update HelloEspnow.ino and HelloMesh.ino examples.
- Fix bug with TransmissionOutcomesUpdateHook not being called when the TCP/IP backend retained WiFi.status() == WL_CONNECTED.