CAEDRNativeRemoveDeviceSocket(env, jni_obj_socket);
(*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
+
return CA_STATUS_FAILED;
}
jclass jni_cid_BTsocket = (*env)->FindClass(env, "android/bluetooth/BluetoothSocket");
if (!jni_cid_BTsocket)
{
+ (*env)->DeleteLocalRef(env, jni_str_address);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] btReadData: jni_cid_BTsocket is null");
return CA_STATUS_FAILED;
}
if (!jni_obj_socket)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+ (*env)->DeleteLocalRef(env, jni_str_address);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] jni_obj_socket is not available anymore..");
return CA_STATUS_FAILED;
}
jclass jni_cid_InputStream = (*env)->FindClass(env, "java/io/InputStream");
if (!jni_cid_InputStream)
{
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+ (*env)->DeleteLocalRef(env, jni_str_address);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] btReadData: jni_cid_InputStream is null");
return CA_STATUS_FAILED;
}
if (!jni_obj_socket)
{
+ (*env)->DeleteLocalRef(env, jni_cid_InputStream);
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+ (*env)->DeleteLocalRef(env, jni_str_address);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] jni_obj_socket is not available anymore...");
return CA_STATUS_FAILED;
}
if (-1 == length)
{
+ (*env)->DeleteLocalRef(env, jni_cid_InputStream);
+ (*env)->DeleteLocalRef(env, jbuf);
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+ (*env)->DeleteLocalRef(env, jni_str_address);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] read buffer is empty...");
return CA_STATUS_FAILED;
}
CAEDRUpdateDeviceState(STATE_DISCONNECTED, address);
ca_mutex_unlock(g_mutexStateList);
(*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+
+ (*env)->DeleteLocalRef(env, jbuf);
+ (*env)->DeleteLocalRef(env, jni_cid_InputStream);
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+ (*env)->DeleteLocalRef(env, jni_str_address);
+
return CA_STATUS_FAILED;
}
jbyte* buf = (*env)->GetByteArrayElements(env, jbuf, NULL);
if (NULL == buf)
{
+ (*env)->DeleteLocalRef(env, jni_cid_InputStream);
+ (*env)->DeleteLocalRef(env, jbuf);
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+ (*env)->DeleteLocalRef(env, jni_str_address);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] btReadData: buf is null");
return CA_STATUS_FAILED;
}
}
(*env)->ReleaseByteArrayElements(env, jbuf, buf, 0);
(*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+
+ (*env)->DeleteLocalRef(env, jni_cid_InputStream);
+ (*env)->DeleteLocalRef(env, jbuf);
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+ (*env)->DeleteLocalRef(env, jni_str_address);
}
else
{
"()Z");
if (!jni_mid_isConnected)
{
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+
OIC_LOG(ERROR, TAG, "[EDR][Native] CAEDRIsConnectedForSocket \
- jni_mid_isConnected is null.");
return JNI_FALSE;
jboolean jni_isConnected = (*env)->CallBooleanMethod(env, socket, jni_mid_isConnected);
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+
return jni_isConnected;
}
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);
+
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);
+
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);
+
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);
+
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;
}