Loading system/bta/dm/bta_dm_act.c +31 −0 Original line number Diff line number Diff line Loading @@ -4960,6 +4960,37 @@ void bta_dm_ble_observe (tBTA_DM_MSG *p_data) BTM_BleObserve(FALSE, 0, NULL,NULL ); } } /******************************************************************************* ** ** Function bta_dm_ble_set_scan_params ** ** Description This function set the adv parameters. ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data) { BTM_BleSetAdvParams(p_data->ble_set_adv_params.adv_int_min, p_data->ble_set_adv_params.adv_int_max, p_data->ble_set_adv_params.p_dir_bda, BTA_DM_BLE_ADV_CHNL_MAP); } /******************************************************************************* ** ** Function bta_dm_ble_set_adv_config ** ** Description This function set the customized ADV data configuration ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data) { BTM_BleWriteAdvData(p_data->ble_set_adv_data.data_mask, (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg); } #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) #ifndef BTA_DM_GATT_CLOSE_DELAY_TOUT Loading system/bta/dm/bta_dm_api.c +66 −0 Original line number Diff line number Diff line Loading @@ -1445,6 +1445,72 @@ void BTA_DmSetBleConnScanParams(UINT16 scan_interval, UINT16 scan_window ) #endif } /******************************************************************************* ** ** Function BTA_DmSetBleAdvParams ** ** Description This function sets the advertising parameters BLE functionality. ** It is to be called when device act in peripheral or broadcaster ** role. ** ** ** Returns void ** *******************************************************************************/ void BTA_DmSetBleAdvParams (UINT16 adv_int_min, UINT16 adv_int_max, tBLE_BD_ADDR *p_dir_bda) { #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_ADV_PARAMS *p_msg; APPL_TRACE_API2 ("BTA_DmSetBleAdvParam: %d, %d", adv_int_min, adv_int_max); if ((p_msg = (tBTA_DM_API_BLE_ADV_PARAMS *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_ADV_PARAMS))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_ADV_PARAMS)); p_msg->hdr.event = BTA_DM_API_BLE_ADV_PARAM_EVT; p_msg->adv_int_min = adv_int_min; p_msg->adv_int_max = adv_int_max; if (p_dir_bda != NULL) { p_msg->p_dir_bda = (tBLE_BD_ADDR *)(p_msg + 1); memcpy(p_msg->p_dir_bda, p_dir_bda, sizeof(tBLE_BD_ADDR)); } bta_sys_sendmsg(p_msg); } #endif } #if BLE_INCLUDED == TRUE /******************************************************************************* ** ** Function BTA_DmBleSetAdvConfig ** ** Description This function is called to override the BTA default ADV parameters. ** ** Parameters Pointer to User defined ADV data structure ** ** Returns None ** *******************************************************************************/ void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg) { tBTA_DM_API_SET_ADV_CONFIG *p_msg; if ((p_msg = (tBTA_DM_API_SET_ADV_CONFIG *) GKI_getbuf(sizeof(tBTA_DM_API_SET_ADV_CONFIG))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_SET_ADV_CONFIG_EVT; p_msg->data_mask = data_mask; p_msg->p_adv_cfg = p_adv_cfg; bta_sys_sendmsg(p_msg); } } #endif /******************************************************************************* ** ** Function BTA_DmBleSetBgConnType Loading system/bta/dm/bta_dm_int.h +5 −3 Original line number Diff line number Diff line Loading @@ -99,6 +99,8 @@ enum BTA_DM_API_BLE_CONN_PARAM_EVT, BTA_DM_API_BLE_SCAN_PARAM_EVT, BTA_DM_API_BLE_OBSERVE_EVT, BTA_DM_API_BLE_ADV_PARAM_EVT, BTA_DM_API_BLE_SET_ADV_CONFIG_EVT, #endif #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) Loading Loading @@ -862,9 +864,6 @@ extern const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl[]; extern const tBTA_DM_CFG bta_dm_cfg; #define BTA_ALL_APP_ID 0xff typedef struct { UINT8 id; Loading Loading @@ -995,6 +994,9 @@ extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_scan_params (tBTA_DM_MSG *p_data); extern void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data); extern void bta_dm_ble_observe (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data); #endif extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data); extern void bta_dm_confirm(tBTA_DM_MSG *p_data); Loading system/bta/dm/bta_dm_main.c +2 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,8 @@ const tBTA_DM_ACTION bta_dm_action[] = bta_dm_ble_set_conn_params, /* BTA_DM_API_BLE_CONN_PARAM_EVT */ bta_dm_ble_set_scan_params, /* BTA_DM_API_BLE_SCAN_PARAM_EVT */ bta_dm_ble_observe, bta_dm_ble_set_adv_params, /* BTA_DM_API_BLE_SCAN_PARAM_EVT */ bta_dm_ble_set_adv_config, /* BTA_DM_API_BLE_SET_ADV_CONFIG_EVT */ #endif #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) Loading system/bta/gatt/bta_gattc_act.c +95 −2 Original line number Diff line number Diff line Loading @@ -1948,6 +1948,99 @@ void bta_gattc_init_clcb_conn(UINT8 cif, BD_ADDR remote_bda) APPL_TRACE_ERROR0("No resources"); } } /******************************************************************************* ** ** Function bta_gattc_process_listen_all ** ** Description process listen all, send open callback to application for all ** connected slave LE link. ** ** Returns void ** ********************************************************************************/ void bta_gattc_process_listen_all(UINT8 cif) { UINT8 i_conn = 0; tBTA_GATTC_CONN *p_conn = &bta_gattc_cb.conn_track[0]; #endif /* #if BLE_INCLUDED == TRUE */ #endif /* BTA_GATT_INCLUDED */ for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++) { if (p_conn->in_use ) { if (bta_gattc_find_clcb_by_cif(cif, p_conn->remote_bda) == NULL) { bta_gattc_init_clcb_conn(cif, p_conn->remote_bda); } /* else already connected */ } } } /******************************************************************************* ** ** Function bta_gattc_listen ** ** Description Start or stop a listen for connection ** ** Returns void ** ********************************************************************************/ void bta_gattc_listen(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) { tBTA_GATTC_RCB *p_clreg = bta_gattc_cl_get_regcb(p_msg->api_listen.client_if); tBTA_GATTC cb_data; cb_data.reg_oper.status = BTA_GATT_ERROR; cb_data.reg_oper.client_if = p_msg->api_listen.client_if; if (p_clreg == NULL) { APPL_TRACE_ERROR1("bta_gattc_listen failed, unknown client_if: %d", p_msg->api_listen.client_if); return; } /* mark bg conn record */ if (bta_gattc_mark_bg_conn(p_msg->api_listen.client_if, (BD_ADDR_PTR) p_msg->api_listen.remote_bda, p_msg->api_listen.start, TRUE)) { if (!GATT_Listen(p_msg->api_listen.client_if, p_msg->api_listen.start, p_msg->api_listen.remote_bda)) { APPL_TRACE_ERROR0("Listen failure"); (*p_clreg->p_cback)(BTA_GATTC_LISTEN_EVT, &cb_data); } else { cb_data.status = BTA_GATT_OK; (*p_clreg->p_cback)(BTA_GATTC_LISTEN_EVT, &cb_data); if (p_msg->api_listen.start) { /* if listen to a specific target */ if (p_msg->api_listen.remote_bda != NULL) { /* if is a connected remote device */ if (L2CA_GetBleConnRole(p_msg->api_listen.remote_bda) == HCI_ROLE_SLAVE && bta_gattc_find_clcb_by_cif(p_msg->api_listen.client_if, p_msg->api_listen.remote_bda) == NULL) { bta_gattc_init_clcb_conn(p_msg->api_listen.client_if, p_msg->api_listen.remote_bda); } } /* if listen to all */ else { APPL_TRACE_ERROR0("Listen For All now"); /* go through all connected device and send callback for all connected slave connection */ bta_gattc_process_listen_all(p_msg->api_listen.client_if); } } } } } #endif #endif Loading
system/bta/dm/bta_dm_act.c +31 −0 Original line number Diff line number Diff line Loading @@ -4960,6 +4960,37 @@ void bta_dm_ble_observe (tBTA_DM_MSG *p_data) BTM_BleObserve(FALSE, 0, NULL,NULL ); } } /******************************************************************************* ** ** Function bta_dm_ble_set_scan_params ** ** Description This function set the adv parameters. ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data) { BTM_BleSetAdvParams(p_data->ble_set_adv_params.adv_int_min, p_data->ble_set_adv_params.adv_int_max, p_data->ble_set_adv_params.p_dir_bda, BTA_DM_BLE_ADV_CHNL_MAP); } /******************************************************************************* ** ** Function bta_dm_ble_set_adv_config ** ** Description This function set the customized ADV data configuration ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data) { BTM_BleWriteAdvData(p_data->ble_set_adv_data.data_mask, (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg); } #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) #ifndef BTA_DM_GATT_CLOSE_DELAY_TOUT Loading
system/bta/dm/bta_dm_api.c +66 −0 Original line number Diff line number Diff line Loading @@ -1445,6 +1445,72 @@ void BTA_DmSetBleConnScanParams(UINT16 scan_interval, UINT16 scan_window ) #endif } /******************************************************************************* ** ** Function BTA_DmSetBleAdvParams ** ** Description This function sets the advertising parameters BLE functionality. ** It is to be called when device act in peripheral or broadcaster ** role. ** ** ** Returns void ** *******************************************************************************/ void BTA_DmSetBleAdvParams (UINT16 adv_int_min, UINT16 adv_int_max, tBLE_BD_ADDR *p_dir_bda) { #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_ADV_PARAMS *p_msg; APPL_TRACE_API2 ("BTA_DmSetBleAdvParam: %d, %d", adv_int_min, adv_int_max); if ((p_msg = (tBTA_DM_API_BLE_ADV_PARAMS *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_ADV_PARAMS))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_ADV_PARAMS)); p_msg->hdr.event = BTA_DM_API_BLE_ADV_PARAM_EVT; p_msg->adv_int_min = adv_int_min; p_msg->adv_int_max = adv_int_max; if (p_dir_bda != NULL) { p_msg->p_dir_bda = (tBLE_BD_ADDR *)(p_msg + 1); memcpy(p_msg->p_dir_bda, p_dir_bda, sizeof(tBLE_BD_ADDR)); } bta_sys_sendmsg(p_msg); } #endif } #if BLE_INCLUDED == TRUE /******************************************************************************* ** ** Function BTA_DmBleSetAdvConfig ** ** Description This function is called to override the BTA default ADV parameters. ** ** Parameters Pointer to User defined ADV data structure ** ** Returns None ** *******************************************************************************/ void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg) { tBTA_DM_API_SET_ADV_CONFIG *p_msg; if ((p_msg = (tBTA_DM_API_SET_ADV_CONFIG *) GKI_getbuf(sizeof(tBTA_DM_API_SET_ADV_CONFIG))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_SET_ADV_CONFIG_EVT; p_msg->data_mask = data_mask; p_msg->p_adv_cfg = p_adv_cfg; bta_sys_sendmsg(p_msg); } } #endif /******************************************************************************* ** ** Function BTA_DmBleSetBgConnType Loading
system/bta/dm/bta_dm_int.h +5 −3 Original line number Diff line number Diff line Loading @@ -99,6 +99,8 @@ enum BTA_DM_API_BLE_CONN_PARAM_EVT, BTA_DM_API_BLE_SCAN_PARAM_EVT, BTA_DM_API_BLE_OBSERVE_EVT, BTA_DM_API_BLE_ADV_PARAM_EVT, BTA_DM_API_BLE_SET_ADV_CONFIG_EVT, #endif #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) Loading Loading @@ -862,9 +864,6 @@ extern const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl[]; extern const tBTA_DM_CFG bta_dm_cfg; #define BTA_ALL_APP_ID 0xff typedef struct { UINT8 id; Loading Loading @@ -995,6 +994,9 @@ extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_scan_params (tBTA_DM_MSG *p_data); extern void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data); extern void bta_dm_ble_observe (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data); #endif extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data); extern void bta_dm_confirm(tBTA_DM_MSG *p_data); Loading
system/bta/dm/bta_dm_main.c +2 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,8 @@ const tBTA_DM_ACTION bta_dm_action[] = bta_dm_ble_set_conn_params, /* BTA_DM_API_BLE_CONN_PARAM_EVT */ bta_dm_ble_set_scan_params, /* BTA_DM_API_BLE_SCAN_PARAM_EVT */ bta_dm_ble_observe, bta_dm_ble_set_adv_params, /* BTA_DM_API_BLE_SCAN_PARAM_EVT */ bta_dm_ble_set_adv_config, /* BTA_DM_API_BLE_SET_ADV_CONFIG_EVT */ #endif #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) Loading
system/bta/gatt/bta_gattc_act.c +95 −2 Original line number Diff line number Diff line Loading @@ -1948,6 +1948,99 @@ void bta_gattc_init_clcb_conn(UINT8 cif, BD_ADDR remote_bda) APPL_TRACE_ERROR0("No resources"); } } /******************************************************************************* ** ** Function bta_gattc_process_listen_all ** ** Description process listen all, send open callback to application for all ** connected slave LE link. ** ** Returns void ** ********************************************************************************/ void bta_gattc_process_listen_all(UINT8 cif) { UINT8 i_conn = 0; tBTA_GATTC_CONN *p_conn = &bta_gattc_cb.conn_track[0]; #endif /* #if BLE_INCLUDED == TRUE */ #endif /* BTA_GATT_INCLUDED */ for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++) { if (p_conn->in_use ) { if (bta_gattc_find_clcb_by_cif(cif, p_conn->remote_bda) == NULL) { bta_gattc_init_clcb_conn(cif, p_conn->remote_bda); } /* else already connected */ } } } /******************************************************************************* ** ** Function bta_gattc_listen ** ** Description Start or stop a listen for connection ** ** Returns void ** ********************************************************************************/ void bta_gattc_listen(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) { tBTA_GATTC_RCB *p_clreg = bta_gattc_cl_get_regcb(p_msg->api_listen.client_if); tBTA_GATTC cb_data; cb_data.reg_oper.status = BTA_GATT_ERROR; cb_data.reg_oper.client_if = p_msg->api_listen.client_if; if (p_clreg == NULL) { APPL_TRACE_ERROR1("bta_gattc_listen failed, unknown client_if: %d", p_msg->api_listen.client_if); return; } /* mark bg conn record */ if (bta_gattc_mark_bg_conn(p_msg->api_listen.client_if, (BD_ADDR_PTR) p_msg->api_listen.remote_bda, p_msg->api_listen.start, TRUE)) { if (!GATT_Listen(p_msg->api_listen.client_if, p_msg->api_listen.start, p_msg->api_listen.remote_bda)) { APPL_TRACE_ERROR0("Listen failure"); (*p_clreg->p_cback)(BTA_GATTC_LISTEN_EVT, &cb_data); } else { cb_data.status = BTA_GATT_OK; (*p_clreg->p_cback)(BTA_GATTC_LISTEN_EVT, &cb_data); if (p_msg->api_listen.start) { /* if listen to a specific target */ if (p_msg->api_listen.remote_bda != NULL) { /* if is a connected remote device */ if (L2CA_GetBleConnRole(p_msg->api_listen.remote_bda) == HCI_ROLE_SLAVE && bta_gattc_find_clcb_by_cif(p_msg->api_listen.client_if, p_msg->api_listen.remote_bda) == NULL) { bta_gattc_init_clcb_conn(p_msg->api_listen.client_if, p_msg->api_listen.remote_bda); } } /* if listen to all */ else { APPL_TRACE_ERROR0("Listen For All now"); /* go through all connected device and send callback for all connected slave connection */ bta_gattc_process_listen_all(p_msg->api_listen.client_if); } } } } } #endif #endif