From 5848cc2013bae90b3d52d2b5a78b8c977b51d6d0 Mon Sep 17 00:00:00 2001 From: technyon Date: Thu, 2 Feb 2023 17:13:01 +0100 Subject: [PATCH] revert NimBLE to 1.4.0 due to pairing issues --- lib/NimBLE-Arduino/CHANGELOG.md | 19 ------------------- lib/NimBLE-Arduino/library.properties | 2 +- lib/NimBLE-Arduino/src/NimBLEClient.cpp | 5 +---- lib/NimBLE-Arduino/src/NimBLEDevice.cpp | 11 +---------- lib/NimBLE-Arduino/src/NimBLEDevice.h | 4 +--- lib/NimBLE-Arduino/src/NimBLEHIDDevice.cpp | 6 +++--- lib/NimBLE-Arduino/src/NimBLEHIDDevice.h | 2 +- .../src/NimBLERemoteCharacteristic.cpp | 1 + .../src/NimBLERemoteCharacteristic.h | 4 ++-- lib/NimBLE-Arduino/src/NimBLEServer.h | 3 +-- .../esp_port/esp-hci/src/esp_nimble_hci.c | 2 -- main.cpp | 2 +- 12 files changed, 13 insertions(+), 48 deletions(-) diff --git a/lib/NimBLE-Arduino/CHANGELOG.md b/lib/NimBLE-Arduino/CHANGELOG.md index 43fbc62c..5d1d2d40 100644 --- a/lib/NimBLE-Arduino/CHANGELOG.md +++ b/lib/NimBLE-Arduino/CHANGELOG.md @@ -2,22 +2,6 @@ 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 ### Fixed @@ -27,9 +11,6 @@ All notable changes to this project will be documented in this file. ### Changed - 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. -- 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 - Preliminary support for non-esp devices, NRF51 and NRF52 devices supported with [n-able arduino core](https://github.com/h2zero/n-able-Arduino) diff --git a/lib/NimBLE-Arduino/library.properties b/lib/NimBLE-Arduino/library.properties index d1b32b9c..16ddf82b 100644 --- a/lib/NimBLE-Arduino/library.properties +++ b/lib/NimBLE-Arduino/library.properties @@ -1,5 +1,5 @@ name=NimBLE-Arduino -version=1.4.1 +version=1.4.0 author=h2zero maintainer=h2zero sentence=Bluetooth low energy (BLE) library for arduino-esp32 based on NimBLE. diff --git a/lib/NimBLE-Arduino/src/NimBLEClient.cpp b/lib/NimBLE-Arduino/src/NimBLEClient.cpp index a83e23b4..d923e6a0 100644 --- a/lib/NimBLE-Arduino/src/NimBLEClient.cpp +++ b/lib/NimBLE-Arduino/src/NimBLEClient.cpp @@ -336,7 +336,6 @@ bool NimBLEClient::connect(const NimBLEAddress &address, bool deleteAttributes) * @return True on success. */ bool NimBLEClient::secureConnection() { - NIMBLE_LOGD(LOG_TAG, ">> secureConnection()"); TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); ble_task_data_t taskData = {this, cur_task, 0, nullptr}; @@ -346,7 +345,7 @@ bool NimBLEClient::secureConnection() { m_pTaskData = &taskData; int rc = NimBLEDevice::startSecurity(m_conn_id); - if(rc != 0 && rc != BLE_HS_EALREADY){ + if(rc != 0){ m_lastErr = rc; m_pTaskData = nullptr; return false; @@ -361,11 +360,9 @@ bool NimBLEClient::secureConnection() { if(taskData.rc != 0){ m_lastErr = taskData.rc; - NIMBLE_LOGE(LOG_TAG, "secureConnection: failed rc=%d", taskData.rc); return false; } - NIMBLE_LOGD(LOG_TAG, "<< secureConnection: success"); return true; } // secureConnection diff --git a/lib/NimBLE-Arduino/src/NimBLEDevice.cpp b/lib/NimBLE-Arduino/src/NimBLEDevice.cpp index 43ba2190..a7b6a558 100644 --- a/lib/NimBLE-Arduino/src/NimBLEDevice.cpp +++ b/lib/NimBLE-Arduino/src/NimBLEDevice.cpp @@ -407,7 +407,7 @@ int NimBLEDevice::getPower(esp_ble_power_type_t powerType) { case ESP_PWR_LVL_N6: return -6; case ESP_PWR_LVL_N3: - return -3; + return -6; case ESP_PWR_LVL_N0: return 0; case ESP_PWR_LVL_P3: @@ -971,15 +971,6 @@ void NimBLEDevice::deinit(bool clearAll) { } } // 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. diff --git a/lib/NimBLE-Arduino/src/NimBLEDevice.h b/lib/NimBLE-Arduino/src/NimBLEDevice.h index 8d4d849e..b7e804b8 100644 --- a/lib/NimBLE-Arduino/src/NimBLEDevice.h +++ b/lib/NimBLE-Arduino/src/NimBLEDevice.h @@ -97,7 +97,6 @@ class NimBLEDevice { public: static void init(const std::string &deviceName); static void deinit(bool clearAll = false); - static void setDeviceName(const std::string &deviceName); static bool getInitialized(); static NimBLEAddress getAddress(); static std::string toString(); @@ -151,8 +150,7 @@ class NimBLEDevice { int max_events = 0); static bool stopAdvertising(uint8_t inst_id); static bool stopAdvertising(); -# endif -# if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) +# else static NimBLEAdvertising* getAdvertising(); static bool startAdvertising(); static bool stopAdvertising(); diff --git a/lib/NimBLE-Arduino/src/NimBLEHIDDevice.cpp b/lib/NimBLE-Arduino/src/NimBLEHIDDevice.cpp index a2310eb9..29150ce6 100644 --- a/lib/NimBLE-Arduino/src/NimBLEHIDDevice.cpp +++ b/lib/NimBLE-Arduino/src/NimBLEHIDDevice.cpp @@ -203,12 +203,12 @@ void NimBLEHIDDevice::setBatteryLevel(uint8_t level) { /* * @brief Returns battery level characteristic * @ return battery level characteristic - */ -NimBLECharacteristic* NimBLEHIDDevice::batteryLevel() { + *//* +BLECharacteristic* BLEHIDDevice::batteryLevel() { return m_batteryLevelCharacteristic; } -/* + BLECharacteristic* BLEHIDDevice::reportMap() { return m_reportMapCharacteristic; diff --git a/lib/NimBLE-Arduino/src/NimBLEHIDDevice.h b/lib/NimBLE-Arduino/src/NimBLEHIDDevice.h index 0e8b2828..ef2ed739 100644 --- a/lib/NimBLE-Arduino/src/NimBLEHIDDevice.h +++ b/lib/NimBLE-Arduino/src/NimBLEHIDDevice.h @@ -55,7 +55,7 @@ class NimBLEHIDDevice { void pnp(uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version); //NimBLECharacteristic* hidInfo(); void hidInfo(uint8_t country, uint8_t flags); - NimBLECharacteristic* batteryLevel(); + //NimBLECharacteristic* batteryLevel(); void setBatteryLevel(uint8_t level); diff --git a/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp b/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp index 6cca615d..68982f89 100644 --- a/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp +++ b/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp @@ -616,6 +616,7 @@ bool NimBLERemoteCharacteristic::setNotify(uint16_t val, notify_callback notifyC NIMBLE_LOGD(LOG_TAG, "<< setNotify()"); + response = true; // Always write with response as per Bluetooth core specification. return desc->writeValue((uint8_t *)&val, 2, response); } // setNotify diff --git a/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h b/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h index 353d8322..7042b19b 100644 --- a/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h +++ b/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h @@ -73,8 +73,8 @@ class NimBLERemoteCharacteristic { bool subscribe(bool notifications = true, notify_callback notifyCallback = nullptr, - bool response = false); - bool unsubscribe(bool response = false); + bool response = true); + bool unsubscribe(bool response = true); bool registerForNotify(notify_callback notifyCallback, bool notifications = true, bool response = true) diff --git a/lib/NimBLE-Arduino/src/NimBLEServer.h b/lib/NimBLE-Arduino/src/NimBLEServer.h index 54bbb9ab..19fecfdd 100644 --- a/lib/NimBLE-Arduino/src/NimBLEServer.h +++ b/lib/NimBLE-Arduino/src/NimBLEServer.h @@ -58,8 +58,7 @@ class NimBLEServer { int duration = 0, int max_events = 0); bool stopAdvertising(uint8_t inst_id); -#endif -#if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) +#else NimBLEAdvertising* getAdvertising(); bool startAdvertising(); #endif diff --git a/lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c b/lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c index 8ae48a9c..f4857ee2 100644 --- a/lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c +++ b/lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c @@ -138,9 +138,7 @@ int ble_hci_trans_hs_acl_tx(struct os_mbuf *om) { uint16_t len = 0; uint8_t data[MYNEWT_VAL(BLE_ACL_BUF_SIZE) + 3], rc = 0; -#ifndef CONFIG_FREERTOS_UNICORE bool tx_using_nimble_core = 0; -#endif /* If this packet is zero length, just free it */ if (OS_MBUF_PKTLEN(om) == 0) { os_mbuf_free_chain(om); diff --git a/main.cpp b/main.cpp index 74c5c8b9..502ddb0e 100644 --- a/main.cpp +++ b/main.cpp @@ -194,7 +194,7 @@ void setup() bleScanner = new BleScanner::Scanner(); bleScanner->initialize("NukiHub"); - bleScanner->setScanDuration(3); + bleScanner->setScanDuration(10); Log->println(lockEnabled ? F("NUKI Lock enabled") : F("NUKI Lock disabled")); if(lockEnabled)