summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jni/com_android_bluetooth_gatt.cpp117
-rw-r--r--src/com/android/bluetooth/btservice/AdapterProperties.java24
-rw-r--r--src/com/android/bluetooth/gatt/AdvtFilterOnFoundOnLostInfo.java1
-rw-r--r--src/com/android/bluetooth/gatt/FilterParams.java1
-rw-r--r--src/com/android/bluetooth/gatt/GattService.java29
-rw-r--r--src/com/android/bluetooth/gatt/ScanManager.java24
6 files changed, 147 insertions, 49 deletions
diff --git a/jni/com_android_bluetooth_gatt.cpp b/jni/com_android_bluetooth_gatt.cpp
index 02a0669bf..5b6fa819e 100644
--- a/jni/com_android_bluetooth_gatt.cpp
+++ b/jni/com_android_bluetooth_gatt.cpp
@@ -171,8 +171,11 @@ static jmethodID method_onBatchScanStorageConfigured;
static jmethodID method_onBatchScanStartStopped;
static jmethodID method_onBatchScanReports;
static jmethodID method_onBatchScanThresholdCrossed;
+
+static jmethodID method_CreateonTrackAdvFoundLostObject;
static jmethodID method_onTrackAdvFoundLost;
+
/**
* Server callback methods
*/
@@ -549,18 +552,42 @@ void btgattc_batchscan_threshold_cb(int client_if)
checkAndClearExceptionFromCallback(sCallbackEnv, __FUNCTION__);
}
-void btgattc_track_adv_event_cb(int client_if, int filt_index, int addr_type,
- bt_bdaddr_t* bda, int adv_state)
+void btgattc_track_adv_event_cb(btgatt_track_adv_info_t *p_adv_track_info)
{
CHECK_CALLBACK_ENV
char c_address[32];
+ jobject trackadv_obj = NULL;
+
snprintf(c_address, sizeof(c_address),"%02X:%02X:%02X:%02X:%02X:%02X",
- bda->address[0], bda->address[1], bda->address[2],
- bda->address[3], bda->address[4], bda->address[5]);
+ p_adv_track_info->bd_addr.address[0], p_adv_track_info->bd_addr.address[1],
+ p_adv_track_info->bd_addr.address[2], p_adv_track_info->bd_addr.address[3],
+ p_adv_track_info->bd_addr.address[4], p_adv_track_info->bd_addr.address[5]);
+
jstring address = sCallbackEnv->NewStringUTF(c_address);
- sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onTrackAdvFoundLost,
- filt_index, addr_type, address, adv_state, client_if);
+
+ jbyteArray jb_adv_pkt = sCallbackEnv->NewByteArray(p_adv_track_info->adv_pkt_len);
+ jbyteArray jb_scan_rsp = sCallbackEnv->NewByteArray(p_adv_track_info->scan_rsp_len);
+
+ sCallbackEnv->SetByteArrayRegion(jb_adv_pkt, 0, p_adv_track_info->adv_pkt_len,
+ (jbyte *) p_adv_track_info->p_adv_pkt_data);
+
+ sCallbackEnv->SetByteArrayRegion(jb_scan_rsp, 0, p_adv_track_info->scan_rsp_len,
+ (jbyte *) p_adv_track_info->p_scan_rsp_data);
+
+ trackadv_obj = sCallbackEnv->CallObjectMethod(mCallbacksObj, method_CreateonTrackAdvFoundLostObject,
+ p_adv_track_info->client_if, p_adv_track_info->adv_pkt_len, jb_adv_pkt,
+ p_adv_track_info->scan_rsp_len, jb_scan_rsp, p_adv_track_info->filt_index,
+ p_adv_track_info->advertiser_state, p_adv_track_info->advertiser_info_present,
+ address, p_adv_track_info->addr_type, p_adv_track_info->tx_power,
+ p_adv_track_info->rssi_value, p_adv_track_info->time_stamp);
+
+ if (NULL != trackadv_obj)
+ sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onTrackAdvFoundLost, trackadv_obj);
+
sCallbackEnv->DeleteLocalRef(address);
+ sCallbackEnv->DeleteLocalRef(jb_adv_pkt);
+ sCallbackEnv->DeleteLocalRef(jb_scan_rsp);
+
checkAndClearExceptionFromCallback(sCallbackEnv, __FUNCTION__);
}
@@ -849,9 +876,11 @@ static void classInitNative(JNIEnv* env, jclass clazz) {
method_onBatchScanStartStopped = env->GetMethodID(clazz, "onBatchScanStartStopped", "(III)V");
method_onBatchScanReports = env->GetMethodID(clazz, "onBatchScanReports", "(IIII[B)V");
method_onBatchScanThresholdCrossed = env->GetMethodID(clazz, "onBatchScanThresholdCrossed", "(I)V");
- method_onTrackAdvFoundLost = env->GetMethodID(clazz, "onTrackAdvFoundLost", "(IILjava/lang/String;II)V");
+ method_CreateonTrackAdvFoundLostObject = env->GetMethodID(clazz, "CreateonTrackAdvFoundLostObject", "(II[BI[BIIILjava/lang/String;IIII)Lcom/android/bluetooth/gatt/AdvtFilterOnFoundOnLostInfo;");
+ method_onTrackAdvFoundLost = env->GetMethodID(clazz, "onTrackAdvFoundLost",
+ "(Lcom/android/bluetooth/gatt/AdvtFilterOnFoundOnLostInfo;)V");
- // Server callbacks
+ // Server callbacks
method_onServerRegistered = env->GetMethodID(clazz, "onServerRegistered", "(IIJJ)V");
method_onClientConnected = env->GetMethodID(clazz, "onClientConnected", "(Ljava/lang/String;ZII)V");
@@ -1285,18 +1314,55 @@ static void gattSetScanParametersNative(JNIEnv* env, jobject object,
sGattIf->client->set_scan_parameters(scan_interval_unit, scan_window_unit);
}
-static void gattClientScanFilterParamAddNative(JNIEnv* env, jobject object,
- jint client_if, jint filt_index,
- jint feat_seln, jint list_logic_type, jint filt_logic_type,
- jint rssi_high_thres, jint rssi_low_thres,
- jint dely_mode, jint found_timeout, jint lost_timeout, jint found_timeout_cnt)
+static void gattClientScanFilterParamAddNative(JNIEnv* env, jobject object, jobject params)
{
if (!sGattIf) return;
const int add_scan_filter_params_action = 0;
- sGattIf->client->scan_filter_param_setup(client_if, add_scan_filter_params_action, filt_index,
- feat_seln, list_logic_type, filt_logic_type,
- rssi_high_thres, rssi_low_thres,
- dely_mode, found_timeout, lost_timeout, found_timeout_cnt);
+ btgatt_filt_param_setup_t filt_params;
+
+ jmethodID methodId = 0;
+ jclass filtparam = env->GetObjectClass(params);
+
+ methodId = env->GetMethodID(filtparam, "getClientIf", "()I");
+ filt_params.client_if = env->CallIntMethod(params, methodId);;
+
+ filt_params.action = add_scan_filter_params_action;
+
+ methodId = env->GetMethodID(filtparam, "getFiltIndex", "()I");
+ filt_params.filt_index = env->CallIntMethod(params, methodId);;
+
+ methodId = env->GetMethodID(filtparam, "getFeatSeln", "()I");
+ filt_params.feat_seln = env->CallIntMethod(params, methodId);;
+
+ methodId = env->GetMethodID(filtparam, "getListLogicType", "()I");
+ filt_params.list_logic_type = env->CallIntMethod(params, methodId);
+
+ methodId = env->GetMethodID(filtparam, "getFiltLogicType", "()I");
+ filt_params.filt_logic_type = env->CallIntMethod(params, methodId);
+
+ methodId = env->GetMethodID(filtparam, "getDelyMode", "()I");
+ filt_params.dely_mode = env->CallIntMethod(params, methodId);
+
+ methodId = env->GetMethodID(filtparam, "getFoundTimeout", "()I");
+ filt_params.found_timeout = env->CallIntMethod(params, methodId);
+
+ methodId = env->GetMethodID(filtparam, "getLostTimeout", "()I");
+ filt_params.lost_timeout = env->CallIntMethod(params, methodId);
+
+ methodId = env->GetMethodID(filtparam, "getFoundTimeOutCnt", "()I");
+ filt_params.found_timeout_cnt = env->CallIntMethod(params, methodId);
+
+ methodId = env->GetMethodID(filtparam, "getNumOfTrackEntries", "()I");
+ filt_params.num_of_tracking_entries = env->CallIntMethod(params, methodId);
+
+ methodId = env->GetMethodID(filtparam, "getRSSIHighValue", "()I");
+ filt_params.rssi_high_thres = env->CallIntMethod(params, methodId);
+
+ methodId = env->GetMethodID(filtparam, "getRSSILowValue", "()I");
+ filt_params.rssi_low_thres = env->CallIntMethod(params, methodId);
+
+ env->DeleteLocalRef(filtparam);
+ sGattIf->client->scan_filter_param_setup(filt_params);
}
static void gattClientScanFilterParamDeleteNative(JNIEnv* env, jobject object,
@@ -1304,16 +1370,23 @@ static void gattClientScanFilterParamDeleteNative(JNIEnv* env, jobject object,
{
if (!sGattIf) return;
const int delete_scan_filter_params_action = 1;
- sGattIf->client->scan_filter_param_setup(client_if, delete_scan_filter_params_action,
- filt_index, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ btgatt_filt_param_setup_t filt_params;
+ memset(&filt_params, 0, sizeof(btgatt_filt_param_setup_t));
+ filt_params.client_if = client_if;
+ filt_params.action = delete_scan_filter_params_action;
+ filt_params.filt_index = filt_index;
+ sGattIf->client->scan_filter_param_setup(filt_params);
}
static void gattClientScanFilterParamClearAllNative(JNIEnv* env, jobject object, jint client_if)
{
if (!sGattIf) return;
const int clear_scan_filter_params_action = 2;
- sGattIf->client->scan_filter_param_setup(client_if, clear_scan_filter_params_action,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ btgatt_filt_param_setup_t filt_params;
+ memset(&filt_params, 0, sizeof(btgatt_filt_param_setup_t));
+ filt_params.client_if = client_if;
+ filt_params.action = clear_scan_filter_params_action;
+ sGattIf->client->scan_filter_param_setup(filt_params);
}
static void gattClientScanFilterAddRemoveNative(JNIEnv* env, jobject object,
@@ -1738,7 +1811,7 @@ static JNINativeMethod sScanMethods[] = {
{"gattClientStopBatchScanNative", "(I)V", (void *) gattClientStopBatchScanNative},
{"gattClientReadScanReportsNative", "(II)V", (void *) gattClientReadScanReportsNative},
// Scan filter JNI functions.
- {"gattClientScanFilterParamAddNative", "(IIIIIIIIIII)V", (void *) gattClientScanFilterParamAddNative},
+ {"gattClientScanFilterParamAddNative", "(Lcom/android/bluetooth/gatt/FilterParams;)V", (void *) gattClientScanFilterParamAddNative},
{"gattClientScanFilterParamDeleteNative", "(II)V", (void *) gattClientScanFilterParamDeleteNative},
{"gattClientScanFilterParamClearAllNative", "(I)V", (void *) gattClientScanFilterParamClearAllNative},
{"gattClientScanFilterAddNative", "(IIIIIJJJJLjava/lang/String;Ljava/lang/String;B[B[B)V", (void *) gattClientScanFilterAddNative},
diff --git a/src/com/android/bluetooth/btservice/AdapterProperties.java b/src/com/android/bluetooth/btservice/AdapterProperties.java
index f89404e4d..7e550a7e2 100644
--- a/src/com/android/bluetooth/btservice/AdapterProperties.java
+++ b/src/com/android/bluetooth/btservice/AdapterProperties.java
@@ -64,6 +64,8 @@ class AdapterProperties {
private int mNumOfOffloadedIrkSupported;
private int mNumOfOffloadedScanFilterSupported;
private int mOffloadedScanResultStorageBytes;
+ private int mVersSupported;
+ private int mTotNumOfTrackableAdv;
private boolean mIsActivityAndEnergyReporting;
// Lock for all getters and setters.
@@ -550,13 +552,17 @@ class AdapterProperties {
}
void updateFeatureSupport(byte[] val) {
- mNumOfAdvertisementInstancesSupported = (0xFF & ((int)val[1]));
- mRpaOffloadSupported = ((0xFF & ((int)val[2]))!= 0);
- mNumOfOffloadedIrkSupported = (0xFF & ((int)val[3]));
- mNumOfOffloadedScanFilterSupported = (0xFF & ((int)val[4]));
- mOffloadedScanResultStorageBytes = ((0xFF & ((int)val[6])) << 8)
- + (0xFF & ((int)val[5]));
+ mVersSupported = ((0xFF & ((int)val[1])) << 8)
+ + (0xFF & ((int)val[0]));
+ mNumOfAdvertisementInstancesSupported = (0xFF & ((int)val[3]));
+ mRpaOffloadSupported = ((0xFF & ((int)val[4]))!= 0);
+ mNumOfOffloadedIrkSupported = (0xFF & ((int)val[5]));
+ mNumOfOffloadedScanFilterSupported = (0xFF & ((int)val[6]));
mIsActivityAndEnergyReporting = ((0xFF & ((int)val[7])) != 0);
+ mOffloadedScanResultStorageBytes = ((0xFF & ((int)val[9])) << 8)
+ + (0xFF & ((int)val[8]));
+ mTotNumOfTrackableAdv = ((0xFF & ((int)val[11])) << 8)
+ + (0xFF & ((int)val[10]));
Log.d(TAG, "BT_PROPERTY_LOCAL_LE_FEATURES: update from BT controller"
+ " mNumOfAdvertisementInstancesSupported = "
@@ -569,7 +575,11 @@ class AdapterProperties {
+ " mOffloadedScanResultStorageBytes= "
+ mOffloadedScanResultStorageBytes
+ " mIsActivityAndEnergyReporting = "
- + mIsActivityAndEnergyReporting);
+ + mIsActivityAndEnergyReporting
+ +" mVersSupported = "
+ + mVersSupported
+ + " mTotNumOfTrackableAdv = "
+ + mTotNumOfTrackableAdv);
}
void onBluetoothReady() {
diff --git a/src/com/android/bluetooth/gatt/AdvtFilterOnFoundOnLostInfo.java b/src/com/android/bluetooth/gatt/AdvtFilterOnFoundOnLostInfo.java
new file mode 100644
index 000000000..d06396ca6
--- /dev/null
+++ b/src/com/android/bluetooth/gatt/AdvtFilterOnFoundOnLostInfo.java
@@ -0,0 +1 @@
+/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.bluetooth.gatt; import android.annotation.Nullable; /** @hide */ public class AdvtFilterOnFoundOnLostInfo { private int mClientIf; private int mAdvPktLen; @Nullable private byte[] mAdvPkt; private int mScanRspLen; @Nullable private byte[] mScanRsp; private int mFiltIndex; private int mAdvState; private int mAdvInfoPresent; private String mAddress; private int mAddrType; private int mTxPower; private int mRssiValue; private int mTimeStamp; public AdvtFilterOnFoundOnLostInfo(int client_if, int adv_pkt_len, byte[] adv_pkt, int scan_rsp_len, byte[] scan_rsp, int filt_index, int adv_state, int adv_info_present, String address, int addr_type, int tx_power, int rssi_value, int time_stamp){ mClientIf = client_if; mAdvPktLen = adv_pkt_len; mAdvPkt = adv_pkt; mScanRspLen = scan_rsp_len; mScanRsp = scan_rsp; mFiltIndex = filt_index; mAdvState = adv_state; mAdvInfoPresent = adv_info_present; mAddress = address; mAddrType = addr_type; mTxPower = tx_power; mRssiValue = rssi_value; mTimeStamp = time_stamp; } public int getClientIf () { return mClientIf; } public int getFiltIndex () { return mFiltIndex; } public int getAdvState () { return mAdvState; } public int getTxPower () { return mTxPower; } public int getTimeStamp () { return mTimeStamp; } public int getRSSIValue () { return mRssiValue; } public int getAdvInfoPresent () { return mAdvInfoPresent; } public String getAddress() { return mAddress; } public int getAddressType() { return mAddrType; } public byte[] getAdvPacketData() { return mAdvPkt; } public int getAdvPacketLen() { return mAdvPktLen; } public byte[] getScanRspData() { return mScanRsp; } public int getScanRspLen() { return mScanRspLen; } } \ No newline at end of file
diff --git a/src/com/android/bluetooth/gatt/FilterParams.java b/src/com/android/bluetooth/gatt/FilterParams.java
new file mode 100644
index 000000000..3b702794f
--- /dev/null
+++ b/src/com/android/bluetooth/gatt/FilterParams.java
@@ -0,0 +1 @@
+/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.bluetooth.gatt; /** @hide */ public class FilterParams { private int mClientIf; private int mFiltIndex; private int mFeatSeln; private int mListLogicType; private int mFiltLogicType; private int mRssiHighValue; private int mRssiLowValue; private int mDelyMode; private int mFoundTimeOut; private int mLostTimeOut; private int mFoundTimeOutCnt; private int mNumOfTrackEntries; public FilterParams(int client_if, int filt_index, int feat_seln, int list_logic_type, int filt_logic_type, int rssi_high_thres, int rssi_low_thres, int dely_mode, int found_timeout, int lost_timeout, int found_timeout_cnt, int num_of_tracking_entries) { mClientIf = client_if; mFiltIndex = filt_index; mFeatSeln = feat_seln; mListLogicType = list_logic_type; mFiltLogicType = filt_logic_type; mRssiHighValue = rssi_high_thres; mRssiLowValue = rssi_low_thres; mDelyMode = dely_mode; mFoundTimeOut = found_timeout; mLostTimeOut = lost_timeout; mFoundTimeOutCnt = found_timeout_cnt; mNumOfTrackEntries = num_of_tracking_entries; } public int getClientIf () { return mClientIf; } public int getFiltIndex () { return mFiltIndex; } public int getFeatSeln () { return mFeatSeln; } public int getDelyMode () { return mDelyMode; } public int getListLogicType () { return mListLogicType; } public int getFiltLogicType () { return mFiltLogicType; } public int getRSSIHighValue () { return mRssiHighValue; } public int getRSSILowValue () { return mRssiLowValue; } public int getFoundTimeout () { return mFoundTimeOut; } public int getFoundTimeOutCnt () { return mFoundTimeOutCnt; } public int getLostTimeout () { return mLostTimeOut; } public int getNumOfTrackEntries () { return mNumOfTrackEntries; } } \ No newline at end of file
diff --git a/src/com/android/bluetooth/gatt/GattService.java b/src/com/android/bluetooth/gatt/GattService.java
index c428cf832..71f11827b 100644
--- a/src/com/android/bluetooth/gatt/GattService.java
+++ b/src/com/android/bluetooth/gatt/GattService.java
@@ -1132,24 +1132,37 @@ public class GattService extends ProfileService {
flushPendingBatchResults(clientIf, isServer);
}
- void onTrackAdvFoundLost(int filterIndex, int addrType, String address, int advState,
- int clientIf) throws RemoteException {
- if (DBG) Log.d(TAG, "onClientAdvertiserFoundLost() - clientIf="
- + clientIf + "address = " + address + "adv_state = "
- + advState + "client_if = " + clientIf);
- ClientMap.App app = mClientMap.getById(clientIf);
+ AdvtFilterOnFoundOnLostInfo CreateonTrackAdvFoundLostObject(int client_if, int adv_pkt_len,
+ byte[] adv_pkt, int scan_rsp_len, byte[] scan_rsp, int filt_index, int adv_state,
+ int adv_info_present, String address, int addr_type, int tx_power, int rssi_value,
+ int time_stamp) {
+
+ return new AdvtFilterOnFoundOnLostInfo(client_if, adv_pkt_len, adv_pkt,
+ scan_rsp_len, scan_rsp, filt_index, adv_state,
+ adv_info_present, address, addr_type, tx_power,
+ rssi_value, time_stamp);
+ }
+
+ void onTrackAdvFoundLost(AdvtFilterOnFoundOnLostInfo trackingInfo) throws RemoteException {
+ if (DBG) Log.d(TAG, "onTrackAdvFoundLost() - clientIf="
+ + trackingInfo.getClientIf() + "address = " + trackingInfo.getAddress() +
+ "adv_state = " + trackingInfo.getAdvState()+ "address type=" +
+ trackingInfo.getAddressType()
+ + "ADV packet data =" + trackingInfo.getAdvPacketLen());
+
+ ClientMap.App app = mClientMap.getById(trackingInfo.getClientIf());
if (app == null || app.callback == null) {
Log.e(TAG, "app or callback is null");
return;
}
// use hw signal for only onlost reporting
- if (advState != ADVT_STATE_ONLOST) {
+ if (trackingInfo.getAdvState() != ADVT_STATE_ONLOST) {
return;
}
for (ScanClient client : mScanManager.getRegularScanQueue()) {
- if (client.clientIf == clientIf) {
+ if (client.clientIf == trackingInfo.getClientIf()) {
ScanSettings settings = client.settings;
if ((settings.getCallbackType() &
ScanSettings.CALLBACK_TYPE_MATCH_LOST) != 0) {
diff --git a/src/com/android/bluetooth/gatt/ScanManager.java b/src/com/android/bluetooth/gatt/ScanManager.java
index d93e4106a..ae5a76ff6 100644
--- a/src/com/android/bluetooth/gatt/ScanManager.java
+++ b/src/com/android/bluetooth/gatt/ScanManager.java
@@ -657,6 +657,8 @@ public class ScanManager {
private void configureScanFilters(ScanClient client) {
int clientIf = client.clientIf;
int deliveryMode = getDeliveryMode(client);
+ // TBD - The value needs to be handled appropriately
+ int trackEntries = 5;
if (!shouldAddAllPassFilterToController(client, deliveryMode)) {
return;
}
@@ -669,7 +671,8 @@ public class ScanManager {
int filterIndex = (deliveryMode == DELIVERY_MODE_BATCH) ?
ALL_PASS_FILTER_INDEX_BATCH_SCAN : ALL_PASS_FILTER_INDEX_REGULAR_SCAN;
resetCountDownLatch();
- configureFilterParamter(clientIf, client, ALL_PASS_FILTER_SELECTION, filterIndex);
+ configureFilterParamter(clientIf, client, ALL_PASS_FILTER_SELECTION, filterIndex,
+ trackEntries);
waitForCallback();
} else {
Deque<Integer> clientFilterIndices = new ArrayDeque<Integer>();
@@ -684,7 +687,8 @@ public class ScanManager {
waitForCallback();
}
resetCountDownLatch();
- configureFilterParamter(clientIf, client, featureSelection, filterIndex);
+ configureFilterParamter(clientIf, client, featureSelection, filterIndex,
+ trackEntries);
waitForCallback();
clientFilterIndices.add(filterIndex);
}
@@ -834,14 +838,14 @@ public class ScanManager {
// Configure filter parameters.
private void configureFilterParamter(int clientIf, ScanClient client, int featureSelection,
- int filterIndex) {
+ int filterIndex, int num_of_tracking_entries) {
int deliveryMode = getDeliveryMode(client);
int rssiThreshold = Byte.MIN_VALUE;
int timeout = getOnfoundLostTimeout(client);
- gattClientScanFilterParamAddNative(
- clientIf, filterIndex, featureSelection, LIST_LOGIC_TYPE,
- FILTER_LOGIC_TYPE, rssiThreshold, rssiThreshold, deliveryMode,
- timeout, timeout, ONFOUND_SIGHTINGS);
+ FilterParams FiltValue = new FilterParams(clientIf, filterIndex, featureSelection,
+ LIST_LOGIC_TYPE, FILTER_LOGIC_TYPE, rssiThreshold, rssiThreshold, deliveryMode,
+ timeout, timeout, ONFOUND_SIGHTINGS, num_of_tracking_entries);
+ gattClientScanFilterParamAddNative(FiltValue);
}
// Get delivery mode based on scan settings.
@@ -892,11 +896,7 @@ public class ScanManager {
long uuid_mask_lsb, long uuid_mask_msb, String name,
String address, byte addr_type, byte[] data, byte[] mask);
- private native void gattClientScanFilterParamAddNative(
- int client_if, int filt_index, int feat_seln,
- int list_logic_type, int filt_logic_type, int rssi_high_thres,
- int rssi_low_thres, int dely_mode, int found_timeout,
- int lost_timeout, int found_timeout_cnt);
+ private native void gattClientScanFilterParamAddNative(FilterParams FiltValue);
// Note this effectively remove scan filters for ALL clients.
private native void gattClientScanFilterParamClearAllNative(