Find a file
lknop 11b6f816ca Reverse discovered beacon UUID
Author:    lknop <lknop@users.noreply.github.com>
2020-07-19 18:25:10 -06:00
docs Add alternative characteristic read/write callbacks 2020-07-14 15:14:29 -06:00
src Reverse discovered beacon UUID 2020-07-19 18:25:10 -06:00
.travis.yml Add TravisCI to build docs. 2020-07-09 13:21:31 -06:00
CMakeLists.txt Refactor server code to use vectors instead of maps. 2020-06-07 18:42:28 -06:00
component.mk Add missing component.mk file. 2020-03-29 19:13:59 -06:00
Doxyfile Add TravisCI to build docs. 2020-07-09 13:21:31 -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 Fix comments for doxygen (#16) 2020-07-08 19:27:26 -06:00

esp-nimble-cpp

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

An Arduino version of this library, including NimBLE, can be found here.

This library significantly reduces resource usage and improves performance for ESP32 BLE applications as compared
with the bluedroid based library. The goal is to maintain, as much as reasonable, compatibility with the original
library but refactored to use the NimBLE stack. In addition, this library will be more actively developed and maintained
to provide improved capabilites and stability over the original.

Testing shows a nearly 50% reduction in flash use and approx. 100kB less ram consumed vs the original!
Your results may vary

What is NimBLE?

NimBLE is a completely open source Bluetooth Low Energy stack produced by Apache.
It is more suited to resource constrained devices than bluedroid and has now been ported to the ESP32 by Espressif.

Installation

ESP-IDF v4.0+

Download as .zip and extract or clone into the components folder in your esp-idf project.

Run menuconfig, go to Component config->Bluetooth enable Bluetooth and in Bluetooth host NimBLE.
Configure settings in NimBLE Options.
#include "NimBLEDevice.h" in main.cpp.
Call NimBLEDevice::init(""); in app_main.

ESP-IDF v3.2 & v3.3

The NimBLE component does not come with these versions of IDF.
A backport that works in these versions has been created and is available here.
Download or clone that repo into your project/components folder and run menuconfig. Configure settings in main menu -> NimBLE Options.

#include "NimBLEDevice.h" in main.cpp.
Call NimBLEDevice::init(""); in app_main.

Using

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

See: Breaking API Changes vs Original for details.

Also see Improvements_and_updates for information about non-breaking changes.

Acknowledgments

Todo

  1. Implement random addresses.
  2. Implement NimBLEServer::removeService
  3. Implement extra fields in NimBLEAdvertisedDevice.
  4. Document nimconfig.
  5. Add BLE Mesh code.