]> granicus.if.org Git - esp-idf/commitdiff
Component/bt: add esp_ble_gap_get_local_used_addr() API
authorzhiweijian <zhiweijian@espressif.com>
Tue, 27 Mar 2018 12:12:57 +0000 (20:12 +0800)
committerzhiweijian <zhiweijian@espressif.com>
Thu, 29 Mar 2018 11:47:08 +0000 (19:47 +0800)
components/bt/bluedroid/api/esp_gap_ble_api.c
components/bt/bluedroid/api/include/esp_gap_ble_api.h
components/bt/bluedroid/stack/btm/btm_ble_gap.c
components/bt/bluedroid/stack/include/btm_ble_api.h

index 84df9d6131ee519e2f837df920c9e957cef9478f..1c4846e8a598cc31b2e9ef2f9944493d3aaf96c0 100644 (file)
@@ -268,6 +268,18 @@ esp_err_t esp_ble_gap_set_device_name(const char *name)
     return esp_bt_dev_set_device_name(name);
 }
 
+esp_err_t esp_ble_gap_get_local_used_addr(esp_bd_addr_t local_used_addr, uint8_t * addr_type)
+{
+    if(esp_bluedroid_get_status() != (ESP_BLUEDROID_STATUS_ENABLED)) {
+        LOG_ERROR("%s, bluedroid status error", __func__);
+        return ESP_FAIL;
+    } 
+    if(!BTM_BleGetCurrentAddress(local_used_addr, addr_type)) {
+        return ESP_FAIL;
+    }
+    return ESP_OK;
+}
+
 uint8_t *esp_ble_resolve_adv_data( uint8_t *adv_data, uint8_t type, uint8_t *length)
 {
     if (((type < ESP_BLE_AD_TYPE_FLAG) || (type > ESP_BLE_AD_TYPE_128SERVICE_DATA)) &&
index 3e0c16e349f24372583b14641abb2e7340fbd060..6aa07f24df9c4d888d904bfd599b053bc864578b 100644 (file)
@@ -830,7 +830,18 @@ esp_err_t esp_ble_gap_set_prefer_conn_params(esp_bd_addr_t bd_addr,
  */
 esp_err_t esp_ble_gap_set_device_name(const char *name);
 
-
+/**
+ * @brief          This function is called to get local used address and adress type.
+ *                 uint8_t *esp_bt_dev_get_address(void) get the public address
+ *
+ * @param[in]       local_used_addr - current local used ble address (six bytes)
+ * @param[in]       addr_type   - ble address type
+ *
+ * @return          - ESP_OK : success
+ *                  - other  : failed
+ *
+ */
+esp_err_t esp_ble_gap_get_local_used_addr(esp_bd_addr_t local_used_addr, uint8_t * addr_type);
 /**
  * @brief          This function is called to get ADV data for a specific type.
  *
index 14c60f44eb2f2c3d6bf24166fe16150596f672fe..eb918ce6e7443f32cf2cc988fbfc9c13de9b56df 100644 (file)
@@ -1588,6 +1588,37 @@ BOOLEAN BTM_BleSetRandAddress(BD_ADDR rand_addr)
     return set_flag;
 }
 
+/*******************************************************************************
+**
+** Function         BTM_BleGetCurrentAddress
+**
+** Description      This function is called to get local used BLE address.
+**
+** Parameters:       None.
+**
+** Returns          success or fail
+**
+*******************************************************************************/
+BOOLEAN BTM_BleGetCurrentAddress(BD_ADDR addr, uint8_t *addr_type)
+{
+    if(addr == NULL || addr_type == NULL) {
+        BTM_TRACE_ERROR("%s addr or addr_type is NULL\n", __func__);
+        return FALSE;
+    }
+    if(btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_RANDOM) {
+        *addr_type = BLE_ADDR_RANDOM;
+        memcpy(addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, BD_ADDR_LEN);
+    } else if(btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_PUBLIC) {
+        *addr_type = BLE_ADDR_PUBLIC;
+        memcpy(addr, &controller_get_interface()->get_address()->address, BD_ADDR_LEN);
+    } else {
+        BTM_TRACE_ERROR("%s\n", __func__);
+        memset(addr, 0, BD_ADDR_LEN);
+        return FALSE;
+    }
+    return TRUE; 
+}
+
 /*******************************************************************************
 **
 ** Function         BTM_CheckAdvData
index 0587b65be2d00c4db8160b31f9fdda6bb6dc4087..9edb0bd6bd22bfa2dcea45a2e10ea5d1f987352e 100644 (file)
@@ -1541,6 +1541,19 @@ void BTM_BleReadControllerFeatures(tBTM_BLE_CTRL_FEATURES_CBACK  *p_vsc_cback);
 //extern
 UINT8 *BTM_CheckAdvData( UINT8 *p_adv, UINT8 type, UINT8 *p_length);
 
+/*******************************************************************************
+**
+** Function         BTM_BleGetCurrentAddress
+**
+** Description      This function is called to get local used BLE address.
+**
+** Parameters:       None.
+**
+** Returns          success or fail
+**
+*******************************************************************************/
+BOOLEAN BTM_BleGetCurrentAddress(BD_ADDR addr, uint8_t *addr_type);
+
 /*******************************************************************************
 **
 ** Function         BTM__BLEReadDiscoverability