/******************************************************************************
*
- * Copyright (C) 2003-2012 Broadcom Corporation
+ * Copyright (C) 2003-2014 Broadcom Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
UINT8 *p_remote_name;
tBTA_BLE_SERVICE service;
} tBTA_BLE_INQ_DATA;
+
+enum
+{
+ BTA_BLE_SCAN_MODE_PASS=1,
+ BTA_BLE_SCAN_MODE_ACTI=2,
+ BTA_BLE_SCAN_MODE_PASS_ACTI=3
+};
+typedef UINT8 tBTA_BLE_SCAN_MODE;
+
+enum
+{
+ BTA_BLE_DISCARD_OLD_ITEMS=0,
+ BTA_BLE_DISCARD_LOWER_RSSI_ITEMS=1
+};
+typedef UINT8 tBTA_BLE_DISCARD_RULE;
+
+enum
+{
+ BTA_BLE_ADV_SEEN_FIRST_TIME=0,
+ BTA_BLE_ADV_TRACKING_TIMEOUT=1
+};
+typedef UINT8 tBTA_BLE_ADV_CHANGE_REASON;
+
+enum
+{
+ BTA_BLE_BATCH_SCAN_ENB_EVT = 1,
+ BTA_BLE_BATCH_SCAN_CFG_STRG_EVT = 2,
+ BTA_BLE_BATCH_SCAN_DATA_EVT = 3,
+ BTA_BLE_BATCH_SCAN_THRES_EVT = 4,
+ BTA_BLE_BATCH_SCAN_PARAM_EVT = 5,
+ BTA_BLE_BATCH_SCAN_DIS_EVT = 6
+};
+typedef tBTM_BLE_BATCH_SCAN_EVT tBTA_BLE_BATCH_SCAN_EVT;
+
+typedef tBTM_BLE_TRACK_ADV_ACTION tBTA_BLE_TRACK_ADV_ACTION;
#endif
/* BLE customer specific feature function type definitions */
};
typedef UINT8 tBTA_DM_BLE_SCAN_COND_OP;
+/* ADV payload filtering vendor specific call event */
+enum
+{
+ BTA_BLE_SCAN_PF_ENABLE_EVT = 7,
+ BTA_BLE_SCAN_PF_COND_EVT
+};
+
/* filter selection bit index */
#define BTA_DM_BLE_PF_ADDR_FILTER BTM_BLE_PF_ADDR_FILTER
#define BTA_DM_BLE_PF_SRVC_DATA BTM_BLE_PF_SRVC_DATA
#define BTA_DM_BLE_PF_LOCAL_NAME BTM_BLE_PF_LOCAL_NAME
#define BTA_DM_BLE_PF_MANU_DATA BTM_BLE_PF_MANU_DATA
#define BTA_DM_BLE_PF_SRVC_DATA_PATTERN BTM_BLE_PF_SRVC_DATA_PATTERN
-#define BTA_DM_BLE_PF_TYPE_MAX BTM_BLE_PF_TYPE_MAX
-#define BTA_DM_BLE_PF_SRVC_DATA BTM_BLE_PF_SRVC_DATA
#define BTA_DM_BLE_PF_TYPE_ALL BTM_BLE_PF_TYPE_ALL
#define BTA_DM_BLE_PF_TYPE_MAX BTM_BLE_PF_TYPE_MAX
typedef UINT8 tBTA_DM_BLE_PF_COND_TYPE;
UINT8 data_len; /* <= 20 bytes */
UINT8 *p_pattern;
UINT16 company_id_mask; /* UUID value mask */
- UINT8 *p_pattern_mask; /* Manufactuer data matching mask, same length as data pattern,
- set to all 0xff, match exact data */
+ UINT8 *p_pattern_mask; /* Manufacturer data matching mask, same length
+ as data pattern, set to all 0xff, match exact data */
}tBTA_DM_BLE_PF_MANU_COND;
typedef struct
UINT16 uuid; /* service ID */
UINT8 data_len; /* <= 20 bytes */
UINT8 *p_pattern;
+ UINT8 *p_pattern_mask; /* Service data matching mask, same length
+ as data pattern, set to all 0xff, match exact data */
}tBTA_DM_BLE_PF_SRVC_PATTERN_COND;
typedef union
tBTA_DM_BLE_PF_SRVC_PATTERN_COND srvc_data; /* service data pattern */
}tBTA_DM_BLE_PF_COND_PARAM;
+typedef UINT8 tBTA_DM_BLE_PF_FILT_INDEX;
+typedef UINT8 tBTA_DM_BLE_PF_AVBL_SPACE;
+
typedef INT8 tBTA_DM_RSSI_VALUE;
typedef UINT8 tBTA_DM_LINK_QUALITY_VALUE;
#define BTA_DM_DEV_UNPAIRED_EVT 23
#define BTA_DM_HW_ERROR_EVT 24 /* BT Chip H/W error */
#define BTA_DM_LE_FEATURES_READ 25 /* Cotroller specific LE features are read */
+#define BTA_DM_ENER_INFO_READ 26 /* Energy info read */
typedef UINT8 tBTA_DM_SEC_EVT;
/* Structure associated with BTA_DM_ENABLE_EVT */
/* 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 */
/* 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);
+typedef UINT32 tBTA_DM_BLE_REF_VALUE;
+
+#define BTA_DM_BLE_PF_ENABLE_EVT BTM_BLE_PF_ENABLE
+#define BTA_DM_BLE_PF_CONFIG_EVT BTM_BLE_PF_CONFIG
+typedef UINT8 tBTA_DM_BLE_PF_EVT;
+
+typedef UINT8 tBTA_DM_BLE_PF_COND_TYPE;
+
+#define BTA_DM_BLE_PF_LOGIC_OR 0
+#define BTA_DM_BLE_PF_LOGIC_AND 1
+typedef UINT8 tBTA_DM_BLE_PF_LOGIC_TYPE;
+
+#define BTA_DM_BLE_PF_ENABLE 1
+#define BTA_DM_BLE_PF_CONFIG 2
+typedef UINT8 tBTA_DM_BLE_PF_ACTION;
+
+typedef UINT8 tBTA_DM_BLE_PF_FILT_INDEX;
+
+typedef UINT8 tBTA_DM_BLE_PF_AVBL_SPACE;
+
+/* Config callback */
+typedef void (tBTA_DM_BLE_PF_CFG_CBACK) (tBTA_DM_BLE_PF_ACTION action,
+ tBTA_DM_BLE_PF_COND_TYPE cfg_cond,
+ tBTA_DM_BLE_PF_AVBL_SPACE avbl_space, tBTA_STATUS status,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+/* Param callback */
+typedef void (tBTA_DM_BLE_PF_PARAM_CBACK) (UINT8 action_type, tBTA_DM_BLE_PF_AVBL_SPACE avbl_space,
+ tBTA_DM_BLE_REF_VALUE ref_value, tBTA_STATUS status);
+
+/* Status callback */
+typedef void (tBTA_DM_BLE_PF_STATUS_CBACK) (UINT8 action, tBTA_STATUS status,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+
+
+#define BTA_DM_BLE_PF_BRDCAST_ADDR_FILT 1
+#define BTA_DM_BLE_PF_SERV_DATA_CHG_FILT 2
+#define BTA_DM_BLE_PF_SERV_UUID 4
+#define BTA_DM_BLE_PF_SERV_SOLC_UUID 8
+#define BTA_DM_BLE_PF_LOC_NAME_CHECK 16
+#define BTA_DM_BLE_PF_MANUF_NAME_CHECK 32
+#define BTA_DM_BLE_PF_SERV_DATA_CHECK 64
+typedef UINT16 tBTA_DM_BLE_PF_FEAT_SEL;
+
+#define BTA_DM_BLE_PF_LIST_LOGIC_OR 1
+#define BTA_DM_BLE_PF_LIST_LOGIC_AND 2
+typedef UINT16 tBTA_DM_BLE_PF_LIST_LOGIC_TYPE;
+
+#define BTA_DM_BLE_PF_FILT_LOGIC_OR 0
+#define BTA_DM_BLE_PF_FILT_LOGIC_AND 1
+typedef UINT16 tBTA_DM_BLE_PF_FILT_LOGIC_TYPE;
+
+typedef UINT8 tBTA_DM_BLE_PF_RSSI_THRESHOLD;
+typedef UINT8 tBTA_DM_BLE_PF_DELIVERY_MODE;
+typedef UINT16 tBTA_DM_BLE_PF_TIMEOUT;
+typedef UINT8 tBTA_DM_BLE_PF_TIMEOUT_CNT;
+
+typedef struct
+{
+ tBTA_DM_BLE_PF_FEAT_SEL feat_seln;
+ tBTA_DM_BLE_PF_LIST_LOGIC_TYPE list_logic_type;
+ tBTA_DM_BLE_PF_FILT_LOGIC_TYPE filt_logic_type;
+ tBTA_DM_BLE_PF_RSSI_THRESHOLD rssi_high_thres;
+ tBTA_DM_BLE_PF_RSSI_THRESHOLD rssi_low_thres;
+ tBTA_DM_BLE_PF_DELIVERY_MODE dely_mode;
+ tBTA_DM_BLE_PF_TIMEOUT found_timeout;
+ tBTA_DM_BLE_PF_TIMEOUT lost_timeout;
+ tBTA_DM_BLE_PF_TIMEOUT_CNT found_timeout_cnt;
+} tBTA_DM_BLE_PF_FILT_PARAMS;
/* Vendor Specific Command Callback */
typedef tBTM_VSC_CMPL_CB tBTA_VENDOR_CMPL_CBACK;
#define BTA_DM_BLE_SEC_NO_MITM BTM_BLE_SEC_ENCRYPT_NO_MITM
#define BTA_DM_BLE_SEC_MITM BTM_BLE_SEC_ENCRYPT_MITM
typedef tBTM_BLE_SEC_ACT tBTA_DM_BLE_SEC_ACT;
+
+typedef tBTM_BLE_TX_TIME_MS tBTA_DM_BLE_TX_TIME_MS;
+typedef tBTM_BLE_RX_TIME_MS tBTA_DM_BLE_RX_TIME_MS;
+typedef tBTM_BLE_IDLE_TIME_MS tBTA_DM_BLE_IDLE_TIME_MS;
+typedef tBTM_BLE_ENERGY_USED tBTA_DM_BLE_ENERGY_USED;
+
+#define BTA_DM_CONTRL_UNKNOWN 0 /* Unknown state */
+#define BTA_DM_CONTRL_ACTIVE 1 /* ACL link on, SCO link ongoing, sniff mode */
+#define BTA_DM_CONTRL_SCAN 2 /* Scan state - paging/inquiry/trying to connect*/
+#define BTA_DM_CONTRL_IDLE 3 /* Idle state - page scan, LE advt, inquiry scan */
+
+typedef UINT8 tBTA_DM_CONTRL_STATE;
+
+
+typedef void (tBTA_BLE_SCAN_THRESHOLD_CBACK)(tBTA_DM_BLE_REF_VALUE ref_value);
+
+typedef void (tBTA_BLE_SCAN_REP_CBACK) (tBTA_DM_BLE_REF_VALUE ref_value, UINT8 report_format,
+ UINT8 num_records, UINT16 data_len,
+ UINT8* p_rep_data, tBTA_STATUS status);
+
+typedef void (tBTA_BLE_SCAN_SETUP_CBACK) (tBTA_BLE_BATCH_SCAN_EVT evt,
+ tBTA_DM_BLE_REF_VALUE ref_value,
+ tBTA_STATUS status);
+
+typedef void (tBTA_BLE_TRACK_ADV_CMPL_CBACK)(int action, tBTA_STATUS status,
+ tBTA_DM_BLE_PF_AVBL_SPACE avbl_space,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+
+typedef void (tBTA_BLE_TRACK_ADV_CBACK)(int filt_index, tBLE_ADDR_TYPE addr_type, BD_ADDR bda,
+ int adv_state, tBTA_DM_BLE_REF_VALUE ref_value);
+
+typedef void (tBTA_BLE_ENERGY_INFO_CBACK)(tBTA_DM_BLE_TX_TIME_MS tx_time,
+ tBTA_DM_BLE_RX_TIME_MS rx_time,
+ tBTA_DM_BLE_IDLE_TIME_MS idle_time,
+ tBTA_DM_BLE_ENERGY_USED energy_used,
+ tBTA_DM_CONTRL_STATE ctrl_state,
+ tBTA_STATUS status);
+
#else
typedef UINT8 tBTA_DM_BLE_SEC_ACT;
#endif
#define BTA_DM_LINK_TYPE_ALL 0xFF
typedef UINT8 tBTA_DM_LINK_TYPE;
+#define IMMEDIATE_DELY_MODE 0x00
+#define ONFOUND_DELY_MODE 0x01
+#define BATCH_DELY_MODE 0x02
+#define ALLOW_ALL_FILTER 0x00
+#define LOWEST_RSSI_VALUE 129
+
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
** Returns None
**
*******************************************************************************/
-BTA_API extern tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params,
+BTA_API extern void BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params,
tBTA_BLE_MULTI_ADV_CBACK *p_cback,void *p_ref);
/*******************************************************************************
** Returns None
**
*******************************************************************************/
-BTA_API extern tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id,
+BTA_API extern void BTA_BleUpdateAdvInstParam (UINT8 inst_id,
tBTA_BLE_ADV_PARAMS *p_params);
/*******************************************************************************
** Returns None
**
*******************************************************************************/
-BTA_API extern tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
+BTA_API extern void BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data);
/*******************************************************************************
** Returns None
**
*******************************************************************************/
-BTA_API extern tBTA_STATUS BTA_BleDisableAdvInstance(UINT8 inst_id);
+BTA_API extern void BTA_BleDisableAdvInstance(UINT8 inst_id);
/*******************************************************************************
**
*******************************************************************************/
BTA_API extern void BTA_DmBleUpdateConnectionParams(BD_ADDR bd_addr, UINT16 min_int,
UINT16 max_int, UINT16 latency, UINT16 timeout);
+
+/*******************************************************************************
+**
+** Function BTA_DmBleSetStorageParams
+**
+** Description This function is called to set the storage parameters
+**
+** Parameters batch_scan_full_max -Max storage space (in %) allocated to full scanning
+** batch_scan_trunc_max -Max storage space (in %) allocated to truncated scanning
+** batch_scan_notify_threshold - Setup notification level based on total space
+** consumed by both pools. Setting it to 0 will disable threshold notification
+** p_setup_cback - Setup callback
+** p_thres_cback - Threshold callback
+** p_rep_cback - Reports callback
+** ref_value - Reference value
+**
+** Returns None
+**
+*******************************************************************************/
+BTA_API extern void BTA_DmBleSetStorageParams(UINT8 batch_scan_full_max,
+ UINT8 batch_scan_trunc_max,
+ UINT8 batch_scan_notify_threshold,
+ tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback,
+ tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback,
+ tBTA_BLE_SCAN_REP_CBACK* p_rep_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+
+/*******************************************************************************
+**
+** Function BTA_DmBleEnableBatchScan
+**
+** Description This function is called to enable the batch scan
+**
+** Parameters scan_mode -Batch scan mode
+** scan_interval - Scan interval
+** scan_window - Scan window
+** discard_rule -Discard rules
+** addr_type - Address type
+** ref_value - Reference value
+**
+** Returns None
+**
+*******************************************************************************/
+BTA_API 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,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+
+/*******************************************************************************
+**
+** Function BTA_DmBleReadScanReports
+**
+** Description This function is called to read the batch scan reports
+**
+** Parameters scan_mode -Batch scan mode
+** ref_value - Reference value
+**
+** Returns None
+**
+*******************************************************************************/
+BTA_API extern void BTA_DmBleReadScanReports(tBTA_BLE_SCAN_MODE scan_type,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+
+/*******************************************************************************
+**
+** Function BTA_DmBleDisableBatchScan
+**
+** Description This function is called to disable the batch scanning
+**
+** Parameters ref_value - Reference value
+**
+** Returns None
+**
+*******************************************************************************/
+BTA_API extern void BTA_DmBleDisableBatchScan(tBTA_DM_BLE_REF_VALUE ref_value);
+
+/*******************************************************************************
+**
+** Function BTA_DmEnableScanFilter
+**
+** Description This function is called to enable the adv data payload filter
+**
+** Parameters action - enable or disable the APCF feature
+** p_cmpl_cback - Command completed callback
+** ref_value - Reference value
+**
+** Returns void
+**
+*******************************************************************************/
+BTA_API extern void BTA_DmEnableScanFilter(UINT8 action,
+ tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+
+/*******************************************************************************
+**
+** Function BTA_DmBleScanFilterSetup
+**
+** Description This function is called to setup the filter params
+**
+** Parameters p_target: enable the filter condition on a target device; if NULL
+** filt_index - Filter index
+** p_filt_params -Filter parameters
+** ref_value - Reference value
+** action - Add, delete or clear
+** p_cmpl_back - Command completed callback
+**
+** Returns void
+**
+*******************************************************************************/
+BTA_API extern void BTA_DmBleScanFilterSetup(UINT8 action,
+ tBTA_DM_BLE_PF_FILT_INDEX filt_index,
+ tBTA_DM_BLE_PF_FILT_PARAMS *p_filt_params,
+ tBLE_BD_ADDR *p_target,
+ tBTA_DM_BLE_PF_PARAM_CBACK *p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+
+/*******************************************************************************
+**
+** Function BTA_DmBleCfgFilterCondition
+**
+** Description This function is called to configure the adv data payload filter
+** condition.
+**
+** Parameters action: to read/write/clear
+** cond_type: filter condition type
+** filt_index - Filter index
+** p_cond: filter condition parameter
+** p_cmpl_back - Command completed callback
+** ref_value - Reference value
+**
+** Returns void
+**
+*******************************************************************************/
+BTA_API extern void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action,
+ tBTA_DM_BLE_PF_COND_TYPE cond_type,
+ tBTA_DM_BLE_PF_FILT_INDEX filt_index,
+ tBTA_DM_BLE_PF_COND_PARAM *p_cond,
+ tBTA_DM_BLE_PF_CFG_CBACK *p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value);
+
+
+/*******************************************************************************
+**
+** Function BTA_DmBleTrackAdvertiser
+**
+** Description This function is called to track the advertiser
+**
+** Parameters ref_value - Reference value
+** p_track_adv_cback - ADV callback
+**
+** Returns None
+**
+*******************************************************************************/
+BTA_API extern void BTA_DmBleTrackAdvertiser(tBTA_DM_BLE_REF_VALUE ref_value,
+ tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback);
+
+/*******************************************************************************
+**
+** Function BTA_DmBleGetEnergyInfo
+**
+** Description This function is called to obtain the energy info
+**
+** Parameters p_cmpl_cback - Command complete callback
+**
+** Returns void
+**
+*******************************************************************************/
+BTA_API extern void BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK *p_cmpl_cback);
+
+/*******************************************************************************
+**
+** Function BTA_BrcmInit
+**
+** Description This function initializes Broadcom specific VS handler in BTA
+**
+** Returns void
+**
+*******************************************************************************/
+BTA_API extern void BTA_VendorInit (void);
+
+/*******************************************************************************
+**
+** Function BTA_BrcmCleanup
+**
+** Description This function frees up Broadcom specific VS specific dynamic memory
+**
+** Returns void
+**
+*******************************************************************************/
+BTA_API extern void BTA_VendorCleanup (void);
+
#endif
#ifdef __cplusplus