summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Eisenbach <eisenbach@google.com>2015-02-05 03:26:29 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-02-05 03:26:29 +0000
commit6d429d9d0a1b537600c652dda2bc98d4c4ebd783 (patch)
tree485581ea2253198f8796020eff53f7208a50d07d
parent4a5fc6964313a606abd89268b8a53036b14b4ad7 (diff)
parent3efb9e2e11471a67329ad17d48ffa79118ea76c6 (diff)
downloadbluedroid-6d429d9d0a1b537600c652dda2bc98d4c4ebd783.tar.gz
am 3efb9e2e: DO NOT MERGE Change pairing_cb to assume temporary pairing by default
* commit '3efb9e2e11471a67329ad17d48ffa79118ea76c6': DO NOT MERGE Change pairing_cb to assume temporary pairing by default
-rw-r--r--btif/src/btif_dm.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/btif/src/btif_dm.c b/btif/src/btif_dm.c
index e873bec..16890f9 100644
--- a/btif/src/btif_dm.c
+++ b/btif/src/btif_dm.c
@@ -65,11 +65,15 @@
#define BTIF_DM_MAX_SDP_ATTEMPTS_AFTER_PAIRING 2
+#define BOND_TYPE_UNKNOWN 0
+#define BOND_TYPE_PERSISTENT 1
+#define BOND_TYPE_TEMPORARY 2
+
typedef struct
{
bt_bond_state_t state;
BD_ADDR bd_addr;
- UINT8 is_temp;
+ UINT8 bond_type;
UINT8 pin_code_len;
UINT8 is_ssp;
UINT8 autopair_attempts;
@@ -295,7 +299,7 @@ static void bond_state_changed(bt_status_t status, bt_bdaddr_t *bd_addr, bt_bond
if ( (pairing_cb.state == state) && (state == BT_BOND_STATE_BONDING) )
return;
- if (pairing_cb.is_temp)
+ if (pairing_cb.bond_type == BOND_TYPE_TEMPORARY)
{
state = BT_BOND_STATE_NONE;
}
@@ -724,9 +728,9 @@ static void btif_dm_ssp_cfm_req_evt(tBTA_DM_SP_CFM_REQ *p_ssp_cfm_req)
if (p_ssp_cfm_req->just_works && !(p_ssp_cfm_req->loc_auth_req & BTM_AUTH_BONDS) &&
!(p_ssp_cfm_req->rmt_auth_req & BTM_AUTH_BONDS) &&
!(check_cod((bt_bdaddr_t*)&p_ssp_cfm_req->bd_addr, COD_HID_POINTING)))
- pairing_cb.is_temp = TRUE;
+ pairing_cb.bond_type = BOND_TYPE_TEMPORARY;
else
- pairing_cb.is_temp = FALSE;
+ pairing_cb.bond_type = BOND_TYPE_PERSISTENT;
pairing_cb.is_ssp = TRUE;
@@ -813,11 +817,11 @@ static void btif_dm_auth_cmpl_evt (tBTA_DM_AUTH_CMPL *p_auth_cmpl)
if ( (p_auth_cmpl->success == TRUE) && (p_auth_cmpl->key_present) )
{
if ((p_auth_cmpl->key_type < HCI_LKEY_TYPE_DEBUG_COMB) || (p_auth_cmpl->key_type == HCI_LKEY_TYPE_AUTH_COMB) ||
- (p_auth_cmpl->key_type == HCI_LKEY_TYPE_CHANGED_COMB) || (!pairing_cb.is_temp))
+ (p_auth_cmpl->key_type == HCI_LKEY_TYPE_CHANGED_COMB) || pairing_cb.bond_type == BOND_TYPE_PERSISTENT)
{
bt_status_t ret;
- BTIF_TRACE_DEBUG3("%s: Storing link key. key_type=0x%x, is_temp=%d",
- __FUNCTION__, p_auth_cmpl->key_type, pairing_cb.is_temp);
+ BTIF_TRACE_DEBUG3("%s: Storing link key. key_type=0x%x, bond_type=%d",
+ __FUNCTION__, p_auth_cmpl->key_type, pairing_cb.bond_type);
ret = btif_storage_add_bonded_device(&bd_addr,
p_auth_cmpl->key, p_auth_cmpl->key_type,
pairing_cb.pin_code_len);
@@ -825,8 +829,15 @@ static void btif_dm_auth_cmpl_evt (tBTA_DM_AUTH_CMPL *p_auth_cmpl)
}
else
{
- BTIF_TRACE_DEBUG3("%s: Temporary key. Not storing. key_type=0x%x, is_temp=%d",
- __FUNCTION__, p_auth_cmpl->key_type, pairing_cb.is_temp);
+ BTIF_TRACE_DEBUG3("%s: Temporary key. Not storing. key_type=0x%x, bond_type=%d",
+ __FUNCTION__, p_auth_cmpl->key_type, pairing_cb.bond_type);
+ if(pairing_cb.bond_type == BOND_TYPE_TEMPORARY)
+ {
+ BTIF_TRACE_DEBUG1("%s: sending BT_BOND_STATE_NONE for Temp pairing",
+ __FUNCTION__);
+ bond_state_changed(BT_STATUS_SUCCESS, &bd_addr, BT_BOND_STATE_NONE);
+ return;
+ }
}
}
if (p_auth_cmpl->success)
@@ -2420,7 +2431,7 @@ void btif_dm_ble_sec_req_evt(tBTA_DM_BLE_SEC_REQ *p_ble_req)
bond_state_changed(BT_STATUS_SUCCESS, &bd_addr, BT_BOND_STATE_BONDING);
- pairing_cb.is_temp = FALSE;
+ pairing_cb.bond_type = BOND_TYPE_PERSISTENT;
pairing_cb.is_le_only = TRUE;
pairing_cb.is_ssp = TRUE;