bt_bdaddr_t bd_addr;
bt_bdname_t bd_name;
uint32_t cod;
+ bool is_incoming = !(pairing_cb.state == BT_BOND_STATE_BONDING);
int dev_type;
BTIF_TRACE_DEBUG("%s", __func__);
pairing_cb.is_ssp = true;
+ /* If JustWorks auto-accept */
+ if (p_ssp_cfm_req->just_works) {
+ /* Pairing consent for JustWorks NOT needed if:
+ * 1. Incoming temporary pairing is detected
+ */
+ if (is_incoming && pairing_cb.bond_type == BOND_TYPE_TEMPORARY) {
+ BTIF_TRACE_EVENT(
+ "%s: Auto-accept JustWorks pairing for temporary incoming", __func__);
+ btif_dm_ssp_reply(&bd_addr, BT_SSP_VARIANT_CONSENT, true, 0);
+ return;
+ }
+ }
+
cod = devclass2uint(p_ssp_cfm_req->dev_class);
if (cod == 0) {
* to the end of the tBTA_DM_SEARCH */
switch (event) {
case BTA_DM_INQ_RES_EVT: {
- if (p_data->inq_res.p_eir) param_len += HCI_EXT_INQ_RESPONSE_LEN;
+ if (p_data->inq_res.p_eir) param_len += p_data->inq_res.eir_len;
} break;
case BTA_DM_DISC_RES_EVT: {
state = BT_BOND_STATE_NONE;
} else {
btif_dm_save_ble_bonding_keys(bdaddr);
- BTA_GATTC_Refresh(bd_addr.address);
+ BTA_GATTC_Refresh(bd_addr);
btif_dm_get_remote_services_by_transport(&bd_addr, BTA_GATT_TRANSPORT_LE);
}
} else {