From f6c48a09e398de804f7d563a44904e917afd2c32 Mon Sep 17 00:00:00 2001 From: Brian Carlstrom Date: Thu, 7 May 2015 21:54:08 -0700 Subject: [PATCH] Resetting system/bt git reset --hard fa5fec7c98ff3c56bd825bc51a1d28bdc3bad0bb^^ git reset --soft aosp/master git commit -a Change-Id: I2939d9bbd825110a42a71008e5255945e38a77e1 --- bta/dm/bta_dm_act.c | 22 +---- bta/dm/bta_dm_api.c | 51 +++-------- bta/dm/bta_dm_int.h | 15 ++-- bta/dm/bta_dm_main.c | 7 +- bta/hf_client/bta_hf_client_at.c | 35 ++++---- bta/include/bta_api.h | 35 ++------ btif/src/btif_core.c | 3 - btif/src/btif_dm.c | 4 - btif/src/btif_gatt_client.c | 94 ++------------------ stack/btm/btm_ble.c | 12 +-- stack/btm/btm_ble_adv_filter.c | 6 +- stack/btm/btm_ble_batchscan.c | 9 +- stack/btm/btm_ble_bgconn.c | 70 +++++---------- stack/btm/btm_ble_gap.c | 188 +++++++++++---------------------------- stack/btm/btm_ble_int.h | 20 ++--- stack/include/btm_api.h | 3 +- stack/include/btm_ble_api.h | 33 +++---- stack/include/gatt_api.h | 2 +- stack/include/hcidefs.h | 3 - stack/include/hcimsgs.h | 1 - 20 files changed, 160 insertions(+), 453 deletions(-) diff --git a/bta/dm/bta_dm_act.c b/bta/dm/bta_dm_act.c index 8f54d7af9..64a084dfb 100644 --- a/bta/dm/bta_dm_act.c +++ b/bta/dm/bta_dm_act.c @@ -4607,30 +4607,12 @@ void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data) ** ** Function bta_dm_ble_set_scan_params ** -** Description This function sets BLE scan parameters. -** -** Parameters: -** -*******************************************************************************/ -void bta_dm_ble_set_scan_params(tBTA_DM_MSG *p_data) -{ - BTM_BleSetScanParams(p_data->ble_set_scan_params.client_if, - p_data->ble_set_scan_params.scan_int, - p_data->ble_set_scan_params.scan_window, - p_data->ble_set_scan_params.scan_mode, - p_data->ble_set_scan_params.scan_param_setup_cback); -} - -/******************************************************************************* -** -** Function bta_dm_ble_set_conn_scan_params -** ** Description This function set the preferred connection scan parameters. ** ** Parameters: ** *******************************************************************************/ -void bta_dm_ble_set_conn_scan_params (tBTA_DM_MSG *p_data) +void bta_dm_ble_set_scan_params (tBTA_DM_MSG *p_data) { BTM_BleSetConnScanParams(p_data->ble_set_scan_params.scan_int, p_data->ble_set_scan_params.scan_window); @@ -4707,7 +4689,7 @@ void bta_dm_ble_observe (tBTA_DM_MSG *p_data) } /******************************************************************************* ** -** Function bta_dm_ble_set_adv_params +** Function bta_dm_ble_set_scan_params ** ** Description This function set the adv parameters. ** diff --git a/bta/dm/bta_dm_api.c b/bta/dm/bta_dm_api.c index 819656cee..9995e1719 100644 --- a/bta/dm/bta_dm_api.c +++ b/bta/dm/bta_dm_api.c @@ -903,52 +903,23 @@ void BTA_DmSetBlePrefConnParams(BD_ADDR bd_addr, ** Returns void ** *******************************************************************************/ -void BTA_DmSetBleConnScanParams(UINT32 scan_interval, UINT32 scan_window) +void BTA_DmSetBleConnScanParams(UINT16 scan_interval, UINT16 scan_window ) { - tBTA_DM_API_BLE_SCAN_PARAMS *p_msg; - if ((p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS))) != NULL) - { - memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_SCAN_PARAMS)); - p_msg->hdr.event = BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT; - p_msg->scan_int = scan_interval; - p_msg->scan_window = scan_window; - bta_sys_sendmsg(p_msg); - } -} - -/******************************************************************************* -** -** Function BTA_DmSetBleScanParams -** -** Description This function is called to set scan parameters -** -** Parameters: client_if - Client IF -** scan_interval - scan interval -** scan_window - scan window -** scan_mode - scan mode -** scan_param_setup_status_cback - Set scan param status callback -** -** Returns void -** -*******************************************************************************/ -void BTA_DmSetBleScanParams(tGATT_IF client_if, UINT32 scan_interval, - UINT32 scan_window, tBLE_SCAN_MODE scan_mode, - tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) -{ - tBTA_DM_API_BLE_SCAN_PARAMS *p_msg; +#if BLE_INCLUDED == TRUE + tBTA_DM_API_BLE_SCAN_PARAMS *p_msg; - if ((p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS))) != NULL) + if ((p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_SCAN_PARAMS)); + p_msg->hdr.event = BTA_DM_API_BLE_SCAN_PARAM_EVT; - p_msg->client_if = client_if; - p_msg->scan_int = scan_interval; - p_msg->scan_window = scan_window; - p_msg->scan_mode = scan_mode; - p_msg->scan_param_setup_cback = scan_param_setup_cback; + + p_msg->scan_int = scan_interval; + p_msg->scan_window = scan_window; bta_sys_sendmsg(p_msg); } +#endif } /******************************************************************************* @@ -1113,7 +1084,7 @@ extern void BTA_DmBleSetStorageParams(UINT8 batch_scan_full_max, ** Returns None ** *******************************************************************************/ -extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode, +extern void BTA_DmBleEnableBatchScan(tBTA_BLE_SCAN_MODE scan_mode, UINT32 scan_interval, UINT32 scan_window, tBTA_BLE_DISCARD_RULE discard_rule, tBLE_ADDR_TYPE addr_type, @@ -1170,7 +1141,7 @@ extern void BTA_DmBleDisableBatchScan(tBTA_DM_BLE_REF_VALUE ref_value) ** Returns None ** *******************************************************************************/ -extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type, +extern void BTA_DmBleReadScanReports(tBTA_BLE_SCAN_MODE scan_type, tBTA_DM_BLE_REF_VALUE ref_value) { tBTA_DM_API_READ_SCAN_REPORTS *p_msg; diff --git a/bta/dm/bta_dm_int.h b/bta/dm/bta_dm_int.h index cdd2b9748..cabe88eff 100644 --- a/bta/dm/bta_dm_int.h +++ b/bta/dm/bta_dm_int.h @@ -90,7 +90,6 @@ enum BTA_DM_API_BLE_SET_BG_CONN_TYPE, BTA_DM_API_BLE_CONN_PARAM_EVT, BTA_DM_API_BLE_SCAN_PARAM_EVT, - BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT, BTA_DM_API_BLE_OBSERVE_EVT, BTA_DM_API_UPDATE_CONN_PARAM_EVT, #if BLE_PRIVACY_SPT == TRUE @@ -454,12 +453,9 @@ typedef struct /* set scan parameter for BLE connections */ typedef struct { - BT_HDR hdr; - tBTA_GATTC_IF client_if; - UINT32 scan_int; - UINT32 scan_window; - tBLE_SCAN_MODE scan_mode; - tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback; + BT_HDR hdr; + UINT16 scan_int; + UINT16 scan_window; }tBTA_DM_API_BLE_SCAN_PARAMS; /* Data type for start/stop observe */ @@ -548,7 +544,7 @@ typedef struct typedef struct { BT_HDR hdr; - tBTA_BLE_BATCH_SCAN_MODE scan_mode; + tBTA_BLE_SCAN_MODE scan_mode; UINT32 scan_int; UINT32 scan_window; tBTA_BLE_DISCARD_RULE discard_rule; @@ -565,7 +561,7 @@ typedef struct typedef struct { BT_HDR hdr; - tBTA_BLE_BATCH_SCAN_MODE scan_type; + tBTA_BLE_SCAN_MODE scan_type; tBTA_DM_BLE_REF_VALUE ref_value; } tBTA_DM_API_READ_SCAN_REPORTS; @@ -1063,7 +1059,6 @@ 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); extern void bta_dm_ble_set_scan_params (tBTA_DM_MSG *p_data); -extern void bta_dm_ble_set_conn_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_update_conn_params (tBTA_DM_MSG *p_data); diff --git a/bta/dm/bta_dm_main.c b/bta/dm/bta_dm_main.c index 27c4682ec..450151a21 100644 --- a/bta/dm/bta_dm_main.c +++ b/bta/dm/bta_dm_main.c @@ -85,15 +85,14 @@ const tBTA_DM_ACTION bta_dm_action[] = 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 */ - bta_dm_ble_set_scan_params, /* BTA_DM_API_BLE_SCAN_PARAM_EVT */ - bta_dm_ble_set_conn_scan_params, /* BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT */ + 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_update_conn_params, /* BTA_DM_API_UPDATE_CONN_PARAM_EVT */ #if BLE_PRIVACY_SPT == TRUE bta_dm_ble_config_local_privacy, /* BTA_DM_API_LOCAL_PRIVACY_EVT */ #endif - bta_dm_ble_set_adv_params, /* BTA_DM_API_BLE_ADV_PARAM_EVT */ + 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 */ bta_dm_ble_set_scan_rsp, /* BTA_DM_API_BLE_SET_SCAN_RSP_EVT */ bta_dm_ble_broadcast, /* BTA_DM_API_BLE_BROADCAST_EVT */ diff --git a/bta/hf_client/bta_hf_client_at.c b/bta/hf_client/bta_hf_client_at.c index 08dd7b8f4..13a7c9cb9 100644 --- a/bta/hf_client/bta_hf_client_at.c +++ b/bta/hf_client/bta_hf_client_at.c @@ -90,8 +90,6 @@ UINT32 service_index = 0; BOOLEAN service_availability = TRUE; /* helper functions for handling AT commands queueing */ -static void bta_hf_client_handle_ok(); - static void bta_hf_client_clear_queued_at(void) { tBTA_HF_CLIENT_AT_QCMD *cur = bta_hf_client_cb.scb.at_cb.queued_cmd; @@ -181,15 +179,6 @@ static void bta_hf_client_send_at(tBTA_HF_CLIENT_AT_CMD cmd, char *buf, UINT16 b #endif bta_hf_client_cb.scb.at_cb.current_cmd = cmd; - /* Generate fake responses for these because they won't reliably work */ - if (!service_availability && - (cmd == BTA_HF_CLIENT_AT_CNUM || cmd == BTA_HF_CLIENT_AT_COPS)) - { - APPL_TRACE_WARNING("%s: No service, skipping %d command", __FUNCTION__, cmd); - bta_hf_client_handle_ok(); - return; - } - PORT_WriteData(bta_hf_client_cb.scb.conn_handle, buf, buf_len, &len); bta_hf_client_start_at_resp_timer(); @@ -203,16 +192,19 @@ static void bta_hf_client_send_at(tBTA_HF_CLIENT_AT_CMD cmd, char *buf, UINT16 b static void bta_hf_client_send_queued_at(void) { tBTA_HF_CLIENT_AT_QCMD *cur = bta_hf_client_cb.scb.at_cb.queued_cmd; + tBTA_HF_CLIENT_AT_QCMD *next; APPL_TRACE_DEBUG("%s", __FUNCTION__); if (cur != NULL) { - bta_hf_client_cb.scb.at_cb.queued_cmd = cur->next; + next = cur->next; bta_hf_client_send_at(cur->cmd, cur->buf, cur->buf_len); GKI_freebuf(cur); + + bta_hf_client_cb.scb.at_cb.queued_cmd = next; } } @@ -437,16 +429,11 @@ static void bta_hf_client_handle_ciev(UINT32 index, UINT32 value) APPL_TRACE_DEBUG("%s index: %u value: %u", __FUNCTION__, index, value); - if(index == 0 || index > BTA_HF_CLIENT_AT_INDICATOR_COUNT) + if(index == 0 || index >= BTA_HF_CLIENT_AT_INDICATOR_COUNT) { return; } - if (service_index == index - 1) - { - service_availability = value == 0 ? FALSE : TRUE; - } - realind = bta_hf_client_cb.scb.at_cb.indicator_lookup[index - 1]; if(realind >= 0 && realind < BTA_HF_CLIENT_AT_SUPPORTED_INDICATOR_COUNT) @@ -1588,6 +1575,11 @@ void bta_hf_client_send_at_cops(BOOLEAN query) APPL_TRACE_DEBUG("%s", __FUNCTION__); + if (!service_availability) + { + APPL_TRACE_DEBUG("Skip AT+COPS no service"); + return; + } if (query) buf = "AT+COPS?\r"; else @@ -1745,6 +1737,11 @@ void bta_hf_client_send_at_cnum(void) APPL_TRACE_DEBUG("%s", __FUNCTION__); + if (!service_availability) + { + APPL_TRACE_DEBUG("Skip AT+CNUM no Service"); + return; + } buf = "AT+CNUM\r"; bta_hf_client_send_at(BTA_HF_CLIENT_AT_CNUM, buf, strlen(buf)); @@ -1758,7 +1755,7 @@ void bta_hf_client_send_at_nrec(void) if (!(bta_hf_client_cb.scb.peer_features & BTA_HF_CLIENT_PEER_FEAT_ECNR)) { - APPL_TRACE_ERROR("%s: Remote does not support NREC.", __FUNCTION__); + APPL_TRACE_DEBUG("Remote does not support NREC."); return; } diff --git a/bta/include/bta_api.h b/bta/include/bta_api.h index 71906d4a3..5bced87ae 100644 --- a/bta/include/bta_api.h +++ b/bta/include/bta_api.h @@ -457,11 +457,11 @@ typedef struct enum { - BTA_BLE_BATCH_SCAN_MODE_PASS = 1, - BTA_BLE_BATCH_SCAN_MODE_ACTI = 2, - BTA_BLE_BATCH_SCAN_MODE_PASS_ACTI = 3 + BTA_BLE_SCAN_MODE_PASS=1, + BTA_BLE_SCAN_MODE_ACTI=2, + BTA_BLE_SCAN_MODE_PASS_ACTI=3 }; -typedef UINT8 tBTA_BLE_BATCH_SCAN_MODE; +typedef UINT8 tBTA_BLE_SCAN_MODE; enum { @@ -1864,27 +1864,8 @@ extern void BTA_DmSetBlePrefConnParams(BD_ADDR bd_addr, ** Returns void ** *******************************************************************************/ -extern void BTA_DmSetBleConnScanParams(UINT32 scan_interval, - UINT32 scan_window); - -/******************************************************************************* -** -** Function BTA_DmSetBleScanParams -** -** Description This function is called to set scan parameters -** -** Parameters: client_if - Client IF -** scan_interval - scan interval -** scan_window - scan window -** scan_mode - scan mode -** scan_param_setup_status_cback - Set scan param status callback -** -** Returns void -** -*******************************************************************************/ -extern void BTA_DmSetBleScanParams(tGATT_IF client_if, UINT32 scan_interval, - UINT32 scan_window, tBLE_SCAN_MODE scan_mode, - tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_status_cback); +extern void BTA_DmSetBleConnScanParams(UINT16 scan_interval, + UINT16 scan_window ); /******************************************************************************* ** @@ -2215,7 +2196,7 @@ extern void BTA_DmBleSetStorageParams(UINT8 batch_scan_full_max, ** Returns None ** *******************************************************************************/ -extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode, +extern void BTA_DmBleEnableBatchScan(tBTA_BLE_SCAN_MODE scan_mode, UINT32 scan_interval, UINT32 scan_window, tBTA_BLE_DISCARD_RULE discard_rule, tBLE_ADDR_TYPE addr_type, @@ -2233,7 +2214,7 @@ extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode, ** Returns None ** *******************************************************************************/ -extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type, +extern void BTA_DmBleReadScanReports(tBTA_BLE_SCAN_MODE scan_type, tBTA_DM_BLE_REF_VALUE ref_value); /******************************************************************************* diff --git a/btif/src/btif_core.c b/btif/src/btif_core.c index d552e5ca7..62d22e183 100644 --- a/btif/src/btif_core.c +++ b/btif/src/btif_core.c @@ -849,9 +849,6 @@ static void execute_storage_request(UINT16 event, char *p_param) local_le_features.version_supported = cmn_vsc_cb.version_supported; local_le_features.total_trackable_advertisers = cmn_vsc_cb.total_trackable_advertisers; - - local_le_features.extended_scan_support = cmn_vsc_cb.extended_scan_support > 0; - local_le_features.debug_logging_supported = cmn_vsc_cb.debug_logging_supported > 0; memcpy(prop.val, &local_le_features, prop.len); #endif } diff --git a/btif/src/btif_dm.c b/btif/src/btif_dm.c index ddb77b094..7df911bf7 100644 --- a/btif/src/btif_dm.c +++ b/btif/src/btif_dm.c @@ -1936,10 +1936,6 @@ static void btif_dm_upstreams_evt(UINT16 event, char* p_param) local_le_features.version_supported = cmn_vsc_cb.version_supported; local_le_features.total_trackable_advertisers = cmn_vsc_cb.total_trackable_advertisers; - - local_le_features.extended_scan_support = cmn_vsc_cb.extended_scan_support > 0; - local_le_features.debug_logging_supported = cmn_vsc_cb.debug_logging_supported > 0; - memcpy(prop.val, &local_le_features, prop.len); HAL_CBACK(bt_hal_cbacks, adapter_properties_cb, BT_STATUS_SUCCESS, 1, &prop); break; diff --git a/btif/src/btif_gatt_client.c b/btif/src/btif_gatt_client.c index b052332ef..df766c101 100644 --- a/btif/src/btif_gatt_client.c +++ b/btif/src/btif_gatt_client.c @@ -116,8 +116,7 @@ typedef enum { #define BTIF_GATT_OBSERVE_EVT 0x1000 #define BTIF_GATTC_RSSI_EVT 0x1001 -#define BTIF_GATTC_SCAN_FILTER_EVT 0x1003 -#define BTIF_GATTC_SCAN_PARAM_EVT 0x1004 +#define BTIF_GATTC_SCAN_FILTER_EVT 0x1003 #define ENABLE_BATCH_SCAN 1 #define DISABLE_BATCH_SCAN 0 @@ -144,7 +143,7 @@ typedef struct uint8_t batch_scan_full_max; uint8_t batch_scan_trunc_max; uint8_t batch_scan_notify_threshold; - tBTA_BLE_BATCH_SCAN_MODE scan_mode; + tBTA_BLE_SCAN_MODE scan_mode; uint32_t scan_interval; uint32_t scan_window; tBTA_BLE_DISCARD_RULE discard_rule; @@ -191,8 +190,8 @@ typedef struct uint16_t conn_id; uint16_t len; uint16_t mask; - uint32_t scan_interval; - uint32_t scan_window; + uint16_t scan_interval; + uint16_t scan_window; uint8_t client_if; uint8_t action; uint8_t is_direct; @@ -251,62 +250,6 @@ static void btif_multi_adv_stop_cb(void *p_tle) btif_gattc_multi_adv_disable(client_if); // Does context switch } -static btgattc_error_t btif_gattc_translate_btm_status(tBTM_STATUS status) -{ - switch(status) - { - case BTM_SUCCESS: - case BTM_SUCCESS_NO_SECURITY: - return BT_GATTC_COMMAND_SUCCESS; - - case BTM_CMD_STARTED: - return BT_GATTC_COMMAND_STARTED; - - case BTM_BUSY: - return BT_GATTC_COMMAND_BUSY; - - case BTM_CMD_STORED: - return BT_GATTC_COMMAND_STORED; - - case BTM_NO_RESOURCES: - return BT_GATTC_NO_RESOURCES; - - case BTM_MODE_UNSUPPORTED: - case BTM_WRONG_MODE: - case BTM_MODE4_LEVEL4_NOT_SUPPORTED: - return BT_GATTC_MODE_UNSUPPORTED; - - case BTM_ILLEGAL_VALUE: - case BTM_SCO_BAD_LENGTH: - return BT_GATTC_ILLEGAL_VALUE; - - case BTM_UNKNOWN_ADDR: - return BT_GATTC_UNKNOWN_ADDR; - - case BTM_DEVICE_TIMEOUT: - return BT_GATTC_DEVICE_TIMEOUT; - - case BTM_FAILED_ON_SECURITY: - case BTM_REPEATED_ATTEMPTS: - case BTM_NOT_AUTHORIZED: - return BT_GATTC_SECURITY_ERROR; - - case BTM_DEV_RESET: - case BTM_ILLEGAL_ACTION: - return BT_GATTC_INCORRECT_STATE; - - case BTM_BAD_VALUE_RET: - return BT_GATTC_INVALID_CONTROLLER_OUTPUT; - - case BTM_DELAY_CHECK: - return BT_GATTC_DELAYED_ENCRYPTION_CHECK; - - case BTM_ERR_PROCESSING: - default: - return BT_GATTC_ERR_PROCESSING; - } -} - static void btapp_gattc_req_data(UINT16 event, char *p_dest, char *p_src) { tBTA_GATTC *p_dest_data = (tBTA_GATTC*) p_dest; @@ -636,7 +579,9 @@ static void btif_gattc_upstreams_evt(uint16_t event, char* p_param) { btif_gattc_add_remote_bdaddr(p_btif_cb->bd_addr.address, p_btif_cb->addr_type); btif_gattc_update_properties(p_btif_cb); + } + } if (( p_btif_cb->device_type == BT_DEVICE_TYPE_DUMO)&& @@ -841,14 +786,6 @@ static void btif_gattc_upstreams_evt(uint16_t event, char* p_param) break; } - case BTIF_GATTC_SCAN_PARAM_EVT: - { - btif_gattc_cb_t *p_btif_cb = (btif_gattc_cb_t *)p_param; - HAL_CBACK(bt_gatt_callbacks, client->scan_parameter_setup_completed_cb, - p_btif_cb->client_if, btif_gattc_translate_btm_status(p_btif_cb->status)); - break; - } - default: LOG_ERROR("%s: Unhandled event (%d)!", __FUNCTION__, event); break; @@ -1081,16 +1018,6 @@ static void btm_read_rssi_cb (tBTM_RSSI_RESULTS *p_result) (char*) &btif_cb, sizeof(btif_gattc_cb_t), NULL); } -static void bta_scan_param_setup_cb(tGATT_IF client_if, tBTM_STATUS status) -{ - btif_gattc_cb_t btif_cb; - - btif_cb.status = status; - btif_cb.client_if = client_if; - btif_transfer_context(btif_gattc_upstreams_evt, BTIF_GATTC_SCAN_PARAM_EVT, - (char *)&btif_cb, sizeof(btif_gattc_cb_t), NULL); -} - static void bta_scan_filt_cfg_cb(tBTA_DM_BLE_PF_ACTION action, tBTA_DM_BLE_SCAN_COND_OP cfg_op, tBTA_DM_BLE_PF_AVBL_SPACE avbl_space, tBTA_STATUS status, tBTA_DM_BLE_REF_VALUE ref_value) @@ -1699,11 +1626,8 @@ static void btgattc_handle_event(uint16_t event, char* p_param) } case BTIF_GATTC_SET_SCAN_PARAMS: - { - BTA_DmSetBleScanParams(p_cb->client_if, p_cb->scan_interval, p_cb->scan_window, - BTM_BLE_SCAN_MODE_ACTI, bta_scan_param_setup_cb); + BTM_BleSetScanParams(p_cb->scan_interval, p_cb->scan_window, BTM_BLE_SCAN_MODE_ACTI); break; - } case BTIF_GATTC_CONFIG_STORAGE_PARAMS: { @@ -2150,12 +2074,10 @@ static bt_status_t btif_gattc_scan_filter_enable(int client_if, bool enable) (char*) &btif_filt_cb, sizeof(btgatt_adv_filter_cb_t), NULL); } -static bt_status_t btif_gattc_set_scan_parameters(int client_if, int scan_interval, - int scan_window) +static bt_status_t btif_gattc_set_scan_parameters(int scan_interval, int scan_window) { CHECK_BTGATT_INIT(); btif_gattc_cb_t btif_cb; - btif_cb.client_if = client_if; btif_cb.scan_interval = scan_interval; btif_cb.scan_window = scan_window; return btif_transfer_context(btgattc_handle_event, BTIF_GATTC_SET_SCAN_PARAMS, diff --git a/stack/btm/btm_ble.c b/stack/btm/btm_ble.c index 245c30852..8201c5714 100644 --- a/stack/btm/btm_ble.c +++ b/stack/btm/btm_ble.c @@ -500,14 +500,14 @@ void BTM_BleOobDataReply(BD_ADDR bd_addr, UINT8 res, UINT8 len, UINT8 *p_data) ** Returns void ** *******************************************************************************/ -void BTM_BleSetConnScanParams (UINT32 scan_interval, UINT32 scan_window) +void BTM_BleSetConnScanParams (UINT16 scan_interval, UINT16 scan_window) { #if SMP_INCLUDED == TRUE tBTM_BLE_CB *p_ble_cb = &btm_cb.ble_ctr_cb; BOOLEAN new_param = FALSE; - if (BTM_BLE_ISVALID_PARAM(scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) && - BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX)) + if (BTM_BLE_VALID_PRAM(scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) && + BTM_BLE_VALID_PRAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX)) { if (p_ble_cb->scan_int != scan_interval) { @@ -560,9 +560,9 @@ void BTM_BleSetPrefConnParams (BD_ADDR bd_addr, tout: %u", min_conn_int, max_conn_int, slave_latency, supervision_tout); - if (BTM_BLE_ISVALID_PARAM(min_conn_int, BTM_BLE_CONN_INT_MIN, BTM_BLE_CONN_INT_MAX) && - BTM_BLE_ISVALID_PARAM(max_conn_int, BTM_BLE_CONN_INT_MIN, BTM_BLE_CONN_INT_MAX) && - BTM_BLE_ISVALID_PARAM(supervision_tout, BTM_BLE_CONN_SUP_TOUT_MIN, BTM_BLE_CONN_SUP_TOUT_MAX) && + if (BTM_BLE_VALID_PRAM(min_conn_int, BTM_BLE_CONN_INT_MIN, BTM_BLE_CONN_INT_MAX) && + BTM_BLE_VALID_PRAM(max_conn_int, BTM_BLE_CONN_INT_MIN, BTM_BLE_CONN_INT_MAX) && + BTM_BLE_VALID_PRAM(supervision_tout, BTM_BLE_CONN_SUP_TOUT_MIN, BTM_BLE_CONN_SUP_TOUT_MAX) && (slave_latency <= BTM_BLE_CONN_LATENCY_MAX || slave_latency == BTM_BLE_CONN_PARAM_UNDEF)) { if (p_dev_rec) diff --git a/stack/btm/btm_ble_adv_filter.c b/stack/btm/btm_ble_adv_filter.c index 74dddddcd..ad6a56ca5 100644 --- a/stack/btm/btm_ble_adv_filter.c +++ b/stack/btm/btm_ble_adv_filter.c @@ -1106,12 +1106,12 @@ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, tBTM_BLE_PF_FILT_INDEX filt_i UINT8_TO_STREAM(p, p_filt_params->rssi_low_thres); /* set onlost timeout */ UINT16_TO_STREAM(p, p_filt_params->lost_timeout); - /* set num_of_track_entries for firmware greater than L-release version */ - if (cmn_ble_vsc_cb.version_supported > BTM_VSC_CHIP_CAPABILITY_L_VERSION) + /* set num_of_track_entries for firmware supporting v0.90 spec and greater */ + if (cmn_ble_vsc_cb.version_supported > 0) UINT16_TO_STREAM(p, p_filt_params->num_of_tracking_entries); } - if (cmn_ble_vsc_cb.version_supported == BTM_VSC_CHIP_CAPABILITY_L_VERSION) + if (0 == cmn_ble_vsc_cb.version_supported) len = BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_ADV_FILT_FEAT_SELN_LEN; else len = BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_ADV_FILT_FEAT_SELN_LEN + diff --git a/stack/btm/btm_ble_batchscan.c b/stack/btm/btm_ble_batchscan.c index 3b6d2a9b3..d8add82f0 100644 --- a/stack/btm/btm_ble_batchscan.c +++ b/stack/btm/btm_ble_batchscan.c @@ -82,8 +82,9 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(UINT8 len, UINT8 *p) memset(&adv_data, 0 , sizeof(tBTM_BLE_TRACK_ADV_DATA)); BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); adv_data.client_if = (UINT8)ble_advtrack_cb.ref_value; - if (cmn_ble_vsc_cb.version_supported > BTM_VSC_CHIP_CAPABILITY_L_VERSION) + if (cmn_ble_vsc_cb.version_supported > 0) { + /* Based on spec v0.90 */ STREAM_TO_UINT8(adv_data.filt_index, p); STREAM_TO_UINT8(adv_data.advertiser_state, p); STREAM_TO_UINT8(adv_data.advertiser_info_present, p); @@ -114,7 +115,7 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(UINT8 len, UINT8 *p) } else { - /* Based on L-release version */ + /* Based on spec v0.52 */ STREAM_TO_UINT8(adv_data.filt_index, p); STREAM_TO_UINT8(adv_data.addr_type, p); STREAM_TO_BDADDR(adv_data.bd_addr.address, p); @@ -741,8 +742,8 @@ tBTM_STATUS BTM_BleEnableBatchScan(tBTM_BLE_BATCH_SCAN_MODE scan_mode, /* Only 16 bits will be used for scan interval and scan window as per agreement with Google */ /* So the standard LE range would suffice for scan interval and scan window */ - if ((BTM_BLE_ISVALID_PARAM(scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) || - BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX)) + if ((BTM_BLE_VALID_PRAM(scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) || + BTM_BLE_VALID_PRAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX)) && (BTM_BLE_BATCH_SCAN_MODE_PASS == scan_mode || BTM_BLE_BATCH_SCAN_MODE_ACTI == scan_mode || BTM_BLE_BATCH_SCAN_MODE_PASS_ACTI == scan_mode) && (BTM_BLE_DISCARD_OLD_ITEMS == discard_rule || diff --git a/stack/btm/btm_ble_bgconn.c b/stack/btm/btm_ble_bgconn.c index 707810efa..0e65e2be6 100644 --- a/stack/btm/btm_ble_bgconn.c +++ b/stack/btm/btm_ble_bgconn.c @@ -112,33 +112,21 @@ static bool background_connections_pending() { ** ** Function btm_update_scanner_filter_policy ** -** Description This function updates the filter policy of scanner +** Description This function update the filter policy of scnner or advertiser. *******************************************************************************/ void btm_update_scanner_filter_policy(tBTM_BLE_SFP scan_policy) { tBTM_BLE_INQ_CB *p_inq = &btm_cb.ble_ctr_cb.inq_var; - - UINT32 scan_interval = !p_inq->scan_interval ? BTM_BLE_GAP_DISC_SCAN_INT : p_inq->scan_interval; - UINT32 scan_window = !p_inq->scan_window ? BTM_BLE_GAP_DISC_SCAN_WIN : p_inq->scan_window; - - BTM_TRACE_EVENT ("%s", __func__); + BTM_TRACE_EVENT ("btm_update_scanner_filter_policy"); p_inq->sfp = scan_policy; - p_inq->scan_type = p_inq->scan_type == BTM_BLE_SCAN_MODE_NONE ? BTM_BLE_SCAN_MODE_ACTI : p_inq->scan_type; + p_inq->scan_type = (p_inq->scan_type == BTM_BLE_SCAN_MODE_NONE) ? BTM_BLE_SCAN_MODE_ACTI: p_inq->scan_type; - if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) - { - btsnd_hcic_ble_set_scan_params(p_inq->scan_type, (UINT16)scan_interval, - (UINT16)scan_window, - btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, - scan_policy); - } - else - { - btm_ble_send_extended_scan_params(p_inq->scan_type, scan_interval, scan_window, - btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, - scan_policy); - } + btsnd_hcic_ble_set_scan_params (p_inq->scan_type, + (UINT16)(!p_inq->scan_interval ? BTM_BLE_GAP_DISC_SCAN_INT : p_inq->scan_interval), + (UINT16)(!p_inq->scan_window ? BTM_BLE_GAP_DISC_SCAN_WIN : p_inq->scan_window), + btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, + scan_policy); } /******************************************************************************* ** @@ -463,13 +451,15 @@ BOOLEAN btm_ble_start_auto_conn(BOOLEAN start) ** Returns BOOLEAN: selective connectino procedure is started. ** *******************************************************************************/ -BOOLEAN btm_ble_start_select_conn(BOOLEAN start, tBTM_BLE_SEL_CBACK *p_select_cback) +BOOLEAN btm_ble_start_select_conn(BOOLEAN start,tBTM_BLE_SEL_CBACK *p_select_cback) { tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb; - UINT32 scan_int = p_cb->scan_int == BTM_BLE_CONN_PARAM_UNDEF ? BTM_BLE_SCAN_FAST_INT : p_cb->scan_int; - UINT32 scan_win = p_cb->scan_win == BTM_BLE_CONN_PARAM_UNDEF ? BTM_BLE_SCAN_FAST_WIN : p_cb->scan_win; + UINT16 scan_int, scan_win; + + BTM_TRACE_EVENT ("btm_ble_start_select_conn"); - BTM_TRACE_EVENT ("%s", __func__); + scan_int = (p_cb->scan_int == BTM_BLE_CONN_PARAM_UNDEF) ? BTM_BLE_SCAN_FAST_INT : p_cb->scan_int; + scan_win = (p_cb->scan_win == BTM_BLE_CONN_PARAM_UNDEF) ? BTM_BLE_SCAN_FAST_WIN : p_cb->scan_win; if (start) { @@ -483,30 +473,13 @@ BOOLEAN btm_ble_start_select_conn(BOOLEAN start, tBTM_BLE_SEL_CBACK *p_select_cb btm_update_scanner_filter_policy(SP_ADV_WL); btm_cb.ble_ctr_cb.inq_var.scan_type = BTM_BLE_SCAN_MODE_PASS; - /* Process advertising packets only from devices in the white list */ - if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) - { - /* use passive scan by default */ - if (!btsnd_hcic_ble_set_scan_params(BTM_BLE_SCAN_MODE_PASS, - scan_int, - scan_win, - p_cb->addr_mgnt_cb.own_addr_type, - SP_ADV_WL)) - { - return FALSE; - } - } - else - { - if (!btm_ble_send_extended_scan_params(BTM_BLE_SCAN_MODE_PASS, - scan_int, - scan_win, - p_cb->addr_mgnt_cb.own_addr_type, - SP_ADV_WL)) - { - return FALSE; - } - } + if (!btsnd_hcic_ble_set_scan_params(BTM_BLE_SCAN_MODE_PASS, /* use passive scan by default */ + scan_int, /* scan interval */ + scan_win, /* scan window */ + p_cb->addr_mgnt_cb.own_addr_type, + SP_ADV_WL) /* process advertising packets only from devices in the White List */ + ) + return FALSE; if (!btm_ble_topology_check(BTM_BLE_STATE_PASSIVE_SCAN)) { @@ -517,6 +490,7 @@ BOOLEAN btm_ble_start_select_conn(BOOLEAN start, tBTM_BLE_SEL_CBACK *p_select_cb { if (!btsnd_hcic_ble_set_scan_enable(TRUE, TRUE)) /* duplicate filtering enabled */ return FALSE; + /* mark up inquiry status flag */ p_cb->scan_activity |= BTM_LE_SELECT_CONN_ACTIVE; p_cb->wl_state |= BTM_BLE_WL_SCAN; diff --git a/stack/btm/btm_ble_gap.c b/stack/btm/btm_ble_gap.c index 8436383ec..8912c25d5 100644 --- a/stack/btm/btm_ble_gap.c +++ b/stack/btm/btm_ble_gap.c @@ -53,9 +53,7 @@ #define BTM_EXT_BLE_RMT_NAME_TIMEOUT 30 #define MIN_ADV_LENGTH 2 -#define BTM_VSC_CHIP_CAPABILITY_RSP_LEN_L_RELEASE 9 - -static tBTM_BLE_VSC_CB cmn_ble_vsc_cb; +#define BTM_NEW_VSC_CHIP_CAPBLTY_RSP_LEN 13 #if BLE_VND_INCLUDED == TRUE static tBTM_BLE_CTRL_FEATURES_CBACK *p_ctrl_le_feature_rd_cmpl_cback = NULL; @@ -288,47 +286,6 @@ void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy) } } - -/******************************************************************************* -** -** Function btm_ble_send_extended_scan_params -** -** Description This function sends out the extended scan parameters command to the controller -** -** Parameters scan_type - Scan type -** scan_int - Scan interval -** scan_win - Scan window -** addr_type_own - Own address type -** scan_filter_policy - Scan filter policy -** -** Returns TRUE or FALSE -** -*******************************************************************************/ -BOOLEAN btm_ble_send_extended_scan_params(UINT8 scan_type, UINT32 scan_int, - UINT32 scan_win, UINT8 addr_type_own, - UINT8 scan_filter_policy) -{ - UINT8 scan_param[HCIC_PARAM_SIZE_BLE_WRITE_EXTENDED_SCAN_PARAM]; - UINT8 *pp_scan = scan_param; - - memset(scan_param, 0, HCIC_PARAM_SIZE_BLE_WRITE_EXTENDED_SCAN_PARAM); - - UINT8_TO_STREAM(pp_scan, scan_type); - UINT32_TO_STREAM(pp_scan, scan_int); - UINT32_TO_STREAM(pp_scan, scan_win); - UINT8_TO_STREAM(pp_scan, addr_type_own); - UINT8_TO_STREAM(pp_scan, scan_filter_policy); - - BTM_TRACE_DEBUG("%s, %d, %d", __func__, scan_int, scan_win); - if ((BTM_VendorSpecificCommand(HCI_BLE_EXTENDED_SCAN_PARAMS_OCF, - HCIC_PARAM_SIZE_BLE_WRITE_EXTENDED_SCAN_PARAM, scan_param, NULL)) != BTM_SUCCESS) - { - BTM_TRACE_ERROR("%s error sending extended scan parameters", __func__); - return FALSE; - } - return TRUE; -} - /******************************************************************************* ** ** Function BTM_BleObserve @@ -348,11 +305,7 @@ tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, tBTM_BLE_INQ_CB *p_inq = &btm_cb.ble_ctr_cb.inq_var; tBTM_STATUS status = BTM_WRONG_MODE; - UINT32 scan_interval = !p_inq->scan_interval ? BTM_BLE_GAP_DISC_SCAN_INT : p_inq->scan_interval; - UINT32 scan_window = !p_inq->scan_window ? BTM_BLE_GAP_DISC_SCAN_WIN : p_inq->scan_window; - - BTM_TRACE_EVENT ("BTM_BleObserve : scan_type:%d, %d, %d",btm_cb.btm_inq_vars.scan_type, - p_inq->scan_interval, p_inq->scan_window); + BTM_TRACE_EVENT ("BTM_BleObserve : scan_type:%d",btm_cb.btm_inq_vars.scan_type); if (!controller_get_interface()->supports_ble()) return BTM_ILLEGAL_VALUE; @@ -373,23 +326,13 @@ tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, /* scan is not started */ if (!BTM_BLE_IS_SCAN_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) { - /* allow config of scan type */ - p_inq->scan_type = (p_inq->scan_type == BTM_BLE_SCAN_MODE_NONE) ? - BTM_BLE_SCAN_MODE_ACTI: p_inq->scan_type; - /* assume observe always not using white list */ - if (cmn_ble_vsc_cb.extended_scan_support == 0) - { - btsnd_hcic_ble_set_scan_params(p_inq->scan_type, (UINT16)scan_interval, - (UINT16)scan_window, - btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, - BTM_BLE_DEFAULT_SFP); - } - else - { - btm_ble_send_extended_scan_params(p_inq->scan_type, scan_interval, scan_window, - btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, - BTM_BLE_DEFAULT_SFP); - } + p_inq->scan_type = (p_inq->scan_type == BTM_BLE_SCAN_MODE_NONE) ? BTM_BLE_SCAN_MODE_ACTI: p_inq->scan_type; + /* allow config scanning type */ + btsnd_hcic_ble_set_scan_params (p_inq->scan_type, + (UINT16)(!p_inq->scan_interval ? BTM_BLE_GAP_DISC_SCAN_INT : p_inq->scan_interval), + (UINT16)(!p_inq->scan_window ? BTM_BLE_GAP_DISC_SCAN_WIN : p_inq->scan_window), + btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, + BTM_BLE_DEFAULT_SFP); /* assume observe always not using white list */ #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) /* enable resolving list */ @@ -481,6 +424,7 @@ tBTM_STATUS BTM_BleBroadcast(BOOLEAN start) return status; } +#if BLE_VND_INCLUDED == TRUE /******************************************************************************* ** ** Function btm_vsc_brcm_features_complete @@ -492,65 +436,54 @@ tBTM_STATUS BTM_BleBroadcast(BOOLEAN start) *******************************************************************************/ static void btm_ble_vendor_capability_vsc_cmpl_cback (tBTM_VSC_CMPL *p_vcs_cplt_params) { -#if BLE_VND_INCLUDED == TRUE - UINT8 status = 0xFF; - UINT8 *p; + UINT8 status = 0xFF, *p; - BTM_TRACE_DEBUG("%s", __func__); + BTM_TRACE_DEBUG("btm_ble_vendor_capability_vsc_cmpl_cback"); /* Check status of command complete event */ - if ((p_vcs_cplt_params->opcode == HCI_BLE_VENDOR_CAP_OCF) && - (p_vcs_cplt_params->param_len > 0)) + if ((p_vcs_cplt_params->opcode == HCI_BLE_VENDOR_CAP_OCF) &&(p_vcs_cplt_params->param_len > 0)) { p = p_vcs_cplt_params->p_param_buf; - STREAM_TO_UINT8(status, p); + STREAM_TO_UINT8 (status, p); } if (status == HCI_SUCCESS) { - STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.adv_inst_max, p); - STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.rpa_offloading, p); - STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.tot_scan_results_strg, p); - STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.max_irk_list_sz, p); - STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.filter_support, p); - STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.max_filter, p); - STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.energy_support, p); - - if (p_vcs_cplt_params->param_len > BTM_VSC_CHIP_CAPABILITY_RSP_LEN_L_RELEASE) - { - STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.version_supported, p); - } - else - { - btm_cb.cmn_ble_vsc_cb.version_supported = BTM_VSC_CHIP_CAPABILITY_L_VERSION; - } + STREAM_TO_UINT8 (btm_cb.cmn_ble_vsc_cb.adv_inst_max, p); + STREAM_TO_UINT8 (btm_cb.cmn_ble_vsc_cb.rpa_offloading, p); + STREAM_TO_UINT16 (btm_cb.cmn_ble_vsc_cb.tot_scan_results_strg, p); + STREAM_TO_UINT8 (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz, p); + STREAM_TO_UINT8 (btm_cb.cmn_ble_vsc_cb.filter_support, p); + STREAM_TO_UINT8 (btm_cb.cmn_ble_vsc_cb.max_filter, p); + STREAM_TO_UINT8 (btm_cb.cmn_ble_vsc_cb.energy_support, p); - if (btm_cb.cmn_ble_vsc_cb.version_supported > BTM_VSC_CHIP_CAPABILITY_L_VERSION && - btm_cb.cmn_ble_vsc_cb.version_supported <= BTM_VSC_CHIP_CAPABILITY_M_VERSION) + if (BTM_NEW_VSC_CHIP_CAPBLTY_RSP_LEN == p_vcs_cplt_params->param_len) { - STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.total_trackable_advertisers, p); - STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.extended_scan_support, p); - STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.debug_logging_supported, p); + STREAM_TO_UINT16 (btm_cb.cmn_ble_vsc_cb.version_supported, p); + STREAM_TO_UINT16 (btm_cb.cmn_ble_vsc_cb.total_trackable_advertisers, p); } btm_cb.cmn_ble_vsc_cb.values_read = TRUE; } - BTM_TRACE_DEBUG("%s: stat=%d, irk=%d, ADV ins:%d, rpa=%d, ener=%d", - __func__, status, btm_cb.cmn_ble_vsc_cb.max_irk_list_sz, - btm_cb.cmn_ble_vsc_cb.adv_inst_max, btm_cb.cmn_ble_vsc_cb.rpa_offloading, - btm_cb.cmn_ble_vsc_cb.energy_support); + BTM_TRACE_DEBUG("btm_ble_vnd_cap_vsc_cmpl_cback: stat=%d, irk=%d, ADV ins:%d, rpa=%d, ener=%d", + status,btm_cb.cmn_ble_vsc_cb.max_irk_list_sz, btm_cb.cmn_ble_vsc_cb.adv_inst_max, + btm_cb.cmn_ble_vsc_cb.rpa_offloading, btm_cb.cmn_ble_vsc_cb.energy_support); if (BTM_BleMaxMultiAdvInstanceCount() > 0) btm_ble_multi_adv_init(); if (btm_cb.cmn_ble_vsc_cb.max_filter > 0) + { btm_ble_adv_filter_init(); + } #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) /* VS capability included and non-4.2 device */ if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz > 0 && controller_get_interface()->get_ble_resolving_list_max_size() == 0) + { btm_ble_resolving_list_init(btm_cb.cmn_ble_vsc_cb.max_irk_list_sz); + } #endif if (btm_cb.cmn_ble_vsc_cb.tot_scan_results_strg > 0) @@ -558,8 +491,8 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback (tBTM_VSC_CMPL *p_vcs_cplt_ if (p_ctrl_le_feature_rd_cmpl_cback != NULL) p_ctrl_le_feature_rd_cmpl_cback(status); -#endif } +#endif /******************************************************************************* ** @@ -1022,8 +955,8 @@ tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, if (!controller_get_interface()->supports_ble()) return BTM_ILLEGAL_VALUE; - if (!BTM_BLE_ISVALID_PARAM(adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) || - !BTM_BLE_ISVALID_PARAM(adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) + if (!BTM_BLE_VALID_PRAM(adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) || + !BTM_BLE_VALID_PRAM(adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) { return BTM_ILLEGAL_VALUE; } @@ -1097,58 +1030,39 @@ void BTM_BleReadAdvParams (UINT16 *adv_int_min, UINT16 *adv_int_max, ** ** Function BTM_BleSetScanParams ** -** Description This function is called to set scan parameters. +** Description This function is called to set Scan parameters. ** -** Parameters client_if - Client IF -** scan_interval - Scan interval -** scan_window - Scan window -** scan_mode - Scan mode -** scan_setup_status_cback - Scan param setup status callback +** Parameters adv_int_min: minimum advertising interval +** adv_int_max: maximum advertising interval +** p_dir_bda: connectable direct initiator's LE device address +** chnl_map: advertising channel map. +** scan_type: active scan or passive scan ** ** Returns void ** *******************************************************************************/ -void BTM_BleSetScanParams(tGATT_IF client_if, UINT32 scan_interval, UINT32 scan_window, - tBLE_SCAN_MODE scan_mode, - tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback) +void BTM_BleSetScanParams(UINT16 scan_interval, UINT16 scan_window, tBTM_BLE_SCAN_MODE scan_mode) { tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; - UINT32 max_scan_interval; - UINT32 max_scan_window; - BTM_TRACE_EVENT ("%s", __func__); + BTM_TRACE_EVENT (" BTM_BleSetScanParams"); if (!controller_get_interface()->supports_ble()) - return; + return ; - /* If not supporting extended scan support, use the older range for checking */ - if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) + if (BTM_BLE_VALID_PRAM(scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) && + BTM_BLE_VALID_PRAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX) && + (scan_mode == BTM_BLE_SCAN_MODE_ACTI || scan_mode == BTM_BLE_SCAN_MODE_PASS)) { - max_scan_interval = BTM_BLE_SCAN_INT_MAX; - max_scan_window = BTM_BLE_SCAN_WIN_MAX; - } - else - { - /* If supporting extended scan support, use the new extended range for checking */ - max_scan_interval = BTM_BLE_EXT_SCAN_INT_MAX; - max_scan_window = BTM_BLE_EXT_SCAN_WIN_MAX; - } + p_cb->scan_type = scan_mode; - if (BTM_BLE_ISVALID_PARAM(scan_interval, BTM_BLE_SCAN_INT_MIN, max_scan_interval) && - BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, max_scan_window) && - (scan_mode == BTM_BLE_SCAN_MODE_ACTI || scan_mode == BTM_BLE_SCAN_MODE_PASS)) - { - p_cb->scan_type = scan_mode; - p_cb->scan_interval = scan_interval; - p_cb->scan_window = scan_window; + if (BTM_BLE_CONN_PARAM_UNDEF != scan_interval) + p_cb->scan_interval = scan_interval; - if (scan_setup_status_cback != NULL) - scan_setup_status_cback(client_if, BTM_SUCCESS); + if (BTM_BLE_CONN_PARAM_UNDEF != scan_window) + p_cb->scan_window = scan_window; } else { - if (scan_setup_status_cback != NULL) - scan_setup_status_cback(client_if, BTM_ILLEGAL_VALUE); - BTM_TRACE_ERROR("Illegal params: scan_interval = %d scan_window = %d", scan_interval, scan_window); } diff --git a/stack/btm/btm_ble_int.h b/stack/btm/btm_ble_int.h index f571b6142..adf0837e4 100644 --- a/stack/btm/btm_ble_int.h +++ b/stack/btm/btm_ble_int.h @@ -96,9 +96,6 @@ typedef UINT8 tBTM_BLE_SEC_REQ_ACT; /* BLE ADDR type ID bit */ #define BLE_ADDR_TYPE_ID_BIT 0x02 -#define BTM_VSC_CHIP_CAPABILITY_L_VERSION 55 -#define BTM_VSC_CHIP_CAPABILITY_M_VERSION 95 - typedef struct { UINT16 data_mask; @@ -120,7 +117,7 @@ typedef struct #define BTM_BLE_ADV_DATA_LEN_MAX 31 #define BTM_BLE_CACHE_ADV_DATA_MAX 62 -#define BTM_BLE_ISVALID_PARAM(x, min, max) (((x) >= (min) && (x) <= (max)) || ((x) == BTM_BLE_CONN_PARAM_UNDEF)) +#define BTM_BLE_VALID_PRAM(x, min, max) (((x) >= (min) && (x) <= (max)) || ((x) == BTM_BLE_CONN_PARAM_UNDEF)) #define BTM_BLE_PRIVATE_ADDR_INT 900 /* 15 minutes minimum for random address refreshing */ @@ -130,8 +127,8 @@ typedef struct UINT16 discoverable_mode; UINT16 connectable_mode; - UINT32 scan_window; - UINT32 scan_interval; + UINT16 scan_window; + UINT16 scan_interval; UINT8 scan_type; /* current scan type: active or passive */ UINT16 adv_interval_min; UINT16 adv_interval_max; @@ -301,10 +298,10 @@ typedef struct TIMER_LIST_ENT obs_timer_ent; /* background connection procedure cb value */ - tBTM_BLE_CONN_TYPE bg_conn_type; - UINT32 scan_int; - UINT32 scan_win; - tBTM_BLE_SEL_CBACK *p_select_cback; + tBTM_BLE_CONN_TYPE bg_conn_type; + UINT16 scan_int; + UINT16 scan_win; + tBTM_BLE_SEL_CBACK *p_select_cback; /* white list information */ UINT8 white_list_avail_size; @@ -349,9 +346,6 @@ extern void btm_ble_stop_scan(void); extern void btm_clear_all_pending_le_entry(void); extern void btm_ble_stop_scan(); -extern BOOLEAN btm_ble_send_extended_scan_params(UINT8 scan_type, UINT32 scan_int, - UINT32 scan_win, UINT8 addr_type_own, - UINT8 scan_filter_policy); extern void btm_ble_stop_inquiry(void); extern void btm_ble_init (void); extern void btm_ble_connected (UINT8 *bda, UINT16 handle, UINT8 enc_mode, UINT8 role, tBLE_ADDR_TYPE addr_type, BOOLEAN addr_matched); diff --git a/stack/include/btm_api.h b/stack/include/btm_api.h index a1a92da78..a4d1ba36e 100644 --- a/stack/include/btm_api.h +++ b/stack/include/btm_api.h @@ -64,8 +64,7 @@ enum BTM_REPEATED_ATTEMPTS, /* 19 repeated attempts for LE security requests */ BTM_MODE4_LEVEL4_NOT_SUPPORTED /* 20 Secure Connections Only Mode can't be supported */ }; - -typedef uint8_t tBTM_STATUS; +typedef UINT8 tBTM_STATUS; #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) typedef enum diff --git a/stack/include/btm_ble_api.h b/stack/include/btm_ble_api.h index 16f717c86..b941d1595 100644 --- a/stack/include/btm_ble_api.h +++ b/stack/include/btm_ble_api.h @@ -55,7 +55,7 @@ typedef UINT32 tBTM_BLE_REF_VALUE; #define BTM_BLE_SCAN_MODE_PASS 0 #define BTM_BLE_SCAN_MODE_ACTI 1 #define BTM_BLE_SCAN_MODE_NONE 0xff -typedef UINT8 tBLE_SCAN_MODE; +typedef UINT8 tBTM_BLE_SCAN_MODE; #define BTM_BLE_BATCH_SCAN_MODE_DISABLE 0 #define BTM_BLE_BATCH_SCAN_MODE_PASS 1 @@ -125,8 +125,6 @@ typedef UINT8 tBTM_BLE_SFP; #define BTM_BLE_SCAN_INT_MAX 0x4000 #define BTM_BLE_SCAN_WIN_MIN 0x0004 #define BTM_BLE_SCAN_WIN_MAX 0x4000 -#define BTM_BLE_EXT_SCAN_INT_MAX 0x00FFFFFF -#define BTM_BLE_EXT_SCAN_WIN_MAX 0xFFFF #define BTM_BLE_CONN_INT_MIN 0x0006 #define BTM_BLE_CONN_INT_MAX 0x0C80 #define BTM_BLE_CONN_LATENCY_MAX 500 @@ -363,10 +361,8 @@ typedef struct UINT8 max_filter; UINT8 energy_support; BOOLEAN values_read; - UINT16 version_supported; - UINT16 total_trackable_advertisers; - UINT8 extended_scan_support; - UINT8 debug_logging_supported; + UINT16 version_supported; + UINT16 total_trackable_advertisers; }tBTM_BLE_VSC_CB; /* slave preferred connection interval range */ @@ -505,8 +501,6 @@ typedef struct tBTM_BLE_MULTI_ADV_OPQ op_q; }tBTM_BLE_MULTI_ADV_CB; -typedef UINT8 tGATT_IF; - typedef void (tBTM_BLE_SCAN_THRESHOLD_CBACK)(tBTM_BLE_REF_VALUE ref_value); typedef void (tBTM_BLE_SCAN_REP_CBACK)(tBTM_BLE_REF_VALUE ref_value, UINT8 report_format, UINT8 num_records, UINT16 total_len, @@ -865,7 +859,6 @@ typedef void (tBTM_BLE_VERIFY_CBACK)(void *p_ref_data, BOOLEAN match); typedef void (tBTM_BLE_RANDOM_SET_CBACK) (BD_ADDR random_bda); typedef void (tBTM_BLE_SCAN_REQ_CBACK)(BD_ADDR remote_bda, tBLE_ADDR_TYPE addr_type, UINT8 adv_evt); -typedef void (*tBLE_SCAN_PARAM_SETUP_CBACK)(tGATT_IF client_if, tBTM_STATUS status); tBTM_BLE_SCAN_SETUP_CBACK bta_ble_scan_setup_cb; @@ -976,19 +969,15 @@ extern void BTM_BleObtainVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); ** ** Description This function is called to set Scan parameters. ** -** Parameters client_if - Client IF value -** scan_interval - Scan interval -** scan_window - Scan window -** scan_type - Scan type -** scan_setup_status_cback - Scan setup status callback +** Parameters adv_int_min: minimum advertising interval +** adv_int_max: maximum advertising interval +** scan_type: scan mode. ** ** Returns void ** *******************************************************************************/ -extern void BTM_BleSetScanParams(tGATT_IF client_if, UINT32 scan_interval, - UINT32 scan_window, tBLE_SCAN_MODE scan_type, - tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback); - +extern void BTM_BleSetScanParams(UINT16 scan_interval, UINT16 scan_window, + tBTM_BLE_SCAN_MODE scan_type); /******************************************************************************* ** ** Function BTM_BleGetVendorCapabilities @@ -1065,13 +1054,13 @@ extern tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value); ** ** Description This function is called to read batch scan reports ** -** Parameters tBLE_SCAN_MODE scan_mode - Scan mode report to be read out +** Parameters tBTM_BLE_SCAN_MODE scan_mode - Scan mode report to be read out tBTM_BLE_SCAN_REP_CBACK* p_cback - Reports callback ** ** Returns tBTM_STATUS ** *******************************************************************************/ -extern tBTM_STATUS BTM_BleReadScanReports(tBLE_SCAN_MODE scan_mode, +extern tBTM_STATUS BTM_BleReadScanReports(tBTM_BLE_SCAN_MODE scan_mode, tBTM_BLE_REF_VALUE ref_value); /******************************************************************************* @@ -1382,7 +1371,7 @@ extern void BTM_BleSetPrefConnParams (BD_ADDR bd_addr, ** Returns void ** *******************************************************************************/ -extern void BTM_BleSetConnScanParams (UINT32 scan_interval, UINT32 scan_window); +extern void BTM_BleSetConnScanParams (UINT16 scan_interval, UINT16 scan_window); /****************************************************************************** ** diff --git a/stack/include/gatt_api.h b/stack/include/gatt_api.h index c00fcae6e..3c8b50404 100644 --- a/stack/include/gatt_api.h +++ b/stack/include/gatt_api.h @@ -20,7 +20,6 @@ #include "bt_target.h" #include "gattdefs.h" -#include "btm_ble_api.h" /***************************************************************************** ** Constants @@ -549,6 +548,7 @@ typedef struct } tGATT_DISC_RES; +typedef UINT8 tGATT_IF; #define GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP 0 /* start a idle timer for this duration when no application need to use the link */ diff --git a/stack/include/hcidefs.h b/stack/include/hcidefs.h index 42dcd48a1..04c5ed665 100644 --- a/stack/include/hcidefs.h +++ b/stack/include/hcidefs.h @@ -364,9 +364,6 @@ /* Energy info OCF */ #define HCI_BLE_ENERGY_INFO_OCF (0x0159 | HCI_GRP_VENDOR_SPECIFIC) -/* Extended BLE Scan parameters OCF */ -#define HCI_BLE_EXTENDED_SCAN_PARAMS_OCF (0x0160 | HCI_GRP_VENDOR_SPECIFIC) - /* subcode for multi adv feature */ #define BTM_BLE_MULTI_ADV_SET_PARAM 0x01 #define BTM_BLE_MULTI_ADV_WRITE_ADV_DATA 0x02 diff --git a/stack/include/hcimsgs.h b/stack/include/hcimsgs.h index b59cbfa5a..672f5fb4c 100644 --- a/stack/include/hcimsgs.h +++ b/stack/include/hcimsgs.h @@ -680,7 +680,6 @@ extern void btsnd_hcic_vendor_spec_cmd (void *buffer, UINT16 opcode, #define HCIC_PARAM_SIZE_BLE_SET_ADDR_RESOLUTION_ENABLE 1 #define HCIC_PARAM_SIZE_BLE_SET_RAND_PRIV_ADDR_TIMOUT 2 #define HCIC_PARAM_SIZE_BLE_SET_DATA_LENGTH 6 -#define HCIC_PARAM_SIZE_BLE_WRITE_EXTENDED_SCAN_PARAM 11 /* ULP HCI command */ extern BOOLEAN btsnd_hcic_ble_set_evt_mask (BT_EVENT_MASK event_mask); -- 2.11.0