OSDN Git Service

LE Onfound and Onlost feature
authorSatya Calloji <satyac@broadcom.com>
Sun, 15 Jun 2014 06:16:18 +0000 (23:16 -0700)
committerWei Wang <weiwa@google.com>
Mon, 30 Jun 2014 21:20:06 +0000 (14:20 -0700)
BTIF and stack layer changes for onfound/onlost feature

Change-Id: Id52cdd5855ca8c0ff276b42613b51c4cd3882bfc

bta/dm/bta_dm_act.c
bta/dm/bta_dm_api.c
bta/dm/bta_dm_int.h
bta/dm/bta_dm_main.c
bta/include/bta_api.h
bta/include/bta_gatt_api.h
btif/src/btif_gatt_client.c
stack/btm/btm_ble_batchscan.c
stack/include/btm_ble_api.h

index d3aa641..da76beb 100644 (file)
@@ -5428,6 +5428,21 @@ void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data)
 
 /*******************************************************************************
 **
+** Function         bta_dm_ble_track_advertiser
+**
+** Description      This function tracks the specific advertiser
+**
+** Parameters:
+**
+*******************************************************************************/
+void bta_dm_ble_track_advertiser(tBTA_DM_MSG *p_data)
+{
+    BTM_BleTrackAdvertiser(p_data->ble_track_advert.p_track_adv_cback,
+                           p_data->ble_track_advert.ref_value);
+}
+
+/*******************************************************************************
+**
 ** Function         bta_ble_scan_setup_cb
 **
 ** Description      Handle the setup callback from BTM layer and forward it to app layer
index 3c3602c..f80fda8 100644 (file)
@@ -1707,6 +1707,33 @@ BTA_API extern void BTA_DmBleReadScanReports(tBTA_BLE_SCAN_MODE scan_type,
 
 /*******************************************************************************
 **
+** Function         BTA_DmBleTrackAdvertiser
+**
+** Description      This function is called to track advertiser
+**
+** Parameters       ref_value - Reference value
+**                  p_track_adv_cback - Track 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)
+{
+    tBTA_DM_API_TRACK_ADVERTISER  *p_msg;
+
+    if ((p_msg = (tBTA_DM_API_TRACK_ADVERTISER *)
+         GKI_getbuf(sizeof(tBTA_DM_API_TRACK_ADVERTISER))) != NULL)
+    {
+        p_msg->hdr.event = BTA_DM_API_BLE_TRACK_ADVERTISER_EVT;
+        p_msg->p_track_adv_cback = p_track_adv_cback;
+        p_msg->ref_value = ref_value;
+        bta_sys_sendmsg(p_msg);
+    }
+}
+
+/*******************************************************************************
+**
 ** Function         BTA_DmBleBroadcast
 **
 ** Description      This function starts or stops LE broadcasting.
@@ -2308,7 +2335,7 @@ void BTA_DmBleScanFilterSetup(UINT8 action, tBTA_DM_BLE_PF_FILT_INDEX filt_index
 **
 ** Description      This function is called to enable the adv data payload filter
 **
-** Parameters      action - enable or disable the APCF feature
+** Parameters       action - enable or disable the APCF feature
 **                  p_cmpl_cback - Command completed callback
 **                  ref_value - Reference value
 **
index 0b8cde6..a1b935b 100644 (file)
@@ -637,10 +637,8 @@ typedef struct
 typedef struct
 {
     BT_HDR                  hdr;
-    UINT8 track_adv_action;
-    tBLE_ADDR_TYPE addr_type;
-    tBLE_BD_ADDR *p_bda;
-    UINT8 onlost_timeout;
+    tBTA_DM_BLE_REF_VALUE ref_value;
+    tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback;
 } tBTA_DM_API_TRACK_ADVERTISER;
 
 #endif /* BLE_INCLUDED */
@@ -914,7 +912,9 @@ typedef struct
     BOOLEAN                     is_bta_dm_active;
     tBTA_DM_ACTIVE_LINK         device_list;
     tBTA_DM_SEC_CBACK           *p_sec_cback;
+#if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE))
     tBTA_BLE_SCAN_SETUP_CBACK   *p_setup_cback;
+#endif
     tBTA_DM_BLE_PF_CFG_CBACK     *p_scan_filt_cfg_cback;
     tBTA_DM_BLE_PF_STATUS_CBACK  *p_scan_filt_status_cback;
     tBTA_DM_BLE_PF_PARAM_CBACK   *p_scan_filt_param_cback;
