Find a file
h2zero c5c9423893 Remove automatic discovery in NimBLEClient::connect().
Instead of discovering the peripheral database on connection and consuming
the associated resources this will give the user more control over the
discovery operation.

* Adds void NimBLEClient::discoverAtrributes() for the user to discover all
the peripheral attributes as a replacement for the former functionality.

* getServices(), getCharacteristics(), getDescriptors() now take an
optional bool parameter (default false).
If true it will clear the respective vector and retrieve all the respective
attributes from the peripheral. If false it will retrieve the attributes
only if the vector is empty, otherwise the vector is returned with the
currently stored attributes.

* getService(NimBLEUUID), getCharacteristic(NimBLEUUID), getDescriptor(NimBLEUUID)
will now check the respective vectors for the attribute object and, if not
found, will retrieve (only) the specified attribute from the peripheral.
2020-05-23 10:30:11 -06:00
src Remove automatic discovery in NimBLEClient::connect(). 2020-05-23 10:30:11 -06:00
API_DIFFERENCES.md Remove automatic discovery in NimBLEClient::connect(). 2020-05-23 10:30:11 -06:00
CMakeLists.txt Add CMakeLists.txt. 2020-03-31 20:16:27 -06:00
component.mk Add missing component.mk file. 2020-03-29 19:13:59 -06:00
Kconfig Conditionally compile code for specific roles. 2020-05-13 22:03:56 -06:00
Kconfig.projbuild Implement selective log messages. 2020-05-10 21:30:15 -06:00
LICENSE Initial commit. 2020-03-29 17:44:20 -06:00
README.md Breaking: Use std::vector instead of std::map in client classes (#46) 2020-05-17 20:22:58 -06:00

*** UPDATE ***

Breaking change: Client and scan now use std::vector instead of std::map for storing the remote attribute database.

This change will affect your application code if you use NimBLEClient::getServices() or NimBLERemoteService::getCharacteristics()
in your application as they now return a pointer to std::vector of the respective attributes.

In addition NimBLERemoteService::getCharacteristicsByHandle() has been removed as it is no longer maintained in the library.

These changes were necessary due to the amount of resources required to use std::map, it was not justifed by any benfit it provided.

It is expected that there will be minimal impact on most applications, if you need help adjusting your code please create an issue.

esp-nimble-cpp

NimBLE CPP library for use with ESP32 that attempts to maintain compatibility with the @nkolban cpp_uitls API.

Why? Because the Bluedroid library is too bulky.

Initial client code testing has resulted in code size reduction of ~115k and reduced ram consumption of ~37k.

Installation:

Download as .zip and extract to components folder in your esp-idf project.

Run menuconfig, go to Component config->Bluetooth-> enable Bluetooth and select NimBLE host.

#include "NimBLEDevice.h" in main.cpp.

Usage:

This library is intended to be compatible with the original ESP32 BLE functions and types with minor changes.

Check API_DIFFERENCES for details.

Acknowledgments:

  • @nkolban and @chegewara for the original esp32 BLE library this project was derived from.
  • @beegee-tokyo for contributing your time to test/debug and contributing the beacon examples.

Todo:

  1. Code cleanup.
  2. Create documentation.
  3. Expose more NimBLE features.
  4. Add BLE Mesh code.