From: Jiang Jiang Jian Date: Mon, 2 Apr 2018 14:28:00 +0000 (+0800) Subject: Merge branch 'feature/btdm_add_get_local_used_addr_API' into 'master' X-Git-Tag: v3.1-beta1~297 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=393f3da37cee49c4658cee7d12a5536462099cb4;p=esp-idf Merge branch 'feature/btdm_add_get_local_used_addr_API' into 'master' Component/bt: add esp_ble_gap_get_local_used_addr() API See merge request idf/esp-idf!2137 --- 393f3da37cee49c4658cee7d12a5536462099cb4 diff --cc components/bt/bluedroid/stack/btm/btm_ble_gap.c index b5faafe166,eb918ce6e7..dfb588f243 --- a/components/bt/bluedroid/stack/btm/btm_ble_gap.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_gap.c @@@ -1597,13 -1584,41 +1597,44 @@@ tBTM_STATUS BTM_BleSetRandAddress(BD_AD memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, rand_addr, BD_ADDR_LEN); btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM; //send the set random address to the controller - set_flag = btsnd_hcic_ble_set_random_addr(rand_addr); - return set_flag; + if(btsnd_hcic_ble_set_random_addr(rand_addr)) { + return BTM_SUCCESS; + } else { + return BTM_SET_STATIC_RAND_ADDR_FAIL; + } } + /******************************************************************************* + ** + ** 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