- Preliminary support for non-esp devices, NRF51 and NRF52 devices supported with [n-able arduino core](https://github.com/h2zero/n-able-Arduino)
- Alias added for `NimBLEServerCallbacks::onMTUChange` to `onMtuChanged` in order to support porting code from original library.
-`NimBLEAttValue` Class added to reduce and control RAM footprint of characteristic/descriptor values and support conversions from Arduino Strings and many other data types.
- Bluetooth 5 extended advertising support for capable devices. CODED Phy, 2M Phy, extended advertising data, and multi-advertising are supported, periodic advertising will be implemented in the future.
## [1.3.8] - 2022-04-27
### Fixed
- Fix compile error with ESP32S3.
- Prevent a potential crash when retrieving characteristics from a service if the result was successful but no characteristics found.
### Changed
- Save resources when retrieving descriptors if the characteristic handle is the same as the end handle (no descriptors).
- Subscribing to characteristic notifications/indications will now always use write with response, as per BLE specifications.
-`NimBLEClient::discoverAttributes` now returns a bool value to indicate success/failure
## [1.3.7] - 2022-02-15
### Fixed
- Crash when retrieving an attribute that does not exist on the peer.
- When retrieving attributes from a server fails with a 128bit UUID containing the ble base UUID another attempt will be made with the 16bit version of the UUID.
### Fixed
- Memory leak when services are changed on server devices.
- Rare crashing that occurs when BLE commands are sent from ISR context using IPC.
- Crashing caused by uninitialized disconnect timer in client.
- CONFIG_NIMBLE_CPP_DEBUG_LEVEL macro in nimconfig.h to allow setting the log level separately from the Arduino core log level.
### Fixed
- Memory leak when initializing/deinitializing the BLE stack caused by new FreeRTOS timers be created on each initialization.
## [1.3.4] - 2022-01-09
### Fixed
- Workaround for latest Arduino-esp32 core that causes tasks not to block when required, which caused functions to return prematurely resulting in exceptions/crashing.
- The wrong length value was being used to set the values read from peer attributes. This has been corrected to use the proper value size.
-`NimBLECharacteristic::removeDescriptor`: Dynamically remove a descriptor from a characteristic. Takes effect after all connections are closed and sends a service changed indication.
-`NimBLEService::removeCharacteristic`: Dynamically remove a characteristic from a service. Takes effect after all connections are closed and sends a service changed indication
-`NimBLEServerCallbacks::onMTUChange`: This is callback is called when the MTU is updated after connection with a client.
- ESP32C3 support
- Whitelist API:
-`NimBLEDevice::whiteListAdd`: Add a device to the whitelist.
-`NimBLEDevice::whiteListRemove`: Remove a device from the whitelist.
-`NimBLEDevice::onWhiteList`: Check if the device is on the whitelist.
-`NimBLEDevice::getWhiteListCount`: Gets the size of the whitelist
-`NimBLEDevice::getWhiteListAddress`: Get the address of a device on the whitelist by index value.
- Bond management API:
-`NimBLEDevice::getNumBonds`: Gets the number of bonds stored.
-`NimBLEDevice::isBonded`: Checks if the device is bonded.
-`NimBLEDevice::deleteAllBonds`: Deletes all bonds.
-`NimBLEDevice::getBondedAddress`: Gets the address of a bonded device by the index value.
-`NimBLECharacteristic::getCallbacks` to retrieve the current callback handler.
- Connection Information class: `NimBLEConnInfo`.
-`NimBLEScan::clearDuplicateCache`: This can be used to reset the cache of advertised devices so they will be immediately discovered again.
### Changed
- FreeRTOS files have been removed as they are not used by the library.
- Services, characteristics and descriptors can now be created statically and added after.
- Excess logging and some asserts removed.
- Use ESP_LOGx macros to enable using local log level filtering.
### Fixed
-`NimBLECharacteristicCallbacks::onSubscribe` Is now called after the connection is added to the vector.
- Corrected bonding failure when reinitializing the BLE stack.
-`NimBLEAdvertisementData::addTxPower`: Adds transmission power to the advertisement.
-`NimBLEAdvertisementData::setPreferredParams`: Adds connection parameters to the advertisement.
-`NimBLEAdvertisementData::setURI`: Adds URI data to the advertisement.
-`NimBLEAdvertising` New methods:
-`NimBLEAdvertising::setName`: Set the name advertised.
-`NimBLEAdvertising::setManufacturerData`: Adds manufacturer data to the advertisement.
-`NimBLEAdvertising::setURI`: Adds URI data to the advertisement.
-`NimBLEAdvertising::setServiceData`: Adds service data to the advertisement.
-`NimBLEAdvertising::addTxPower`: Adds transmission power to the advertisement.
-`NimBLEAdvertising::reset`: Stops the current advertising and resets the advertising data to the default values.
-`NimBLEDevice::setScanFilterMode`: Set the controller duplicate filter mode for filtering scanned devices.
-`NimBLEDevice::setScanDuplicateCacheSize`: Sets the number of advertisements filtered before the cache is reset.
-`NimBLEScan::setMaxResults`: This allows for setting a maximum number of advertised devices stored in the results vector.
-`NimBLEAdvertisedDevice` New data retrieval methods added:
-`haveAdvInterval/getAdvInterval`: checks if the interval is advertised / gets the advertisement interval value.
-`haveConnParams/getMinInterval/getMaxInterval`: checks if the parameters are advertised / get min value / get max value.
-`haveURI/getURI`: checks if a URI is advertised / gets the URI data.
-`haveTargetAddress/getTargetAddressCount/getTargetAddress(index)`: checks if a target address is present / gets a count of the addresses targeted / gets the address of the target at index.
### Changed
-`nimconfig.h` (Arduino) is now easier to use.
-`NimBLEServer::getServiceByUUID` Now takes an extra parameter of instanceID to support multiple services with the same UUID.
-`NimBLEService::getCharacteristic` Now takes an extra parameter of instanceID to support multiple characteristics with the same UUID.
-`NimBLEAdvertising` Transmission power is no longer advertised by default and can be added to the advertisement by calling `NimBLEAdvertising::addTxPower`