Loading system/btif/src/btif_core.c +5 −5 Original line number Diff line number Diff line Loading @@ -678,10 +678,6 @@ bt_status_t btif_disable_bluetooth(void) btif_config_flush(); #if (BLE_INCLUDED == TRUE) BTA_VendorCleanup(); #endif if (status != BTA_SUCCESS) { BTIF_TRACE_ERROR("disable bt failed (%d)", status); Loading Loading @@ -714,6 +710,10 @@ void btif_disable_bluetooth_evt(void) bte_main_enable_lpm(FALSE); #endif #if (BLE_INCLUDED == TRUE) BTA_VendorCleanup(); #endif bte_main_disable(); /* update local state */ Loading system/stack/btm/btm_ble.c +1 −1 Original line number Diff line number Diff line Loading @@ -1660,7 +1660,7 @@ void btm_ble_conn_complete(UINT8 *p, UINT16 evt_len) /* possiblly receive connection complete with resolvable random on slave role while the device has been paired */ if (!match && role == HCI_ROLE_SLAVE && BTM_BLE_IS_RESOLVE_BDA(bda)) if (!match && /*role == HCI_ROLE_SLAVE && */BTM_BLE_IS_RESOLVE_BDA(bda)) { btm_ble_resolve_random_addr(bda, btm_ble_resolve_random_addr_on_conn_cmpl, p_data); } Loading system/stack/btm/btm_ble_gap.c +5 −8 Original line number Diff line number Diff line Loading @@ -466,6 +466,10 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback (tBTM_VSC_CMPL *p_vcs_cplt_ if (btm_cb.cmn_ble_vsc_cb.max_filter > 0) { btm_ble_adv_filter_init(); } if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz > 0) { btm_ble_vendor_init(btm_cb.cmn_ble_vsc_cb.max_irk_list_sz); } Loading Loading @@ -1714,7 +1718,6 @@ tBTM_STATUS btm_ble_start_inquiry (UINT8 mode, UINT8 duration) #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) /* enable IRK list */ if (btm_cb.cmn_ble_vsc_cb.rpa_offloading == TRUE) btm_ble_vendor_irk_list_known_dev (TRUE); #endif status = btm_ble_start_scan(BTM_BLE_DUPLICATE_DISABLE); Loading Loading @@ -3039,12 +3042,6 @@ void btm_ble_write_adv_enable_complete(UINT8 * p) /* toggle back the adv mode */ p_cb->adv_mode = !p_cb->adv_mode; } #if (BLE_PRIVACY_SPT == TRUE) if ((p_cb->adv_mode == BTM_BLE_ADV_DISABLE) && (btm_cb.cmn_ble_vsc_cb.rpa_offloading == TRUE)) btm_ble_vendor_disable_irk_list(); #endif } /******************************************************************************* Loading system/stack/l2cap/l2c_ble.c +6 −7 Original line number Diff line number Diff line Loading @@ -648,9 +648,14 @@ BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb) memcpy(init_addr, p_lcb->remote_bd_addr, BD_ADDR_LEN); #if BLE_PRIVACY_SPT == TRUE if (p_dev_rec->ble.active_addr_type == BTM_BLE_ADDR_RRA) /* if RPA offloading supported */ if (btm_ble_vendor_irk_list_load_dev(p_dev_rec)) btm_random_pseudo_to_public(init_addr, &init_addr_type); /* otherwise, if remote is RPA enabled, use latest RPA */ else if (p_dev_rec->ble.active_addr_type == BTM_BLE_ADDR_RRA) { init_addr_type = BLE_ADDR_RANDOM; memcpy(init_addr, p_dev_rec->ble.cur_rand_addr, BD_ADDR_LEN); } /* if privacy is on and current do not consider using reconnection address */ if (btm_cb.ble_ctr_cb.privacy ) /* && p_dev_rec->ble.use_reconn_addr */ Loading @@ -663,12 +668,6 @@ BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb) L2CAP_TRACE_ERROR("initate direct connection fail, topology limitation"); return FALSE; } if (btm_ble_vendor_irk_list_load_dev(p_dev_rec) && (btm_cb.cmn_ble_vsc_cb.rpa_offloading == TRUE )) { btm_ble_vendor_enable_irk_feature(TRUE); btm_random_pseudo_to_public(init_addr, &init_addr_type); } if (!btsnd_hcic_ble_create_ll_conn (scan_int,/* UINT16 scan_int */ scan_win, /* UINT16 scan_win */ Loading system/vnd/ble/vendor_ble.c +38 −10 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ void btm_ble_vendor_enq_irk_pending(BD_ADDR target_bda, BD_ADDR psuedo_bda, UINT p_q->irk_q_action[p_q->q_next] = to_add; p_q->q_next ++; p_q->q_next %= btm_cb.cmn_ble_vsc_cb.max_irk_list_sz;; p_q->q_next %= btm_cb.cmn_ble_vsc_cb.max_irk_list_sz; #endif return ; } Loading Loading @@ -389,6 +389,9 @@ tBTM_STATUS btm_ble_remove_irk_entry(tBTM_SEC_DEV_REC *p_dev_rec) tBTM_STATUS st; tBTM_BLE_VENDOR_CB *p_cb = &btm_ble_vendor_cb; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return BTM_MODE_UNSUPPORTED; p = param; memset(param, 0, 20); Loading Loading @@ -427,6 +430,9 @@ tBTM_STATUS btm_ble_vendor_clear_irk_list(void) UINT8 param[20], *p; tBTM_STATUS st; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return BTM_MODE_UNSUPPORTED; p = param; memset(param, 0, 20); Loading Loading @@ -457,9 +463,12 @@ tBTM_STATUS btm_ble_read_irk_entry(BD_ADDR target_bda) #if BLE_PRIVACY_SPT == TRUE UINT8 param[20], *p; tBTM_STATUS st = BTM_UNKNOWN_ADDR; tBTM_BLE_IRK_ENTRY *p_entry = btm_ble_vendor_find_irk_entry(target_bda); tBTM_BLE_IRK_ENTRY *p_entry; if (p_entry == NULL) if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return BTM_MODE_UNSUPPORTED; if ((p_entry = btm_ble_vendor_find_irk_entry(target_bda)) == NULL) return st; p = param; Loading Loading @@ -498,6 +507,9 @@ void btm_ble_vendor_irk_list_known_dev(BOOLEAN enable) UINT8 count = 0; tBTM_SEC_DEV_REC *p_dev_rec = &btm_cb.sec_dev_rec[0]; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return; /* add all known device with random address into IRK list */ for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i ++, p_dev_rec ++) { Loading Loading @@ -534,6 +546,9 @@ BOOLEAN btm_ble_vendor_irk_list_load_dev(tBTM_SEC_DEV_REC *p_dev_rec) BTM_TRACE_DEBUG ("btm_ble_vendor_irk_list_load_dev:max_irk_size=%d", p_cb->irk_avail_size); memset(param, 0, 40); if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return FALSE; if (p_dev_rec != NULL && /* RPA is being used and PID is known */ (p_dev_rec->ble.key_type & BTM_LE_KEY_PID) != 0) { Loading @@ -560,6 +575,8 @@ BOOLEAN btm_ble_vendor_irk_list_load_dev(tBTM_SEC_DEV_REC *p_dev_rec) btm_ble_vendor_enq_irk_pending(p_dev_rec->ble.static_addr, p_dev_rec->bd_addr, TRUE); p_cb->irk_list_size ++; rt = TRUE; btm_ble_vendor_enable_irk_feature(TRUE); } } } Loading Loading @@ -594,6 +611,9 @@ void btm_ble_vendor_irk_list_remove_dev(tBTM_SEC_DEV_REC *p_dev_rec) tBTM_BLE_VENDOR_CB *p_cs_cb = &btm_ble_vendor_cb; tBTM_BLE_IRK_ENTRY *p_irk_entry; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return; if ((p_irk_entry = btm_ble_vendor_find_irk_entry_by_psuedo_addr(p_dev_rec->bd_addr)) != NULL && btm_ble_vendor_find_irk_pending_entry(p_dev_rec->bd_addr, FALSE) == FALSE) { Loading Loading @@ -645,6 +665,11 @@ tBTM_STATUS btm_ble_vendor_enable_irk_feature(BOOLEAN enable) tBTM_STATUS st = BTM_WRONG_MODE; tBTM_BLE_PF_COUNT *p_bda_filter; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return BTM_MODE_UNSUPPORTED; if (btm_ble_vendor_cb.enable != enable) { p = param; memset(param, 0, 20); Loading @@ -655,6 +680,9 @@ tBTM_STATUS btm_ble_vendor_enable_irk_feature(BOOLEAN enable) st = BTM_VendorSpecificCommand (HCI_VENDOR_BLE_RPA_VSC, BTM_BLE_IRK_ENABLE_LEN, param, btm_ble_vendor_irk_vsc_op_cmpl); btm_ble_vendor_cb.enable = enable; } return st; #endif return BTM_MODE_UNSUPPORTED; Loading Loading
system/btif/src/btif_core.c +5 −5 Original line number Diff line number Diff line Loading @@ -678,10 +678,6 @@ bt_status_t btif_disable_bluetooth(void) btif_config_flush(); #if (BLE_INCLUDED == TRUE) BTA_VendorCleanup(); #endif if (status != BTA_SUCCESS) { BTIF_TRACE_ERROR("disable bt failed (%d)", status); Loading Loading @@ -714,6 +710,10 @@ void btif_disable_bluetooth_evt(void) bte_main_enable_lpm(FALSE); #endif #if (BLE_INCLUDED == TRUE) BTA_VendorCleanup(); #endif bte_main_disable(); /* update local state */ Loading
system/stack/btm/btm_ble.c +1 −1 Original line number Diff line number Diff line Loading @@ -1660,7 +1660,7 @@ void btm_ble_conn_complete(UINT8 *p, UINT16 evt_len) /* possiblly receive connection complete with resolvable random on slave role while the device has been paired */ if (!match && role == HCI_ROLE_SLAVE && BTM_BLE_IS_RESOLVE_BDA(bda)) if (!match && /*role == HCI_ROLE_SLAVE && */BTM_BLE_IS_RESOLVE_BDA(bda)) { btm_ble_resolve_random_addr(bda, btm_ble_resolve_random_addr_on_conn_cmpl, p_data); } Loading
system/stack/btm/btm_ble_gap.c +5 −8 Original line number Diff line number Diff line Loading @@ -466,6 +466,10 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback (tBTM_VSC_CMPL *p_vcs_cplt_ if (btm_cb.cmn_ble_vsc_cb.max_filter > 0) { btm_ble_adv_filter_init(); } if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz > 0) { btm_ble_vendor_init(btm_cb.cmn_ble_vsc_cb.max_irk_list_sz); } Loading Loading @@ -1714,7 +1718,6 @@ tBTM_STATUS btm_ble_start_inquiry (UINT8 mode, UINT8 duration) #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) /* enable IRK list */ if (btm_cb.cmn_ble_vsc_cb.rpa_offloading == TRUE) btm_ble_vendor_irk_list_known_dev (TRUE); #endif status = btm_ble_start_scan(BTM_BLE_DUPLICATE_DISABLE); Loading Loading @@ -3039,12 +3042,6 @@ void btm_ble_write_adv_enable_complete(UINT8 * p) /* toggle back the adv mode */ p_cb->adv_mode = !p_cb->adv_mode; } #if (BLE_PRIVACY_SPT == TRUE) if ((p_cb->adv_mode == BTM_BLE_ADV_DISABLE) && (btm_cb.cmn_ble_vsc_cb.rpa_offloading == TRUE)) btm_ble_vendor_disable_irk_list(); #endif } /******************************************************************************* Loading
system/stack/l2cap/l2c_ble.c +6 −7 Original line number Diff line number Diff line Loading @@ -648,9 +648,14 @@ BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb) memcpy(init_addr, p_lcb->remote_bd_addr, BD_ADDR_LEN); #if BLE_PRIVACY_SPT == TRUE if (p_dev_rec->ble.active_addr_type == BTM_BLE_ADDR_RRA) /* if RPA offloading supported */ if (btm_ble_vendor_irk_list_load_dev(p_dev_rec)) btm_random_pseudo_to_public(init_addr, &init_addr_type); /* otherwise, if remote is RPA enabled, use latest RPA */ else if (p_dev_rec->ble.active_addr_type == BTM_BLE_ADDR_RRA) { init_addr_type = BLE_ADDR_RANDOM; memcpy(init_addr, p_dev_rec->ble.cur_rand_addr, BD_ADDR_LEN); } /* if privacy is on and current do not consider using reconnection address */ if (btm_cb.ble_ctr_cb.privacy ) /* && p_dev_rec->ble.use_reconn_addr */ Loading @@ -663,12 +668,6 @@ BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb) L2CAP_TRACE_ERROR("initate direct connection fail, topology limitation"); return FALSE; } if (btm_ble_vendor_irk_list_load_dev(p_dev_rec) && (btm_cb.cmn_ble_vsc_cb.rpa_offloading == TRUE )) { btm_ble_vendor_enable_irk_feature(TRUE); btm_random_pseudo_to_public(init_addr, &init_addr_type); } if (!btsnd_hcic_ble_create_ll_conn (scan_int,/* UINT16 scan_int */ scan_win, /* UINT16 scan_win */ Loading
system/vnd/ble/vendor_ble.c +38 −10 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ void btm_ble_vendor_enq_irk_pending(BD_ADDR target_bda, BD_ADDR psuedo_bda, UINT p_q->irk_q_action[p_q->q_next] = to_add; p_q->q_next ++; p_q->q_next %= btm_cb.cmn_ble_vsc_cb.max_irk_list_sz;; p_q->q_next %= btm_cb.cmn_ble_vsc_cb.max_irk_list_sz; #endif return ; } Loading Loading @@ -389,6 +389,9 @@ tBTM_STATUS btm_ble_remove_irk_entry(tBTM_SEC_DEV_REC *p_dev_rec) tBTM_STATUS st; tBTM_BLE_VENDOR_CB *p_cb = &btm_ble_vendor_cb; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return BTM_MODE_UNSUPPORTED; p = param; memset(param, 0, 20); Loading Loading @@ -427,6 +430,9 @@ tBTM_STATUS btm_ble_vendor_clear_irk_list(void) UINT8 param[20], *p; tBTM_STATUS st; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return BTM_MODE_UNSUPPORTED; p = param; memset(param, 0, 20); Loading Loading @@ -457,9 +463,12 @@ tBTM_STATUS btm_ble_read_irk_entry(BD_ADDR target_bda) #if BLE_PRIVACY_SPT == TRUE UINT8 param[20], *p; tBTM_STATUS st = BTM_UNKNOWN_ADDR; tBTM_BLE_IRK_ENTRY *p_entry = btm_ble_vendor_find_irk_entry(target_bda); tBTM_BLE_IRK_ENTRY *p_entry; if (p_entry == NULL) if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return BTM_MODE_UNSUPPORTED; if ((p_entry = btm_ble_vendor_find_irk_entry(target_bda)) == NULL) return st; p = param; Loading Loading @@ -498,6 +507,9 @@ void btm_ble_vendor_irk_list_known_dev(BOOLEAN enable) UINT8 count = 0; tBTM_SEC_DEV_REC *p_dev_rec = &btm_cb.sec_dev_rec[0]; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return; /* add all known device with random address into IRK list */ for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i ++, p_dev_rec ++) { Loading Loading @@ -534,6 +546,9 @@ BOOLEAN btm_ble_vendor_irk_list_load_dev(tBTM_SEC_DEV_REC *p_dev_rec) BTM_TRACE_DEBUG ("btm_ble_vendor_irk_list_load_dev:max_irk_size=%d", p_cb->irk_avail_size); memset(param, 0, 40); if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return FALSE; if (p_dev_rec != NULL && /* RPA is being used and PID is known */ (p_dev_rec->ble.key_type & BTM_LE_KEY_PID) != 0) { Loading @@ -560,6 +575,8 @@ BOOLEAN btm_ble_vendor_irk_list_load_dev(tBTM_SEC_DEV_REC *p_dev_rec) btm_ble_vendor_enq_irk_pending(p_dev_rec->ble.static_addr, p_dev_rec->bd_addr, TRUE); p_cb->irk_list_size ++; rt = TRUE; btm_ble_vendor_enable_irk_feature(TRUE); } } } Loading Loading @@ -594,6 +611,9 @@ void btm_ble_vendor_irk_list_remove_dev(tBTM_SEC_DEV_REC *p_dev_rec) tBTM_BLE_VENDOR_CB *p_cs_cb = &btm_ble_vendor_cb; tBTM_BLE_IRK_ENTRY *p_irk_entry; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return; if ((p_irk_entry = btm_ble_vendor_find_irk_entry_by_psuedo_addr(p_dev_rec->bd_addr)) != NULL && btm_ble_vendor_find_irk_pending_entry(p_dev_rec->bd_addr, FALSE) == FALSE) { Loading Loading @@ -645,6 +665,11 @@ tBTM_STATUS btm_ble_vendor_enable_irk_feature(BOOLEAN enable) tBTM_STATUS st = BTM_WRONG_MODE; tBTM_BLE_PF_COUNT *p_bda_filter; if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz == 0) return BTM_MODE_UNSUPPORTED; if (btm_ble_vendor_cb.enable != enable) { p = param; memset(param, 0, 20); Loading @@ -655,6 +680,9 @@ tBTM_STATUS btm_ble_vendor_enable_irk_feature(BOOLEAN enable) st = BTM_VendorSpecificCommand (HCI_VENDOR_BLE_RPA_VSC, BTM_BLE_IRK_ENABLE_LEN, param, btm_ble_vendor_irk_vsc_op_cmpl); btm_ble_vendor_cb.enable = enable; } return st; #endif return BTM_MODE_UNSUPPORTED; Loading