- Call ResponseTransmittedHook after every response transmission attempt, instead of after every successful response transmission attempt.
- Improve documentation.
- Finalize README.md.
- Update keywords.txt.
- 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.
- Move cryptographic functions from JsonTranslator to CryptoInterface.
- Make AP activation separate from FloodingMesh::begin().
- Fix English bug.
- 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.
- Deprecate NetworkInfo and TransmissionResult classes.
- Add single recipient transmission methods.
- Add a getCurrentMessage method to TcpIpMeshBackend to maintain feature parity when using single recipient transmission methods.
- Increase code abstraction level in transmission methods.
- Remove use of networkIndex except for in constructors, since it can change after each scan.
- Make Espnow backend require at least BSSID to connect, and the TcpIp backend require at least SSID.
- Make printAPInfo method take NetworkInfo as argument.
- Add new TransmissionOutcome class to replace obsolete TransmissionResult.
- Add _scanMutex.
- Improve code abstraction in HelloEspnow.ino.
- Update HelloEspnow.ino example to demonstrate the new features.
- Update and improve comments.
- 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.