@@ -1197,6 +1197,8 @@ extern void bta_dm_ble_setup_storage(tBTA_DM_MSG *p_data);
 extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG * p_data);
 extern void bta_dm_ble_disable_batch_scan(tBTA_DM_MSG * p_data);
 extern void bta_dm_ble_read_scan_reports(tBTA_DM_MSG * p_data);
+extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG * p_data);
+
 #endif
 extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data);
 extern void bta_dm_confirm(tBTA_DM_MSG *p_data);
index df5001d..d378744 100644 (file)
@@ -117,6 +117,7 @@ const tBTA_DM_ACTION bta_dm_action[] =
     bta_dm_ble_enable_batch_scan,  /* BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT */
     bta_dm_ble_disable_batch_scan, /* BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT */
     bta_dm_ble_read_scan_reports,  /* BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT */
+    bta_dm_ble_track_advertiser,   /* BTA_DM_API_BLE_TRACK_ADVERTISER_EVT */
 #endif
 
 #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
index 9b3bea4..e43b23b 100644 (file)
@@ -1132,9 +1132,16 @@ 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);
+
 #else
 typedef UINT8                       tBTA_DM_BLE_SEC_ACT;
 #endif
@@ -2413,7 +2420,7 @@ BTA_API extern void BTA_DmBleUpdateConnectionParams(BD_ADDR bd_addr, UINT16 min_
 **                  p_setup_cback - Setup callback
 **                  p_thres_cback - Threshold callback
 **                  p_rep_cback - Reports callback
-**                  p_ref - Ref pointer
+**                  ref_value - Reference value
 **
 ** Returns           None
 **
@@ -2437,6 +2444,7 @@ BTA_API extern void BTA_DmBleSetStorageParams(UINT8 batch_scan_full_max,
 **                  scan_window - Scan window
 **                  discard_rule -Discard rules
 **                  addr_type - Address type
+**                  ref_value - Reference value
 **
 ** Returns           None
 **
@@ -2454,6 +2462,7 @@ BTA_API extern void BTA_DmBleEnableBatchScan(tBTA_BLE_SCAN_MODE scan_mode,
 ** Description      This function is called to read the batch scan reports
 **
 ** Parameters       scan_mode -Batch scan mode
+**                  ref_value - Reference value
 **
 ** Returns          None
 **
@@ -2467,7 +2476,7 @@ BTA_API extern void BTA_DmBleReadScanReports(tBTA_BLE_SCAN_MODE scan_type,
 **
 ** Description      This function is called to disable the batch scanning
 **
-** Parameters       None
+** Parameters       ref_value - Reference value
 **
 ** Returns          None
 **
@@ -2480,7 +2489,9 @@ BTA_API extern void BTA_DmBleDisableBatchScan(tBTA_DM_BLE_REF_VALUE ref_value);
 **
 ** Description      This function is called to enable the adv data payload filter
 **
-** Parameters     action -1: enable the filter condition, 0 - disables the filter condition
+** Parameters       action - enable or disable the APCF feature
+**                  p_cmpl_cback - Command completed callback
+**                  ref_value - Reference value
 **
 ** Returns          void
 **
@@ -2495,8 +2506,12 @@ BTA_API extern void BTA_DmEnableScanFilter(UINT8 action,
 **
 ** Description      This function is called to setup the filter params
 **
-** Parameters      action: to read/write/clear
-**                      filt_index - filter index
+** 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
 **
@@ -2516,10 +2531,11 @@ BTA_API extern void BTA_DmBleScanFilterSetup(UINT8 action,
 **                  condition.
 **
 ** Parameters       action: to read/write/clear
-**                  cond_type: filter condition type.
-**                  filt_index - filter index
+**                  cond_type: filter condition type
+**                  filt_index - Filter index
 **                  p_cond: filter condition parameter
-**                  ref_value:    Reference
+**                  p_cmpl_back - Command completed callback
+**                  ref_value - Reference value
 **
 ** Returns          void
 **
@@ -2531,6 +2547,22 @@ BTA_API extern void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action,
                                                  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);
+
 #endif
 
 #ifdef __cplusplus
index 8e70dae..9e75eef 100644 (file)
@@ -135,15 +135,16 @@ typedef UINT8 tBTA_GATT_STATUS;
 #define BTA_GATTC_MULT_ADV_DATA_EVT 22  /* Multi ADV data event */
 #define BTA_GATTC_MULT_ADV_DIS_EVT  23  /* Disable Multi ADV event */
 #define BTA_GATTC_CONGEST_EVT       24  /* Congestion event */
-#define BTA_GATTC_BTH_SCAN_ENB_EVT  24 /* Enable batch scan event */
-#define BTA_GATTC_BTH_SCAN_CFG_EVT  25 /* Config storage event */
-#define BTA_GATTC_BTH_SCAN_RD_EVT   26 /* Batch scan reports read event */
-#define BTA_GATTC_BTH_SCAN_THR_EVT  27 /* Batch scan threshold event */
-#define BTA_GATTC_BTH_SCAN_PARAM_EVT 28 /* Batch scan param event */
-#define BTA_GATTC_BTH_SCAN_DIS_EVT  29 /* Disable batch scan event */
-#define BTA_GATTC_SCAN_FLT_CFG_EVT  30 /* Scan filter config event */
-#define BTA_GATTC_SCAN_FLT_PARAM_EVT 31 /* Param filter event */
-#define BTA_GATTC_SCAN_FLT_STATUS_EVT 32 /* Filter status event */
+#define BTA_GATTC_BTH_SCAN_ENB_EVT  25 /* Enable batch scan event */
+#define BTA_GATTC_BTH_SCAN_CFG_EVT  26 /* Config storage event */
+#define BTA_GATTC_BTH_SCAN_RD_EVT   27 /* Batch scan reports read event */
+#define BTA_GATTC_BTH_SCAN_THR_EVT  28 /* Batch scan threshold event */
+#define BTA_GATTC_BTH_SCAN_PARAM_EVT 29 /* Batch scan param event */
+#define BTA_GATTC_BTH_SCAN_DIS_EVT  30 /* Disable batch scan event */
+#define BTA_GATTC_SCAN_FLT_CFG_EVT  31 /* Scan filter config event */
+#define BTA_GATTC_SCAN_FLT_PARAM_EVT 32 /* Param filter event */
+#define BTA_GATTC_SCAN_FLT_STATUS_EVT 33 /* Filter status event */
+#define BTA_GATTC_ADV_VSC_EVT         34 /* ADV VSC event */
 
 typedef UINT8 tBTA_GATTC_EVT;
 
index b18c8ad..5d1c6db 100644 (file)
@@ -131,6 +131,12 @@ typedef struct
 {
     uint8_t  status;
     uint8_t  client_if;
+    uint8_t  filt_index;
+    uint8_t  adv_state;
+    uint8_t  action;
+    uint8_t  avbl_space;
+    uint8_t  lost_timeout;
+    bt_bdaddr_t bd_addr;
     uint8_t  batch_scan_full_max;
     uint8_t  batch_scan_trunc_max;
     uint8_t  batch_scan_notify_threshold;
@@ -732,7 +738,7 @@ static void btif_gattc_upstreams_evt(uint16_t event, char* p_param)
             btgatt_adv_filter_cb_t *p_data = (btgatt_adv_filter_cb_t*) p_param;
             BTIF_TRACE_DEBUG("BTA_GATTC_SCAN_FLT_PARAM_EVT: %d, %d, %d, %d",p_data->client_if,
                 p_data->action, p_data->avbl_space, p_data->status);
-             HAL_CBACK(bt_gatt_callbacks, client->scan_filter_param_cb
+            HAL_CBACK(bt_gatt_callbacks, client->scan_filter_param_cb
                     , p_data->action, p_data->client_if, p_data->status
                     , p_data->avbl_space);
             break;
@@ -743,11 +749,20 @@ static void btif_gattc_upstreams_evt(uint16_t event, char* p_param)
             btgatt_adv_filter_cb_t *p_data = (btgatt_adv_filter_cb_t*) p_param;
             BTIF_TRACE_DEBUG("BTA_GATTC_SCAN_FLT_STATUS_EVT: %d, %d, %d",p_data->client_if,
                 p_data->action, p_data->status);
-             HAL_CBACK(bt_gatt_callbacks, client->scan_filter_status_cb
+            HAL_CBACK(bt_gatt_callbacks, client->scan_filter_status_cb
                     , p_data->action, p_data->client_if, p_data->status);
             break;
         }
 
+        case BTA_GATTC_ADV_VSC_EVT:
+        {
+            btgatt_batch_track_cb_t *p_data = (btgatt_batch_track_cb_t*)p_param;
+            HAL_CBACK(bt_gatt_callbacks, client->track_adv_event_cb
+                    ,p_data->client_if, p_data->filt_index, p_data->addr_type, &p_data->bd_addr
+                    ,p_data->adv_state);
+            break;
+        }
+
         default:
             BTIF_TRACE_ERROR("%s: Unhandled event (%d)!", __FUNCTION__, event);
             break;
@@ -955,6 +970,21 @@ static void bta_scan_results_cb (tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH *p_dat
                                  (char*) &btif_cb, sizeof(btif_gattc_cb_t), NULL);
 }
 
+static void bta_track_adv_event_cb(int filt_index, tBLE_ADDR_TYPE addr_type, BD_ADDR bda,
+                                        int adv_state, tBTA_DM_BLE_REF_VALUE ref_value)
+{
+    btgatt_batch_track_cb_t btif_scan_track_cb;
+    BTIF_TRACE_DEBUG("%s :%d, %d, %d, %d",
+        __FUNCTION__,filt_index, addr_type, adv_state, ref_value);
+    btif_scan_track_cb.filt_index = filt_index;
+    btif_scan_track_cb.addr_type = addr_type;
+    memcpy(btif_scan_track_cb.bd_addr.address, bda, sizeof(BD_ADDR));
+    btif_scan_track_cb.client_if = ref_value;
+    btif_scan_track_cb.adv_state = adv_state;
+    btif_transfer_context(btif_gattc_upstreams_evt, BTA_GATTC_ADV_VSC_EVT,
+                          (char*) &btif_scan_track_cb, sizeof(btgatt_batch_track_cb_t), NULL);
+}
+
 static void btm_read_rssi_cb (tBTM_RSSI_RESULTS *p_result)
 {
     btif_gattc_cb_t btif_cb;
@@ -1322,6 +1352,8 @@ static void btgattc_handle_event(uint16_t event, char* p_param)
         {
             if(NULL == p_adv_filt_cb)
                return;
+            if(1 == p_adv_filt_cb->adv_filt_param.dely_mode)
+               BTA_DmBleTrackAdvertiser(p_adv_filt_cb->client_if, bta_track_adv_event_cb);
             BTA_DmBleScanFilterSetup(p_adv_filt_cb->action, p_adv_filt_cb->filt_index,
                 &p_adv_filt_cb->adv_filt_param, NULL, bta_scan_filt_param_setup_cb,
                 p_adv_filt_cb->client_if);
index 015284f..41150be 100644 (file)
@@ -30,6 +30,7 @@
 #if (BLE_INCLUDED == TRUE && BLE_BATCH_SCAN_INCLUDED == TRUE)
 
 tBTM_BLE_BATCH_SCAN_CB ble_batchscan_cb;
+tBTM_BLE_ADV_TRACK_CB ble_advtrack_cb;
 
 
 /* length of each batch scan command */
@@ -41,6 +42,8 @@ tBTM_BLE_BATCH_SCAN_CB ble_batchscan_cb;
 #define BTM_BLE_BATCH_SCAN_CB_EVT_MASK       0xF0
 #define BTM_BLE_BATCH_SCAN_SUBCODE_MASK      0x0F
 
+#define BTM_BLE_TRACK_ADV_CMD_LEN               9
+
 /*******************************************************************************
 **  Local functions
 *******************************************************************************/
@@ -56,9 +59,8 @@ tBTM_BLE_BATCH_SCAN_CB ble_batchscan_cb;
 *******************************************************************************/
 void btm_ble_batchscan_filter_track_adv_vse_cback(UINT8 len, UINT8 *p)
 {
-    UINT8   sub_event;
-    UINT8   reason;
-
+    UINT8   sub_event = 0, filt_index = 0, addr_type = 0, adv_state = 0;
+    BD_ADDR bd_addr;
     STREAM_TO_UINT8(sub_event, p);
 
     BTM_TRACE_EVENT("btm_ble_batchscan_filter_track_adv_vse_cback called with event:%x", sub_event);
@@ -66,6 +68,21 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(UINT8 len, UINT8 *p)
         NULL != ble_batchscan_cb.p_thres_cback)
     {
         ble_batchscan_cb.p_thres_cback(ble_batchscan_cb.ref_value);
+        return;
+    }
+
+    if (HCI_VSE_SUBCODE_BLE_TRACKING_SUB_EVT == sub_event && NULL != ble_advtrack_cb.p_track_cback)
+    {
+        if(len < 10)
+            return;
+        STREAM_TO_UINT8(filt_index, p);
+        STREAM_TO_UINT8(addr_type, p);
+        STREAM_TO_BDADDR(bd_addr, p);
+        STREAM_TO_UINT8(adv_state, p);
+        BTM_TRACE_EVENT("track_adv_vse_cback called: %d, %d, %d", filt_index, addr_type, adv_state);
+        ble_advtrack_cb.p_track_cback(filt_index, addr_type, bd_addr, adv_state,
+            ble_advtrack_cb.ref_value);
+        return;
     }
 }
 
@@ -636,6 +653,39 @@ tBTM_STATUS BTM_BleReadScanReports(tBTM_BLE_BATCH_SCAN_MODE scan_mode,
 
 /*******************************************************************************
 **
+** Function         BTM_BleTrackAdvertiser
+**
+** Description      This function is called to setup the callback for tracking advertisers
+**
+** Parameters:      p_track_cback - Tracking callback pointer
+**                  ref_value - Reference value
+**
+** Returns          tBTM_STATUS
+**
+*******************************************************************************/
+tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK *p_track_cback,
+                                        tBTM_BLE_REF_VALUE ref_value)
+{
+    tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
+    BTM_TRACE_EVENT (" BTM_BleTrackAdvertiser");
+    if (!HCI_LE_HOST_SUPPORTED(btm_cb.devcb.local_lmp_features[HCI_EXT_FEATURES_PAGE_1]))
+        return BTM_ILLEGAL_VALUE;
+
+    BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
+
+    if (0 == cmn_ble_vsc_cb.tot_scan_results_strg)
+    {
+        BTM_TRACE_ERROR("Controller does not support scan storage");
+        return BTM_ERR_PROCESSING;
+    }
+
+    ble_advtrack_cb.p_track_cback = p_track_cback;
+    ble_advtrack_cb.ref_value = ref_value;
+    return BTM_SUCCESS;
+}
+
+/*******************************************************************************
+**
 ** Function         btm_ble_batchscan_init
 **
 ** Description      This function initialize the batch scan control block.
@@ -649,6 +699,7 @@ void btm_ble_batchscan_init(void)
 {
     BTM_TRACE_EVENT (" btm_ble_batchscan_init");
     memset(&ble_batchscan_cb, 0, sizeof(tBTM_BLE_BATCH_SCAN_CB));
+    memset(&ble_advtrack_cb, 0, sizeof(tBTM_BLE_ADV_TRACK_CB));
     BTM_RegisterForVSEvents(btm_ble_batchscan_filter_track_adv_vse_cback, TRUE);
 }
 
index 2ddda5d..aa71817 100644 (file)
@@ -726,6 +726,17 @@ enum
 };
 typedef UINT8 tBTM_BLE_DISCARD_RULE;
 
+typedef void (tBTM_BLE_TRACK_ADV_CBACK)(int filt_index, tBLE_ADDR_TYPE addr_type, BD_ADDR bda,
+                                        int adv_state, tBTM_BLE_REF_VALUE ref_value);
+
+typedef UINT8 tBTM_BLE_TRACK_ADV_EVT;
+
+typedef struct
+{
+    tBTM_BLE_REF_VALUE             ref_value;
+    tBTM_BLE_TRACK_ADV_CBACK *p_track_cback;
+}tBTM_BLE_ADV_TRACK_CB;
+
 enum
 {
     BTM_BLE_TRACK_ADV_ADD,
@@ -745,7 +756,6 @@ typedef UINT8 tBTM_BLE_TRACK_ADV_ACTION;
 
 typedef UINT8 tBTM_BLE_BATCH_SCAN_EVT;
 
-
 typedef BOOLEAN (tBTM_BLE_SEL_CBACK)(BD_ADDR random_bda,     UINT8 *p_remote_name);
 typedef void (tBTM_BLE_CTRL_FEATURES_CBACK)(tBTM_STATUS status);
 
@@ -966,16 +976,14 @@ BTM_API extern tBTM_STATUS BTM_BleReadScanReports(tBTM_BLE_SCAN_MODE scan_mode,
 **
 ** Description      This function is called to read batch scan reports
 **
-** Parameters       track_adv_action - Track advertiser action
-                    addr_type - address type
-                    p_bda - BD address
-                    onlost_timeout - Timeout for onlost event
+** Parameters       p_track_cback - Tracking callback
+**                  ref_value - Reference value
 **
 ** Returns          tBTM_STATUS
 **
 *******************************************************************************/
-BTM_API extern tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_ACTION track_adv_action,
-                            tBLE_BD_ADDR *p_bda, UINT8 onlost_timeout);
+BTM_API extern tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK *p_track_cback,
+                                                  tBTM_BLE_REF_VALUE ref_value);
 
 /*******************************************************************************
 **