Loading system/bta/dm/bta_dm_act.c +85 −4 Original line number Diff line number Diff line Loading @@ -5204,8 +5204,16 @@ void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data) *******************************************************************************/ 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); tBTA_STATUS status = BTA_FAILURE; if (BTM_BleWriteAdvData(p_data->ble_set_adv_data.data_mask, (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS) { status = BTA_SUCCESS; } if (p_data->ble_set_adv_data.p_adv_data_cback) (*p_data->ble_set_adv_data.p_adv_data_cback)(status); } /******************************************************************************* Loading @@ -5219,8 +5227,16 @@ void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data) *******************************************************************************/ void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data) { BTM_BleWriteScanRsp(p_data->ble_set_adv_data.data_mask, (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg); tBTA_STATUS status = BTA_FAILURE; if(BTM_BleWriteScanRsp(p_data->ble_set_adv_data.data_mask, (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS) { status = BTA_SUCCESS; } if (p_data->ble_set_adv_data.p_adv_data_cback) (*p_data->ble_set_adv_data.p_adv_data_cback)(status); } /******************************************************************************* Loading @@ -5237,6 +5253,71 @@ void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data) BTM_BleBroadcast(p_data->ble_observe.start); } /******************************************************************************* ** ** Function bta_dm_ble_multi_adv_enb ** ** Description This function enables a single advertising instance ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data) { #if BLE_MULTI_ADV_INCLUDED == TRUE BTM_BleEnableAdvInstance((tBTM_BLE_ADV_PARAMS*)p_data->ble_multi_adv_enb.p_params, p_data->ble_multi_adv_enb.p_cback,p_data->ble_multi_adv_enb.p_ref); #endif } /******************************************************************************* ** ** Function bta_dm_ble_multi_adv_param_upd ** ** Description This function updates multiple advertising instance parameters ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data) { #if BLE_MULTI_ADV_INCLUDED == TRUE BTM_BleUpdateAdvInstParam(p_data->ble_multi_adv_param.inst_id, (tBTM_BLE_ADV_PARAMS*)p_data->ble_multi_adv_param.p_params); #endif } /******************************************************************************* ** ** Function bta_dm_ble_multi_adv_data ** ** Description This function write multiple advertising instance adv data ** or scan response data ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data) { #if BLE_MULTI_ADV_INCLUDED == TRUE BTM_BleCfgAdvInstData(p_data->ble_multi_adv_data.inst_id,p_data->ble_multi_adv_data.is_scan_rsp, p_data->ble_multi_adv_data.data_mask,(tBTM_BLE_ADV_DATA*)p_data->ble_multi_adv_data.p_data); #endif } /******************************************************************************* ** ** Function btm_dm_ble_multi_adv_disable ** ** Description This function disable a single adv instance ** ** Parameters: ** *******************************************************************************/ void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data) { #if BLE_MULTI_ADV_INCLUDED == TRUE BTM_BleDisableAdvInstance(p_data->ble_multi_adv_disable.inst_id); #endif } #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) #ifndef BTA_DM_GATT_CLOSE_DELAY_TOUT #define BTA_DM_GATT_CLOSE_DELAY_TOUT 1000 Loading system/bta/dm/bta_dm_api.c +176 −10 Original line number Diff line number Diff line Loading @@ -1515,19 +1515,26 @@ void BTA_DmSetBleAdvParams (UINT16 adv_int_min, UINT16 adv_int_max, ** ** Description This function is called to override the BTA default ADV parameters. ** ** Parameters Pointer to User defined ADV data structure ** Parameters data_mask: adv data mask. ** p_adv_cfg: Pointer to User defined ADV data structure. This ** memory space can not be freed until p_adv_data_cback ** is received. ** p_adv_data_cback: set adv data complete callback. ** ** Returns None ** *******************************************************************************/ void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg) void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg, tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback) { 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) 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_data_cback = p_adv_data_cback; p_msg->p_adv_cfg = p_adv_cfg; bta_sys_sendmsg(p_msg); Loading @@ -1545,14 +1552,17 @@ void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv ** Returns None ** *******************************************************************************/ BTA_API extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg) BTA_API extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg, tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback) { 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) 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_SCAN_RSP_EVT; p_msg->data_mask = data_mask; p_msg->p_adv_data_cback = p_adv_data_cback; p_msg->p_adv_cfg = p_adv_cfg; bta_sys_sendmsg(p_msg); Loading Loading @@ -1814,6 +1824,166 @@ void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable) } #endif #if BLE_INCLUDED == TRUE /******************************************************************************* ** ** Function BTA_BleEnableAdvInstance ** ** Description This function enable a Multi-ADV instance with the specififed ** adv parameters ** ** Parameters p_params: pointer to the adv parameter structure. ** p_cback: callback function associated to this adv instance. ** p_ref: reference data pointer to this adv instance. ** ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params, tBTA_BLE_MULTI_ADV_CBACK *p_cback, void *p_ref) { tBTA_DM_API_BLE_MULTI_ADV_ENB *p_msg; UINT16 len = sizeof(tBTA_BLE_ADV_PARAMS) + sizeof(tBTA_DM_API_BLE_MULTI_ADV_ENB); APPL_TRACE_API0 ("BTA_BleEnableAdvInstance"); if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_ENB *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_ENB)); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_ENB_EVT; p_msg->p_cback = (void *)p_cback; if (p_params != NULL) { p_msg->p_params = (void *)(p_msg + 1); memcpy(p_msg->p_params, p_params, sizeof(tBTA_BLE_ADV_PARAMS)); } p_msg->p_ref = p_ref; bta_sys_sendmsg(p_msg); return BTA_SUCCESS; } return BTA_FAILURE; } /******************************************************************************* ** ** Function BTA_BleUpdateAdvInstParam ** ** Description This function update a Multi-ADV instance with the specififed ** adv parameters. ** ** Parameters inst_id: Adv instance to update the parameter. ** p_params: pointer to the adv parameter structure. ** ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_params) { tBTA_DM_API_BLE_MULTI_ADV_PARAM *p_msg; UINT16 len = sizeof(tBTA_BLE_ADV_PARAMS) + sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM); APPL_TRACE_API0 ("BTA_BleUpdateAdvInstParam"); if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL) { if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_PARAM *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM)); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT; p_msg->inst_id = inst_id; p_msg->p_params = (void *)(p_msg + 1); memcpy(p_msg->p_params, p_params, sizeof(tBTA_BLE_ADV_PARAMS)); bta_sys_sendmsg(p_msg); return BTA_SUCCESS; } } return BTA_FAILURE; } /******************************************************************************* ** ** Function BTA_BleCfgAdvInstData ** ** Description This function configure a Multi-ADV instance with the specififed ** adv data or scan response data. ** ** Parameter inst_id: Adv instance to configure the adv data or scan response. ** is_scan_rsp: is the data scan response or adv data. ** data_mask: adv data type as bit mask. ** p_data: pointer to the ADV data structure tBTA_BLE_ADV_DATA. This ** memory space can not be freed until BTA_BLE_MULTI_ADV_DATA_EVT ** is sent to application. ** ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data) { tBTA_DM_API_BLE_MULTI_ADV_DATA *p_msg; UINT16 len = sizeof(tBTA_DM_API_BLE_MULTI_ADV_DATA) ; APPL_TRACE_API0 ("BTA_BleCfgAdvInstData"); if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL) { if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DATA *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, len); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_DATA_EVT; p_msg->inst_id = inst_id; p_msg->is_scan_rsp = is_scan_rsp; p_msg->data_mask = data_mask; p_msg->p_data = p_data; bta_sys_sendmsg(p_msg); return BTA_SUCCESS; } } return BTA_FAILURE; } /******************************************************************************* ** ** Function BTA_BleDisableAdvInstance ** ** Description This function disable a Multi-ADV instance. ** ** Parameter inst_id: instance ID to disable. ** ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ tBTA_STATUS BTA_BleDisableAdvInstance (UINT8 inst_id) { tBTA_DM_API_BLE_MULTI_ADV_DISABLE *p_msg; APPL_TRACE_API1 ("BTA_BleDisableAdvInstance: %d", inst_id); if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL) { if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DISABLE *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE)); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT; p_msg->inst_id = inst_id; bta_sys_sendmsg(p_msg); return BTA_SUCCESS; } } return BTA_FAILURE; } /******************************************************************************* ** ** Function BTA_DmBleUpdateConnectionParams Loading @@ -1832,7 +2002,6 @@ void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable) void BTA_DmBleUpdateConnectionParams(BD_ADDR bd_addr, UINT16 min_int, UINT16 max_int, UINT16 latency, UINT16 timeout) { #if BLE_INCLUDED == TRUE tBTA_DM_API_UPDATE_CONN_PARAM *p_msg; if ((p_msg = (tBTA_DM_API_UPDATE_CONN_PARAM *) GKI_getbuf(sizeof(tBTA_DM_API_UPDATE_CONN_PARAM))) != NULL) Loading @@ -1848,8 +2017,8 @@ void BTA_DmBleUpdateConnectionParams(BD_ADDR bd_addr, UINT16 min_int, UINT16 max bta_sys_sendmsg(p_msg); } #endif } #endif /******************************************************************************* ** Loading Loading @@ -1946,8 +2115,6 @@ void BTA_DmCloseACL(BD_ADDR bd_addr, BOOLEAN remove_dev, tBTA_TRANSPORT transpor BTA_API extern void BTA_DmBleObserve(BOOLEAN start, UINT8 duration, tBTA_DM_SEARCH_CBACK *p_results_cb) { #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_OBSERVE *p_msg; APPL_TRACE_API1("BTA_DmBleObserve:start = %d ", start); Loading @@ -1963,6 +2130,5 @@ BTA_API extern void BTA_DmBleObserve(BOOLEAN start, UINT8 duration, bta_sys_sendmsg(p_msg); } #endif } #endif system/bta/dm/bta_dm_int.h +58 −1 Original line number Diff line number Diff line Loading @@ -100,6 +100,11 @@ enum BTA_DM_API_BLE_SCAN_PARAM_EVT, BTA_DM_API_BLE_OBSERVE_EVT, BTA_DM_API_UPDATE_CONN_PARAM_EVT, #if BLE_PRIVACY_SPT == TRUE BTA_DM_API_LOCAL_PRIVACY_EVT, #endif BTA_DM_API_BLE_ADV_PARAM_EVT, BTA_DM_API_BLE_SET_ADV_CONFIG_EVT, BTA_DM_API_BLE_SET_SCAN_RSP_EVT, Loading @@ -109,6 +114,10 @@ enum BTA_DM_API_CFG_FILTER_COND_EVT, BTA_DM_API_ENABLE_SCAN_FILTER_EVT, #endif BTA_DM_API_BLE_MULTI_ADV_ENB_EVT, BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT, BTA_DM_API_BLE_MULTI_ADV_DATA_EVT, BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT, #endif #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) Loading Loading @@ -537,14 +546,54 @@ typedef struct tBLE_BD_ADDR *p_dir_bda; }tBTA_DM_API_BLE_ADV_PARAMS; typedef struct { BT_HDR hdr; BOOLEAN enable; }tBTA_DM_API_BLE_FEATURE; /* multi adv data structure */ typedef struct { BT_HDR hdr; void *p_cback; void *p_ref; tBTA_BLE_ADV_PARAMS *p_params; }tBTA_DM_API_BLE_MULTI_ADV_ENB; typedef struct { BT_HDR hdr; UINT8 inst_id; tBTA_BLE_ADV_PARAMS *p_params; }tBTA_DM_API_BLE_MULTI_ADV_PARAM; typedef struct { BT_HDR hdr; UINT8 inst_id; BOOLEAN is_scan_rsp; tBTA_BLE_AD_MASK data_mask; tBTA_BLE_ADV_DATA *p_data; }tBTA_DM_API_BLE_MULTI_ADV_DATA; typedef struct { BT_HDR hdr; UINT8 inst_id; }tBTA_DM_API_BLE_MULTI_ADV_DISABLE; typedef struct { BT_HDR hdr; UINT16 data_mask; tBTA_BLE_ADV_DATA *p_adv_cfg; tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback; }tBTA_DM_API_SET_ADV_CONFIG; #endif #endif /* BLE_INCLUDED */ typedef struct { Loading Loading @@ -689,6 +738,10 @@ typedef union tBTA_DM_API_CFG_FILTER_COND ble_cfg_filter_cond; #endif tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params; tBTA_DM_API_BLE_MULTI_ADV_ENB ble_multi_adv_enb; tBTA_DM_API_BLE_MULTI_ADV_PARAM ble_multi_adv_param; tBTA_DM_API_BLE_MULTI_ADV_DATA ble_multi_adv_data; tBTA_DM_API_BLE_MULTI_ADV_DISABLE ble_multi_adv_disable; #endif tBTA_DM_API_SET_AFH_CHANNEL_ASSESSMENT set_afh_channel_assessment; Loading Loading @@ -1057,6 +1110,10 @@ extern void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data); extern void bta_dm_enable_scan_filter (tBTA_DM_MSG *p_data); extern void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data); #endif extern void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data); extern void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data); extern void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data); extern void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data); #endif extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data); Loading system/bta/dm/bta_dm_main.c +4 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,10 @@ const tBTA_DM_ACTION bta_dm_action[] = bta_dm_cfg_filter_cond, /* BTA_DM_API_CFG_FILTER_COND_EVT */ bta_dm_enable_scan_filter, /* BTA_DM_API_ENABLE_SCAN_FILTER_EVT */ #endif bta_dm_ble_multi_adv_enb, /* BTA_DM_API_BLE_MULTI_ADV_ENB_EVT*/ bta_dm_ble_multi_adv_upd_param, /* BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT */ bta_dm_ble_multi_adv_data, /* BTA_DM_API_BLE_MULTI_ADV_DATA_EVT */ btm_dm_ble_multi_adv_disable, /* BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT */ #endif #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) Loading system/bta/include/bta_api.h +140 −9 Original line number Diff line number Diff line Loading @@ -336,8 +336,9 @@ typedef struct #define BTA_DM_BLE_AD_BIT_SERVICE_128SOL BTM_BLE_AD_BIT_SERVICE_128SOL #define BTA_DM_BLE_AD_BIT_PUBLIC_ADDR BTM_BLE_AD_BIT_PUBLIC_ADDR #define BTA_DM_BLE_AD_BIT_RANDOM_ADDR BTM_BLE_AD_BIT_RANDOM_ADDR #define BTA_DM_BLE_AD_BIT_SERVICE_128 BTM_BLE_AD_BIT_SERVICE_128 /*128-bit Service UUIDs*/ typedef UINT16 tBTA_BLE_AD_MASK; typedef tBTM_BLE_AD_MASK tBTA_BLE_AD_MASK; /* slave preferred connection interval range */ typedef struct Loading Loading @@ -378,15 +379,68 @@ typedef struct typedef struct { tBTA_BLE_MANU manu; /* manufactuer data */ tBT_UUID service_uuid; UINT8 len; UINT8 *p_val; }tBTA_BLE_SERVICE_DATA; typedef tBTM_BLE_128SERVICE tBTA_BLE_128SERVICE; typedef tBTM_BLE_32SERVICE tBTA_BLE_32SERVICE; typedef struct { tBTA_BLE_INT_RANGE int_range; /* slave prefered conn interval range */ tBTA_BLE_SERVICE services; /* services */ tBTA_BLE_MANU *p_manu; /* manufacturer data */ tBTA_BLE_SERVICE *p_services; /* 16 bits services */ tBTA_BLE_128SERVICE *p_services_128b; /* 128 bits service */ tBTA_BLE_32SERVICE *p_service_32b; /* 32 bits Service UUID */ tBTA_BLE_SERVICE *p_sol_services; /* 16 bits services Solicitation UUIDs */ tBTA_BLE_32SERVICE *p_sol_service_32b; /* List of 32 bit Service Solicitation UUIDs */ tBTA_BLE_128SERVICE *p_sol_service_128b;/* List of 128 bit Service Solicitation UUIDs */ tBTA_BLE_PROPRIETARY *p_proprietary; /* proprietary data */ tBTA_BLE_SERVICE_DATA *p_service_data; /* service data */ UINT16 appearance; /* appearance data */ UINT8 flag; tBTA_BLE_PROPRIETARY *p_proprietary; UINT8 tx_power; }tBTA_BLE_ADV_DATA; typedef void (tBTA_SET_ADV_DATA_CMPL_CBACK) (tBTA_STATUS status); /* advertising channel map */ #define BTA_BLE_ADV_CHNL_37 BTM_BLE_ADV_CHNL_37 #define BTA_BLE_ADV_CHNL_38 BTM_BLE_ADV_CHNL_38 #define BTA_BLE_ADV_CHNL_39 BTM_BLE_ADV_CHNL_39 typedef tBTM_BLE_ADV_CHNL_MAP tBTA_BLE_ADV_CHNL_MAP; /* use as a bit mask */ /* advertising filter policy */ typedef tBTM_BLE_AFP tBTA_BLE_AFP; /* adv event type */ #define BTA_BLE_CONNECT_EVT BTM_BLE_CONNECT_EVT /* Connectable undirected advertising */ #define BTA_BLE_CONNECT_DIR_EVT BTM_BLE_CONNECT_DIR_EVT /* Connectable directed advertising */ #define BTA_BLE_DISCOVER_EVT BTM_BLE_DISCOVER_EVT /* Scannable undirected advertising */ #define BTA_BLE_NON_CONNECT_EVT BTM_BLE_NON_CONNECT_EVT /* Non connectable undirected advertising */ typedef UINT8 tBTA_BLE_ADV_EVT; /* adv tx power level */ #define BTA_BLE_ADV_TX_POWER_MIN 0 /* minimum tx power */ #define BTA_BLE_ADV_TX_POWER_LOW 1 /* low tx power */ #define BTA_BLE_ADV_TX_POWER_MID 2 /* middle tx power */ #define BTA_BLE_ADV_TX_POWER_UPPER 3 /* upper tx power */ #define BTA_BLE_ADV_TX_POWER_MAX 4 /* maximum tx power */ typedef UINT8 tBTA_BLE_ADV_TX_POWER; /* advertising instance parameters */ typedef struct { UINT16 adv_int_min; /* minimum adv interval */ UINT16 adv_int_max; /* maximum adv interval */ tBTA_BLE_ADV_EVT adv_type; /* adv event type */ tBTA_BLE_ADV_CHNL_MAP channel_map; /* adv channel map */ tBTA_BLE_AFP adv_filter_policy; /* advertising filter policy */ tBTA_BLE_ADV_TX_POWER tx_power; /* adv tx power */ }tBTA_BLE_ADV_PARAMS; /* These are the fields returned in each device adv packet. It ** is returned in the results callback if registered. */ Loading Loading @@ -843,6 +897,21 @@ typedef union /* Security callback */ typedef void (tBTA_DM_SEC_CBACK)(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *p_data); #define BTA_BLE_MULTI_ADV_MAX BTM_BLE_MULTI_ADV_MAX #define BTA_BLE_MULTI_ADV_ILLEGAL 0 /* multi adv callback event */ #define BTA_BLE_MULTI_ADV_ENB_EVT 1 #define BTA_BLE_MULTI_ADV_DISABLE_EVT 2 #define BTA_BLE_MULTI_ADV_PARAM_EVT 3 #define BTA_BLE_MULTI_ADV_DATA_EVT 4 typedef UINT8 tBTA_BLE_MULTI_ADV_EVT; /* multi adv callback */ typedef void (tBTA_BLE_MULTI_ADV_CBACK)(tBTA_BLE_MULTI_ADV_EVT event, UINT8 inst_id, void *p_ref, tBTA_STATUS status); /* Vendor Specific Command Callback */ typedef tBTM_VSC_CMPL_CB tBTA_VENDOR_CMPL_CBACK; Loading Loading @@ -1999,7 +2068,8 @@ BTA_API extern void BTA_DmBleEnableRemotePrivacy(BD_ADDR bd_addr, BOOLEAN privac ** *******************************************************************************/ BTA_API extern void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg); tBTA_BLE_ADV_DATA *p_adv_cfg, tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback); /******************************************************************************* ** Loading @@ -2013,7 +2083,8 @@ BTA_API extern void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, ** *******************************************************************************/ BTA_API extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg); tBTA_BLE_ADV_DATA *p_adv_cfg, tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback); /******************************************************************************* ** Loading @@ -2028,6 +2099,66 @@ BTA_API extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, *******************************************************************************/ BTA_API extern void BTA_DmBleBroadcast (BOOLEAN start); /******************************************************************************* ** ** Function BTA_BleEnableAdvInstance ** ** Description This function enables the Multi ADV instance feature ** ** Parameters p_params Pointer to ADV param user defined structure ** p_cback Pointer to Multi ADV callback structure ** p_ref - Reference pointer ** ** Returns None ** *******************************************************************************/ BTA_API extern tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params, tBTA_BLE_MULTI_ADV_CBACK *p_cback,void *p_ref); /******************************************************************************* ** ** Function BTA_BleUpdateAdvInstParam ** ** Description This function updates the Multi ADV instance params ** ** Parameters inst_id Instance ID ** p_params Pointer to ADV param user defined structure ** ** Returns None ** *******************************************************************************/ BTA_API extern tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_params); /******************************************************************************* ** ** Function BTA_BleCfgAdvInstData ** ** Description This function is called to configure the ADV instance data ** ** Parameters inst_id - Instance ID ** is_scan_rsp - Boolean value Scan response ** Pointer to User defined ADV data structure ** Returns None ** *******************************************************************************/ BTA_API extern tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data); /******************************************************************************* ** ** Function BTA_BleDisableAdvInstance ** ** Description This function is called to disable the ADV instance ** ** Parameters inst_id - Instance ID to be disabled ** ** Returns None ** *******************************************************************************/ BTA_API extern tBTA_STATUS BTA_BleDisableAdvInstance(UINT8 inst_id); /******************************************************************************* ** ** Function BTA_DmBleUpdateConnectionParams Loading Loading
system/bta/dm/bta_dm_act.c +85 −4 Original line number Diff line number Diff line Loading @@ -5204,8 +5204,16 @@ void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data) *******************************************************************************/ 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); tBTA_STATUS status = BTA_FAILURE; if (BTM_BleWriteAdvData(p_data->ble_set_adv_data.data_mask, (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS) { status = BTA_SUCCESS; } if (p_data->ble_set_adv_data.p_adv_data_cback) (*p_data->ble_set_adv_data.p_adv_data_cback)(status); } /******************************************************************************* Loading @@ -5219,8 +5227,16 @@ void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data) *******************************************************************************/ void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data) { BTM_BleWriteScanRsp(p_data->ble_set_adv_data.data_mask, (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg); tBTA_STATUS status = BTA_FAILURE; if(BTM_BleWriteScanRsp(p_data->ble_set_adv_data.data_mask, (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS) { status = BTA_SUCCESS; } if (p_data->ble_set_adv_data.p_adv_data_cback) (*p_data->ble_set_adv_data.p_adv_data_cback)(status); } /******************************************************************************* Loading @@ -5237,6 +5253,71 @@ void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data) BTM_BleBroadcast(p_data->ble_observe.start); } /******************************************************************************* ** ** Function bta_dm_ble_multi_adv_enb ** ** Description This function enables a single advertising instance ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data) { #if BLE_MULTI_ADV_INCLUDED == TRUE BTM_BleEnableAdvInstance((tBTM_BLE_ADV_PARAMS*)p_data->ble_multi_adv_enb.p_params, p_data->ble_multi_adv_enb.p_cback,p_data->ble_multi_adv_enb.p_ref); #endif } /******************************************************************************* ** ** Function bta_dm_ble_multi_adv_param_upd ** ** Description This function updates multiple advertising instance parameters ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data) { #if BLE_MULTI_ADV_INCLUDED == TRUE BTM_BleUpdateAdvInstParam(p_data->ble_multi_adv_param.inst_id, (tBTM_BLE_ADV_PARAMS*)p_data->ble_multi_adv_param.p_params); #endif } /******************************************************************************* ** ** Function bta_dm_ble_multi_adv_data ** ** Description This function write multiple advertising instance adv data ** or scan response data ** ** Parameters: ** *******************************************************************************/ void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data) { #if BLE_MULTI_ADV_INCLUDED == TRUE BTM_BleCfgAdvInstData(p_data->ble_multi_adv_data.inst_id,p_data->ble_multi_adv_data.is_scan_rsp, p_data->ble_multi_adv_data.data_mask,(tBTM_BLE_ADV_DATA*)p_data->ble_multi_adv_data.p_data); #endif } /******************************************************************************* ** ** Function btm_dm_ble_multi_adv_disable ** ** Description This function disable a single adv instance ** ** Parameters: ** *******************************************************************************/ void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data) { #if BLE_MULTI_ADV_INCLUDED == TRUE BTM_BleDisableAdvInstance(p_data->ble_multi_adv_disable.inst_id); #endif } #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) #ifndef BTA_DM_GATT_CLOSE_DELAY_TOUT #define BTA_DM_GATT_CLOSE_DELAY_TOUT 1000 Loading
system/bta/dm/bta_dm_api.c +176 −10 Original line number Diff line number Diff line Loading @@ -1515,19 +1515,26 @@ void BTA_DmSetBleAdvParams (UINT16 adv_int_min, UINT16 adv_int_max, ** ** Description This function is called to override the BTA default ADV parameters. ** ** Parameters Pointer to User defined ADV data structure ** Parameters data_mask: adv data mask. ** p_adv_cfg: Pointer to User defined ADV data structure. This ** memory space can not be freed until p_adv_data_cback ** is received. ** p_adv_data_cback: set adv data complete callback. ** ** Returns None ** *******************************************************************************/ void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg) void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg, tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback) { 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) 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_data_cback = p_adv_data_cback; p_msg->p_adv_cfg = p_adv_cfg; bta_sys_sendmsg(p_msg); Loading @@ -1545,14 +1552,17 @@ void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv ** Returns None ** *******************************************************************************/ BTA_API extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg) BTA_API extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg, tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback) { 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) 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_SCAN_RSP_EVT; p_msg->data_mask = data_mask; p_msg->p_adv_data_cback = p_adv_data_cback; p_msg->p_adv_cfg = p_adv_cfg; bta_sys_sendmsg(p_msg); Loading Loading @@ -1814,6 +1824,166 @@ void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable) } #endif #if BLE_INCLUDED == TRUE /******************************************************************************* ** ** Function BTA_BleEnableAdvInstance ** ** Description This function enable a Multi-ADV instance with the specififed ** adv parameters ** ** Parameters p_params: pointer to the adv parameter structure. ** p_cback: callback function associated to this adv instance. ** p_ref: reference data pointer to this adv instance. ** ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params, tBTA_BLE_MULTI_ADV_CBACK *p_cback, void *p_ref) { tBTA_DM_API_BLE_MULTI_ADV_ENB *p_msg; UINT16 len = sizeof(tBTA_BLE_ADV_PARAMS) + sizeof(tBTA_DM_API_BLE_MULTI_ADV_ENB); APPL_TRACE_API0 ("BTA_BleEnableAdvInstance"); if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_ENB *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_ENB)); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_ENB_EVT; p_msg->p_cback = (void *)p_cback; if (p_params != NULL) { p_msg->p_params = (void *)(p_msg + 1); memcpy(p_msg->p_params, p_params, sizeof(tBTA_BLE_ADV_PARAMS)); } p_msg->p_ref = p_ref; bta_sys_sendmsg(p_msg); return BTA_SUCCESS; } return BTA_FAILURE; } /******************************************************************************* ** ** Function BTA_BleUpdateAdvInstParam ** ** Description This function update a Multi-ADV instance with the specififed ** adv parameters. ** ** Parameters inst_id: Adv instance to update the parameter. ** p_params: pointer to the adv parameter structure. ** ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_params) { tBTA_DM_API_BLE_MULTI_ADV_PARAM *p_msg; UINT16 len = sizeof(tBTA_BLE_ADV_PARAMS) + sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM); APPL_TRACE_API0 ("BTA_BleUpdateAdvInstParam"); if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL) { if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_PARAM *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM)); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT; p_msg->inst_id = inst_id; p_msg->p_params = (void *)(p_msg + 1); memcpy(p_msg->p_params, p_params, sizeof(tBTA_BLE_ADV_PARAMS)); bta_sys_sendmsg(p_msg); return BTA_SUCCESS; } } return BTA_FAILURE; } /******************************************************************************* ** ** Function BTA_BleCfgAdvInstData ** ** Description This function configure a Multi-ADV instance with the specififed ** adv data or scan response data. ** ** Parameter inst_id: Adv instance to configure the adv data or scan response. ** is_scan_rsp: is the data scan response or adv data. ** data_mask: adv data type as bit mask. ** p_data: pointer to the ADV data structure tBTA_BLE_ADV_DATA. This ** memory space can not be freed until BTA_BLE_MULTI_ADV_DATA_EVT ** is sent to application. ** ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data) { tBTA_DM_API_BLE_MULTI_ADV_DATA *p_msg; UINT16 len = sizeof(tBTA_DM_API_BLE_MULTI_ADV_DATA) ; APPL_TRACE_API0 ("BTA_BleCfgAdvInstData"); if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL) { if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DATA *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, len); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_DATA_EVT; p_msg->inst_id = inst_id; p_msg->is_scan_rsp = is_scan_rsp; p_msg->data_mask = data_mask; p_msg->p_data = p_data; bta_sys_sendmsg(p_msg); return BTA_SUCCESS; } } return BTA_FAILURE; } /******************************************************************************* ** ** Function BTA_BleDisableAdvInstance ** ** Description This function disable a Multi-ADV instance. ** ** Parameter inst_id: instance ID to disable. ** ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ tBTA_STATUS BTA_BleDisableAdvInstance (UINT8 inst_id) { tBTA_DM_API_BLE_MULTI_ADV_DISABLE *p_msg; APPL_TRACE_API1 ("BTA_BleDisableAdvInstance: %d", inst_id); if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL) { if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DISABLE *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE)); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT; p_msg->inst_id = inst_id; bta_sys_sendmsg(p_msg); return BTA_SUCCESS; } } return BTA_FAILURE; } /******************************************************************************* ** ** Function BTA_DmBleUpdateConnectionParams Loading @@ -1832,7 +2002,6 @@ void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable) void BTA_DmBleUpdateConnectionParams(BD_ADDR bd_addr, UINT16 min_int, UINT16 max_int, UINT16 latency, UINT16 timeout) { #if BLE_INCLUDED == TRUE tBTA_DM_API_UPDATE_CONN_PARAM *p_msg; if ((p_msg = (tBTA_DM_API_UPDATE_CONN_PARAM *) GKI_getbuf(sizeof(tBTA_DM_API_UPDATE_CONN_PARAM))) != NULL) Loading @@ -1848,8 +2017,8 @@ void BTA_DmBleUpdateConnectionParams(BD_ADDR bd_addr, UINT16 min_int, UINT16 max bta_sys_sendmsg(p_msg); } #endif } #endif /******************************************************************************* ** Loading Loading @@ -1946,8 +2115,6 @@ void BTA_DmCloseACL(BD_ADDR bd_addr, BOOLEAN remove_dev, tBTA_TRANSPORT transpor BTA_API extern void BTA_DmBleObserve(BOOLEAN start, UINT8 duration, tBTA_DM_SEARCH_CBACK *p_results_cb) { #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_OBSERVE *p_msg; APPL_TRACE_API1("BTA_DmBleObserve:start = %d ", start); Loading @@ -1963,6 +2130,5 @@ BTA_API extern void BTA_DmBleObserve(BOOLEAN start, UINT8 duration, bta_sys_sendmsg(p_msg); } #endif } #endif
system/bta/dm/bta_dm_int.h +58 −1 Original line number Diff line number Diff line Loading @@ -100,6 +100,11 @@ enum BTA_DM_API_BLE_SCAN_PARAM_EVT, BTA_DM_API_BLE_OBSERVE_EVT, BTA_DM_API_UPDATE_CONN_PARAM_EVT, #if BLE_PRIVACY_SPT == TRUE BTA_DM_API_LOCAL_PRIVACY_EVT, #endif BTA_DM_API_BLE_ADV_PARAM_EVT, BTA_DM_API_BLE_SET_ADV_CONFIG_EVT, BTA_DM_API_BLE_SET_SCAN_RSP_EVT, Loading @@ -109,6 +114,10 @@ enum BTA_DM_API_CFG_FILTER_COND_EVT, BTA_DM_API_ENABLE_SCAN_FILTER_EVT, #endif BTA_DM_API_BLE_MULTI_ADV_ENB_EVT, BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT, BTA_DM_API_BLE_MULTI_ADV_DATA_EVT, BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT, #endif #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) Loading Loading @@ -537,14 +546,54 @@ typedef struct tBLE_BD_ADDR *p_dir_bda; }tBTA_DM_API_BLE_ADV_PARAMS; typedef struct { BT_HDR hdr; BOOLEAN enable; }tBTA_DM_API_BLE_FEATURE; /* multi adv data structure */ typedef struct { BT_HDR hdr; void *p_cback; void *p_ref; tBTA_BLE_ADV_PARAMS *p_params; }tBTA_DM_API_BLE_MULTI_ADV_ENB; typedef struct { BT_HDR hdr; UINT8 inst_id; tBTA_BLE_ADV_PARAMS *p_params; }tBTA_DM_API_BLE_MULTI_ADV_PARAM; typedef struct { BT_HDR hdr; UINT8 inst_id; BOOLEAN is_scan_rsp; tBTA_BLE_AD_MASK data_mask; tBTA_BLE_ADV_DATA *p_data; }tBTA_DM_API_BLE_MULTI_ADV_DATA; typedef struct { BT_HDR hdr; UINT8 inst_id; }tBTA_DM_API_BLE_MULTI_ADV_DISABLE; typedef struct { BT_HDR hdr; UINT16 data_mask; tBTA_BLE_ADV_DATA *p_adv_cfg; tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback; }tBTA_DM_API_SET_ADV_CONFIG; #endif #endif /* BLE_INCLUDED */ typedef struct { Loading Loading @@ -689,6 +738,10 @@ typedef union tBTA_DM_API_CFG_FILTER_COND ble_cfg_filter_cond; #endif tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params; tBTA_DM_API_BLE_MULTI_ADV_ENB ble_multi_adv_enb; tBTA_DM_API_BLE_MULTI_ADV_PARAM ble_multi_adv_param; tBTA_DM_API_BLE_MULTI_ADV_DATA ble_multi_adv_data; tBTA_DM_API_BLE_MULTI_ADV_DISABLE ble_multi_adv_disable; #endif tBTA_DM_API_SET_AFH_CHANNEL_ASSESSMENT set_afh_channel_assessment; Loading Loading @@ -1057,6 +1110,10 @@ extern void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data); extern void bta_dm_enable_scan_filter (tBTA_DM_MSG *p_data); extern void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data); #endif extern void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data); extern void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data); extern void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data); extern void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data); #endif extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data); Loading
system/bta/dm/bta_dm_main.c +4 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,10 @@ const tBTA_DM_ACTION bta_dm_action[] = bta_dm_cfg_filter_cond, /* BTA_DM_API_CFG_FILTER_COND_EVT */ bta_dm_enable_scan_filter, /* BTA_DM_API_ENABLE_SCAN_FILTER_EVT */ #endif bta_dm_ble_multi_adv_enb, /* BTA_DM_API_BLE_MULTI_ADV_ENB_EVT*/ bta_dm_ble_multi_adv_upd_param, /* BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT */ bta_dm_ble_multi_adv_data, /* BTA_DM_API_BLE_MULTI_ADV_DATA_EVT */ btm_dm_ble_multi_adv_disable, /* BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT */ #endif #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) Loading
system/bta/include/bta_api.h +140 −9 Original line number Diff line number Diff line Loading @@ -336,8 +336,9 @@ typedef struct #define BTA_DM_BLE_AD_BIT_SERVICE_128SOL BTM_BLE_AD_BIT_SERVICE_128SOL #define BTA_DM_BLE_AD_BIT_PUBLIC_ADDR BTM_BLE_AD_BIT_PUBLIC_ADDR #define BTA_DM_BLE_AD_BIT_RANDOM_ADDR BTM_BLE_AD_BIT_RANDOM_ADDR #define BTA_DM_BLE_AD_BIT_SERVICE_128 BTM_BLE_AD_BIT_SERVICE_128 /*128-bit Service UUIDs*/ typedef UINT16 tBTA_BLE_AD_MASK; typedef tBTM_BLE_AD_MASK tBTA_BLE_AD_MASK; /* slave preferred connection interval range */ typedef struct Loading Loading @@ -378,15 +379,68 @@ typedef struct typedef struct { tBTA_BLE_MANU manu; /* manufactuer data */ tBT_UUID service_uuid; UINT8 len; UINT8 *p_val; }tBTA_BLE_SERVICE_DATA; typedef tBTM_BLE_128SERVICE tBTA_BLE_128SERVICE; typedef tBTM_BLE_32SERVICE tBTA_BLE_32SERVICE; typedef struct { tBTA_BLE_INT_RANGE int_range; /* slave prefered conn interval range */ tBTA_BLE_SERVICE services; /* services */ tBTA_BLE_MANU *p_manu; /* manufacturer data */ tBTA_BLE_SERVICE *p_services; /* 16 bits services */ tBTA_BLE_128SERVICE *p_services_128b; /* 128 bits service */ tBTA_BLE_32SERVICE *p_service_32b; /* 32 bits Service UUID */ tBTA_BLE_SERVICE *p_sol_services; /* 16 bits services Solicitation UUIDs */ tBTA_BLE_32SERVICE *p_sol_service_32b; /* List of 32 bit Service Solicitation UUIDs */ tBTA_BLE_128SERVICE *p_sol_service_128b;/* List of 128 bit Service Solicitation UUIDs */ tBTA_BLE_PROPRIETARY *p_proprietary; /* proprietary data */ tBTA_BLE_SERVICE_DATA *p_service_data; /* service data */ UINT16 appearance; /* appearance data */ UINT8 flag; tBTA_BLE_PROPRIETARY *p_proprietary; UINT8 tx_power; }tBTA_BLE_ADV_DATA; typedef void (tBTA_SET_ADV_DATA_CMPL_CBACK) (tBTA_STATUS status); /* advertising channel map */ #define BTA_BLE_ADV_CHNL_37 BTM_BLE_ADV_CHNL_37 #define BTA_BLE_ADV_CHNL_38 BTM_BLE_ADV_CHNL_38 #define BTA_BLE_ADV_CHNL_39 BTM_BLE_ADV_CHNL_39 typedef tBTM_BLE_ADV_CHNL_MAP tBTA_BLE_ADV_CHNL_MAP; /* use as a bit mask */ /* advertising filter policy */ typedef tBTM_BLE_AFP tBTA_BLE_AFP; /* adv event type */ #define BTA_BLE_CONNECT_EVT BTM_BLE_CONNECT_EVT /* Connectable undirected advertising */ #define BTA_BLE_CONNECT_DIR_EVT BTM_BLE_CONNECT_DIR_EVT /* Connectable directed advertising */ #define BTA_BLE_DISCOVER_EVT BTM_BLE_DISCOVER_EVT /* Scannable undirected advertising */ #define BTA_BLE_NON_CONNECT_EVT BTM_BLE_NON_CONNECT_EVT /* Non connectable undirected advertising */ typedef UINT8 tBTA_BLE_ADV_EVT; /* adv tx power level */ #define BTA_BLE_ADV_TX_POWER_MIN 0 /* minimum tx power */ #define BTA_BLE_ADV_TX_POWER_LOW 1 /* low tx power */ #define BTA_BLE_ADV_TX_POWER_MID 2 /* middle tx power */ #define BTA_BLE_ADV_TX_POWER_UPPER 3 /* upper tx power */ #define BTA_BLE_ADV_TX_POWER_MAX 4 /* maximum tx power */ typedef UINT8 tBTA_BLE_ADV_TX_POWER; /* advertising instance parameters */ typedef struct { UINT16 adv_int_min; /* minimum adv interval */ UINT16 adv_int_max; /* maximum adv interval */ tBTA_BLE_ADV_EVT adv_type; /* adv event type */ tBTA_BLE_ADV_CHNL_MAP channel_map; /* adv channel map */ tBTA_BLE_AFP adv_filter_policy; /* advertising filter policy */ tBTA_BLE_ADV_TX_POWER tx_power; /* adv tx power */ }tBTA_BLE_ADV_PARAMS; /* These are the fields returned in each device adv packet. It ** is returned in the results callback if registered. */ Loading Loading @@ -843,6 +897,21 @@ typedef union /* Security callback */ typedef void (tBTA_DM_SEC_CBACK)(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *p_data); #define BTA_BLE_MULTI_ADV_MAX BTM_BLE_MULTI_ADV_MAX #define BTA_BLE_MULTI_ADV_ILLEGAL 0 /* multi adv callback event */ #define BTA_BLE_MULTI_ADV_ENB_EVT 1 #define BTA_BLE_MULTI_ADV_DISABLE_EVT 2 #define BTA_BLE_MULTI_ADV_PARAM_EVT 3 #define BTA_BLE_MULTI_ADV_DATA_EVT 4 typedef UINT8 tBTA_BLE_MULTI_ADV_EVT; /* multi adv callback */ typedef void (tBTA_BLE_MULTI_ADV_CBACK)(tBTA_BLE_MULTI_ADV_EVT event, UINT8 inst_id, void *p_ref, tBTA_STATUS status); /* Vendor Specific Command Callback */ typedef tBTM_VSC_CMPL_CB tBTA_VENDOR_CMPL_CBACK; Loading Loading @@ -1999,7 +2068,8 @@ BTA_API extern void BTA_DmBleEnableRemotePrivacy(BD_ADDR bd_addr, BOOLEAN privac ** *******************************************************************************/ BTA_API extern void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg); tBTA_BLE_ADV_DATA *p_adv_cfg, tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback); /******************************************************************************* ** Loading @@ -2013,7 +2083,8 @@ BTA_API extern void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, ** *******************************************************************************/ BTA_API extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg); tBTA_BLE_ADV_DATA *p_adv_cfg, tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback); /******************************************************************************* ** Loading @@ -2028,6 +2099,66 @@ BTA_API extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, *******************************************************************************/ BTA_API extern void BTA_DmBleBroadcast (BOOLEAN start); /******************************************************************************* ** ** Function BTA_BleEnableAdvInstance ** ** Description This function enables the Multi ADV instance feature ** ** Parameters p_params Pointer to ADV param user defined structure ** p_cback Pointer to Multi ADV callback structure ** p_ref - Reference pointer ** ** Returns None ** *******************************************************************************/ BTA_API extern tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params, tBTA_BLE_MULTI_ADV_CBACK *p_cback,void *p_ref); /******************************************************************************* ** ** Function BTA_BleUpdateAdvInstParam ** ** Description This function updates the Multi ADV instance params ** ** Parameters inst_id Instance ID ** p_params Pointer to ADV param user defined structure ** ** Returns None ** *******************************************************************************/ BTA_API extern tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_params); /******************************************************************************* ** ** Function BTA_BleCfgAdvInstData ** ** Description This function is called to configure the ADV instance data ** ** Parameters inst_id - Instance ID ** is_scan_rsp - Boolean value Scan response ** Pointer to User defined ADV data structure ** Returns None ** *******************************************************************************/ BTA_API extern tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data); /******************************************************************************* ** ** Function BTA_BleDisableAdvInstance ** ** Description This function is called to disable the ADV instance ** ** Parameters inst_id - Instance ID to be disabled ** ** Returns None ** *******************************************************************************/ BTA_API extern tBTA_STATUS BTA_BleDisableAdvInstance(UINT8 inst_id); /******************************************************************************* ** ** Function BTA_DmBleUpdateConnectionParams Loading