Lines Matching refs:p_data

63 static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data);
70 static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data);
104 static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_DATA *p_data);
111 static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data);
254 void bta_dm_enable(tBTA_DM_MSG *p_data)
265 if( p_data->enable.p_sec_cback != NULL )
266 p_data->enable.p_sec_cback (BTA_DM_ENABLE_EVT, &sec_event);
275 if( p_data->enable.p_sec_cback != NULL )
276 bta_dm_cb.p_sec_cback = p_data->enable.p_sec_cback;
428 void bta_dm_disable (tBTA_DM_MSG *p_data)
430 UNUSED(p_data);
537 void bta_dm_set_dev_name (tBTA_DM_MSG *p_data)
540 BTM_SetLocalDeviceName((char*)p_data->set_name.name);
542 bta_dm_set_eir ((char*)p_data->set_name.name);
556 void bta_dm_set_visibility (tBTA_DM_MSG *p_data)
561 if (p_data->set_visibility.disc_mode != BTA_DM_IGNORE)
562 BTM_SetDiscoverability((UINT8)p_data->set_visibility.disc_mode,
566 if (p_data->set_visibility.conn_mode != BTA_DM_IGNORE)
567 BTM_SetConnectability((UINT8)p_data->set_visibility.conn_mode,
572 if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE )
575 if (p_data->set_visibility.pair_mode == BTA_DM_NON_PAIRABLE)
583 if (p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE)
586 if (p_data->set_visibility.conn_paired_only == BTA_DM_CONN_ALL)
594 if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE || p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE)
612 void bta_dm_set_afhchannels (tBTA_DM_MSG *p_data)
614 BTM_SetAfhChannels(p_data->set_afhchannels.first,p_data->set_afhchannels.last);
629 void bta_dm_vendor_spec_command (tBTA_DM_MSG *p_data)
633 status = BTM_VendorSpecificCommand(p_data->vendor_command.opcode,p_data->vendor_command.param_len,p_data->vendor_command.p_param_buf, p_data->vendor_command.p_cback);
648 void bta_dm_tx_inqpower(tBTA_DM_MSG *p_data)
650 if (BTM_WriteInquiryTxPower (p_data->tx_inq_pwr.tx_power) == BTM_ILLEGAL_VALUE)
652 APPL_TRACE_ERROR("Invalid Inquiry Tx Power: %d", p_data->tx_inq_pwr.tx_power);
664 void bta_dm_remove_device (tBTA_DM_MSG *p_data)
666 tBTA_DM_API_REMOVE_DEVICE *p_dev = &p_data->remove_dev;
721 void bta_dm_add_device (tBTA_DM_MSG *p_data)
723 tBTA_DM_API_ADD_DEVICE *p_dev = &p_data->add_dev;
775 void bta_dm_close_acl(tBTA_DM_MSG *p_data)
777 tBTA_DM_API_REMOVE_ACL *p_remove_acl = &p_data->remove_acl;
836 void bta_dm_bond (tBTA_DM_MSG *p_data)
842 if (p_data->bond.transport == BTA_TRANSPORT_UNKNOWN)
843 status = BTM_SecBond ( p_data->bond.bd_addr, 0, NULL, 0 );
845 status = BTM_SecBondByTransport ( p_data->bond.bd_addr, p_data->bond.transport, 0, NULL, 0 );
852 bdcpy(sec_event.auth_cmpl.bd_addr, p_data->bond.bd_addr);
853 p_name = BTM_SecReadDevName(p_data->bond.bd_addr);
872 bta_dm_remove_sec_dev_entry(p_data->bond.bd_addr);
889 void bta_dm_bond_cancel (tBTA_DM_MSG *p_data)
895 status = BTM_SecBondCancel ( p_data->bond_cancel.bd_addr );
916 void bta_dm_pin_reply (tBTA_DM_MSG *p_data)
921 current_trusted_mask = BTM_ReadTrustedMask(p_data->pin_reply.bd_addr);
932 if(p_data->pin_reply.accept)
935 BTM_PINCodeReply(p_data->pin_reply.bd_addr, BTM_SUCCESS, p_data->pin_reply.pin_len, p_data->pin_reply.p_pin, trusted_mask );
939 BTM_PINCodeReply(p_data->pin_reply.bd_addr, BTM_NOT_AUTHORIZED, 0, NULL, trusted_mask );
954 void bta_dm_link_policy (tBTA_DM_MSG *p_data)
958 p_dev = bta_dm_find_peer_device(p_data->link_policy.bd_addr);
963 p_data->link_policy.set, p_data->link_policy.policy_mask);
964 if(p_data->link_policy.set)
967 p_dev->link_policy |= p_data->link_policy.policy_mask;
973 p_dev->link_policy &= (~p_data->link_policy.policy_mask);
976 if(p_data->link_policy.policy_mask & (HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_PARK_MODE))
1059 void bta_dm_auth_reply (tBTA_DM_MSG *p_data)
1066 current_trusted_mask = BTM_ReadTrustedMask(p_data->auth_reply.bd_addr);
1077 if(p_data->auth_reply.response != BTA_DM_NOT_AUTH)
1079 if(p_data->auth_reply.response == BTA_DM_AUTH_PERM)
1081 if(p_data->auth_reply.service < BTA_MAX_SERVICE_ID)
1084 btm_mask_index = bta_service_id_to_btm_srv_id_lkup_tbl[p_data->auth_reply.service] / 32;
1085 trusted_mask[btm_mask_index] |= (UINT32)(1 << (bta_service_id_to_btm_srv_id_lkup_tbl[p_data->auth_reply.service] - (UINT32)(btm_mask_index * 32)));
1089 BTM_DeviceAuthorized (p_data->auth_reply.bd_addr, BTM_SUCCESS,trusted_mask);
1093 BTM_DeviceAuthorized (p_data->auth_reply.bd_addr, BTM_NOT_AUTHORIZED,trusted_mask);
1108 void bta_dm_confirm(tBTA_DM_MSG *p_data)
1112 if(p_data->confirm.accept == TRUE)
1114 BTM_ConfirmReqReply(res, p_data->confirm.bd_addr);
1127 void bta_dm_passkey_cancel(tBTA_DM_MSG *p_data)
1129 BTM_PasskeyReqReply(BTM_NOT_AUTHORIZED, p_data->passkey_cancel.bd_addr, 0);
1143 void bta_dm_loc_oob(tBTA_DM_MSG *p_data)
1145 UNUSED(p_data);
1158 void bta_dm_ci_io_req_act(tBTA_DM_MSG *p_data)
1161 if(p_data->ci_io_req.auth_req)
1163 BTM_IoCapRsp(p_data->ci_io_req.bd_addr, p_data->ci_io_req.io_cap,
1164 p_data->ci_io_req.oob_data, auth_req);
1177 void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG *p_data)
1181 if(p_data->ci_rmt_oob.accept == TRUE)
1183 BTM_RemoteOobDataReply(res, p_data->ci_rmt_oob.bd_addr,
1184 p_data->ci_rmt_oob.c, p_data->ci_rmt_oob.r );
1198 void bta_dm_search_start (tBTA_DM_MSG *p_data)
1203 UINT16 len = (UINT16)(sizeof(tBT_UUID) * p_data->search.num_uuid);
1208 (p_data->search.rs_res == BTA_DM_RS_NONE) && bta_dm_check_av(BTA_DM_API_SEARCH_EVT))
1210 memcpy(&bta_dm_cb.search_msg, &p_data->search, sizeof(tBTA_DM_API_SEARCH));
1216 bta_dm_search_cb.p_search_cback = p_data->search.p_cback;
1217 bta_dm_search_cb.services = p_data->search.services;
1222 if ((bta_dm_search_cb.num_uuid = p_data->search.num_uuid) != 0 &&
1223 p_data->search.p_uuid != NULL)
1235 memcpy(bta_dm_search_cb.p_srvc_uuid, p_data->search.p_uuid, len);
1238 result.status = BTM_StartInquiry( (tBTM_INQ_PARMS*)&p_data->search.inq_params,
1261 void bta_dm_search_cancel (tBTA_DM_MSG *p_data)
1263 UNUSED(p_data);
1317 void bta_dm_discover (tBTA_DM_MSG *p_data)
1320 UINT16 len = (UINT16)(sizeof(tBT_UUID) * p_data->discover.num_uuid);
1323 p_data->discover.services, p_data->discover.sdp_search);
1326 bta_dm_search_cb.services = p_data->discover.services;
1330 if ((bta_dm_search_cb.num_uuid = p_data->discover.num_uuid) != 0 &&
1331 p_data->discover.p_uuid != NULL)
1335 p_data->discover.p_cback(BTA_DM_DISC_CMPL_EVT, NULL);
1338 memcpy(bta_dm_search_cb.p_srvc_uuid, p_data->discover.p_uuid, len);
1343 bta_dm_search_cb.p_search_cback = p_data->discover.p_cback;
1344 bta_dm_search_cb.sdp_search = p_data->discover.sdp_search;
1349 bta_dm_search_cb.sdp_search = p_data->discover.sdp_search;
1350 bta_dm_search_cb.p_btm_inq_info = BTM_InqDbRead (p_data->discover.bd_addr);
1351 bta_dm_search_cb.transport = p_data->discover.transport;
1354 memcpy(&bta_dm_search_cb.uuid, &p_data->discover.uuid, sizeof(tSDP_UUID));
1355 bta_dm_discover_device(p_data->discover.bd_addr);
1367 void bta_dm_di_disc_cmpl(tBTA_DM_MSG *p_data)
1374 if((p_data->hdr.offset == SDP_SUCCESS)
1375 || (p_data->hdr.offset == SDP_DB_FULL))
1478 void bta_dm_di_disc (tBTA_DM_MSG *p_data)
1483 bta_dm_search_cb.p_search_cback = p_data->di_disc.p_cback;
1484 bdcpy(bta_dm_search_cb.peer_bdaddr, p_data->di_disc.bd_addr);
1485 bta_dm_di_cb.p_di_db = p_data->di_disc.p_sdp_db;
1489 if ( SDP_DiDiscover(bta_dm_search_cb.peer_bdaddr, p_data->di_disc.p_sdp_db,
1490 p_data->di_disc.len, bta_dm_di_disc_callback) == SDP_SUCCESS)
1505 p_data->hdr.offset = result;
1565 void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data)
1572 data.inq_cmpl.num_resps = p_data->inq_cmpl.num;
1605 void bta_dm_rmt_name (tBTA_DM_MSG *p_data)
1609 if( p_data->rem_name.result.disc_res.bd_name[0] && bta_dm_search_cb.p_btm_inq_info)
1627 void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data)
1633 p_btm_inq_info = BTM_InqDbRead (p_data->rem_name.result.disc_res.bd_addr);
1636 if( p_data->rem_name.result.disc_res.bd_name[0] )
1642 bta_dm_discover_device(p_data->rem_name.result.disc_res.bd_addr);
1654 void bta_dm_sdp_result (tBTA_DM_MSG *p_data)
1673 if((p_data->sdp_event.sdp_result == SDP_SUCCESS)
1674 || (p_data->sdp_event.sdp_result == SDP_NO_RECS_MATCH)
1675 || (p_data->sdp_event.sdp_result == SDP_DB_FULL))
1677 APPL_TRACE_DEBUG("sdp_result::0x%x", p_data->sdp_event.sdp_result);
1740 if(((p_data->sdp_event.sdp_result == SDP_DB_FULL) &&
1904 if(p_data->sdp_event.sdp_result == SDP_CONN_FAILED || p_data->sdp_event.sdp_result == SDP_CONN_REJECTED
1905 || p_data->sdp_event.sdp_result == SDP_SECURITY_ERR)
1940 void bta_dm_search_cmpl (tBTA_DM_MSG *p_data)
1948 if (p_data->hdr.layer_specific == BTA_DM_API_DI_DISCOVER_EVT)
1949 bta_dm_di_disc_cmpl(p_data);
1963 void bta_dm_disc_result (tBTA_DM_MSG *p_data)
1973 bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result);
1993 void bta_dm_search_result (tBTA_DM_MSG *p_data)
1997 p_data->disc_result.result.disc_res.services);
2001 ||(( bta_dm_search_cb.services ) && ( p_data->disc_result.result.disc_res.services )))
2003 bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result);
2057 void bta_dm_free_sdp_db (tBTA_DM_MSG *p_data)
2059 UNUSED(p_data);
2077 void bta_dm_queue_search (tBTA_DM_MSG *p_data)
2085 memcpy(bta_dm_search_cb.p_search_queue, p_data, sizeof(tBTA_DM_API_SEARCH));
2098 void bta_dm_queue_disc (tBTA_DM_MSG *p_data)
2106 memcpy(bta_dm_search_cb.p_search_queue, p_data, sizeof(tBTA_DM_API_DISCOVER));
2119 void bta_dm_search_clear_queue (tBTA_DM_MSG *p_data)
2121 UNUSED(p_data);
2140 void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data)
2142 UNUSED(p_data);
2161 void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data)
2163 UNUSED(p_data);
2183 void bta_dm_search_cancel_notify (tBTA_DM_MSG *p_data)
2185 UNUSED(p_data);
2817 static void bta_dm_pinname_cback (void *p_data)
2819 tBTM_REMOTE_DEV_NAME *p_result = (tBTM_REMOTE_DEV_NAME *)p_data;
3035 static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
3051 bta_dm_co_io_req(p_data->io_req.bd_addr, &p_data->io_req.io_cap,
3052 &p_data->io_req.oob_data, &p_data->io_req.auth_req, p_data->io_req.is_orig);
3058 APPL_TRACE_EVENT("io mitm: %d oob_data:%d", p_data->io_req.auth_req, p_data->io_req.oob_data);
3062 bta_dm_co_io_rsp(p_data->io_rsp.bd_addr, p_data->io_rsp.io_cap,
3063 p_data->io_rsp.oob_data, p_data->io_rsp.auth_req );
3069 bta_dm_cb.just_works = sec_event.cfm_req.just_works = p_data->cfm_req.just_works;
3070 sec_event.cfm_req.loc_auth_req = p_data->cfm_req.loc_auth_req;
3071 sec_event.cfm_req.rmt_auth_req = p_data->cfm_req.rmt_auth_req;
3072 sec_event.cfm_req.loc_io_caps = p_data->cfm_req.loc_io_caps;
3073 sec_event.cfm_req.rmt_io_caps = p_data->cfm_req.rmt_io_caps;
3085 if(p_data->cfm_req.bd_name[0] == 0)
3088 bdcpy(bta_dm_cb.pin_bd_addr, p_data->cfm_req.bd_addr);
3089 BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->cfm_req.dev_class);
3090 if ((BTM_ReadRemoteDeviceName(p_data->cfm_req.bd_addr, bta_dm_pinname_cback,
3099 bdcpy(sec_event.key_notif.bd_addr, p_data->cfm_req.bd_addr);
3100 BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->cfm_req.dev_class);
3102 (char*)p_data->cfm_req.bd_name, (BD_NAME_LEN-1));
3107 bta_dm_cb.num_val = sec_event.key_notif.passkey = p_data->key_notif.passkey;
3112 if(p_data->key_notif.bd_name[0] == 0)
3115 bdcpy(bta_dm_cb.pin_bd_addr, p_data->key_notif.bd_addr);
3116 BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->key_notif.dev_class);
3117 if ((BTM_ReadRemoteDeviceName(p_data->key_notif.bd_addr, bta_dm_pinname_cback,
3124 bdcpy(sec_event.key_notif.bd_addr, p_data->key_notif.bd_addr);
3125 BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->key_notif.dev_class);
3127 (char*)p_data->key_notif.bd_name, (BD_NAME_LEN-1));
3138 bta_dm_co_loc_oob((BOOLEAN)(p_data->loc_oob.status == BTM_SUCCESS),
3139 p_data->loc_oob.c, p_data->loc_oob.r);
3144 if (p_data->rmt_oob.bd_name[0] == 0)
3147 bdcpy(bta_dm_cb.pin_bd_addr, p_data->rmt_oob.bd_addr);
3148 BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->rmt_oob.dev_class);
3149 if ((BTM_ReadRemoteDeviceName(p_data->rmt_oob.bd_addr, bta_dm_pinname_cback,
3155 bdcpy(sec_event.rmt_oob.bd_addr, p_data->rmt_oob.bd_addr);
3156 BTA_COPY_DEVICE_CLASS(sec_event.rmt_oob.dev_class, p_data->rmt_oob.dev_class);
3157 BCM_STRNCPY_S((char*)sec_event.rmt_oob.bd_name, sizeof(BD_NAME), (char*)p_data->rmt_oob.bd_name, (BD_NAME_LEN-1));
3162 bta_dm_co_rmt_oob(p_data->rmt_oob.bd_addr);
3170 memcpy(&sec_event.key_press, &p_data->key_press, sizeof(tBTM_SP_KEYPRESS));
3175 bta_dm_co_lk_upgrade(p_data->upgrade.bd_addr, &p_data->upgrade.upgrade );
3219 void bta_dm_signal_strength(tBTA_DM_MSG *p_data)
3222 if(p_data->sig_strength.start)
3224 bta_dm_cb.signal_strength_mask = p_data->sig_strength.mask;
3225 bta_dm_cb.signal_strength_period = p_data->sig_strength.period;
3286 static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data)
3292 p_msg->event = p_data->event;
3299 bdcpy(p_msg->bd_addr, p_data->conn.p_bda);
3301 p_msg->transport = p_data->conn.transport;
3302 p_msg->handle = p_data->conn.handle;
3306 bdcpy(p_msg->bd_addr, p_data->discn.p_bda);
3308 p_msg->transport = p_data->discn.transport;
3309 p_msg->handle = p_data->discn.handle;
3313 p_msg->busy_level = p_data->update.busy_level;
3314 p_msg->busy_level_flags = p_data->update.busy_level_flags;
3317 p_msg->new_role = p_data->role_chg.new_role;
3318 p_msg->hci_status = p_data->role_chg.hci_status;
3319 bdcpy(p_msg->bd_addr, p_data->role_chg.p_bda);
3322 bdcpy(p_msg->bd_addr, p_data->conn.p_bda);
3458 void bta_dm_acl_change(tBTA_DM_MSG *p_data)
3464 BOOLEAN is_new = p_data->acl_change.is_new;
3465 BD_ADDR_PTR p_bda = p_data->acl_change.bd_addr;
3473 switch(p_data->acl_change.event)
3478 conn.busy_level.level = p_data->acl_change.busy_level;
3479 conn.busy_level.level_flags = p_data->acl_change.busy_level_flags;
3489 p_dev->info, p_data->acl_change.new_role, bta_dm_cb.device_list.count);
3493 if(p_data->acl_change.new_role == HCI_ROLE_SLAVE && bta_dm_cb.device_list.count > 1
3494 && p_data->acl_change.hci_status == HCI_SUCCESS)
3501 else if (bta_dm_cfg.avoid_scatter && (p_data->acl_change.new_role == HCI_ROLE_MASTER))
3519 bta_sys_notify_role_chg(p_data->acl_change.bd_addr, p_data->acl_change.new_role, p_data->acl_change.hci_status);
3521 conn.role_chg.new_role = (UINT8) p_data->acl_change.new_role;
3530 if (p_data->acl_change.event == BTM_BL_COLLISION_EVT)
3542 && bta_dm_cb.device_list.peer_device[i].conn_handle == p_data->acl_change.handle
3555 bta_dm_cb.device_list.peer_device[i].conn_handle = p_data->acl_change.handle;
3556 if (p_data->acl_change.transport == BT_TRANSPORT_LE)
3566 conn.link_up.link_type = p_data->acl_change.transport;
3567 bta_dm_cb.device_list.peer_device[i].transport = p_data->acl_change.transport;
3587 ||bta_dm_cb.device_list.peer_device[i].transport != p_data->acl_change.transport
3615 if ((p_data->acl_change.transport == BT_TRANSPORT_LE) &&
3618 conn.link_down.link_type = p_data->acl_change.transport;
4080 void bta_dm_update_eir_uuid (tBTA_DM_MSG *p_data)
4082 tBTA_DM_API_UPDATE_EIR_UUID *p_msg = (tBTA_DM_API_UPDATE_EIR_UUID *)p_data;
4148 void bta_dm_set_eir_config (tBTA_DM_MSG *p_data)
4150 if (p_data->set_eir_cfg.p_eir_cfg)
4153 p_bta_dm_eir_cfg = p_data->set_eir_cfg.p_eir_cfg;
4578 void bta_dm_enable_test_mode(tBTA_DM_MSG *p_data)
4580 UNUSED(p_data);
4594 void bta_dm_disable_test_mode(tBTA_DM_MSG *p_data)
4596 UNUSED(p_data);
4610 void bta_dm_execute_callback(tBTA_DM_MSG *p_data)
4613 if(p_data->exec_cback.p_exec_cback == NULL)
4618 p_data->exec_cback.p_exec_cback(p_data->exec_cback.p_param);
4683 void bta_dm_set_encryption (tBTA_DM_MSG *p_data)
4688 if (!p_data->set_encryption.p_callback)
4696 if (bdcmp( bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_data->set_encryption.bd_addr) == 0 &&
4705 (*p_data->set_encryption.p_callback)(p_data->set_encryption.bd_addr,
4706 p_data->set_encryption.transport, BTA_BUSY);
4710 if (BTM_SetEncryption(p_data->set_encryption.bd_addr,
4711 p_data->set_encryption.transport,
4713 &p_data->set_encryption.sec_act)
4716 bta_dm_cb.device_list.peer_device[i].p_encrypt_cback = p_data->set_encryption.p_callback;
4735 void bta_dm_set_afh_channels(tBTA_DM_MSG * p_data)
4738 BTM_SetAfhChannels(p_data->set_afhchannels.first,p_data->set_afhchannels.last);
4752 void bta_dm_set_afh_channel_assesment (tBTA_DM_MSG * p_data)
4754 BTM_SetAfhChannelAssessment(p_data->set_afh_channel_assessment.enable_or_disable);
4837 static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_DATA *p_data)
4856 &p_data->io_req.io_cap,
4857 &p_data->io_req.oob_data,
4858 &p_data->io_req.auth_req,
4859 &p_data->io_req.max_key_size,
4860 &p_data->io_req.init_keys,
4861 &p_data->io_req.resp_keys);
4866 APPL_TRACE_EVENT("io mitm: %d oob_data:%d", p_data->io_req.auth_req, p_data->io_req.oob_data);
4897 sec_event.key_notif.passkey = p_data->key_notif;
4913 sec_event.ble_key.key_type = p_data->key.key_type;
4915 if (p_data->key.key_type == BTM_LE_KEY_PID)
4919 sec_event.ble_key.key_value.pid_key.irk[i] = p_data->key.p_key_value->pid_key.irk[i];
4921 sec_event.ble_key.key_value.pid_key.addr_type = p_data->key.p_key_value->pid_key.addr_type;
4923 &(p_data->key.p_key_value->pid_key.static_addr),
4928 memcpy(&sec_event.ble_key.key_value, p_data->key.p_key_value, sizeof(tBTM_LE_KEY_VALUE));
4930 // memcpy(&sec_event.ble_key.key_value, p_data->key.p_key_value, sizeof(tBTM_LE_KEY_VALUE)); todo will crash
4946 if (p_data->complt.reason != 0)
4948 sec_event.auth_cmpl.fail_reason = BTA_DM_AUTH_CONVERT_SMP_CODE(((UINT8)p_data->complt.reason));
5022 void bta_dm_add_blekey (tBTA_DM_MSG *p_data)
5024 if (!BTM_SecAddBleKey (p_data->add_ble_key.bd_addr,
5025 (tBTM_LE_KEY_VALUE *)&p_data->add_ble_key.blekey,
5026 p_data->add_ble_key.key_type))
5029 (p_data->add_ble_key.bd_addr[0]<<24)+(p_data->add_ble_key.bd_addr[1]<<16)+\
5030 (p_data->add_ble_key.bd_addr[2]<<8)+p_data->add_ble_key.bd_addr[3],
5031 (p_data->add_ble_key.bd_addr[4]<<8)+p_data->add_ble_key.bd_addr[5]);
5046 void bta_dm_add_ble_device (tBTA_DM_MSG *p_data)
5048 if (!BTM_SecAddBleDevice (p_data->add_ble_device.bd_addr, NULL,
5049 p_data->add_ble_device.dev_type ,
5050 p_data->add_ble_device.addr_type))
5053 (p_data->add_ble_device.bd_addr[0]<<24)+(p_data->add_ble_device.bd_addr[1]<<16)+ \
5054 (p_data->add_ble_device.bd_addr[2]<<8)+p_data->add_ble_device.bd_addr[3],
5055 (p_data->add_ble_device.bd_addr[4]<<8)+p_data->add_ble_device.bd_addr[5]);
5070 void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data)
5072 if (p_data->pin_reply.accept)
5074 BTM_BlePasskeyReply(p_data->ble_passkey_reply.bd_addr, BTM_SUCCESS, p_data->ble_passkey_reply.passkey);
5078 BTM_BlePasskeyReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED, p_data->ble_passkey_reply.passkey);
5092 void bta_dm_security_grant (tBTA_DM_MSG *p_data)
5094 BTM_SecurityGrant(p_data->ble_sec_grant.bd_addr, p_data->ble_sec_grant.res);
5106 void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data)
5108 BTM_BleSetBgConnType(p_data->ble_set_bd_conn_type.bg_conn_type,
5109 p_data->ble_set_bd_conn_type.p_select_cback);
5121 void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data)
5123 BTM_BleSetPrefConnParams(p_data->ble_set_conn_params.peer_bda,
5124 p_data->ble_set_conn_params.conn_int_min,
5125 p_data->ble_set_conn_params.conn_int_max,
5126 p_data->ble_set_conn_params.slave_latency,
5127 p_data->ble_set_conn_params.supervision_tout);
5139 void bta_dm_ble_set_scan_params (tBTA_DM_MSG *p_data)
5141 BTM_BleSetConnScanParams(p_data->ble_set_scan_params.scan_int,
5142 p_data->ble_set_scan_params.scan_window);
5153 void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data)
5155 if (!L2CA_UpdateBleConnParams(p_data->ble_update_conn_params.bd_addr,
5156 p_data->ble_update_conn_params.min_int,
5157 p_data->ble_update_conn_params.max_int,
5158 p_data->ble_update_conn_params.latency,
5159 p_data->ble_update_conn_params.timeout))
5175 void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data)
5177 BTM_BleConfigPrivacy (p_data->ble_local_privacy.privacy_enable);
5189 void bta_dm_ble_observe (tBTA_DM_MSG *p_data)
5192 if (p_data->ble_observe.start)
5195 bta_dm_search_cb.p_scan_cback = p_data->ble_observe.p_cback;
5196 if ((status = BTM_BleObserve(TRUE, p_data->ble_observe.duration,
5223 void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data)
5225 BTM_BleSetAdvParams(p_data->ble_set_adv_params.adv_int_min,
5226 p_data->ble_set_adv_params.adv_int_max,
5227 p_data->ble_set_adv_params.p_dir_bda,
5240 void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data)
5244 if (BTM_BleWriteAdvData(p_data->ble_set_adv_data.data_mask,
5245 (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS)
5250 if (p_data->ble_set_adv_data.p_adv_data_cback)
5251 (*p_data->ble_set_adv_data.p_adv_data_cback)(status);
5263 void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data)
5267 if(BTM_BleWriteScanRsp(p_data->ble_set_adv_data.data_mask,
5268 (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS)
5273 if (p_data->ble_set_adv_data.p_adv_data_cback)
5274 (*p_data->ble_set_adv_data.p_adv_data_cback)(status);
5286 void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data)
5288 BTM_BleBroadcast(p_data->ble_observe.start);
5300 void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data)
5305 bta_dm_cb.p_multi_adv_cback = p_data->ble_multi_adv_enb.p_cback;
5306 if(BTM_BleMaxMultiAdvInstanceCount() > 0 && NULL != p_data->ble_multi_adv_enb.p_ref)
5309 p_data->ble_multi_adv_enb.p_params,
5310 p_data->ble_multi_adv_enb.p_cback,
5311 p_data->ble_multi_adv_enb.p_ref);
5317 p_data->ble_multi_adv_enb.p_ref, BTA_FAILURE);
5329 void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data)
5334 if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_param.inst_id > 0
5335 && p_data->ble_multi_adv_param.inst_id < BTM_BleMaxMultiAdvInstanceCount())
5337 btm_status = BTM_BleUpdateAdvInstParam(p_data->ble_multi_adv_param.inst_id,
5338 (tBTM_BLE_ADV_PARAMS*)p_data->ble_multi_adv_param.p_params);
5343 p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_param.inst_id);
5345 p_data->ble_multi_adv_param.inst_id, p_ref, BTA_FAILURE);
5358 void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data)
5363 if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_data.inst_id > 0
5364 && p_data->ble_multi_adv_data.inst_id < BTM_BleMaxMultiAdvInstanceCount())
5366 btm_status = BTM_BleCfgAdvInstData(p_data->ble_multi_adv_data.inst_id,
5367 p_data->ble_multi_adv_data.is_scan_rsp,
5368 p_data->ble_multi_adv_data.data_mask,
5369 (tBTM_BLE_ADV_DATA*)p_data->ble_multi_adv_data.p_data);
5374 p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_data.inst_id);
5376 p_data->ble_multi_adv_data.inst_id, p_ref, BTA_FAILURE);
5389 void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data)
5394 if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_disable.inst_id > 0
5395 && p_data->ble_multi_adv_disable.inst_id < BTM_BleMaxMultiAdvInstanceCount())
5397 btm_status = BTM_BleDisableAdvInstance(p_data->ble_multi_adv_disable.inst_id);
5402 p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_disable.inst_id);
5404 p_data->ble_multi_adv_disable.inst_id, p_ref, BTA_FAILURE);
5417 void bta_dm_ble_setup_storage (tBTA_DM_MSG *p_data)
5426 btm_status = BTM_BleSetStorageConfig(p_data->ble_set_storage.batch_scan_full_max,
5427 p_data->ble_set_storage.batch_scan_trunc_max,
5428 p_data->ble_set_storage.batch_scan_notify_threshold,
5429 p_data->ble_set_storage.p_setup_cback,
5430 p_data->ble_set_storage.p_thres_cback,
5431 p_data->ble_set_storage.p_read_rep_cback,
5432 p_data->ble_set_storage.ref_value);
5436 bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, p_data->ble_set_storage.ref_value,
5449 void bta_dm_ble_enable_batch_scan (tBTA_DM_MSG *p_data)
5458 btm_status = BTM_BleEnableBatchScan(p_data->ble_enable_scan.scan_mode,
5459 p_data->ble_enable_scan.scan_int,
5460 p_data->ble_enable_scan.scan_window,
5461 p_data->ble_enable_scan.discard_rule,
5462 p_data->ble_enable_scan.addr_type,
5463 p_data->ble_enable_scan.ref_value);
5467 bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_ENABLE_EVT, p_data->ble_enable_scan.ref_value,
5480 void bta_dm_ble_disable_batch_scan (tBTA_DM_MSG *p_data)
5482 UNUSED(p_data);
5490 btm_status = BTM_BleDisableBatchScan(p_data->ble_disable_scan.ref_value);
5494 bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_DISABLE_EVT, p_data->ble_enable_scan.ref_value,
5507 void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data)
5516 btm_status = BTM_BleReadScanReports(p_data->ble_read_reports.scan_type,
5517 p_data->ble_read_reports.ref_value);
5521 bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_READ_REPTS_EVT, p_data->ble_enable_scan.ref_value,
5534 void bta_dm_ble_track_advertiser(tBTA_DM_MSG *p_data)
5545 btm_status = BTM_BleTrackAdvertiser(p_data->ble_track_advert.p_track_adv_cback,
5546 p_data->ble_track_advert.ref_value);
5550 p_data->ble_track_advert.p_track_adv_cback(0, 0, bda, 0, p_data->ble_track_advert.ref_value);
5646 void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data)
5657 if ((st = BTM_BleCfgFilterCondition(p_data->ble_cfg_filter_cond.action,
5658 p_data->ble_cfg_filter_cond.cond_type,
5659 (tBTM_BLE_PF_FILT_INDEX)p_data->ble_cfg_filter_cond.filt_index,
5660 (tBTM_BLE_PF_COND_PARAM *)p_data->ble_cfg_filter_cond.p_cond_param,
5661 bta_ble_scan_cfg_cmpl, p_data->ble_cfg_filter_cond.ref_value))
5664 bta_dm_cb.p_scan_filt_cfg_cback = p_data->ble_cfg_filter_cond.p_filt_cfg_cback;
5669 if (p_data->ble_cfg_filter_cond.p_filt_cfg_cback)
5670 p_data->ble_cfg_filter_cond.p_filt_cfg_cback(BTA_DM_BLE_PF_CONFIG_EVT,
5671 p_data->ble_cfg_filter_cond.cond_type, 0, status,
5672 p_data->ble_cfg_filter_cond.ref_value);
5685 void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data)
5696 if((st = BTM_BleEnableDisableFilterFeature(p_data->ble_enable_scan_filt.action,
5697 p_data->ble_enable_scan_filt.p_filt_status_cback,
5698 (tBTM_BLE_REF_VALUE)p_data->ble_enable_scan_filt.ref_value)) == BTM_CMD_STARTED)
5699 bta_dm_cb.p_scan_filt_status_cback = p_data->ble_enable_scan_filt.p_filt_status_cback;
5703 if (p_data->ble_enable_scan_filt.p_filt_status_cback)
5704 p_data->ble_enable_scan_filt.p_filt_status_cback (BTA_DM_BLE_PF_ENABLE_EVT,
5705 p_data->ble_enable_scan_filt.ref_value, status);
5718 void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data)
5729 if ((st = BTM_BleAdvFilterParamSetup(p_data->ble_scan_filt_param_setup.action,
5730 p_data->ble_scan_filt_param_setup.filt_index,
5731 (tBTM_BLE_PF_FILT_PARAMS *)p_data->ble_scan_filt_param_setup.p_filt_params,
5732 p_data->ble_scan_filt_param_setup.p_target,
5733 p_data->ble_scan_filt_param_setup.p_filt_param_cback,
5734 p_data->ble_scan_filt_param_setup.ref_value)) == BTM_CMD_STARTED)
5736 bta_dm_cb.p_scan_filt_param_cback = p_data->ble_scan_filt_param_setup.p_filt_param_cback;
5741 if (p_data->ble_scan_filt_param_setup.p_filt_param_cback)
5742 p_data->ble_scan_filt_param_setup.p_filt_param_cback (BTA_DM_BLE_PF_ENABLE_EVT, 0,
5743 p_data->ble_scan_filt_param_setup.ref_value, status);
5784 void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data)
5788 bta_dm_cb.p_energy_info_cback = p_data->ble_energy_info.p_energy_info_cback;
5982 void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data)
5984 UNUSED(p_data);
6046 void bta_dm_proc_open_evt(tBTA_GATTC_OPEN *p_data)
6052 p2 = p_data->remote_bda;
6062 p_data->conn_id,
6063 p_data->client_if,
6064 p_data->status);
6066 bta_dm_search_cb.conn_id = p_data->conn_id;
6068 if (p_data->status == BTA_GATT_OK)
6070 btm_dm_start_disc_gatt_services(p_data->conn_id);
6074 bta_dm_gatt_disc_complete(BTA_GATT_INVALID_CONN_ID, p_data->status);
6087 static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data)
6094 APPL_TRACE_DEBUG("BTA_GATTC_REG_EVT client_if = %d", p_data->reg_oper.client_if);
6095 if (p_data->reg_oper.status == BTA_GATT_OK)
6096 bta_dm_search_cb.client_if = p_data->reg_oper.client_if;
6102 bta_dm_proc_open_evt(&p_data->open);
6106 bta_dm_gatt_disc_result(p_data->srvc_res.service_uuid.id);
6111 bta_dm_gatt_disc_complete(p_data->search_cmpl.conn_id, p_data->search_cmpl.status);
6115 APPL_TRACE_DEBUG("BTA_GATTC_CLOSE_EVT reason = %d", p_data->close.reason);
6118 !memcmp(p_data->close.remote_bda, bta_dm_search_cb.peer_bdaddr, BD_ADDR_LEN))