Merge pull request #16899 from Jason2866/NimBLE

update NimBLE v1.4.1
This commit is contained in:
Theo Arends 2022-10-24 11:16:05 +02:00 committed by GitHub
commit bfb40f16dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 47 additions and 14 deletions

View File

@ -2,6 +2,22 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [1.4.1] - 2022-10-23
### Fixed
- Compile warning removed for esp32c3
- 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 build tests.
- Missing items in CHANGELOG that were not recorded correctly
## [1.4.0] - 2022-07-10 ## [1.4.0] - 2022-07-10
### Fixed ### Fixed
@ -11,6 +27,9 @@ All notable changes to this project will be documented in this file.
### Changed ### Changed
- Updated NimBLE core to use the v1.4.0 branch of esp-nimble. - Updated NimBLE core to use the v1.4.0 branch of esp-nimble.
- AD flags are no longer set in the advertisements of non-connectable beacons, freeing up 3 bytes of advertisement room. - AD flags are no longer set in the advertisements of non-connectable beacons, freeing up 3 bytes of advertisement room.
- Config option CONFIG_BT_NIMBLE_DEBUG replaced with CONFIG_BT_NIMBLE_LOG_LEVEL (see src/nimconfig.h for usage)
- Config option CONFIG_NIMBLE_CPP_ENABLE_ADVERTISMENT_TYPE_TEXT renamed to CONFIG_NIMBLE_CPP_ENABLE_ADVERTISEMENT_TYPE_TEXT
- Config option CONFIG_BT_NIMBLE_TASK_STACK_SIZE renamed to CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE
### Added ### Added
- Preliminary support for non-esp devices, NRF51 and NRF52 devices supported with [n-able arduino core](https://github.com/h2zero/n-able-Arduino) - Preliminary support for non-esp devices, NRF51 and NRF52 devices supported with [n-able arduino core](https://github.com/h2zero/n-able-Arduino)

View File

@ -38,7 +38,7 @@ PROJECT_NAME = NimBLE-Arduino
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.4.0 PROJECT_NUMBER = 1.4.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If # entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used. # left blank the current directory will be used.
OUTPUT_DIRECTORY = docs OUTPUT_DIRECTORY = doxydocs
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and # directories (in 2 levels) under the output directory of each output format and
@ -836,7 +836,7 @@ WARN_NO_PARAMDOC = NO
# Possible values are: NO, YES and FAIL_ON_WARNINGS. # Possible values are: NO, YES and FAIL_ON_WARNINGS.
# The default value is: NO. # The default value is: NO.
WARN_AS_ERROR = FAIL_ON_WARNINGS WARN_AS_ERROR = YES
# The WARN_FORMAT tag determines the format of the warning messages that doxygen # The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which # can produce. The string should contain the $file, $line, and $text tags, which

View File

@ -1,5 +1,5 @@
name=NimBLE-Arduino name=NimBLE-Arduino
version=1.4.0 version=1.4.1
author=h2zero author=h2zero
maintainer=h2zero <powellperalta@gmail.com> maintainer=h2zero <powellperalta@gmail.com>
sentence=Bluetooth low energy (BLE) library for arduino-esp32 based on NimBLE. sentence=Bluetooth low energy (BLE) library for arduino-esp32 based on NimBLE.

View File

@ -336,6 +336,7 @@ bool NimBLEClient::connect(const NimBLEAddress &address, bool deleteAttributes)
* @return True on success. * @return True on success.
*/ */
bool NimBLEClient::secureConnection() { bool NimBLEClient::secureConnection() {
NIMBLE_LOGD(LOG_TAG, ">> secureConnection()");
TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); TaskHandle_t cur_task = xTaskGetCurrentTaskHandle();
ble_task_data_t taskData = {this, cur_task, 0, nullptr}; ble_task_data_t taskData = {this, cur_task, 0, nullptr};
@ -345,7 +346,7 @@ bool NimBLEClient::secureConnection() {
m_pTaskData = &taskData; m_pTaskData = &taskData;
int rc = NimBLEDevice::startSecurity(m_conn_id); int rc = NimBLEDevice::startSecurity(m_conn_id);
if(rc != 0){ if(rc != 0 && rc != BLE_HS_EALREADY){
m_lastErr = rc; m_lastErr = rc;
m_pTaskData = nullptr; m_pTaskData = nullptr;
return false; return false;
@ -360,9 +361,11 @@ bool NimBLEClient::secureConnection() {
if(taskData.rc != 0){ if(taskData.rc != 0){
m_lastErr = taskData.rc; m_lastErr = taskData.rc;
NIMBLE_LOGE(LOG_TAG, "secureConnection: failed rc=%d", taskData.rc);
return false; return false;
} }
NIMBLE_LOGD(LOG_TAG, "<< secureConnection: success");
return true; return true;
} // secureConnection } // secureConnection

View File

@ -971,6 +971,15 @@ void NimBLEDevice::deinit(bool clearAll) {
} }
} // deinit } // deinit
/**
* @brief Set the BLEDevice's name
* @param [in] deviceName The device name of the device.
*/
/* STATIC */
void NimBLEDevice::setDeviceName(const std::string &deviceName) {
ble_svc_gap_device_name_set(deviceName.c_str());
} // setDeviceName
/** /**
* @brief Check if the initialization is complete. * @brief Check if the initialization is complete.

View File

@ -97,6 +97,7 @@ class NimBLEDevice {
public: public:
static void init(const std::string &deviceName); static void init(const std::string &deviceName);
static void deinit(bool clearAll = false); static void deinit(bool clearAll = false);
static void setDeviceName(const std::string &deviceName);
static bool getInitialized(); static bool getInitialized();
static NimBLEAddress getAddress(); static NimBLEAddress getAddress();
static std::string toString(); static std::string toString();
@ -150,7 +151,8 @@ public:
int max_events = 0); int max_events = 0);
static bool stopAdvertising(uint8_t inst_id); static bool stopAdvertising(uint8_t inst_id);
static bool stopAdvertising(); static bool stopAdvertising();
# else # endif
# if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_)
static NimBLEAdvertising* getAdvertising(); static NimBLEAdvertising* getAdvertising();
static bool startAdvertising(); static bool startAdvertising();
static bool stopAdvertising(); static bool stopAdvertising();

View File

@ -203,12 +203,12 @@ void NimBLEHIDDevice::setBatteryLevel(uint8_t level) {
/* /*
* @brief Returns battery level characteristic * @brief Returns battery level characteristic
* @ return battery level characteristic * @ return battery level characteristic
*//* */
BLECharacteristic* BLEHIDDevice::batteryLevel() { NimBLECharacteristic* NimBLEHIDDevice::batteryLevel() {
return m_batteryLevelCharacteristic; return m_batteryLevelCharacteristic;
} }
/*
BLECharacteristic* BLEHIDDevice::reportMap() { BLECharacteristic* BLEHIDDevice::reportMap() {
return m_reportMapCharacteristic; return m_reportMapCharacteristic;

View File

@ -55,7 +55,7 @@ public:
void pnp(uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version); void pnp(uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version);
//NimBLECharacteristic* hidInfo(); //NimBLECharacteristic* hidInfo();
void hidInfo(uint8_t country, uint8_t flags); void hidInfo(uint8_t country, uint8_t flags);
//NimBLECharacteristic* batteryLevel(); NimBLECharacteristic* batteryLevel();
void setBatteryLevel(uint8_t level); void setBatteryLevel(uint8_t level);

View File

@ -616,7 +616,6 @@ bool NimBLERemoteCharacteristic::setNotify(uint16_t val, notify_callback notifyC
NIMBLE_LOGD(LOG_TAG, "<< setNotify()"); NIMBLE_LOGD(LOG_TAG, "<< setNotify()");
response = true; // Always write with response as per Bluetooth core specification.
return desc->writeValue((uint8_t *)&val, 2, response); return desc->writeValue((uint8_t *)&val, 2, response);
} // setNotify } // setNotify

View File

@ -73,8 +73,8 @@ public:
bool subscribe(bool notifications = true, bool subscribe(bool notifications = true,
notify_callback notifyCallback = nullptr, notify_callback notifyCallback = nullptr,
bool response = true); bool response = false);
bool unsubscribe(bool response = true); bool unsubscribe(bool response = false);
bool registerForNotify(notify_callback notifyCallback, bool registerForNotify(notify_callback notifyCallback,
bool notifications = true, bool notifications = true,
bool response = true) bool response = true)

View File

@ -58,7 +58,8 @@ public:
int duration = 0, int duration = 0,
int max_events = 0); int max_events = 0);
bool stopAdvertising(uint8_t inst_id); bool stopAdvertising(uint8_t inst_id);
#else #endif
#if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_)
NimBLEAdvertising* getAdvertising(); NimBLEAdvertising* getAdvertising();
bool startAdvertising(); bool startAdvertising();
#endif #endif