diff --git a/Version.h b/Version.h index 5dfd6d5..e679cb7 100644 --- a/Version.h +++ b/Version.h @@ -1,3 +1,3 @@ #pragma once -#define nuki_hub_version "6.8-rvt-all" \ No newline at end of file +#define nuki_hub_version "6.8" \ No newline at end of file diff --git a/lib/NimBLE-Arduino/CHANGELOG.md b/lib/NimBLE-Arduino/CHANGELOG.md index 5d1d2d4..43fbc62 100644 --- a/lib/NimBLE-Arduino/CHANGELOG.md +++ b/lib/NimBLE-Arduino/CHANGELOG.md @@ -2,6 +2,22 @@ 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 @@ -11,6 +27,9 @@ 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 16ddf82..d1b32b9 100644 --- a/lib/NimBLE-Arduino/library.properties +++ b/lib/NimBLE-Arduino/library.properties @@ -1,5 +1,5 @@ name=NimBLE-Arduino -version=1.4.0 +version=1.4.1 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 d923e6a..a83e23b 100644 --- a/lib/NimBLE-Arduino/src/NimBLEClient.cpp +++ b/lib/NimBLE-Arduino/src/NimBLEClient.cpp @@ -336,6 +336,7 @@ 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}; @@ -345,7 +346,7 @@ bool NimBLEClient::secureConnection() { m_pTaskData = &taskData; int rc = NimBLEDevice::startSecurity(m_conn_id); - if(rc != 0){ + if(rc != 0 && rc != BLE_HS_EALREADY){ m_lastErr = rc; m_pTaskData = nullptr; return false; @@ -360,9 +361,11 @@ 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 a7b6a55..43ba219 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 -6; + return -3; case ESP_PWR_LVL_N0: return 0; case ESP_PWR_LVL_P3: @@ -971,6 +971,15 @@ 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 b7e804b..8d4d849 100644 --- a/lib/NimBLE-Arduino/src/NimBLEDevice.h +++ b/lib/NimBLE-Arduino/src/NimBLEDevice.h @@ -97,6 +97,7 @@ 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(); @@ -150,7 +151,8 @@ public: int max_events = 0); static bool stopAdvertising(uint8_t inst_id); static bool stopAdvertising(); -# else +# endif +# if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) 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 29150ce..a2310eb 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 - *//* -BLECharacteristic* BLEHIDDevice::batteryLevel() { + */ +NimBLECharacteristic* NimBLEHIDDevice::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 ef2ed73..0e8b282 100644 --- a/lib/NimBLE-Arduino/src/NimBLEHIDDevice.h +++ b/lib/NimBLE-Arduino/src/NimBLEHIDDevice.h @@ -55,7 +55,7 @@ public: 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 68982f8..6cca615 100644 --- a/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp +++ b/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp @@ -616,7 +616,6 @@ 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 7042b19..353d832 100644 --- a/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h +++ b/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h @@ -73,8 +73,8 @@ public: bool subscribe(bool notifications = true, notify_callback notifyCallback = nullptr, - bool response = true); - bool unsubscribe(bool response = true); + bool response = false); + bool unsubscribe(bool response = false); 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 19fecfd..54bbb9a 100644 --- a/lib/NimBLE-Arduino/src/NimBLEServer.h +++ b/lib/NimBLE-Arduino/src/NimBLEServer.h @@ -58,7 +58,8 @@ public: int duration = 0, int max_events = 0); bool stopAdvertising(uint8_t inst_id); -#else +#endif +#if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) 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 f4857ee..8ae48a9 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,7 +138,9 @@ 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/lib/nuki_ble b/lib/nuki_ble index d63a9ff..af85a09 160000 --- a/lib/nuki_ble +++ b/lib/nuki_ble @@ -1 +1 @@ -Subproject commit d63a9ff39b89ffd92431c93c0df90f98d090264c +Subproject commit af85a090ec6d2bb513b1030d20e2b0ec1b4613c2