Loading system/bta/ag/bta_ag_act.c +1 −1 Original line number Diff line number Diff line Loading @@ -684,7 +684,7 @@ void bta_ag_start_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data) { /* Take the link out of sniff and set L2C idle time to 0 */ bta_dm_pm_active(p_scb->peer_addr); L2CA_SetIdleTimeoutByBdAddr(p_scb->peer_addr, 0); L2CA_SetIdleTimeoutByBdAddr(p_scb->peer_addr, 0, BT_TRANSPORT_BR_EDR); /* if SCO is open close SCO and wait on RFCOMM close */ if (bta_ag_sco_is_open(p_scb)) Loading system/bta/dm/bta_dm_act.c +37 −21 Original line number Diff line number Diff line Loading @@ -413,7 +413,8 @@ void bta_dm_disable (tBTA_DM_MSG *p_data) UNUSED(p_data); /* Set l2cap idle timeout to 0 (so BTE immediately disconnects ACL link after last channel is closed) */ L2CA_SetIdleTimeoutByBdAddr((UINT8 *)BT_BD_ANY, 0); L2CA_SetIdleTimeoutByBdAddr((UINT8 *)BT_BD_ANY, 0, BT_TRANSPORT_BR_EDR); L2CA_SetIdleTimeoutByBdAddr((UINT8 *)BT_BD_ANY, 0, BT_TRANSPORT_LE); /* disable all active subsystems */ bta_sys_disable(BTA_SYS_HW_BLUETOOTH); Loading Loading @@ -4303,8 +4304,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D tBTA_DM_SEC sec_event; char *p_name = NULL; UINT8 i; APPL_TRACE_DEBUG("bta_dm_ble_smp_cback"); tBT_DEVICE_TYPE dev_type; if (!bta_dm_cb.p_sec_cback) return BTM_NOT_AUTHORIZED; Loading Loading @@ -4371,31 +4371,24 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D bta_dm_cb.p_sec_cback(BTA_DM_BLE_OOB_REQ_EVT, &sec_event); break; case BTM_LE_NC_REQ_EVT: bdcpy(sec_event.key_notif.bd_addr, bda); BCM_STRNCPY_S((char*)sec_event.key_notif.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN)); sec_event.ble_req.bd_name[BD_NAME_LEN] = 0; sec_event.key_notif.passkey = p_data->key_notif; bta_dm_cb.p_sec_cback(BTA_DM_BLE_NC_REQ_EVT, &sec_event); break; case BTM_LE_KEY_EVT: bdcpy(sec_event.ble_key.bd_addr, bda); sec_event.ble_key.key_type = p_data->key.key_type; if (p_data->key.key_type == BTM_LE_KEY_PID) { for (i=0; i<BT_OCTET16_LEN; i++ ) { sec_event.ble_key.key_value.pid_key.irk[i] = p_data->key.p_key_value->pid_key.irk[i]; } sec_event.ble_key.key_value.pid_key.addr_type = p_data->key.p_key_value->pid_key.addr_type; memcpy( &(sec_event.ble_key.key_value.pid_key.static_addr), &(p_data->key.p_key_value->pid_key.static_addr), sizeof (BD_ADDR)); } else { memcpy(&sec_event.ble_key.key_value, p_data->key.p_key_value, sizeof(tBTM_LE_KEY_VALUE)); } // memcpy(&sec_event.ble_key.key_value, p_data->key.p_key_value, sizeof(tBTM_LE_KEY_VALUE)); todo will crash sec_event.ble_key.p_key_value = p_data->key.p_key_value; bta_dm_cb.p_sec_cback(BTA_DM_BLE_KEY_EVT, &sec_event); break; case BTM_LE_COMPLT_EVT: bdcpy(sec_event.auth_cmpl.bd_addr, bda); BTM_ReadDevInfo(bda, &dev_type, &sec_event.auth_cmpl.addr_type); p_name = BTM_SecReadDevName(bda); if (p_name != NULL) { Loading @@ -4417,6 +4410,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D sec_event.auth_cmpl.success = TRUE; GATT_ConfigServiceChangeCCC(bda, TRUE, BT_TRANSPORT_LE); } if (bta_dm_cb.p_sec_cback) { //bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event); Loading Loading @@ -4543,6 +4537,28 @@ void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data) } /******************************************************************************* ** ** Function bta_dm_ble_confirm_reply ** ** Description This is response to SM numeric comparison request submitted ** to application. ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data) { if (p_data->confirm.accept) { BTM_BleConfirmReply(p_data->confirm.bd_addr, BTM_SUCCESS); } else { BTM_BleConfirmReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED); } } /******************************************************************************* ** ** Function bta_dm_security_grant Loading system/bta/dm/bta_dm_api.c +28 −2 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ #include "btm_int.h" #include <string.h> #include "utl.h" #include "vendor_ble.h" /***************************************************************************** ** Constants Loading Loading @@ -791,6 +790,31 @@ void BTA_DmBlePasskeyReply(BD_ADDR bd_addr, BOOLEAN accept, UINT32 passkey) } #endif } /******************************************************************************* ** ** Function BTA_DmBleConfirmReply ** ** Description Send BLE SMP SC user confirmation reply. ** ** Parameters: bd_addr - BD address of the peer ** accept - numbers to compare are the same or different. ** ** Returns void ** *******************************************************************************/ void BTA_DmBleConfirmReply(BD_ADDR bd_addr, BOOLEAN accept) { tBTA_DM_API_CONFIRM *p_msg = (tBTA_DM_API_CONFIRM *)GKI_getbuf(sizeof(tBTA_DM_API_CONFIRM)); if (p_msg != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_CONFIRM)); p_msg->hdr.event = BTA_DM_API_BLE_CONFIRM_REPLY_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->accept = accept; bta_sys_sendmsg(p_msg); } } /******************************************************************************* ** ** Function BTA_DmBleSecurityGrant Loading Loading @@ -2004,7 +2028,9 @@ void BTA_VendorCleanup (void) if (cmn_ble_vsc_cb.max_filter > 0) { btm_ble_adv_filter_cleanup(); btm_ble_vendor_cleanup(); #if BLE_PRIVACY_SPT == TRUE btm_ble_resolving_list_cleanup (); #endif } if (cmn_ble_vsc_cb.tot_scan_results_strg > 0) Loading system/bta/dm/bta_dm_int.h +2 −2 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ enum BTA_DM_API_ADD_BLEKEY_EVT, BTA_DM_API_ADD_BLEDEVICE_EVT, BTA_DM_API_BLE_PASSKEY_REPLY_EVT, BTA_DM_API_BLE_CONFIRM_REPLY_EVT, BTA_DM_API_BLE_SEC_GRANT_EVT, BTA_DM_API_BLE_SET_BG_CONN_TYPE, BTA_DM_API_BLE_CONN_PARAM_EVT, Loading Loading @@ -1043,6 +1044,7 @@ extern void bta_dm_add_ampkey (tBTA_DM_MSG *p_data); extern void bta_dm_add_blekey (tBTA_DM_MSG *p_data); extern void bta_dm_add_ble_device (tBTA_DM_MSG *p_data); extern void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data); extern void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data); extern void bta_dm_security_grant (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data); Loading Loading @@ -1106,8 +1108,6 @@ extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data); extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data); extern tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(BD_ADDR peer_addr); extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data); extern void bta_dm_pm_active(BD_ADDR peer_addr); void bta_dm_eir_update_uuid(UINT16 uuid16, BOOLEAN adding); Loading system/bta/dm/bta_dm_main.c +1 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ const tBTA_DM_ACTION bta_dm_action[] = bta_dm_add_blekey, /* BTA_DM_API_ADD_BLEKEY_EVT */ bta_dm_add_ble_device, /* BTA_DM_API_ADD_BLEDEVICE_EVT */ bta_dm_ble_passkey_reply, /* BTA_DM_API_BLE_PASSKEY_REPLY_EVT */ bta_dm_ble_confirm_reply, /* BTA_DM_API_BLE_CONFIRM_REPLY_EVT */ bta_dm_security_grant, bta_dm_ble_set_bg_conn_type, bta_dm_ble_set_conn_params, /* BTA_DM_API_BLE_CONN_PARAM_EVT */ Loading Loading
system/bta/ag/bta_ag_act.c +1 −1 Original line number Diff line number Diff line Loading @@ -684,7 +684,7 @@ void bta_ag_start_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data) { /* Take the link out of sniff and set L2C idle time to 0 */ bta_dm_pm_active(p_scb->peer_addr); L2CA_SetIdleTimeoutByBdAddr(p_scb->peer_addr, 0); L2CA_SetIdleTimeoutByBdAddr(p_scb->peer_addr, 0, BT_TRANSPORT_BR_EDR); /* if SCO is open close SCO and wait on RFCOMM close */ if (bta_ag_sco_is_open(p_scb)) Loading
system/bta/dm/bta_dm_act.c +37 −21 Original line number Diff line number Diff line Loading @@ -413,7 +413,8 @@ void bta_dm_disable (tBTA_DM_MSG *p_data) UNUSED(p_data); /* Set l2cap idle timeout to 0 (so BTE immediately disconnects ACL link after last channel is closed) */ L2CA_SetIdleTimeoutByBdAddr((UINT8 *)BT_BD_ANY, 0); L2CA_SetIdleTimeoutByBdAddr((UINT8 *)BT_BD_ANY, 0, BT_TRANSPORT_BR_EDR); L2CA_SetIdleTimeoutByBdAddr((UINT8 *)BT_BD_ANY, 0, BT_TRANSPORT_LE); /* disable all active subsystems */ bta_sys_disable(BTA_SYS_HW_BLUETOOTH); Loading Loading @@ -4303,8 +4304,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D tBTA_DM_SEC sec_event; char *p_name = NULL; UINT8 i; APPL_TRACE_DEBUG("bta_dm_ble_smp_cback"); tBT_DEVICE_TYPE dev_type; if (!bta_dm_cb.p_sec_cback) return BTM_NOT_AUTHORIZED; Loading Loading @@ -4371,31 +4371,24 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D bta_dm_cb.p_sec_cback(BTA_DM_BLE_OOB_REQ_EVT, &sec_event); break; case BTM_LE_NC_REQ_EVT: bdcpy(sec_event.key_notif.bd_addr, bda); BCM_STRNCPY_S((char*)sec_event.key_notif.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN)); sec_event.ble_req.bd_name[BD_NAME_LEN] = 0; sec_event.key_notif.passkey = p_data->key_notif; bta_dm_cb.p_sec_cback(BTA_DM_BLE_NC_REQ_EVT, &sec_event); break; case BTM_LE_KEY_EVT: bdcpy(sec_event.ble_key.bd_addr, bda); sec_event.ble_key.key_type = p_data->key.key_type; if (p_data->key.key_type == BTM_LE_KEY_PID) { for (i=0; i<BT_OCTET16_LEN; i++ ) { sec_event.ble_key.key_value.pid_key.irk[i] = p_data->key.p_key_value->pid_key.irk[i]; } sec_event.ble_key.key_value.pid_key.addr_type = p_data->key.p_key_value->pid_key.addr_type; memcpy( &(sec_event.ble_key.key_value.pid_key.static_addr), &(p_data->key.p_key_value->pid_key.static_addr), sizeof (BD_ADDR)); } else { memcpy(&sec_event.ble_key.key_value, p_data->key.p_key_value, sizeof(tBTM_LE_KEY_VALUE)); } // memcpy(&sec_event.ble_key.key_value, p_data->key.p_key_value, sizeof(tBTM_LE_KEY_VALUE)); todo will crash sec_event.ble_key.p_key_value = p_data->key.p_key_value; bta_dm_cb.p_sec_cback(BTA_DM_BLE_KEY_EVT, &sec_event); break; case BTM_LE_COMPLT_EVT: bdcpy(sec_event.auth_cmpl.bd_addr, bda); BTM_ReadDevInfo(bda, &dev_type, &sec_event.auth_cmpl.addr_type); p_name = BTM_SecReadDevName(bda); if (p_name != NULL) { Loading @@ -4417,6 +4410,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D sec_event.auth_cmpl.success = TRUE; GATT_ConfigServiceChangeCCC(bda, TRUE, BT_TRANSPORT_LE); } if (bta_dm_cb.p_sec_cback) { //bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event); Loading Loading @@ -4543,6 +4537,28 @@ void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data) } /******************************************************************************* ** ** Function bta_dm_ble_confirm_reply ** ** Description This is response to SM numeric comparison request submitted ** to application. ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data) { if (p_data->confirm.accept) { BTM_BleConfirmReply(p_data->confirm.bd_addr, BTM_SUCCESS); } else { BTM_BleConfirmReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED); } } /******************************************************************************* ** ** Function bta_dm_security_grant Loading
system/bta/dm/bta_dm_api.c +28 −2 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ #include "btm_int.h" #include <string.h> #include "utl.h" #include "vendor_ble.h" /***************************************************************************** ** Constants Loading Loading @@ -791,6 +790,31 @@ void BTA_DmBlePasskeyReply(BD_ADDR bd_addr, BOOLEAN accept, UINT32 passkey) } #endif } /******************************************************************************* ** ** Function BTA_DmBleConfirmReply ** ** Description Send BLE SMP SC user confirmation reply. ** ** Parameters: bd_addr - BD address of the peer ** accept - numbers to compare are the same or different. ** ** Returns void ** *******************************************************************************/ void BTA_DmBleConfirmReply(BD_ADDR bd_addr, BOOLEAN accept) { tBTA_DM_API_CONFIRM *p_msg = (tBTA_DM_API_CONFIRM *)GKI_getbuf(sizeof(tBTA_DM_API_CONFIRM)); if (p_msg != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_CONFIRM)); p_msg->hdr.event = BTA_DM_API_BLE_CONFIRM_REPLY_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->accept = accept; bta_sys_sendmsg(p_msg); } } /******************************************************************************* ** ** Function BTA_DmBleSecurityGrant Loading Loading @@ -2004,7 +2028,9 @@ void BTA_VendorCleanup (void) if (cmn_ble_vsc_cb.max_filter > 0) { btm_ble_adv_filter_cleanup(); btm_ble_vendor_cleanup(); #if BLE_PRIVACY_SPT == TRUE btm_ble_resolving_list_cleanup (); #endif } if (cmn_ble_vsc_cb.tot_scan_results_strg > 0) Loading
system/bta/dm/bta_dm_int.h +2 −2 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ enum BTA_DM_API_ADD_BLEKEY_EVT, BTA_DM_API_ADD_BLEDEVICE_EVT, BTA_DM_API_BLE_PASSKEY_REPLY_EVT, BTA_DM_API_BLE_CONFIRM_REPLY_EVT, BTA_DM_API_BLE_SEC_GRANT_EVT, BTA_DM_API_BLE_SET_BG_CONN_TYPE, BTA_DM_API_BLE_CONN_PARAM_EVT, Loading Loading @@ -1043,6 +1044,7 @@ extern void bta_dm_add_ampkey (tBTA_DM_MSG *p_data); extern void bta_dm_add_blekey (tBTA_DM_MSG *p_data); extern void bta_dm_add_ble_device (tBTA_DM_MSG *p_data); extern void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data); extern void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data); extern void bta_dm_security_grant (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data); Loading Loading @@ -1106,8 +1108,6 @@ extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data); extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data); extern tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(BD_ADDR peer_addr); extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data); extern void bta_dm_pm_active(BD_ADDR peer_addr); void bta_dm_eir_update_uuid(UINT16 uuid16, BOOLEAN adding); Loading
system/bta/dm/bta_dm_main.c +1 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ const tBTA_DM_ACTION bta_dm_action[] = bta_dm_add_blekey, /* BTA_DM_API_ADD_BLEKEY_EVT */ bta_dm_add_ble_device, /* BTA_DM_API_ADD_BLEDEVICE_EVT */ bta_dm_ble_passkey_reply, /* BTA_DM_API_BLE_PASSKEY_REPLY_EVT */ bta_dm_ble_confirm_reply, /* BTA_DM_API_BLE_CONFIRM_REPLY_EVT */ bta_dm_security_grant, bta_dm_ble_set_bg_conn_type, bta_dm_ble_set_conn_params, /* BTA_DM_API_BLE_CONN_PARAM_EVT */ Loading