env, jni_cid_BTSocket, "getRemoteDevice", "()Landroid/bluetooth/BluetoothDevice;");
if (!jni_mid_getRemoteDevice)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTSocket);
+
OIC_LOG(ERROR, TAG, "[EDR] getRemoteAddress: jni_mid_getRemoteDevice is null");
return NULL;
}
jni_mid_getRemoteDevice);
if (!jni_obj_remoteBTDevice)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTSocket);
+
OIC_LOG(ERROR, TAG, "[EDR] getRemoteAddress: jni_obj_remoteBTDevice is null");
return NULL;
}
jclass jni_cid_BTDevice = (*env)->FindClass(env, CLASSPATH_BT_DEVICE);
if (!jni_cid_BTDevice)
{
+ (*env)->DeleteLocalRef(env, jni_obj_remoteBTDevice);
+ (*env)->DeleteLocalRef(env, jni_cid_BTSocket);
+
OIC_LOG(ERROR, TAG, "[EDR] getRemoteAddress: jni_cid_BTDevice is null");
return NULL;
}
METHODID_STRINGNONPARAM);
if (!j_mid_getAddress)
{
+ (*env)->DeleteLocalRef(env, jni_obj_remoteBTDevice);
+ (*env)->DeleteLocalRef(env, jni_cid_BTDevice);
+ (*env)->DeleteLocalRef(env, jni_cid_BTSocket);
+
OIC_LOG(ERROR, TAG, "[EDR] getRemoteAddress: j_mid_getAddress is null");
return NULL;
}
jstring j_str_address = (*env)->CallObjectMethod(env, jni_obj_remoteBTDevice, j_mid_getAddress);
if (!j_str_address)
{
+ (*env)->DeleteLocalRef(env, jni_obj_remoteBTDevice);
+ (*env)->DeleteLocalRef(env, jni_cid_BTDevice);
+ (*env)->DeleteLocalRef(env, jni_cid_BTSocket);
+
OIC_LOG(ERROR, TAG, "[EDR] getRemoteAddress: j_str_address is null");
return NULL;
}
+ (*env)->DeleteLocalRef(env, jni_obj_remoteBTDevice);
+ (*env)->DeleteLocalRef(env, jni_cid_BTDevice);
+ (*env)->DeleteLocalRef(env, jni_cid_BTSocket);
+
return j_str_address;
}
METHODID_OBJECTNONPARAM);
if (!jni_mid_getDefaultAdapter)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getAddress: jni_mid_getDefaultAdapter is null");
return NULL;
}
METHODID_STRINGNONPARAM);
if (!jni_mid_getAddress)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getAddress: jni_mid_getAddress is null");
return NULL;
}
jni_mid_getDefaultAdapter);
if (!jni_obj_BTAdapter)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getAddress: jni_obj_BTAdapter is null");
return NULL;
}
jni_mid_getAddress);
if (!jni_str_address)
{
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getAddress: jni_str_address is null");
return NULL;
}
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
return jni_str_address;
}
METHODID_OBJECTNONPARAM);
if (!jni_mid_getDefaultAdapter)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getBondedDevices: default adapter is null");
return NULL;
}
jni_mid_getDefaultAdapter);
if (!jni_obj_BTAdapter)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getBondedDevices: bluetooth adapter is null");
return NULL;
}
"()Ljava/util/Set;");
if (!jni_mid_getBondedDevices)
{
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getBondedDevices: jni_mid_getBondedDevicesr is null");
return NULL;
}
jni_mid_getBondedDevices);
if (!jni_obj_setPairedDevices)
{
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getBondedDevices: jni_obj_setPairedDevices is null");
return NULL;
}
jclass jni_cid_Set = (*env)->FindClass(env, "java/util/Set");
if (!jni_cid_Set)
{
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_obj_setPairedDevices);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getBondedDevices: jni_cid_Set is null");
return NULL;
}
if (!jni_mid_toArray)
{
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_obj_setPairedDevices);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getBondedDevices: jni_mid_toArray is null");
return NULL;
}
(*env)->CallObjectMethod(env, jni_obj_setPairedDevices, jni_mid_toArray));
if (!jni_arrayPairedDevices)
{
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_obj_setPairedDevices);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] getBondedDevices: jni_arrayPairedDevices is null");
return NULL;
}
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_obj_setPairedDevices);
+
return jni_arrayPairedDevices;
}
jfieldID jni_fid_stateon = (*env)->GetStaticFieldID(env, jni_cid_BTAdapter, "STATE_ON", "I");
if (jni_fid_stateon == 0)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] get_field_state is 0");
return ERROR_CODE;
}
OIC_LOG_V(DEBUG, TAG, "[EDR][Native] bluetooth state integer value : %d", jni_int_val);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
return jni_int_val;
}
METHODID_OBJECTNONPARAM);
if (!jni_mid_getDefaultAdapter)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] jni_mid_getDefaultAdapter is null");
return JNI_FALSE;
}
jni_mid_getDefaultAdapter);
if (!jni_obj_BTAdapter)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] jni_obj_BTAdapter is null");
return JNI_FALSE;
}
jmethodID jni_mid_isEnable = (*env)->GetMethodID(env, jni_cid_BTAdapter, "isEnabled", "()Z");
if (!jni_mid_isEnable)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] jni_mid_isEnable is null");
return JNI_FALSE;
}
jboolean jni_isEnable = (*env)->CallBooleanMethod(env, jni_obj_BTAdapter, jni_mid_isEnable);
OIC_LOG_V(DEBUG, TAG, "[EDR][Native] adapter state is %d", jni_isEnable);
+ (*env)->DeleteLocalRef(env, jni_obj_BTAdapter);
+ (*env)->DeleteLocalRef(env, jni_cid_BTAdapter);
+
return jni_isEnable;
}
OIC_LOG(ERROR, TAG, "[EDR][Native] newstate is null");
return;
}
- OICStrcpy(newstate->address, sizeof(newstate->address), address);
+ OICStrcpy((char*) newstate->address, sizeof(newstate->address), address);
newstate->state = state;
CAEDRNativeAddDeviceStateToList(newstate);
return;
}
- if (CAEDRNativeIsDeviceInList(state->address))
+ if (CAEDRNativeIsDeviceInList((const char*) state->address))
{
- CAEDRNativeRemoveDevice(state->address); // delete previous state for update new state
+ // delete previous state for update new state
+ CAEDRNativeRemoveDevice((const char*) state->address);
}
u_arraylist_add(g_deviceStateList, state); // update new state
OIC_LOG_V(DEBUG, TAG, "Set State Info to List : %d", state->state);
return false;
}
- if (!strcmp(remoteAddress, state->address))
+ if (!strcmp(remoteAddress, (const char*) state->address))
{
OIC_LOG(DEBUG, TAG, "the device is already set");
return true;
continue;
}
- if (!strcmp(state->address, remoteAddress))
+ if (!strcmp((const char*) state->address, remoteAddress))
{
OIC_LOG_V(DEBUG, TAG, "[EDR][Native] remove state : %s", remoteAddress);
OICFree(state);
- CAEDRReorderingDeviceList(index);
+ u_arraylist_remove(g_deviceStateList, index);
break;
}
}
continue;
}
- if (!strcmp(state->address, remoteAddress))
+ if (!strcmp((const char*) state->address, remoteAddress))
{
OIC_LOG(DEBUG, TAG, "[EDR][Native] check whether it is connected or not");
return STATE_DISCONNECTED;
}
-void CAEDRReorderingDeviceList(uint32_t index)
-{
- if (index >= g_deviceStateList->length)
- {
- return;
- }
-
- if (index < g_deviceStateList->length - 1)
- {
- memmove(&g_deviceStateList->data[index], &g_deviceStateList->data[index + 1],
- (g_deviceStateList->length - index - 1) * sizeof(void *));
- }
-
- g_deviceStateList->size--;
- g_deviceStateList->length--;
-}
-
/**
* Device Socket Object List
*/
OIC_LOG(DEBUG, TAG, "Set Socket Object to Array");
}
(*env)->ReleaseStringUTFChars(env, jni_remoteAddress, remoteAddress);
+ (*env)->DeleteLocalRef(env, jni_remoteAddress);
}
bool CAEDRNativeIsDeviceSocketInList(JNIEnv *env, const char* remoteAddress)
}
jstring jni_setAddress = CAEDRNativeGetAddressFromDeviceSocket(env, jarrayObj);
+ (*env)->DeleteLocalRef(env, jarrayObj);
if (!jni_setAddress)
{
OIC_LOG(DEBUG, TAG, "[EDR][Native] jni_setAddress is null");
(*env)->ReleaseStringUTFChars(env, jni_setAddress, setAddress);
(*env)->ReleaseStringUTFChars(env, jni_remoteAddress, remoteAddress);
- CAEDRReorderingDeviceSocketList(index);
+ u_arraylist_remove(g_deviceObjectList, index);
break;
}
(*env)->ReleaseStringUTFChars(env, jni_setAddress, setAddress);
(*env)->ReleaseStringUTFChars(env, jni_setAddress, setAddress);
(*env)->ReleaseStringUTFChars(env, address, remoteAddress);
- CAEDRReorderingDeviceSocketList(index);
+ u_arraylist_remove(g_deviceObjectList, index);
break;
}
(*env)->ReleaseStringUTFChars(env, jni_setAddress, setAddress);
{
OIC_LOG_V(ERROR, TAG, "[EDR][Native] remove object : %s", remoteAddress);
(*env)->ReleaseStringUTFChars(env, jni_setAddress, setAddress);
+ (*env)->DeleteLocalRef(env, jni_setAddress);
return jarrayObj;
}
(*env)->ReleaseStringUTFChars(env, jni_setAddress, setAddress);
+ (*env)->DeleteLocalRef(env, jni_setAddress);
}
return NULL;
return length;
}
-
-void CAEDRReorderingDeviceSocketList(uint32_t index)
-{
- if (index >= g_deviceObjectList->length)
- {
- return;
- }
-
- if (index < g_deviceObjectList->length - 1)
- {
- memmove(&g_deviceObjectList->data[index], &g_deviceObjectList->data[index + 1],
- (g_deviceObjectList->length - index - 1) * sizeof(void *));
- }
-
- g_deviceObjectList->size--;
- g_deviceObjectList->length--;
-}