Procházet zdrojové kódy

NimBLE: Add Host based privacy (RPA) feature support (v4.1)

- This feature removes dependency on controller to use privacy (RPA)

Closes BT-519
Prasad Alatkar před 6 roky
rodič
revize
48fe9dfce7

+ 1 - 0
components/bt/CMakeLists.txt

@@ -480,6 +480,7 @@ if(CONFIG_BT_ENABLED)
                     "host/nimble/nimble/nimble/host/src/ble_hs_adv.c"
                     "host/nimble/nimble/nimble/host/src/ble_hs_adv.c"
                     "host/nimble/nimble/nimble/host/src/ble_hs_hci.c"
                     "host/nimble/nimble/nimble/host/src/ble_hs_hci.c"
                     "host/nimble/nimble/nimble/host/src/ble_hs_hci_util.c"
                     "host/nimble/nimble/nimble/host/src/ble_hs_hci_util.c"
+                    "host/nimble/nimble/nimble/host/src/ble_hs_resolv.c"
                     "host/nimble/nimble/nimble/host/store/ram/src/ble_store_ram.c"
                     "host/nimble/nimble/nimble/host/store/ram/src/ble_store_ram.c"
                     "host/nimble/nimble/nimble/host/store/config/src/ble_store_config.c"
                     "host/nimble/nimble/nimble/host/store/config/src/ble_store_config.c"
                     "host/nimble/nimble/nimble/host/store/config/src/ble_store_nvs.c"
                     "host/nimble/nimble/nimble/host/store/config/src/ble_store_nvs.c"

+ 9 - 0
components/bt/host/nimble/Kconfig.in

@@ -257,6 +257,15 @@ config BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT
         Enable this option to send number-of-completed-packets event to
         Enable this option to send number-of-completed-packets event to
         controller after disconnection
         controller after disconnection
 
 
+config BT_NIMBLE_RPA_TIMEOUT
+    int "RPA timeout in seconds"
+    range 1 41400
+    depends on BT_NIMBLE_ENABLED
+    default 900
+    help
+        Time interval between RPA address change. This is applicable in case of
+        Host based RPA
+
 menuconfig BT_NIMBLE_MESH
 menuconfig BT_NIMBLE_MESH
     bool "Enable BLE mesh functionality"
     bool "Enable BLE mesh functionality"
     select BT_NIMBLE_SM_SC
     select BT_NIMBLE_SM_SC

+ 1 - 1
components/bt/host/nimble/nimble

@@ -1 +1 @@
-Subproject commit d60a322f54cdad95f842b9fabb026615745da1a3
+Subproject commit e4e2b501410bf60d2f09e62bfd8230074dfaa2c9

+ 5 - 1
components/bt/host/nimble/port/include/esp_nimble_cfg.h

@@ -543,8 +543,12 @@
 #define MYNEWT_VAL_BLE_MONITOR_UART_DEV ("uart0")
 #define MYNEWT_VAL_BLE_MONITOR_UART_DEV ("uart0")
 #endif
 #endif
 
 
+#ifndef MYNEWT_VAL_BLE_HOST_BASED_PRIVACY
+#define MYNEWT_VAL_BLE_HOST_BASED_PRIVACY (1)
+#endif
+
 #ifndef MYNEWT_VAL_BLE_RPA_TIMEOUT
 #ifndef MYNEWT_VAL_BLE_RPA_TIMEOUT
-#define MYNEWT_VAL_BLE_RPA_TIMEOUT (300)
+#define MYNEWT_VAL_BLE_RPA_TIMEOUT (CONFIG_BT_NIMBLE_RPA_TIMEOUT)
 #endif
 #endif
 
 
 #ifndef MYNEWT_VAL_BLE_SM_BONDING
 #ifndef MYNEWT_VAL_BLE_SM_BONDING

+ 3 - 1
examples/bluetooth/nimble/bleprph/README.md

@@ -10,9 +10,11 @@ This example aims at understanding GATT database configuration, advertisement an
 
 
 It also demonstrates security features of NimBLE stack. SMP parameters like I/O capabilities of device, Bonding flag, MITM protection flag and Secure Connection only mode etc., can be configured through menuconfig options.
 It also demonstrates security features of NimBLE stack. SMP parameters like I/O capabilities of device, Bonding flag, MITM protection flag and Secure Connection only mode etc., can be configured through menuconfig options.
 
 
+For RPA feature (currently Host based privacy feature is supported), use API `ble_hs_pvcy_rpa_config` to enable/disable host based privacy. `own_addr_type` needs to be set to `BLE_ADDR_RANDOM` to use this feature.
+
 To test this demo, any BLE scanner app can be used.
 To test this demo, any BLE scanner app can be used.
 
 
-A Python based utility `bleprph_test.py` is also provided (which will run as a BLE GATT Client) and can be used to test this example.   
+A Python based utility `bleprph_test.py` is also provided (which will run as a BLE GATT Client) and can be used to test this example.
 
 
 Note :
 Note :