#include "caleinterface.h"
#include "caadapterutils.h"
+#include "uarraylist.h"
#include "logger.h"
#include "oic_malloc.h"
#include "oic_string.h"
static bool g_setHighQoS = true;
static bool g_setFullScanFlag = false;
jclass g_LEInterface = NULL;
+static int g_manufactureDataCount = 0;
+static int g_serviceUuidCount = 0;
+
+// List of Service UUIDs
+static u_arraylist_t* g_serviceUuidList = NULL;
+
+// List of Manufacture Data
+static u_arraylist_t* g_manufactureDataList = NULL;
+
/**
* check if retry logic for connection routine has to be stopped or not.
* in case of error value including this method, connection routine has to be stopped.
return CA_STATUS_FAILED;
}
+void CALEClientAddUuid(char* uuid, int uuid_type)
+{
+ OIC_LOG(DEBUG, TAG, "CALEClientAddUuid");
+ VERIFY_NON_NULL_VOID(uuid, TAG, "uuid is null");
+
+ if (uuid_type == CA_LE_TYPE_CUSTOM_UUID)
+ {
+ if (g_manufactureDataCount == 0)
+ {
+ g_manufactureDataList = u_arraylist_create();
+ OIC_LOG(DEBUG, TAG, "List of manufacture data created");
+ }
+ for (int i = 0; i < g_manufactureDataCount; i++)
+ {
+ char *str = u_arraylist_get(g_manufactureDataList, i);
+ if (!strcmp(uuid, str))
+ {
+ OIC_LOG(DEBUG, TAG, "UUID already set before");
+ return;
+ }
+ }
+ g_manufactureDataCount++;
+ bool result = u_arraylist_add(g_manufactureDataList, uuid);
+ OIC_LOG_V(DEBUG, TAG, "Adding manufacture data: %s", u_arraylist_get(g_manufactureDataList, g_manufactureDataCount - 1));
+ }
+ else //uuid_type == CA_LE_TYPE_SERVICE_UUID
+ {
+ if (g_serviceUuidCount == 0)
+ {
+ g_serviceUuidList = u_arraylist_create();
+ OIC_LOG(DEBUG, TAG, "List of service uuid created");
+ }
+ for (int i = 0; i < g_serviceUuidCount; i++)
+ {
+ char *str = u_arraylist_get(g_serviceUuidList, i);
+ if (!strcmp(uuid, str))
+ {
+ OIC_LOG(DEBUG, TAG, "UUID already set before");
+ return;
+ }
+ }
+ g_serviceUuidCount++;
+ bool result = u_arraylist_add(g_serviceUuidList, uuid);
+ OIC_LOG_V(DEBUG, TAG, "Adding service UUID: %s", u_arraylist_get(g_serviceUuidList, g_serviceUuidCount - 1));
+ }
+}
+
CAResult_t CALEClientInitialize()
{
OIC_LOG(DEBUG, TAG, "CALEClientInitialize");
CALEClientJniInit();
+ CALEClientAddUuid(OIC_GATT_SERVICE_UUID, CA_LE_TYPE_SERVICE_UUID);
+ CALEClientAddUuid(OIC_GATT_CUSTOM_UUID, CA_LE_TYPE_CUSTOM_UUID);
+ CALEClientAddUuid(OIC_GATT_CUSTOM_UUID2, CA_LE_TYPE_CUSTOM_UUID);
+ CALEClientAddUuid(OIC_GATT_CUSTOM_UUID3, CA_LE_TYPE_CUSTOM_UUID);
if (!g_jvm)
{
g_LEInterface = NULL;
}
+ u_arraylist_free(&g_serviceUuidList);
+ u_arraylist_free(&g_manufactureDataList);
+
CALEDeleteSendBuffer(env);
if (g_uuidList)
VERIFY_NON_NULL(uuids, TAG, "uuids is null");
VERIFY_NON_NULL(env, TAG, "env is null");
+ int i, j;
if (!CALEIsEnableBTAdapter(env))
{
OIC_LOG(INFO, TAG, "BT adapter is not enabled");
}
// call scanfilter.Builder()
- jobject jni_obj_scanfilterBuilder = (*env)->NewObject(env, jni_cid_scanfilterBuilder,
- jni_mid_scanfilterBuilderCtor);
- if (!jni_obj_scanfilterBuilder)
+ jobject jni_obj_servicescanfilterBuilder[g_serviceUuidCount];
+ for (i = 0; i < g_serviceUuidCount; i++)
{
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanfilterBuilder is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
- return CA_STATUS_FAILED;
- }
-
- // call scanfilter.Builder()
- jobject jni_obj_scanfilterBuilder2 = (*env)->NewObject(env, jni_cid_scanfilterBuilder,
+ jni_obj_servicescanfilterBuilder[i] = (*env)->NewObject(env, jni_cid_scanfilterBuilder,
jni_mid_scanfilterBuilderCtor);
- if (!jni_obj_scanfilterBuilder2)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanfilterBuilder2 is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- return CA_STATUS_FAILED;
+ if (!jni_obj_servicescanfilterBuilder[i])
+ {
+ OIC_LOG_V(ERROR, TAG, "scanfilter: jni_obj_servicescanfilterBuilder[%d] is null", i);
+ (*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
+ for (j = 0; j < i; j++)
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilterBuilder[j]);
+ return CA_STATUS_FAILED;
+ }
}
// call scanfilter.Builder()
- jobject jni_obj_scanfilterBuilder3 = (*env)->NewObject(env, jni_cid_scanfilterBuilder,
- jni_mid_scanfilterBuilderCtor);
- if (!jni_obj_scanfilterBuilder3)
+ jobject jni_obj_customscanfilterBuilder[g_manufactureDataCount];
+ for (i = 0; i < g_manufactureDataCount; i++)
{
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanfilterBuilder3 is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- return CA_STATUS_FAILED;
- }
-
- // call scanfilter.Builder()
- jobject jni_obj_scanfilterBuilder4 = (*env)->NewObject(env, jni_cid_scanfilterBuilder,
+ jni_obj_customscanfilterBuilder[i] = (*env)->NewObject(env, jni_cid_scanfilterBuilder,
jni_mid_scanfilterBuilderCtor);
- if (!jni_obj_scanfilterBuilder4)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanfilterBuilder4 is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- return CA_STATUS_FAILED;
+ if (!jni_obj_customscanfilterBuilder[i])
+ {
+ OIC_LOG_V(ERROR, TAG, "scanfilter: jni_obj_customscanfilterBuilder[%d] is null", i);
+ (*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
+ for (j = 0; j < i; j++)
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[j]);
+ return CA_STATUS_FAILED;
+ }
}
// get scanfilter.Builder.setServiceUuid method id
OIC_LOG(ERROR, TAG, "scanfilter: jni_mid_setServiceUuid is null");
CACheckJNIException(env);
(*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
+ for (i = 0; i < g_serviceUuidCount; i++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilterBuilder[i]);
+ }
+ for (i = 0; i < g_manufactureDataCount; i++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[i]);
+ }
return CA_STATUS_FAILED;
}
OIC_LOG(ERROR, TAG, "scanfilter: jni_mid_setManufacturerData is null");
CACheckJNIException(env);
(*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
+ for (i = 0; i < g_serviceUuidCount; i++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilterBuilder[i]);
+ }
+ for (i = 0; i < g_manufactureDataCount; i++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[i]);
+ }
return CA_STATUS_FAILED;
}
// get scanfilter.Builder.build method id
OIC_LOG(ERROR, TAG, "scanfilter: jni_mid_build_scanfilterBuilder is null");
CACheckJNIException(env);
(*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
+ for (i = 0; i < g_serviceUuidCount; i++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilterBuilder[i]);
+ }
+ for (i = 0; i < g_manufactureDataCount; i++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[i]);
+ }
return CA_STATUS_FAILED;
}
(*env)->DeleteLocalRef(env, jni_cid_scanfilterBuilder);
- // call ParcelUuid.fromSting(uuid)
- jobject jni_obj_parcelUuid = CALEGetParcelUuidFromString(env, OIC_GATT_SERVICE_UUID);
- if (!jni_obj_parcelUuid)
+ jobject jni_obj_parcelUuid, jni_obj_setServiceUuid;
+ jobject jni_obj_servicescanfilter[g_serviceUuidCount];
+
+ for (i = 0; i < g_serviceUuidCount; i++)
{
- OIC_LOG(ERROR, TAG, "scanSettings: jni_obj_parcelUuid is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
+ // call ParcelUuid.fromSting(uuid)
+ jni_obj_parcelUuid = CALEGetParcelUuidFromString(env, u_arraylist_get(g_serviceUuidList, i));
+ if (!jni_obj_parcelUuid)
+ {
+ OIC_LOG(ERROR, TAG, "scanSettings: jni_obj_parcelUuid is null");
+ CACheckJNIException(env);
+ for (j = i; j < g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilterBuilder[j]);
+ }
+ for (j = 0; j < g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[j]);
+ }
+ return CA_STATUS_FAILED;
+ }
- // call setServiceUuid(uuid)
- jobject jni_obj_setServiceUuid = (*env)->CallObjectMethod(env,
- jni_obj_scanfilterBuilder,
+ // call setServiceUuid(uuid)
+ jni_obj_setServiceUuid = (*env)->CallObjectMethod(env,
+ jni_obj_servicescanfilterBuilder[i],
jni_mid_setServiceUuid,
jni_obj_parcelUuid);
- if (!jni_obj_setServiceUuid)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_setServiceUuid is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
+ if (!jni_obj_setServiceUuid)
+ {
+ OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_setServiceUuid is null");
+ CACheckJNIException(env);
+ for (j = i; j < g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilterBuilder[j]);
+ }
+ for (j = 0; j < g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[j]);
+ }
+ (*env)->DeleteLocalRef(env, jni_obj_parcelUuid);
+ return CA_STATUS_FAILED;
+ }
(*env)->DeleteLocalRef(env, jni_obj_parcelUuid);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_obj_parcelUuid);
- (*env)->DeleteLocalRef(env, jni_obj_setServiceUuid);
+ (*env)->DeleteLocalRef(env, jni_obj_setServiceUuid);
- // call build()
- jobject jni_obj_scanfilter = (*env)->CallObjectMethod(env,
- jni_obj_scanfilterBuilder,
+ // call build()
+ jni_obj_servicescanfilter[i] = (*env)->CallObjectMethod(env,
+ jni_obj_servicescanfilterBuilder[i],
jni_mid_build_scanfilterBuilder);
- if (!jni_obj_scanfilter)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanfilter is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder);
+ if (!jni_obj_servicescanfilter[i])
+ {
+ OIC_LOG_V(ERROR, TAG, "scanfilter: jni_obj_scanfilter[%d] is null", i);
+ CACheckJNIException(env);
+ for (j = i; j < g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilterBuilder[j]);
+ }
+ for (j = 0; j < g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[j]);
+ }
+ return CA_STATUS_FAILED;
+ }
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilterBuilder[i]);
- OIC_LOG(DEBUG, TAG, "Service UUID scanfilter set");
+ OIC_LOG_V(DEBUG, TAG, "Total %d Service UUID based scanfilter(s) created by now", i + 1);
+ }
jint jni_int_manId;
jbyteArray jni_byte_manData;
+ jobject jni_obj_setManufacturerData;
+ jobject jni_obj_customscanfilter[g_manufactureDataCount];
// set manufactererId
jni_int_manId = MANUFACTURE_ID;
- // call utility function to set manufacturerData
- jni_byte_manData = CALEGetManufacturerData(env, OIC_GATT_CUSTOM_UUID);
- if(!jni_byte_manData)
- {
- OIC_LOG(ERROR, TAG, "scanSettings: jni_byte_manData is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
-
- // call set(uuid)
- jobject jni_obj_setManufacturerData = (*env)->CallObjectMethod(env,
- jni_obj_scanfilterBuilder2,
- jni_mid_setManufacturerData,
- jni_int_manId,
- jni_byte_manData);
- if (!jni_obj_setManufacturerData)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_setManufacturerData is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_byte_manData);
- (*env)->DeleteLocalRef(env, jni_obj_setManufacturerData);
-
- // call build()
- jobject jni_obj_scanfilter2 = (*env)->CallObjectMethod(env,
- jni_obj_scanfilterBuilder2,
- jni_mid_build_scanfilterBuilder);
- if (!jni_obj_scanfilter2)
+ // set custom scanfilters
+ for (i = 0; i < g_manufactureDataCount; i++)
{
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanfilter2 is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder2);
-
- OIC_LOG(DEBUG, TAG, "First custom UUID scanfilter set");
-
- // call utility function to set manufacturerData
- jni_byte_manData = CALEGetManufacturerData(env, OIC_GATT_CUSTOM_UUID2);
- if(!jni_byte_manData)
- {
- OIC_LOG(ERROR, TAG, "scanSettings: jni_byte_manData is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
+ // call utility function to set manufacturerData
+ jni_byte_manData = CALEGetManufacturerData(env, u_arraylist_get(g_manufactureDataList, i));
+ if (!jni_byte_manData)
+ {
+ OIC_LOG(ERROR, TAG, "scanSettings: jni_byte_manData is null");
+ CACheckJNIException(env);
+ for(j = i; j < g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[j]);
+ }
+ return CA_STATUS_FAILED;
+ }
- // call set(uuid)
- jni_obj_setManufacturerData = (*env)->CallObjectMethod(env,
- jni_obj_scanfilterBuilder3,
+ // call set(uuid)
+ jni_obj_setManufacturerData = (*env)->CallObjectMethod(env,
+ jni_obj_customscanfilterBuilder[i],
jni_mid_setManufacturerData,
jni_int_manId,
jni_byte_manData);
+ if (!jni_obj_setManufacturerData)
+ {
+ OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_setManufacturerData is null");
+ CACheckJNIException(env);
+ for (j = i; j < g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[j]);
+ }
+ return CA_STATUS_FAILED;
+ }
+ (*env)->DeleteLocalRef(env, jni_byte_manData);
+ (*env)->DeleteLocalRef(env, jni_obj_setManufacturerData);
+
+ // call build()
+ jni_obj_customscanfilter[i] = (*env)->CallObjectMethod(env,
+ jni_obj_customscanfilterBuilder[i],
+ jni_mid_build_scanfilterBuilder);
+ if (!jni_obj_customscanfilter[i])
+ {
+ OIC_LOG_V(ERROR, TAG, "scanfilter: jni_obj_customscanfilter[%d] is null", i);
+ CACheckJNIException(env);
+ for (j = i; j < g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[j]);
+ }
+ return CA_STATUS_FAILED;
+ }
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilterBuilder[i]);
- if (!jni_obj_setManufacturerData)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_setManufacturerData is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_byte_manData);
- (*env)->DeleteLocalRef(env, jni_obj_setManufacturerData);
-
- // call build()
- jobject jni_obj_scanfilter3 = (*env)->CallObjectMethod(env,
- jni_obj_scanfilterBuilder3,
- jni_mid_build_scanfilterBuilder);
- if (!jni_obj_scanfilter3)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanfilter3 is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder3);
- OIC_LOG(DEBUG, TAG, "Second custom UUID scanfilter set");
-
- // call utility function to set manufacturerData
- jni_byte_manData = CALEGetManufacturerData(env, OIC_GATT_CUSTOM_UUID3);
- if(!jni_byte_manData)
- {
- OIC_LOG(ERROR, TAG, "scanSettings: jni_byte_manData is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
-
- // call set(uuid)
- jni_obj_setManufacturerData = (*env)->CallObjectMethod(env,
- jni_obj_scanfilterBuilder4,
- jni_mid_setManufacturerData,
- jni_int_manId,
- jni_byte_manData);
-
- if (!jni_obj_setManufacturerData)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_setManufacturerData is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_byte_manData);
- (*env)->DeleteLocalRef(env, jni_obj_setManufacturerData);
-
- // call build()
- jobject jni_obj_scanfilter4 = (*env)->CallObjectMethod(env,
- jni_obj_scanfilterBuilder4,
- jni_mid_build_scanfilterBuilder);
- if (!jni_obj_scanfilter4)
- {
- OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanfilter4 is null");
- CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- return CA_STATUS_FAILED;
+ OIC_LOG_V(DEBUG, TAG, "Total %d manufacture data based scanfilter(s) created by now", i + 1);
}
- (*env)->DeleteLocalRef(env, jni_obj_scanfilterBuilder4);
- OIC_LOG(DEBUG, TAG, "Third custom UUID scanfilter set");
// get scanSettings.Builder class id
jclass jni_cid_scanSettingsBuilder = (*env)->FindClass(env,
{
OIC_LOG(ERROR, TAG, "scanSettings: jni_cid_scanSettingsBuilder is null");
CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
return CA_STATUS_FAILED;
}
{
OIC_LOG(ERROR, TAG, "scanSettings: jni_mid_scanSettingsBuilderCtor is null");
CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
(*env)->DeleteLocalRef(env, jni_cid_scanSettingsBuilder);
return CA_STATUS_FAILED;
}
{
OIC_LOG(ERROR, TAG, "scanSettings: jni_mid_setScanMode is null");
CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
(*env)->DeleteLocalRef(env, jni_cid_scanSettingsBuilder);
return CA_STATUS_FAILED;
}
{
OIC_LOG(ERROR, TAG, "scanSettings: jni_mid_build_scanSettings is null");
CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
(*env)->DeleteLocalRef(env, jni_cid_scanSettingsBuilder);
return CA_STATUS_FAILED;
}
{
OIC_LOG(ERROR, TAG, "scanfilter: jni_obj_scanSettingBuilder is null");
CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
(*env)->DeleteLocalRef(env, jni_cid_scanSettingsBuilder);
return CA_STATUS_FAILED;
}
{
OIC_LOG(ERROR, TAG, "ArrayList: jni_cid_arrayList is null");
CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
(*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
return CA_STATUS_FAILED;
}
{
OIC_LOG(ERROR, TAG, "ArrayList: jni_mid_arrayListCtor is null");
CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
(*env)->DeleteLocalRef(env, jni_cid_arrayList);
(*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
return CA_STATUS_FAILED;
{
OIC_LOG(ERROR, TAG, "ArrayList: jni_mid_arrayListAdd is null");
CACheckJNIException(env);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
(*env)->DeleteLocalRef(env, jni_cid_arrayList);
(*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
return CA_STATUS_FAILED;
if (!jni_obj_filterList)
{
OIC_LOG(ERROR, TAG, "ArrayList: jni_obj_filterList is null");
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
+ for (j = 0; j< g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for (j = 0; j< g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
(*env)->DeleteLocalRef(env, jni_cid_arrayList);
(*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
return CA_STATUS_FAILED;
}
(*env)->DeleteLocalRef(env, jni_cid_arrayList);
- jboolean jni_bool_arrayListIsAdded = (*env)->CallBooleanMethod(env, jni_obj_filterList,
- jni_mid_arrayListAdd,
- jni_obj_scanfilter);
- if (!jni_bool_arrayListIsAdded)
+ jboolean jni_bool_arrayListIsAdded;
+ for (i = 0; i < g_serviceUuidCount; i++)
{
- OIC_LOG(ERROR, TAG, "ArrayList: jni_bool_arrayListIsAdded is null");
- (*env)->DeleteLocalRef(env, jni_obj_filterList);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
- (*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter);
-
- jni_bool_arrayListIsAdded = (*env)->CallBooleanMethod(env, jni_obj_filterList,
+ jni_bool_arrayListIsAdded = (*env)->CallBooleanMethod(env, jni_obj_filterList,
jni_mid_arrayListAdd,
- jni_obj_scanfilter2);
- if (!jni_bool_arrayListIsAdded)
- {
- OIC_LOG(ERROR, TAG, "ArrayList: jni_bool_arrayListIsAdded is null");
- (*env)->DeleteLocalRef(env, jni_obj_filterList);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter2);
- (*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
- return CA_STATUS_FAILED;
+ jni_obj_servicescanfilter[i]);
+ if (!jni_bool_arrayListIsAdded)
+ {
+ OIC_LOG(ERROR, TAG, "ArrayList: jni_bool_arrayListIsAdded is null");
+ (*env)->DeleteLocalRef(env, jni_obj_filterList);
+ for(j = i; j < g_serviceUuidCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[j]);
+ }
+ for(j = 0; j < g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
+ (*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
+ return CA_STATUS_FAILED;
+ }
+ (*env)->DeleteLocalRef(env, jni_obj_servicescanfilter[i]);
+ OIC_LOG_V(INFO, TAG, "%d st/nd/th service uuid based scanFilters Added", i + 1);
}
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter2);
- jni_bool_arrayListIsAdded = (*env)->CallBooleanMethod(env, jni_obj_filterList,
- jni_mid_arrayListAdd,
- jni_obj_scanfilter3);
- if (!jni_bool_arrayListIsAdded)
+ for (i = 0; i < g_manufactureDataCount; i++)
{
- OIC_LOG(ERROR, TAG, "ArrayList: jni_bool_arrayListIsAdded is null");
- (*env)->DeleteLocalRef(env, jni_obj_filterList);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter3);
- (*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
- return CA_STATUS_FAILED;
- }
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter3);
-
- jni_bool_arrayListIsAdded = (*env)->CallBooleanMethod(env, jni_obj_filterList,
+ jni_bool_arrayListIsAdded = (*env)->CallBooleanMethod(env, jni_obj_filterList,
jni_mid_arrayListAdd,
- jni_obj_scanfilter4);
- if (!jni_bool_arrayListIsAdded)
- {
- OIC_LOG(ERROR, TAG, "ArrayList: jni_bool_arrayListIsAdded is null");
- (*env)->DeleteLocalRef(env, jni_obj_filterList);
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter4);
- (*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
- return CA_STATUS_FAILED;
+ jni_obj_customscanfilter[i]);
+ if (!jni_bool_arrayListIsAdded)
+ {
+ OIC_LOG(ERROR, TAG, "ArrayList: jni_bool_arrayListIsAdded is null");
+ (*env)->DeleteLocalRef(env, jni_obj_filterList);
+ for(j = i; j < g_manufactureDataCount; j++)
+ {
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[j]);
+ }
+ (*env)->DeleteLocalRef(env, jni_obj_scanSettingBuilder);
+ return CA_STATUS_FAILED;
+ }
+ (*env)->DeleteLocalRef(env, jni_obj_customscanfilter[i]);
+ OIC_LOG_V(INFO, TAG, "%d st/nd/th manufacture data based scanFilters Added", i + 1);
}
- (*env)->DeleteLocalRef(env, jni_obj_scanfilter4);
- OIC_LOG(INFO, TAG, "ScanFilters Added");
+ OIC_LOG(INFO, TAG, "All ScanFilters Added");
// get ScanSettings.SCAN_MODE_BALANCED jint value
jint jni_int_scanBalancedMode = CALEGetConstantsValue(env, CLASSPATH_LE_SCANSETTINGS,
"SCAN_MODE_BALANCED");