Skip to content

Releases: h2zero/esp-nimble-cpp

v1.4.1

30 Oct 17:18
Compare
Choose a tag to compare

Fixed

  • NimBLEDevice::getPower incorrect value when power level is -3db.
  • Failed pairing when already in progress.

Changed

  • Revert previous change that forced writing with response when subscribing in favor of allowing the application to decide.

Added

  • Added NimBLEHIDDevice::batteryLevel.
  • Added NimBLEDevice::setDeviceName allowing for changing the device name while the BLE stack is active.
  • CI Builds

v1.4.0

31 Jul 17:36
Compare
Choose a tag to compare

Fixed

  • Fixed missing data from long notification values.
  • Fixed NimbleCharacteristicCallbacks::onRead not being called when a non-long read command is received.
  • Prevent a potential crash when retrieving characteristics from a service if the result was successful but no characteristics found.
  • logs/typos.

Changed

  • AD flags are no longer set in the advertisements of non-connectable beacons, freeing up 3 bytes of advertisement room.
  • 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.
  • Scan result callbacks are no longer called when the scan response data is updated in order to reduce duplicates.

Added

  • Preliminary support for non-esp devices, NRF51 and NRF52 devices supported with n-able arduino core
  • 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.

v1.3.3

16 Feb 03:28
Compare
Choose a tag to compare

Changed

  • If attribute retrieval fails with a "not found" try again with the 16 bit version if a 128 bit base uuid is used.

Fixed

  • Memory leak when deleting client instance.
  • IDf version check for data length extension.
  • Memory leak when server services changed.
  • Compiler warnings for non-esp32 devices.

v1.3.2

15 Jan 16:08
Compare
Choose a tag to compare

Fixed

  • Initialize advertising complete callback in NimBLEAdvertising constructor.
  • Clear client disconnect timer in constructor before initializing.
  • Fix missing data when reading large values.
  • Fix missing data in notifications when using a large MTU size and more than 270 bytes of data are sent.
  • Workaround fix added for cases when the task notification value is not cleared, causing various functions that should block not to block.

Added

  • NimBLEClient::getLastError : Gets the error code of the last function call that produces a return code from the stack.
  • NimBLECharacteristic::notify : Overload method to send notifications/indications with custom values.
  • Added conditional checks for ESP32 specific functions/values to support use of the library on non-esp32 devices.
  • Added an alias to use the callback name from the original library onMtuChanged.
  • NimBLEClient::setDataLen and NimBLEServer::setDataLen: Data length extension support (IDF version >= 4.3.2 only)
  • Config option to set logging level for esp-nimble-cpp

Changed

  • Critical section calls now use the NimBLE API instead of FreeRTOS directly. This removes the need for a portMUX_TYPE variable in the class definitions.
  • Removed unnecessary variables in NimBLEService and changed the constructor no no longer accept numHandles and inst_id parameters.

1.3.1

05 Aug 00:59
Compare
Choose a tag to compare

Fixed

  • Corrected a compiler/linker error when an application or a library uses bluetooth classic due to the redefinition of btInUse.

1.3.0

03 Aug 03:18
Compare
Choose a tag to compare

Added

  • NimBLECharacteristic::removeDescriptor: Dynamically remove a descriptor from a characterisic. 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.
  • Writing to a characterisic with a std::string value now correctly writes values with null characters.
  • Retrieving remote descriptors now uses the characterisic end handle correctly.
  • Missing data in long writes to remote descriptors.
  • Hanging on task notification when sending an indication from the characteristic callback.
  • BLE controller memory could be released when using Arduino as a component.
  • Complile errors with NimBLE release 1.3.0.

Release version 1.2.0

08 Feb 18:52
Compare
Choose a tag to compare

Many additions and changes, check the changelog and documentation for complete details.

Release version 1.1.0

21 Jan 03:21
Compare
Choose a tag to compare

Many improvements and additions made, check CHANGELOG.md for details.

Release version 1.0.2

14 Sep 03:43
Compare
Choose a tag to compare

NimBLEAdvertising::start Now takes 2 optional parameters, the first is the duration to advertise for (in seconds), the second is a
callback that is invoked when advertsing ends and takes a pointer to a NimBLEAdvertising object (similar to the NimBLEScan::start API).

Release version 1.0.1

03 Sep 01:46
Compare
Choose a tag to compare

Added

  • Empty NimBLEAddress constructor: NimBLEAddress() produces an address of 00:00:00:00:00:00 type 0.
  • Documentation of the difference of NimBLEAddress::getNative vs the original bluedroid library.

Changed

  • notify_callback typedef is now defined as std::function to enable the use of std::bind to call a class member function.

Fixed

  • Fix advertising start delay when first called.