diff options
| author | Nitin Arora <niarora@codeaurora.org> | 2015-07-14 16:04:29 -0700 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2015-10-06 03:22:11 -0600 |
| commit | fdd7109bc697e1e5e9c8a6216a3a0ae7f720b24b (patch) | |
| tree | 5a3dd2791f7fd9aa0a965551392c10140514b2a6 /stack/btm | |
| parent | c7d8ccd8eccb3d5edfc49edf4273359139485239 (diff) | |
| download | android_system_bt-fdd7109bc697e1e5e9c8a6216a3a0ae7f720b24b.tar.gz android_system_bt-fdd7109bc697e1e5e9c8a6216a3a0ae7f720b24b.tar.bz2 android_system_bt-fdd7109bc697e1e5e9c8a6216a3a0ae7f720b24b.zip | |
Bluetooth: Prevent API callbacks due to Encryption complete
This change prevents the callbacks to BTIF after security
request triggers the encryption complete event, thus causing
the Cache refresh and rediscovery
Change-Id: I4558abdf06b9339bdf5c82e955b0f21827679b6e
Diffstat (limited to 'stack/btm')
| -rw-r--r-- | stack/btm/btm_ble.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/stack/btm/btm_ble.c b/stack/btm/btm_ble.c index 14c6a723d..42486e081 100644 --- a/stack/btm/btm_ble.c +++ b/stack/btm/btm_ble.c @@ -1973,6 +1973,7 @@ UINT8 btm_proc_smp_cback(tSMP_EVT event, BD_ADDR bd_addr, tSMP_EVT_DATA *p_data) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); UINT8 res = 0; + BOOLEAN skip_cmpl_cback = FALSE; BTM_TRACE_DEBUG ("btm_proc_smp_cback event = %d", event); @@ -2003,12 +2004,22 @@ UINT8 btm_proc_smp_cback(tSMP_EVT event, BD_ADDR bd_addr, tSMP_EVT_DATA *p_data) break; } memcpy (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN); + btm_cb.pairing_state = BTM_PAIR_STATE_WAIT_AUTH_COMPLETE; p_dev_rec->sec_state = BTM_SEC_STATE_AUTHENTICATING; btm_cb.pairing_flags |= BTM_PAIR_FLAGS_LE_ACTIVE; /* fall through */ case SMP_COMPLT_EVT: - if (btm_cb.api.p_le_callback) + if(event == SMP_COMPLT_EVT) + { + if ((p_data->cmplt.reason == SMP_SUCCESS && p_data->cmplt.sec_level == 0)|| + (btm_cb.pairing_state == BTM_PAIR_STATE_IDLE)) + { + BTM_TRACE_DEBUG("%s, SMP CMPL due to encryption", __func__); + skip_cmpl_cback = TRUE; + } + } + if (btm_cb.api.p_le_callback && !skip_cmpl_cback) { /* the callback function implementation may change the IO capability... */ BTM_TRACE_DEBUG ("btm_cb.api.p_le_callback=0x%x", btm_cb.api.p_le_callback ); |
