Skip to content

Releases: h2zero/esp-nimble-cpp

2.5.0

01 Apr 20:22

Choose a tag to compare

Fixed

  • NimBLEClient connection state tracking.
  • Calling disconnect will no longer return false if the HCI response is "Unknown ID".
  • Remote descriptors not found when characteristic vector handles out of order.
  • setValue with char inputs now calculates the data length correctly.

Added

  • NimBLEServer::sendServiceChangedIndication Sends the service changed indication to peers so they refresh their database.
  • NimBLEScan user configuarable scan response timer added to prevent unreported devices on long duration scans.
  • NimBLEClient Connection retry on connection establishment failure, retry count configurable by app, default 2.
  • ANCS Example
  • l2Cap Disconnect API

2.4.0

21 Mar 13:38

Choose a tag to compare

Fixed

  • GATT attribute handles are now assigned from the registration callback so duplicate UUID attributes are identified correctly.
  • Dynamic service changes now properly remove characteristics/descriptors and reset the GATT database when advertising starts.
  • Missing notification/indication payload data when the value spans multiple mbufs, such as values larger than 255 bytes with small ACL buffers.
  • NimBLEDevice::createServer will longer crash when called before the stack is initialized.
  • Re-pairing after deleting all bonds now works by unpairing each stored bond instead of only deleting NVS data.
  • Whitelist bounds checks.
  • NimBLEDevice::getBondedAddress index bounds validation.
  • Compiler warnings when bonds are disabled.
  • kconfig warnings, redefined macros.

Added

  • NimBLEStream, NimBLEStreamClient, and NimBLEStreamServer classes and examples.
  • NimBLECppVersion.h with compile-time version macros.
  • NimBLEDevice::getVersion runtime version string helper.
  • Matching passkey callbacks for both roles: NimBLEServerCallbacks::onPassKeyEntry and NimBLEClientCallbacks::onPassKeyDisplay.
  • Bond migration helpers to convert bond storage between v1 and current formats while preserving existing bonds.
  • NimBLEUUID constructor overload for ble_uuid_t*.
  • Optional index parameter for NimBLECharacteristic::getDescriptorByUUID to access multiple descriptors with the same UUID.
  • NimBLEConnInfo::toString method to get a string representation of the connection info.

Changed

  • NimBLEService::start is deprecated; services are now added when the server starts.
  • NimBLEHIDDevice::startServices() is deprecated; services are now added when the server starts.

2.3.4

27 Dec 15:35

Choose a tag to compare

Fixed

  • Disconnect event not finding the client by address in some cases, use the connection handle instead.
  • Notification/Indications will now be sent to server created clients.
  • Attribute values will now consider type size when using a container.
  • Descriptor searching will now correctly stop at the end handle of the characteristic.

Changed

  • Build conditionals now use MYNEWT_VAL_ macros instead of CONFIG_ macros where applicable.
  • Sending of indications/notifications has been refactored for greater efficiency and tracks client subscription state locally instead uof relying on the stack.

Added

  • Support for esp32c61.
  • NimBLECharacteristicCallbacks::onStatus overload that takes a NimBLEConnInfo& parameter to indicate which client the status is for.
  • NimBLEDevice::setCustomGapHandler now takes a void* parameter to allow for passing user data to the custom handler.

2.3.3

05 Sep 22:13

Choose a tag to compare

Fixed

  • NimBLEAdvertisedDevice::isConnectable returning incorrect result.
  • Extended advertisements not reporting full data.

Added

  • Support up to 1650 bytes of advertisement with extended advertising

2.3.2

02 Sep 20:57

Choose a tag to compare

Fixed

  • Build failures with esp-idf versions 4.x.
  • Workaround for upstream issue causing onConnectFail to not be called.
  • Build failures with idf v5.5+ and specific roles are not enabled.

Changed

  • Allow peripheral and central roles to be used without broadcaster/observer roles.
  • Where applicable, MYNEWT_VAL_ macros are used to control feature availability instead of CONFIG_

2.3.1

11 Jun 17:18

Choose a tag to compare

What's Changed

  • Allow esp_wifi_remote >= 0.5.3 by @johnboiles in #337
  • Fix builds when excluding roles by @h2zero in #339
  • Fix server client read/write not returning when encryption is used. by @h2zero in #342
  • [Bugfix] NimBLEScan delete. by @h2zero in #341

New Contributors

Full Changelog: 2.3.0...2.3.1

2.3.0

19 May 23:04

Choose a tag to compare

Fixed

  • Incorrect NimBLECharacteristic::onSubscribe value when indications are set.
  • NimBLECharacteristic::onRead callback not called in some cases.
  • Clear attribute value when zero length value is written.
  • Notify/Indicate incorrectly returning success with custom value.
  • Corrected NimBLEClient array initialization.
  • Prevent potential exception when scan is restarted.
  • Attribute getValue failing with some data types
  • Incorrectly passing a pointer to a function taking const reference.

Added

  • Support for esp32c5
  • L2CAP infrastructure.
  • Scan duplicate cache reset time.

Changed

  • Cleaned up examples.
  • Allow PHY updates without enabling extended advertising.

2.2.1

28 Feb 21:59

Choose a tag to compare

Fixed

  • Added back NimBLEClient::connect overload with NimBLEAdvertisedDevice parameter to resolve connection error due to NULL address.
  • Crash caused by returning invalid vector entry when retrieving remote descriptors.

2.2.0

25 Feb 00:55

Choose a tag to compare

Fixed

  • Crash when calling NimBLEClient::DiscoverAttributes.

Added

  • Conditional macros for logging.
  • NimBLEDeviceCallbacks class with a callback for handling bond storage.

2.1.1

27 Jan 01:32

Choose a tag to compare

Fixed

  • remote descriptor discovery error when no descriptors exist.
  • scan filter settings not enabled for esp32s3/c3.
  • remote descriptor discovery returning more than the desired descriptor.