code clean up in connection manager
authorJaewook Jung <jw0213.jung@samsung.com>
Mon, 11 Apr 2016 05:48:30 +0000 (14:48 +0900)
committerJon A. Cruz <jon@joncruz.org>
Wed, 27 Apr 2016 05:59:33 +0000 (05:59 +0000)
code clean up in connection manager

Change-Id: I842c0f49d87525d28b916e90e54d9afa4dc5ad8e
Signed-off-by: Jaewook Jung <jw0213.jung@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/7731
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: jihwan seo <jihwan.seo@samsung.com>
Reviewed-by: Jon A. Cruz <jon@joncruz.org>
resource/csdk/connectivity/src/bt_le_adapter/android/caleclient.c
resource/csdk/connectivity/util/src/camanager/android/caleautoconnector.c
resource/csdk/connectivity/util/src/camanager/android/caleconnectionmanager.c
resource/csdk/connectivity/util/src/camanager/android/camanagerdevice.c
resource/csdk/connectivity/util/src/camanager/android/camanagerdevice.h
resource/csdk/connectivity/util/src/camanager/android/camanagerleutil.c

index d67e862..14e8fdb 100644 (file)
@@ -1266,15 +1266,16 @@ CAResult_t CALEClientStartScanImpl(JNIEnv *env, jobject callback)
     }
 
     // call start le scan method
+    OIC_LOG(INFO, TAG, "CALL API - startLeScan");
     jboolean jni_obj_startLeScan = (*env)->CallBooleanMethod(env, jni_obj_BTAdapter,
                                                              jni_mid_startLeScan, callback);
     if (!jni_obj_startLeScan)
     {
-        OIC_LOG(INFO, TAG, "startLeScan is failed");
+        OIC_LOG(INFO, TAG, "startLeScan has failed");
     }
     else
     {
-        OIC_LOG(DEBUG, TAG, "startLeScan is started");
+        OIC_LOG(DEBUG, TAG, "LeScan has started");
         CALEClientSetScanFlag(true);
     }
 
@@ -1330,15 +1331,16 @@ CAResult_t CALEClientStartScanWithUUIDImpl(JNIEnv *env, jobjectArray uuids, jobj
     }
 
     // call start le scan method
+    OIC_LOG(INFO, TAG, "CALL API - startLeScan (with UUID)");
     jboolean jni_obj_startLeScan = (*env)->CallBooleanMethod(env, jni_obj_BTAdapter,
                                                              jni_mid_startLeScan, uuids, callback);
     if (!jni_obj_startLeScan)
     {
-        OIC_LOG(INFO, TAG, "startLeScan With UUID is failed");
+        OIC_LOG(INFO, TAG, "startLeScan has failed");
     }
     else
     {
-        OIC_LOG(DEBUG, TAG, "startLeScan With UUID is started");
+        OIC_LOG(DEBUG, TAG, "LeScan has started");
         CALEClientSetScanFlag(true);
     }
 
@@ -1489,7 +1491,7 @@ CAResult_t CALEClientStopScanImpl(JNIEnv *env, jobject callback)
         return CA_STATUS_FAILED;
     }
 
-    OIC_LOG(DEBUG, TAG, "CALL API - request to stop LE Scan");
+    OIC_LOG(INFO, TAG, "CALL API - stopLeScan");
     // call start le scan method
     (*env)->CallVoidMethod(env, jni_obj_BTAdapter, jni_mid_stopLeScan, callback);
     if ((*env)->ExceptionCheck(env))
@@ -1503,8 +1505,7 @@ CAResult_t CALEClientStopScanImpl(JNIEnv *env, jobject callback)
     return CA_STATUS_OK;
 }
 
-CAResult_t CALEClientSetFlagToState(JNIEnv *env, jstring jni_address,
-                                  jint state_idx, jboolean flag)
+CAResult_t CALEClientSetFlagToState(JNIEnv *env, jstring jni_address, jint state_idx, jboolean flag)
 {
     OIC_LOG(DEBUG, TAG, "IN - CALEClientSetFlagToState");
     VERIFY_NON_NULL(env, TAG, "env");
@@ -1559,14 +1560,15 @@ jboolean CALEClientGetFlagFromState(JNIEnv *env, jstring jni_address, jint state
     if (!address)
     {
         OIC_LOG(ERROR, TAG, "address is not available");
+        ca_mutex_unlock(g_deviceStateListMutex);
         return JNI_FALSE;
     }
 
     CALEState_t* curState = CALEClientGetStateInfo(address);
+    (*env)->ReleaseStringUTFChars(env, jni_address, address);
     if(!curState)
     {
         OIC_LOG(INFO, TAG, "there is no information. auto connect flag is false");
-        (*env)->ReleaseStringUTFChars(env, jni_address, address);
         ca_mutex_unlock(g_deviceStateListMutex);
         return JNI_FALSE;
     }
@@ -1580,11 +1582,9 @@ jboolean CALEClientGetFlagFromState(JNIEnv *env, jstring jni_address, jint state
         default:
             break;
     }
-    OIC_LOG_V(INFO, TAG, "%d flag is %d", state_idx, ret);
-
-    (*env)->ReleaseStringUTFChars(env, jni_address, address);
     ca_mutex_unlock(g_deviceStateListMutex);
 
+    OIC_LOG_V(INFO, TAG, "%d flag is %d", state_idx, ret);
     OIC_LOG(DEBUG, TAG, "OUT - CALEClientGetFlagFromState");
     return ret;
 }
@@ -1799,7 +1799,7 @@ CAResult_t CALEClientDisconnect(JNIEnv *env, jobject bluetoothGatt)
     }
 
     // call disconnect gatt method
-    OIC_LOG(DEBUG, TAG, "CALL API - request disconnect gatt");
+    OIC_LOG(INFO, TAG, "CALL API - disconnect");
     (*env)->CallVoidMethod(env, bluetoothGatt, jni_mid_disconnectGatt);
     if ((*env)->ExceptionCheck(env))
     {
@@ -1936,7 +1936,7 @@ CAResult_t CALEClientDiscoverServices(JNIEnv *env, jobject bluetoothGatt)
     }
 
     // call disconnect gatt method
-    OIC_LOG(DEBUG, TAG, "CALL API - request discovery gatt services");
+    OIC_LOG(INFO, TAG, "CALL API - discoverServices");
     jboolean ret = (*env)->CallBooleanMethod(env, bluetoothGatt, jni_mid_discoverServices);
     if (!ret)
     {
@@ -2109,7 +2109,7 @@ CAResult_t CALEClientWriteCharacteristicImpl(JNIEnv *env, jobject bluetoothGatt,
     }
 
     // call disconnect gatt method
-    OIC_LOG(DEBUG, TAG, "CALL API - request to write gatt characteristic");
+    OIC_LOG(INFO, TAG, "CALL API - writeCharacteristic");
     jboolean ret = (jboolean)(*env)->CallBooleanMethod(env, bluetoothGatt,
                                                        jni_mid_writeCharacteristic,
                                                        gattCharacteristic);
@@ -2163,7 +2163,7 @@ CAResult_t CALEClientReadCharacteristic(JNIEnv *env, jobject bluetoothGatt)
     }
 
     // call disconnect gatt method
-    OIC_LOG(DEBUG, TAG, "CALL API - request to read gatt characteristic");
+    OIC_LOG(INFO, TAG, "CALL API - readCharacteristic");
     jboolean ret = (*env)->CallBooleanMethod(env, bluetoothGatt, jni_mid_readCharacteristic,
                                              jni_obj_GattCharacteristic);
     if (ret)
@@ -2204,15 +2204,16 @@ CAResult_t CALEClientSetCharacteristicNotification(JNIEnv *env, jobject bluetoot
         return CA_STATUS_FAILED;
     }
 
+    OIC_LOG(INFO, TAG, "CALL API - setCharacteristicNotification");
     jboolean ret = (*env)->CallBooleanMethod(env, bluetoothGatt, jni_mid_setNotification,
                                              characteristic, JNI_TRUE);
     if (JNI_TRUE == ret)
     {
-        OIC_LOG(DEBUG, TAG, "CALL API - setCharacteristicNotification success");
+        OIC_LOG(DEBUG, TAG, "setCharacteristicNotification success");
     }
     else
     {
-        OIC_LOG(ERROR, TAG, "CALL API - setCharacteristicNotification has failed");
+        OIC_LOG(ERROR, TAG, "setCharacteristicNotification has failed");
         return CA_STATUS_FAILED;
     }
 
@@ -2561,7 +2562,7 @@ CAResult_t CALEClientSetUUIDToDescriptor(JNIEnv *env, jobject bluetoothGatt,
         return CA_STATUS_FAILED;
     }
 
-    OIC_LOG(DEBUG, TAG, "request to write descriptor");
+    OIC_LOG(INFO, TAG, "CALL API - writeDescriptor");
     jboolean jni_ret = (*env)->CallBooleanMethod(env, bluetoothGatt, jni_mid_writeDescriptor,
                                                  jni_obj_descriptor);
     if (jni_ret)
@@ -2635,7 +2636,7 @@ CAResult_t CALEClientAddScanDeviceToList(JNIEnv *env, jobject device)
         jobject gdevice = (*env)->NewGlobalRef(env, device);
         u_arraylist_add(g_deviceList, gdevice);
         ca_cond_signal(g_deviceDescCond);
-        OIC_LOG_V(DEBUG, TAG, "Added this BT Device[%s] in the List", remoteAddress);
+        OIC_LOG_V(DEBUG, TAG, "Added a new BT Device in deviceList [%s]", remoteAddress);
     }
     (*env)->ReleaseStringUTFChars(env, jni_remoteAddress, remoteAddress);
 
@@ -2688,7 +2689,7 @@ bool CALEClientIsDeviceInScanDeviceList(JNIEnv *env, const char* remoteAddress)
         (*env)->ReleaseStringUTFChars(env, jni_setAddress, setAddress);
     }
 
-    OIC_LOG(DEBUG, TAG, "there are no the device in list. we can add");
+    OIC_LOG_V(DEBUG, TAG, "[%s] doesn't exist in scanned device list", remoteAddress);
 
     return false;
 }
@@ -2811,7 +2812,7 @@ CAResult_t CALEClientRemoveDeviceInScanDeviceList(JNIEnv *env, jstring address)
 
 CAResult_t CALEClientAddGattobjToList(JNIEnv *env, jobject gatt)
 {
-    OIC_LOG(INFO, TAG, "CALEClientAddGattobjToList");
+    OIC_LOG(DEBUG, TAG, "CALEClientAddGattobjToList");
     VERIFY_NON_NULL(env, TAG, "env is null");
     VERIFY_NON_NULL(gatt, TAG, "gatt is null");
 
@@ -2840,12 +2841,12 @@ CAResult_t CALEClientAddGattobjToList(JNIEnv *env, jobject gatt)
         return CA_STATUS_FAILED;
     }
 
-    OIC_LOG_V(INFO, TAG, "remote address : %s", remoteAddress);
+    OIC_LOG_V(DEBUG, TAG, "remote address : %s", remoteAddress);
     if (!CALEClientIsGattObjInList(env, remoteAddress))
     {
         jobject newGatt = (*env)->NewGlobalRef(env, gatt);
         u_arraylist_add(g_gattObjectList, newGatt);
-        OIC_LOG(INFO, TAG, "Set GATT Object to Array as Element");
+        OIC_LOG(INFO, TAG, "added a newGatt object to gattObjectList");
     }
 
     (*env)->ReleaseStringUTFChars(env, jni_remoteAddress, remoteAddress);
@@ -3145,7 +3146,7 @@ CAResult_t CALEClientRemoveGattObjForAddr(JNIEnv *env, jstring addr)
 
 jstring CALEClientGetLEAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice)
 {
-    OIC_LOG(DEBUG, TAG, "IN - CALEClientGetLEAddressFromBTDevice");
+    OIC_LOG(DEBUG, TAG, "CALEClientGetLEAddressFromBTDevice");
 
     VERIFY_NON_NULL_RET(env, TAG, "env", NULL);
     VERIFY_NON_NULL_RET(bluetoothDevice, TAG, "bluetoothDevice", NULL);
@@ -3175,21 +3176,27 @@ jstring CALEClientGetLEAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice)
         return NULL;
     }
 
+    ca_mutex_lock(g_gattObjectMutex);
+
     size_t length = u_arraylist_length(g_gattObjectList);
+    OIC_LOG_V(DEBUG, TAG, "length of gattObjectList : %d", length);
+    OIC_LOG_V(DEBUG, TAG, "targetAddress : %s", targetAddress);
+
     for (size_t index = 0; index < length; index++)
     {
         jobject jarrayObj = (jobject) u_arraylist_get(g_gattObjectList, index);
         if (!jarrayObj)
         {
+            ca_mutex_unlock(g_gattObjectMutex);
             OIC_LOG(ERROR, TAG, "jarrayObj is null");
             (*env)->ReleaseStringUTFChars(env, jni_btTargetAddress, targetAddress);
             return NULL;
         }
 
-        OIC_LOG(DEBUG, TAG, "CALL API - bluetoothGatt.getDevice()");
         jobject jni_obj_device = (*env)->CallObjectMethod(env, jarrayObj, jni_mid_getDevice);
         if (!jni_obj_device)
         {
+            ca_mutex_unlock(g_gattObjectMutex);
             OIC_LOG(ERROR, TAG, "jni_obj_device is null");
             (*env)->ReleaseStringUTFChars(env, jni_btTargetAddress, targetAddress);
             return NULL;
@@ -3198,6 +3205,7 @@ jstring CALEClientGetLEAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice)
         jstring jni_btAddress = CALEGetAddressFromBTDevice(env, jni_obj_device);
         if (!jni_btAddress)
         {
+            ca_mutex_unlock(g_gattObjectMutex);
             OIC_LOG(ERROR, TAG, "CALEGetAddressFromBTDevice has failed");
             (*env)->ReleaseStringUTFChars(env, jni_btTargetAddress, targetAddress);
             return NULL;
@@ -3206,13 +3214,13 @@ jstring CALEClientGetLEAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice)
         const char* btAddress = (*env)->GetStringUTFChars(env, jni_btAddress, NULL);
         if (!btAddress)
         {
+            ca_mutex_unlock(g_gattObjectMutex);
             OIC_LOG(ERROR, TAG, "btAddress is not available");
             (*env)->ReleaseStringUTFChars(env, jni_btTargetAddress, targetAddress);
             return NULL;
         }
 
-        OIC_LOG_V(DEBUG, TAG, "targetAddress : %s", targetAddress);
-        OIC_LOG_V(DEBUG, TAG, "btAddress : %s", btAddress);
+        OIC_LOG_V(DEBUG, TAG, "btAddress : %s (idx: %d)", btAddress, index);
         if (!strcmp(targetAddress, btAddress))
         {
             OIC_LOG(DEBUG, TAG, "Found Gatt object from BT device");
@@ -3223,6 +3231,7 @@ jstring CALEClientGetLEAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice)
             {
                 OIC_LOG(ERROR, TAG, "jni_LEAddress is null");
             }
+            ca_mutex_unlock(g_gattObjectMutex);
             (*env)->ReleaseStringUTFChars(env, jni_btTargetAddress, targetAddress);
             (*env)->ReleaseStringUTFChars(env, jni_btAddress, btAddress);
             (*env)->DeleteLocalRef(env, jni_btAddress);
@@ -3233,8 +3242,10 @@ jstring CALEClientGetLEAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice)
         (*env)->DeleteLocalRef(env, jni_btAddress);
         (*env)->DeleteLocalRef(env, jni_obj_device);
     }
+    ca_mutex_unlock(g_gattObjectMutex);
 
-    OIC_LOG(DEBUG, TAG, "OUT - CALEClientGetLEAddressFromBTDevice");
+    (*env)->ReleaseStringUTFChars(env, jni_btTargetAddress, targetAddress);
+    OIC_LOG_V(DEBUG, TAG, "[%s] doesn't exist in gattObjectList", targetAddress);
     return NULL;
 }
 
@@ -3246,6 +3257,8 @@ CAResult_t CALEClientUpdateDeviceState(const char* address, uint16_t state_type,
                                        uint16_t target_state)
 {
     VERIFY_NON_NULL(address, TAG, "address is null");
+    VERIFY_NON_NULL(address, TAG, "state_type is null");
+    VERIFY_NON_NULL(address, TAG, "target_state is null");
 
     if (!g_deviceStateList)
     {
@@ -3276,10 +3289,9 @@ CAResult_t CALEClientUpdateDeviceState(const char* address, uint16_t state_type,
             default:
                 break;
         }
-        OIC_LOG_V(INFO, TAG, "update state : - addr : %s, "
-                  "conn : %d, send : %d, ACFlag : %d",
-                  curState->address, curState->connectedState,
-                  curState->sendState, curState->autoConnectFlag);
+        OIC_LOG_V(INFO, TAG, "update state - addr : %s, conn : %d, send : %d, ACFlag : %d",
+                  curState->address, curState->connectedState, curState->sendState,
+                  curState->autoConnectFlag);
     }
     else /** state is added newly **/
     {
@@ -3313,10 +3325,10 @@ CAResult_t CALEClientUpdateDeviceState(const char* address, uint16_t state_type,
             default:
                 break;
         }
-        OIC_LOG_V(INFO, TAG, "Set newState to List - addr : %s, "
+        OIC_LOG_V(INFO, TAG, "add a new state to List - addr : %s, "
                   "conn : %d, send : %d, ACFlag : %d",
-                  newstate->address, newstate->connectedState,
-                  newstate->sendState, newstate->autoConnectFlag);
+                  newstate->address, newstate->connectedState, newstate->sendState,
+                  newstate->autoConnectFlag);
         u_arraylist_add(g_deviceStateList, newstate); // update new state
     }
 
@@ -3475,7 +3487,8 @@ CALEState_t* CALEClientGetStateInfo(const char* remoteAddress)
     }
 
     uint32_t length = u_arraylist_length(g_deviceStateList);
-    OIC_LOG_V(DEBUG, TAG, "size of deviceStateList is %d", length);
+    OIC_LOG_V(DEBUG, TAG, "length of deviceStateList : %d", length);
+    OIC_LOG_V(DEBUG, TAG, "target address : %s", remoteAddress);
 
     for (uint32_t index = 0; index < length; index++)
     {
@@ -3486,15 +3499,16 @@ CALEState_t* CALEClientGetStateInfo(const char* remoteAddress)
             continue;
         }
 
-        OIC_LOG_V(DEBUG, TAG, "target address : %s", remoteAddress);
-        OIC_LOG_V(DEBUG, TAG, "state address : %s", state->address);
+        OIC_LOG_V(DEBUG, TAG, "state address : %s (idx: %d)", state->address, index);
 
         if (!strcmp(state->address, remoteAddress))
         {
-            OIC_LOG_V(DEBUG, TAG, "get state : %s", remoteAddress);
+            OIC_LOG(DEBUG, TAG, "found state");
             return state;
         }
     }
+
+    OIC_LOG_V(DEBUG, TAG, "[%s] doesn't exist in deviceStateList", remoteAddress);
     return NULL;
 }
 
@@ -3894,9 +3908,9 @@ void CATerminateLEGattClient()
     CALEClientTerminate();
 }
 
-CAResult_t  CAUpdateCharacteristicsToGattServer(const char *remoteAddress, const uint8_t  *data,
-                                                uint32_t dataLen, CALETransferType_t type,
-                                                int32_t position)
+CAResult_t CAUpdateCharacteristicsToGattServer(const char *remoteAddress, const uint8_t  *data,
+                                               uint32_t dataLen, CALETransferType_t type,
+                                               int32_t position)
 {
     OIC_LOG(DEBUG, TAG, "call CALEClientSendUnicastMessage");
     VERIFY_NON_NULL(data, TAG, "data is null");
@@ -4017,85 +4031,81 @@ static jstring CALEClientGetAddressFromGatt(JNIEnv *env, jobject gatt)
  */
 JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaLeClientInterface_caLeGattConnectionStateChangeCallback(JNIEnv *env,
-                                                                                jobject obj,
-                                                                                jobject gatt,
-                                                                                jint status,
-                                                                                jint newstate)
+                                                                               jobject obj,
+                                                                               jobject gatt,
+                                                                               jint status,
+                                                                               jint newstate)
 {
-    OIC_LOG_V(DEBUG, TAG, "CALeGattConnectionStateChangeCallback - status %d, newstate %d", status,
-            newstate);
+    OIC_LOG_V(INFO, TAG, "CALeGattConnectionStateChangeCallback - status %d, newstate %d", status,
+              newstate);
     VERIFY_NON_NULL_VOID(env, TAG, "env is null");
     VERIFY_NON_NULL_VOID(obj, TAG, "obj is null");
     VERIFY_NON_NULL_VOID(gatt, TAG, "gatt is null");
 
     jint state_connected = CALEGetConstantsValue(env, CLASSPATH_BT_PROFILE, "STATE_CONNECTED");
-    jint state_disconnected = CALEGetConstantsValue(env, CLASSPATH_BT_PROFILE, "STATE_DISCONNECTED");
-    jint gatt_success = CALEGetConstantsValue(env, CLASSPATH_BT_GATT, "GATT_SUCCESS");
 
-    if (gatt_success == status && state_connected == newstate) // le connected
+    jstring jni_address = CALEClientGetAddressFromGattObj(env, gatt);
+    if (!jni_address)
+    {
+        OIC_LOG(ERROR, TAG, "CALEClientGetAddressFromGattObj has failed");
+        goto error_exit;
+    }
+
+    const char* address = (*env)->GetStringUTFChars(env, jni_address, NULL);
+    if (!address)
     {
-        jstring jni_address = CALEClientGetAddressFromGattObj(env, gatt);
-        if (!jni_address)
-        {
-            goto error_exit;
-        }
+        OIC_LOG(ERROR, TAG, "address is null");
+        goto error_exit;
+    }
+    OIC_LOG_V(DEBUG, TAG, "CALeGattConnectionStateChangeCallback - address [%s]", address);
 
-        const char* address = (*env)->GetStringUTFChars(env, jni_address, NULL);
-        if (address)
+    CAResult_t res;
+    if (state_connected == newstate)
+    {
+        OIC_LOG(DEBUG, TAG, "LE is connected");
+        if (GATT_SUCCESS == status)
         {
-            CAResult_t res = CALEClientUpdateDeviceState(address, CA_LE_CONNECTION_STATE,
-                                                         STATE_CONNECTED);
+            res = CALEClientUpdateDeviceState(address, CA_LE_CONNECTION_STATE, STATE_CONNECTED);
+            (*env)->ReleaseStringUTFChars(env, jni_address, address);
             if (CA_STATUS_OK != res)
             {
                 OIC_LOG(ERROR, TAG, "CALEClientUpdateDeviceState has failed");
-                (*env)->ReleaseStringUTFChars(env, jni_address, address);
                 goto error_exit;
             }
-            OIC_LOG_V(INFO, TAG, "ConnectionStateCB - remote address : %s", address);
 
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
-        }
+            res = CALEClientAddGattobjToList(env, gatt);
+            if (CA_STATUS_OK != res)
+            {
+                OIC_LOG(ERROR, TAG, "CALEClientAddGattobjToList has failed");
+                goto error_exit;
+            }
 
-        CAResult_t res = CALEClientAddGattobjToList(env, gatt);
-        if (CA_STATUS_OK != res)
-        {
-            OIC_LOG(ERROR, TAG, "CALEClientAddGattobjToList has failed");
-            goto error_exit;
+            res = CALEClientDiscoverServices(env, gatt);
+            if (CA_STATUS_OK != res)
+            {
+                OIC_LOG(ERROR, TAG, "CALEClientDiscoverServices has failed");
+                goto error_exit;
+            }
         }
-
-        res = CALEClientDiscoverServices(env, gatt);
-        if (CA_STATUS_OK != res)
+        else
         {
-            OIC_LOG(ERROR, TAG, "CALEClientDiscoverServices has failed");
-            goto error_exit;
+            OIC_LOG(INFO, TAG, "unknown status");
+            (*env)->ReleaseStringUTFChars(env, jni_address, address);
         }
     }
-    else if (state_disconnected == newstate) // le disconnected
+    else // STATE_DISCONNECTED == newstate
     {
-        jstring jni_address = CALEClientGetAddressFromGattObj(env, gatt);
-        if (!jni_address)
-        {
-            OIC_LOG(ERROR, TAG, "CALEClientGetAddressFromGattObj has failed");
-            goto error_exit;
-        }
+        OIC_LOG(DEBUG, TAG, "LE is disconnected");
 
-        const char* address = (*env)->GetStringUTFChars(env, jni_address, NULL);
-        if (address)
+        res = CALEClientUpdateDeviceState(address, CA_LE_CONNECTION_STATE, STATE_DISCONNECTED);
+        (*env)->ReleaseStringUTFChars(env, jni_address, address);
+        if (CA_STATUS_OK != res)
         {
-            CAResult_t res = CALEClientUpdateDeviceState(address, CA_LE_CONNECTION_STATE,
-                                                         STATE_DISCONNECTED);
-            if (CA_STATUS_OK != res)
-            {
-                OIC_LOG(ERROR, TAG, "CALEClientUpdateDeviceState has failed");
-                (*env)->ReleaseStringUTFChars(env, jni_address, address);
-                goto error_exit;
-            }
-            OIC_LOG_V(INFO, TAG, "ConnectionStateCB - remote address : %s", address);
-
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
+            OIC_LOG(ERROR, TAG, "CALEClientUpdateDeviceState has failed");
+            goto error_exit;
         }
 
-        CAResult_t res = CALEClientGattClose(env, gatt);
+        res = CALEClientGattClose(env, gatt);
         if (CA_STATUS_OK != res)
         {
             OIC_LOG(ERROR, TAG, "CALEClientGattClose has failed");
@@ -4142,7 +4152,7 @@ Java_org_iotivity_ca_CaLeClientInterface_caLeGattConnectionStateChangeCallback(J
             {
                 // other reason except for gatt_success is expected to running
                 // background connection in BT platform.
-                OIC_LOG(INFO, TAG, "unknown state or manual disconnected state");
+                OIC_LOG(INFO, TAG, "unknown status or manual disconnected state");
                 CALEClientUpdateSendCnt(env);
                 return;
             }
@@ -4158,7 +4168,6 @@ Java_org_iotivity_ca_CaLeClientInterface_caLeGattConnectionStateChangeCallback(J
 
     // error label.
 error_exit:
-
     CALEClientSendFinish(env, gatt);
     return;
 }
@@ -4170,11 +4179,11 @@ error_exit:
  */
 JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaLeClientInterface_caLeGattServicesDiscoveredCallback(JNIEnv *env,
-                                                                             jobject obj,
-                                                                             jobject gatt,
-                                                                             jint status)
+                                                                            jobject obj,
+                                                                            jobject gatt,
+                                                                            jint status)
 {
-    OIC_LOG_V(DEBUG, TAG, "CALeGattServicesDiscoveredCallback - status %d: ", status);
+    OIC_LOG_V(INFO, TAG, "CALeGattServicesDiscoveredCallback - status %d: ", status);
     VERIFY_NON_NULL_VOID(env, TAG, "env is null");
     VERIFY_NON_NULL_VOID(obj, TAG, "obj is null");
     VERIFY_NON_NULL_VOID(gatt, TAG, "gatt is null");
@@ -4226,7 +4235,7 @@ Java_org_iotivity_ca_CaLeClientInterface_caLeGattServicesDiscoveredCallback(JNIE
     {
         OIC_LOG_V(INFO, TAG, "Descriptor is not found : %d", res);
 
-        res = CALEClientUpdateDeviceState(address, CA_LE_CONNECTION_STATE ,
+        res = CALEClientUpdateDeviceState(address, CA_LE_CONNECTION_STATE,
                                           STATE_SERVICE_CONNECTED);
         if (CA_STATUS_OK != res)
         {
@@ -4264,10 +4273,9 @@ error_exit:
  */
 JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaLeClientInterface_caLeGattCharacteristicWriteCallback(
-        JNIEnv *env, jobject obj, jobject gatt, jbyteArray data,
-        jint status)
+        JNIEnv *env, jobject obj, jobject gatt, jbyteArray data, jint status)
 {
-    OIC_LOG_V(DEBUG, TAG, "CALeGattCharacteristicWriteCallback - status : %d", status);
+    OIC_LOG_V(INFO, TAG, "CALeGattCharacteristicWriteCallback - status : %d", status);
     VERIFY_NON_NULL_VOID(env, TAG, "env is null");
     VERIFY_NON_NULL_VOID(obj, TAG, "obj is null");
     VERIFY_NON_NULL_VOID(gatt, TAG, "gatt is null");
@@ -4285,8 +4293,7 @@ Java_org_iotivity_ca_CaLeClientInterface_caLeGattCharacteristicWriteCallback(
         goto error_exit;
     }
 
-    jint gatt_success = CALEGetConstantsValue(env, CLASSPATH_BT_GATT, "GATT_SUCCESS");
-    if (gatt_success != status) // error case
+    if (GATT_SUCCESS != status) // error case
     {
         OIC_LOG(ERROR, TAG, "send failure");
 
@@ -4355,7 +4362,7 @@ JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaLeClientInterface_caLeGattCharacteristicChangedCallback(
         JNIEnv *env, jobject obj, jobject gatt, jbyteArray data)
 {
-    OIC_LOG(DEBUG, TAG, "CALeGattCharacteristicChangedCallback");
+    OIC_LOG(INFO, TAG, "CALeGattCharacteristicChangedCallback");
     VERIFY_NON_NULL_VOID(env, TAG, "env is null");
     VERIFY_NON_NULL_VOID(obj, TAG, "obj is null");
     VERIFY_NON_NULL_VOID(gatt, TAG, "gatt is null");
@@ -4399,10 +4406,9 @@ Java_org_iotivity_ca_CaLeClientInterface_caLeGattCharacteristicChangedCallback(
     OIC_LOG_V(DEBUG, TAG, "CALeGattCharacteristicChangedCallback - data. : %p, %d",
               receivedData, length);
 
-    ca_mutex_lock(g_bleServerBDAddressMutex);
     uint32_t sentLength = 0;
-    g_CABLEClientDataReceivedCallback(address, receivedData, length,
-                                      &sentLength);
+    ca_mutex_lock(g_bleServerBDAddressMutex);
+    g_CABLEClientDataReceivedCallback(address, receivedData, length, &sentLength);
     ca_mutex_unlock(g_bleServerBDAddressMutex);
 
     (*env)->ReleaseStringUTFChars(env, jni_address, address);
@@ -4418,13 +4424,12 @@ Java_org_iotivity_ca_CaLeClientInterface_caLeGattDescriptorWriteCallback(JNIEnv
                                                                          jobject gatt,
                                                                          jint status)
 {
-    OIC_LOG_V(DEBUG, TAG, "CALeGattDescriptorWriteCallback - status %d: ", status);
+    OIC_LOG_V(INFO, TAG, "CALeGattDescriptorWriteCallback - status %d: ", status);
     VERIFY_NON_NULL_VOID(env, TAG, "env is null");
     VERIFY_NON_NULL_VOID(obj, TAG, "obj is null");
     VERIFY_NON_NULL_VOID(gatt, TAG, "gatt is null");
 
-    jint gatt_success = CALEGetConstantsValue(env, CLASSPATH_BT_GATT, "GATT_SUCCESS");
-    if (gatt_success != status) // error
+    if (GATT_SUCCESS != status) // error
     {
         goto error_exit;
     }
index 76f439c..6416674 100644 (file)
@@ -120,14 +120,22 @@ CAResult_t CAManagerStartAutoConnection(JNIEnv *env, jstring remote_le_address)
     VERIFY_NON_NULL(remote_le_address, TAG, "remote_le_address is null");
 
     OIC_LOG(DEBUG, TAG, "IN - CAManagerStartAutoConnection");
+    ca_mutex_lock(g_connectRetryMutex);
 
-    if (true == CAManagerGetAutoConnectionFlag(env, remote_le_address))
+    bool isAutoConnecting = false;
+    if (CA_STATUS_OK != CAManagerGetAutoConnectingFlag(env, remote_le_address, &isAutoConnecting))
     {
-        OIC_LOG(INFO, TAG, "auto connecting.");
+        OIC_LOG(DEBUG, TAG, "CAManagerIsAutoConnecting has failed");
+        ca_mutex_unlock(g_connectRetryMutex);
         return CA_STATUS_FAILED;
     }
 
-    ca_mutex_lock(g_connectRetryMutex);
+    if (isAutoConnecting)
+    {
+        OIC_LOG(INFO, TAG, "connection has been already in progress or completed");
+        ca_mutex_unlock(g_connectRetryMutex);
+        return CA_STATUS_FAILED;
+    }
 
     for (size_t retry_cnt = 0 ; retry_cnt < MAX_RETRY_COUNT ; retry_cnt++)
     {
@@ -139,8 +147,8 @@ CAResult_t CAManagerStartAutoConnection(JNIEnv *env, jstring remote_le_address)
                       MAX_RETRY_COUNT - retry_cnt - 1);
             if (ca_cond_wait_for(g_connectRetryCond, g_connectRetryMutex, TIMEOUT) == 0)
             {
-                OIC_LOG(INFO, TAG, "request to connect gatt was canceled");
                 ca_mutex_unlock(g_connectRetryMutex);
+                OIC_LOG(INFO, TAG, "request to connect gatt was canceled");
                 return CA_STATUS_OK;
             }
             // time out. retry connection
@@ -176,7 +184,7 @@ jobject CAManagerConnectGatt(JNIEnv *env, jstring remote_le_address)
     }
 
     // request to connection with AutoConnection Flag
-    OIC_LOG(INFO, TAG, "request to gatt connection for auto connection");
+    OIC_LOG(INFO, TAG, "request gatt connection by CM auto connector");
     jobject newGatt = (jobject)CALEClientConnect(env, jni_bluetooth, JNI_TRUE);
     if (NULL == newGatt)
     {
@@ -185,7 +193,7 @@ jobject CAManagerConnectGatt(JNIEnv *env, jstring remote_le_address)
     }
 
     // set flag auto connection is requested.
-    CAManagerSetAutoConnectionFlag(env, remote_le_address, true);
+    CAManagerSetAutoConnectingFlag(env, remote_le_address, true);
 
     OIC_LOG(DEBUG, TAG, "OUT - CAManagerConnectGatt");
     return newGatt;
index ec15a00..18ba248 100644 (file)
@@ -75,27 +75,25 @@ CAResult_t CASetLEClientAutoConnectionDeviceInfo(const char* address)
         }
         isAttached = true;
     }
-
     OIC_LOG_V(DEBUG, TAG, "set [%s] for Auto Connection", address);
+
     jstring jni_leAddress = (*env)->NewStringUTF(env, address);
+    if (!jni_leAddress)
+    {
+        OIC_LOG(ERROR, TAG, "jni_leAddress is null");
+        goto error_exit;
+    }
 
     if (!CAManagerCheckBTAddress(env, jni_leAddress))
     {
         OIC_LOG(ERROR, TAG, "this address is not BT address string format");
-        if (isAttached)
-        {
-            (*g_jvm)->DetachCurrentThread(g_jvm);
-        }
-        return CA_STATUS_FAILED;
+        goto error_exit;
     }
 
-    // if there is target address in SharedPreference. it will be reseted.
-    if (CAManagerIsConnectedDeviceAddress(env, g_context,
-                                          jni_leAddress,
-                                          g_connectedDeviceSet))
+    // if there is target address in SharedPreference, it will be reset.
+    if (CAManagerIsConnectedDeviceAddress(env, g_context, jni_leAddress, g_connectedDeviceSet))
     {
-        if (!CAManagerRemoveConnectedDeviceAddress(env, g_context,
-                                                   jni_leAddress,
+        if (!CAManagerRemoveConnectedDeviceAddress(env, g_context, jni_leAddress,
                                                    g_connectedDeviceSet))
         {
             OIC_LOG(ERROR, TAG, "Preference - remove has failed");
@@ -107,8 +105,7 @@ CAResult_t CASetLEClientAutoConnectionDeviceInfo(const char* address)
     }
 
     // it will be added new target address.
-    if (!CAManagerAddConnectedDeviceAddress(env, g_context,
-                                            jni_leAddress, g_connectedDeviceSet))
+    if (!CAManagerAddConnectedDeviceAddress(env, g_context, jni_leAddress, g_connectedDeviceSet))
     {
         OIC_LOG(ERROR, TAG, "Preference - putting has failed");
     }
@@ -123,6 +120,15 @@ CAResult_t CASetLEClientAutoConnectionDeviceInfo(const char* address)
     }
 
     return CA_STATUS_OK;
+
+error_exit:
+
+    if (isAttached)
+    {
+        (*g_jvm)->DetachCurrentThread(g_jvm);
+    }
+
+    return CA_STATUS_FAILED;
 }
 
 CAResult_t CAUnsetLEClientAutoConnectionDeviceInfo(const char* address)
@@ -145,27 +151,25 @@ CAResult_t CAUnsetLEClientAutoConnectionDeviceInfo(const char* address)
         }
         isAttached = true;
     }
-
     OIC_LOG_V(DEBUG, TAG, "unset [%s] for Auto Connection", address);
+
     jstring jni_leAddress = (*env)->NewStringUTF(env, address);
+    if (!jni_leAddress)
+    {
+        OIC_LOG(ERROR, TAG, "jni_leAddress is null");
+        goto error_exit;
+    }
 
     if (!CAManagerCheckBTAddress(env, jni_leAddress))
     {
         OIC_LOG(ERROR, TAG, "this address is not BT address string format");
-        if (isAttached)
-        {
-            (*g_jvm)->DetachCurrentThread(g_jvm);
-        }
-        return CA_STATUS_FAILED;
+        goto error_exit;
     }
 
-    // if there is target address in SharedPreference. it would be removed
-    if (CAManagerIsConnectedDeviceAddress(env, g_context,
-                                          jni_leAddress,
-                                          g_connectedDeviceSet))
+    // if there is target address in SharedPreference, it will be removed
+    if (CAManagerIsConnectedDeviceAddress(env, g_context, jni_leAddress, g_connectedDeviceSet))
     {
-        if (!CAManagerRemoveConnectedDeviceAddress(env, g_context,
-                                                   jni_leAddress,
+        if (!CAManagerRemoveConnectedDeviceAddress(env, g_context, jni_leAddress,
                                                    g_connectedDeviceSet))
         {
             OIC_LOG(ERROR, TAG, "Preference - remove has failed");
@@ -177,10 +181,10 @@ CAResult_t CAUnsetLEClientAutoConnectionDeviceInfo(const char* address)
     }
 
     // remove target device for auto connection
-    CAResult_t ret = CAManagerRemoveData(env, jni_leAddress);
+    CAResult_t ret = CAManagerRemoveACData(env, jni_leAddress);
     if (CA_STATUS_OK != ret)
     {
-        OIC_LOG(ERROR, TAG, "CAManagerRemoveData has failed");
+        OIC_LOG(ERROR, TAG, "CAManagerRemoveACData has failed");
     }
 
     if (isAttached)
@@ -188,7 +192,16 @@ CAResult_t CAUnsetLEClientAutoConnectionDeviceInfo(const char* address)
         (*g_jvm)->DetachCurrentThread(g_jvm);
     }
 
-    return CA_STATUS_OK;
+    return ret;
+
+error_exit:
+
+    if (isAttached)
+    {
+        (*g_jvm)->DetachCurrentThread(g_jvm);
+    }
+
+    return CA_STATUS_FAILED;
 }
 
 CAResult_t CAManagerLEClientInitialize(JNIEnv *env, JavaVM *jvm, jobject context)
@@ -207,10 +220,10 @@ CAResult_t CAManagerLEClientInitialize(JNIEnv *env, JavaVM *jvm, jobject context
 
     g_jvm = jvm;
     g_context = (*env)->NewGlobalRef(env, context);;
+
     CAManagerInitMutexVaraibles();
     CAManagerInitLEAutoConnection();
-
-    CAManagerCreateACDataList(env);
+    CAManagerCreateACDataList();
 
     // get last connected device list
     jobject set = NULL;
@@ -219,15 +232,12 @@ CAResult_t CAManagerLEClientInitialize(JNIEnv *env, JavaVM *jvm, jobject context
     {
         // create new set<String> object
         set = CAManagerCreateSetString(env);
-        if (set)
-        {
-            OIC_LOG(DEBUG, TAG, "created new SetString");
-        }
-        else
+        if (!set)
         {
             OIC_LOG(ERROR, TAG, "CAManagerCreateSetString has failed");
             return CA_STATUS_FAILED;
         }
+        OIC_LOG(DEBUG, TAG, "created new SetString");
     }
     else
     {
@@ -256,12 +266,13 @@ CAResult_t CAManagerLEClientTerminate(JNIEnv *env)
         OIC_LOG(ERROR, TAG, "CALEClientDisconnectAll has failed");
     }
 
-    res = CAManagerRemoveAllData(env);
+    res = CAManagerRemoveAllACData(env);
     if (CA_STATUS_OK != res)
     {
-        OIC_LOG(ERROR, TAG, "CAManagerRemoveAllData has failed");
+        OIC_LOG(ERROR, TAG, "CAManagerRemoveAllACData has failed");
     }
 
+    CAManagerDestroyACDataList();
     CAManagerTerminateLEAutoConnection();
     CAManagerTerminateMutexVariables();
 
@@ -284,7 +295,7 @@ JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaLeClientInterface_caManagerAdapterStateChangedCallback(
         JNIEnv *env, jobject obj, jint state)
 {
-    OIC_LOG(DEBUG, TAG, "caManagerAdapterStateChangedCallback");
+    OIC_LOG_V(INFO, TAG, "caManagerAdapterStateChangedCallback - state %d", state);
     VERIFY_NON_NULL_VOID(env, TAG, "env");
     VERIFY_NON_NULL_VOID(obj, TAG, "obj");
 
@@ -305,7 +316,7 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerAdapterStateChangedCallback(
 
         // find target device for autoconnect
         size_t length = CAManagerGetACDataLength();
-        OIC_LOG_V(DEBUG, TAG, "target device : %d", length);
+        OIC_LOG_V(DEBUG, TAG, "length of ACDataList : %d", length);
         for (size_t idx = 0; idx < length; idx++)
         {
             jstring leAddress = CAManagerGetLEAddressFromACData(env, idx);
@@ -328,14 +339,15 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerAdapterStateChangedCallback(
             g_adapterStateCB(CA_ADAPTER_GATT_BTLE, false);
         }
 
-        // reset autoconnect flag for all target devices
+        // reset isAutoConnecting flag for all target devices
         size_t length = CAManagerGetACDataLength();
+        OIC_LOG_V(DEBUG, TAG, "length of ACDataList : %d", length);
         for (size_t idx = 0; idx < length; idx++)
         {
             jstring address = CAManagerGetLEAddressFromACData(env, idx);
             if (address)
             {
-                CAManagerSetAutoConnectionFlag(env, address, false);
+                CAManagerSetAutoConnectingFlag(env, address, false);
             }
         }
 
@@ -348,12 +360,10 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerAdapterStateChangedCallback(
     else if (state_turning_off == state)
     {
         OIC_LOG(DEBUG, TAG, "AdapterStateChangedCallback : state_turning_off");
-        return;
     }
     else
     {
         OIC_LOG(INFO, TAG, "AdapterStateChangedCallback state is not available");
-        return;
     }
 }
 
@@ -361,7 +371,10 @@ JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaLeClientInterface_caManagerBondStateChangedCallback(
         JNIEnv *env, jobject obj, jobject device)
 {
-    OIC_LOG(DEBUG, TAG, "caManagerBondStateChangedCallback");
+    OIC_LOG(INFO, TAG, "caManagerBondStateChangedCallback");
+    // this callback is called by CaLeClientInterface
+    // only when bond state is changed from BOND_BONDED to BOND_NONE
+    OIC_LOG(DEBUG, TAG, "bond state is changed from BOND_BONDED to BOND_NONE");
     VERIFY_NON_NULL_VOID(env, TAG, "env");
     VERIFY_NON_NULL_VOID(obj, TAG, "obj");
     VERIFY_NON_NULL_VOID(device, TAG, "device");
@@ -384,29 +397,26 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerBondStateChangedCallback(
     // if there is no data, CAData will be created.
     OIC_LOG_V(DEBUG, TAG, "bond none device : %s", leAddress);
 
-    CAResult_t res = CAManagerRemoveData(env, jni_leAddress);
+    CAResult_t res = CAManagerRemoveACData(env, jni_leAddress);
     if (CA_STATUS_OK != res)
     {
-        OIC_LOG(ERROR, TAG, "CAManagerRemoveData has failed");
+        OIC_LOG(ERROR, TAG, "CAManagerRemoveACData has failed");
     }
 
     (*env)->ReleaseStringUTFChars(env, jni_leAddress, leAddress);
 
-    if (!CAManagerRemoveConnectedDeviceAddress(env, g_context,
-                                               jni_leAddress,
+    if (!CAManagerRemoveConnectedDeviceAddress(env, g_context, jni_leAddress,
                                                g_connectedDeviceSet))
     {
         OIC_LOG(ERROR, TAG, "CAManagerRemoveConnectedDeviceAddress has failed");
     }
-
-    OIC_LOG(INFO, TAG, "bonded state changed bone_none");
 }
 
 JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaLeClientInterface_caManagerLeGattConnectionStateChangeCB(
         JNIEnv *env, jobject obj, jobject gatt, jint status, jint newState)
 {
-    OIC_LOG_V(DEBUG, TAG, "caManagerLeGattConnectionStateChangeCB-status(%d), newState(%d)",
+    OIC_LOG_V(INFO, TAG, "caManagerLeGattConnectionStateChangeCB - status %d, newState %d",
               status, newState);
 
     VERIFY_NON_NULL_VOID(env, TAG, "env");
@@ -415,7 +425,6 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerLeGattConnectionStateChangeCB(
 
     jint state_connected = CALEGetConstantsValue(env, CLASSPATH_BT_PROFILE, "STATE_CONNECTED");
     jint state_disconnected = CALEGetConstantsValue(env, CLASSPATH_BT_PROFILE, "STATE_DISCONNECTED");
-    jint gatt_success = CALEGetConstantsValue(env, CLASSPATH_BT_GATT, "GATT_SUCCESS");
 
     jstring jni_address = CALEGetAddressFromGatt(env, gatt);
     if (!jni_address)
@@ -428,21 +437,21 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerLeGattConnectionStateChangeCB(
     if (!address)
     {
         OIC_LOG(ERROR, TAG, "address is null");
+        (*env)->DeleteLocalRef(env, jni_address);
         return;
     }
 
-    OIC_LOG_V(INFO, TAG, "connection state : status(%d), addr:(%s), newState(%d)",
-              status, address, newState);
+    OIC_LOG_V(DEBUG, TAG, "caManagerLeGattConnectionStateChangeCB - address [%s]", address);
 
-    if (gatt_success == status && state_connected == newState) // le connected
+    if (GATT_SUCCESS == status && state_connected == newState) // le connected
     {
         OIC_LOG(DEBUG, TAG, "LE is connected");
+
         CAResult_t res = CAManagerReadRemoteRssi(env, gatt);
         if (CA_STATUS_OK != res)
         {
             OIC_LOG(ERROR, TAG, "CAManagerReadRemoteRssi has failed");
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
-            return;
+            goto exit;
         }
     }
     else if (state_disconnected == newState)// le disconnected
@@ -458,22 +467,20 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerLeGattConnectionStateChangeCB(
 
         if (LINK_LOSS == status || REMOTE_DISCONNECT == status)
         {
-            if (!CAManagerIsMatchedACData(env, jni_address))
+            if (!CAManagerIsInACDataList(env, jni_address))
             {
                 OIC_LOG_V(DEBUG, TAG, "this[%s] is not target address for Auto Connection",
                           address);
-                (*env)->ReleaseStringUTFChars(env, jni_address, address);
-                return;
+                goto exit;
             }
 
-            CAManagerSetAutoConnectionFlag(env, jni_address, false);
+            CAManagerSetAutoConnectingFlag(env, jni_address, false);
 
             CAResult_t res = CAManagerStartAutoConnection(env, jni_address);
             if (CA_STATUS_OK != res)
             {
-                (*env)->ReleaseStringUTFChars(env, jni_address, address);
                 OIC_LOG(ERROR, TAG, "CAManagerStartAutoConnection has failed");
-                return;
+                goto exit;
             }
         }
         else if (ACCEPT_TIMEOUT_EXCEPTION == status)
@@ -481,6 +488,8 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerLeGattConnectionStateChangeCB(
             CAManagerProcessRecovery(env, START_RECOVERY);
         }
     }
+
+exit:
     (*env)->ReleaseStringUTFChars(env, jni_address, address);
     (*env)->DeleteLocalRef(env, jni_address);
 }
@@ -496,7 +505,7 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerLeServicesDiscoveredCallback(J
                                                                                jobject gatt,
                                                                                jint status)
 {
-    OIC_LOG_V(DEBUG, TAG, "caManagerLeServicesDiscoveredCallback - status %d: ", status);
+    OIC_LOG_V(INFO, TAG, "caManagerLeServicesDiscoveredCallback - status %d", status);
     VERIFY_NON_NULL_VOID(env, TAG, "env");
     VERIFY_NON_NULL_VOID(obj, TAG, "obj");
     VERIFY_NON_NULL_VOID(gatt, TAG, "gatt");
@@ -523,126 +532,22 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerLeServicesDiscoveredCallback(J
             (*env)->DeleteLocalRef(env, jni_address);
             return;
         }
-        OIC_LOG_V(DEBUG, TAG, "ServicesDiscovered device : %s", address);
 
-        // target address for auto connection will be set in device list.
-        // check set connected address information by user
-        jclass jni_cls_set = (*env)->FindClass(env, "java/util/HashSet");
-        if (!jni_cls_set)
-        {
-            OIC_LOG(ERROR, TAG, "jni_cls_set is null");
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
-            (*env)->DeleteLocalRef(env, jni_address);
-            return;
-        }
-
-        jmethodID jni_mid_iterator = (*env)->GetMethodID(env, jni_cls_set, "iterator",
-                                                            "()Ljava/util/Iterator;");
-        if (!jni_mid_iterator)
-        {
-            OIC_LOG(ERROR, TAG, "jni_mid_iterator is null");
-            (*env)->DeleteLocalRef(env, jni_cls_set);
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
-            (*env)->DeleteLocalRef(env, jni_address);
-            return;
-        }
-
-        jobject jni_obj_iter = (*env)->CallObjectMethod(env, g_connectedDeviceSet, jni_mid_iterator);
-        if (!jni_obj_iter)
-        {
-            OIC_LOG(ERROR, TAG, "jni_obj_iter is null");
-            (*env)->DeleteLocalRef(env, jni_cls_set);
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
-            (*env)->DeleteLocalRef(env, jni_address);
-            return;
-        }
-
-        // Get the Iterator method IDs
-        jclass jni_cls_iterator = (*env)->FindClass(env, "java/util/Iterator");
-        if (!jni_cls_iterator)
-        {
-            OIC_LOG(ERROR, TAG, "jni_cls_iterator is null");
-            (*env)->DeleteLocalRef(env, jni_obj_iter);
-            (*env)->DeleteLocalRef(env, jni_cls_set);
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
-            (*env)->DeleteLocalRef(env, jni_address);
-            return;
-        }
+        OIC_LOG_V(DEBUG, TAG, "ServicesDiscovered device : %s", address);
 
-        jmethodID jni_mid_hasNext = (*env)->GetMethodID(env, jni_cls_iterator, "hasNext", "()Z");
-        if (!jni_mid_hasNext)
+        if (CAManagerIsConnectedDeviceAddress(env, g_context, jni_address, g_connectedDeviceSet))
         {
-            OIC_LOG(ERROR, TAG, "jni_mid_hasNext is null");
-            (*env)->DeleteLocalRef(env, jni_cls_iterator);
-            (*env)->DeleteLocalRef(env, jni_obj_iter);
-            (*env)->DeleteLocalRef(env, jni_cls_set);
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
-            (*env)->DeleteLocalRef(env, jni_address);
-            return;
-        }
+            OIC_LOG(INFO, TAG, "AC list - the address will be added to ACData list");
+            CAManagerAddACData(env, jni_address);
+            CAManagerSetAutoConnectingFlag(env, jni_address, false);
 
-        jmethodID jni_mid_next = (*env)->GetMethodID(env, jni_cls_iterator, "next",
-                                                        "()Ljava/lang/Object;");
-        if (!jni_mid_next)
-        {
-            OIC_LOG(ERROR, TAG, "jni_mid_next is null");
-            (*env)->DeleteLocalRef(env, jni_cls_iterator);
-            (*env)->DeleteLocalRef(env, jni_obj_iter);
-            (*env)->DeleteLocalRef(env, jni_cls_set);
-            (*env)->ReleaseStringUTFChars(env, jni_address, address);
-            (*env)->DeleteLocalRef(env, jni_address);
-            return;
+            // next connection will be requested with JNI_TRUE on autoConnect flag
+            // after first connection
+            CALEClientSetFlagToState(env, jni_address, CA_LE_AUTO_CONNECT_FLAG, JNI_TRUE);
         }
-
-        // Iterate over the entry Set
-        while ((*env)->CallBooleanMethod(env, jni_obj_iter, jni_mid_hasNext))
+        else
         {
-            jstring jni_str_entry = (jstring)(*env)->CallObjectMethod(env, jni_obj_iter,
-                                                                        jni_mid_next);
-            if (!jni_str_entry)
-            {
-                OIC_LOG(ERROR, TAG, "jni_str_entry is null");
-                (*env)->DeleteLocalRef(env, jni_cls_iterator);
-                (*env)->DeleteLocalRef(env, jni_obj_iter);
-                (*env)->DeleteLocalRef(env, jni_cls_set);
-                (*env)->ReleaseStringUTFChars(env, jni_address, address);
-                (*env)->DeleteLocalRef(env, jni_address);
-                return;
-            }
-            const char* foundAddress = (*env)->GetStringUTFChars(env, jni_str_entry, NULL);
-            if (!foundAddress)
-            {
-                OIC_LOG(ERROR, TAG, "addr is null");
-                (*env)->DeleteLocalRef(env, jni_str_entry);
-                (*env)->DeleteLocalRef(env, jni_cls_iterator);
-                (*env)->DeleteLocalRef(env, jni_obj_iter);
-                (*env)->DeleteLocalRef(env, jni_cls_set);
-                (*env)->ReleaseStringUTFChars(env, jni_address, address);
-                (*env)->DeleteLocalRef(env, jni_address);
-                return;
-            }
-            OIC_LOG_V(INFO, TAG, "found last connected address [%s] from SharedPreferences",
-                      foundAddress);
-
-            if (!strcmp(foundAddress, address))
-            {
-                // if BLE address is matched each other
-                // this address will be added into auto connection list.
-                OIC_LOG(INFO, TAG, "AC list - address will be added into ACData list");
-                CAManagerAddACData(env, jni_address);
-                CAManagerSetAutoConnectionFlag(env, jni_address, false);
-
-                // next connection will be requested as JNI_TRUE flag
-                // after first connection
-                CALEClientSetFlagToState(env, jni_str_entry, CA_LE_AUTO_CONNECT_FLAG, JNI_TRUE);
-            }
-            else
-            {
-                OIC_LOG(INFO, TAG, "AC list - device is not matched");
-            }
-
-            (*env)->ReleaseStringUTFChars(env, jni_str_entry, foundAddress);
-            (*env)->DeleteLocalRef(env, jni_str_entry);
+            OIC_LOG(DEBUG, TAG, "AC list - the address is not set to AutoConnect");
         }
 
         if (g_connStateCB)
@@ -651,11 +556,9 @@ Java_org_iotivity_ca_CaLeClientInterface_caManagerLeServicesDiscoveredCallback(J
             OIC_LOG(DEBUG, TAG, "LE Connected callback is called");
         }
 
-        (*env)->DeleteLocalRef(env, jni_cls_iterator);
-        (*env)->DeleteLocalRef(env, jni_obj_iter);
-        (*env)->DeleteLocalRef(env, jni_cls_set);
         (*env)->ReleaseStringUTFChars(env, jni_address, address);
         (*env)->DeleteLocalRef(env, jni_address);
+
         OIC_LOG(INFO, TAG, "ServicesDiscovery is successful");
     }
     else
index 6950361..7a431e8 100644 (file)
@@ -36,8 +36,7 @@ static bool g_isBTRecovery = false;
 
 jstring CAManagerGetLEAddressFromACData(JNIEnv *env, size_t idx)
 {
-    OIC_LOG(DEBUG, TAG, "CAManagerGetLEAddressFromACData");
-    OIC_LOG_V(DEBUG, TAG, "idx : %d", idx);
+    OIC_LOG_V(DEBUG, TAG, "CAManagerGetLEAddressFromACData (idx : %d)", idx);
     if (idx <= u_arraylist_length(g_deviceACDataList))
     {
         CAManagerACData_t *curData = (CAManagerACData_t *) u_arraylist_get(
@@ -54,30 +53,39 @@ jstring CAManagerGetLEAddressFromACData(JNIEnv *env, size_t idx)
             OIC_LOG(ERROR, TAG, "address is null");
             return NULL;
         }
-        OIC_LOG_V(INFO, TAG, "found out target address : %s", address);
+        OIC_LOG_V(INFO, TAG, "found target address : %s", address);
         (*env)->ReleaseStringUTFChars(env, curData->address, address);
 
         return curData->address;
     }
+    OIC_LOG(DEBUG, TAG, "idx is greater than the length of ACDataList");
     return NULL;
 }
 
-void CAManagerCreateACDataList(JNIEnv *env)
+void CAManagerCreateACDataList()
 {
     OIC_LOG(DEBUG, TAG, "CAManagerCreateACDataList");
-    VERIFY_NON_NULL_VOID(env, TAG, "env");
 
     ca_mutex_lock(g_deviceACDataListMutex);
-    // create new object array
-    if (g_deviceACDataList == NULL)
+    if (NULL == g_deviceACDataList)
     {
         OIC_LOG(DEBUG, TAG, "Create AC Data list");
-
         g_deviceACDataList = u_arraylist_create();
     }
     ca_mutex_unlock(g_deviceACDataListMutex);
 }
 
+void CAManagerDestroyACDataList()
+{
+    OIC_LOG(DEBUG, TAG, "CAManagerDestroyACDataList");
+    if (g_deviceACDataList)
+    {
+        OIC_LOG(DEBUG, TAG, "Destroy AC Data list");
+        u_arraylist_free(&g_deviceACDataList);
+        g_deviceACDataList = NULL;
+    }
+}
+
 CAResult_t CAManagerInitMutexVaraibles()
 {
     if (NULL == g_deviceACDataListMutex)
@@ -103,10 +111,10 @@ void CAManagerTerminateMutexVariables()
 
 static CAManagerACData_t *CAManagerCreateACData(jstring jaddress)
 {
-    OIC_LOG(DEBUG, TAG, "IN-CAManagerCreateACData");
+    OIC_LOG(DEBUG, TAG, "IN - CAManagerCreateACData");
     VERIFY_NON_NULL_RET(jaddress, TAG, "jaddress", NULL);
 
-    // create block data
+    // create AC data
     CAManagerACData_t *data = (CAManagerACData_t *) OICCalloc(1, sizeof(*data));
     if (!data)
     {
@@ -115,21 +123,24 @@ static CAManagerACData_t *CAManagerCreateACData(jstring jaddress)
     }
 
     data->address = jaddress;
-    data->isAutoConnect = false;
+    data->isAutoConnecting = false;
 
-    OIC_LOG(DEBUG, TAG, "OUT-CAManagerCreateACData");
+    OIC_LOG(DEBUG, TAG, "OUT - CAManagerCreateACData");
     return data;
 }
 
-bool CAManagerIsMatchedACData(JNIEnv *env, jstring jaddress)
+bool CAManagerIsInACDataList(JNIEnv *env, jstring jaddress)
 {
     VERIFY_NON_NULL_RET(env, TAG, "env", NULL);
     VERIFY_NON_NULL_RET(jaddress, TAG, "jaddress", false);
 
+    ca_mutex_lock(g_deviceACDataListMutex);
+
     const char* address = (*env)->GetStringUTFChars(env, jaddress, NULL);
     if (!address)
     {
         OIC_LOG(ERROR, TAG, "address is null");
+        ca_mutex_unlock(g_deviceACDataListMutex);
         return false;
     }
 
@@ -142,6 +153,7 @@ bool CAManagerIsMatchedACData(JNIEnv *env, jstring jaddress)
         {
             OIC_LOG(ERROR, TAG, "curData is null");
             (*env)->ReleaseStringUTFChars(env, jaddress, address);
+            ca_mutex_unlock(g_deviceACDataListMutex);
             return false;
         }
 
@@ -150,6 +162,7 @@ bool CAManagerIsMatchedACData(JNIEnv *env, jstring jaddress)
         {
             OIC_LOG(ERROR, TAG, "address is null");
             (*env)->ReleaseStringUTFChars(env, jaddress, address);
+            ca_mutex_unlock(g_deviceACDataListMutex);
             return false;
         }
 
@@ -157,41 +170,49 @@ bool CAManagerIsMatchedACData(JNIEnv *env, jstring jaddress)
         {
             (*env)->ReleaseStringUTFChars(env, curData->address, setAddress);
             (*env)->ReleaseStringUTFChars(env, jaddress, address);
+            ca_mutex_unlock(g_deviceACDataListMutex);
             return true;
         }
         (*env)->ReleaseStringUTFChars(env, curData->address, setAddress);
     }
+
+    OIC_LOG_V(DEBUG, TAG, "[%s] doesn't exist in list", address);
     (*env)->ReleaseStringUTFChars(env, jaddress, address);
+    ca_mutex_unlock(g_deviceACDataListMutex);
 
     return false;
 }
 
 void CAManagerAddACData(JNIEnv *env, jstring jaddress)
 {
-    OIC_LOG(DEBUG, TAG, "IN-CAManagerAddACData");
+    OIC_LOG(DEBUG, TAG, "IN - CAManagerAddACData");
 
     VERIFY_NON_NULL_VOID(env, TAG, "env");
     VERIFY_NON_NULL_VOID(jaddress, TAG, "jaddress");
 
-    ca_mutex_lock(g_deviceACDataListMutex);
-
-    if(!CAManagerIsMatchedACData(env, jaddress))
+    if(!CAManagerIsInACDataList(env, jaddress))
     {
-        OIC_LOG(DEBUG, TAG, "ACdata will be added");
+        OIC_LOG(DEBUG, TAG, "new ACdata will be added in List");
         // add CAManagerACData
         jobject gaddress = (*env)->NewGlobalRef(env, jaddress);
 
         CAManagerACData_t *data = CAManagerCreateACData(gaddress);
+
+        ca_mutex_lock(g_deviceACDataListMutex);
         u_arraylist_add(g_deviceACDataList, data);
+        ca_mutex_unlock(g_deviceACDataListMutex);
+    }
+    else
+    {
+        OIC_LOG(DEBUG, TAG, "the address is already in ACData list");
     }
-    ca_mutex_unlock(g_deviceACDataListMutex);
 
-    OIC_LOG(DEBUG, TAG, "OUT-CAManagerAddACData");
+    OIC_LOG(DEBUG, TAG, "OUT - CAManagerAddACData");
 }
 
-CAResult_t CAManagerRemoveData(JNIEnv *env, jstring jaddress)
+CAResult_t CAManagerRemoveACData(JNIEnv *env, jstring jaddress)
 {
-    OIC_LOG(DEBUG, TAG, "IN-CAManagerRemoveData");
+    OIC_LOG(DEBUG, TAG, "CAManagerRemoveACData");
     VERIFY_NON_NULL(env, TAG, "env");
     VERIFY_NON_NULL(jaddress, TAG, "jaddress");
 
@@ -205,7 +226,7 @@ CAResult_t CAManagerRemoveData(JNIEnv *env, jstring jaddress)
         return CA_STATUS_FAILED;
     }
 
-    OIC_LOG_V(DEBUG, TAG, "(%s) will be removed", address);
+    OIC_LOG_V(DEBUG, TAG, "[%s] will be removed", address);
 
     size_t length = u_arraylist_length(g_deviceACDataList);
     for (size_t idx = 0; idx < length; idx++)
@@ -256,15 +277,16 @@ CAResult_t CAManagerRemoveData(JNIEnv *env, jstring jaddress)
         (*env)->ReleaseStringUTFChars(env, curData->address, setAddress);
     }
 
+    OIC_LOG_V(DEBUG, TAG, "[%s] doesn't exist in list", address);
     (*env)->ReleaseStringUTFChars(env, jaddress, address);
     ca_mutex_unlock(g_deviceACDataListMutex);
-    OIC_LOG(DEBUG, TAG, "OUT-CAManagerRemoveData");
+
     return CA_STATUS_OK;
 }
 
-CAResult_t CAManagerRemoveAllData(JNIEnv *env)
+CAResult_t CAManagerRemoveAllACData(JNIEnv *env)
 {
-    OIC_LOG(DEBUG, TAG, "IN-CAManagerRemoveAllData");
+    OIC_LOG(DEBUG, TAG, "IN - CAManagerRemoveAllACData");
     VERIFY_NON_NULL(env, TAG, "env");
 
     ca_mutex_lock(g_deviceACDataListMutex);
@@ -296,15 +318,15 @@ CAResult_t CAManagerRemoveAllData(JNIEnv *env)
         OICFree(curData);
     }
     ca_mutex_unlock(g_deviceACDataListMutex);
-    OIC_LOG(DEBUG, TAG, "OUT-CAManagerRemoveAllData");
+    OIC_LOG(DEBUG, TAG, "OUT - CAManagerRemoveAllACData");
     return CA_STATUS_OK;
 }
 
-bool CAManagerGetAutoConnectionFlag(JNIEnv *env, jstring jaddress)
+CAResult_t CAManagerGetAutoConnectingFlag(JNIEnv *env, jstring jaddress, bool *flag)
 {
-    OIC_LOG(DEBUG, TAG, "IN-CAManagerGetAutoConnectionFlag");
-    VERIFY_NON_NULL_RET(env, TAG, "env", NULL);
-    VERIFY_NON_NULL_RET(jaddress, TAG, "jaddress", NULL);
+    OIC_LOG(DEBUG, TAG, "CAManagerGetAutoConnectingFlag");
+    VERIFY_NON_NULL(env, TAG, "env");
+    VERIFY_NON_NULL(jaddress, TAG, "jaddress");
 
     ca_mutex_lock(g_deviceACDataListMutex);
 
@@ -340,26 +362,29 @@ bool CAManagerGetAutoConnectionFlag(JNIEnv *env, jstring jaddress)
 
         if (!strcmp(setAddress, address))
         {
+            OIC_LOG_V(DEBUG, TAG, "address : [%s], isAutoConnecting : %d", address,
+                      curData->isAutoConnecting);
+            *flag = curData->isAutoConnecting;
             (*env)->ReleaseStringUTFChars(env, curData->address, setAddress);
             (*env)->ReleaseStringUTFChars(env, jaddress, address);
             ca_mutex_unlock(g_deviceACDataListMutex);
-            OIC_LOG_V(DEBUG, TAG, "flag is %d", curData->isAutoConnect);
-            return curData->isAutoConnect;
+            return CA_STATUS_OK;
         }
         (*env)->ReleaseStringUTFChars(env, curData->address, setAddress);
     }
+
+    OIC_LOG_V(DEBUG, TAG, "[%s] doesn't exist in list", address);
     (*env)->ReleaseStringUTFChars(env, jaddress, address);
     ca_mutex_unlock(g_deviceACDataListMutex);
 
-    OIC_LOG(DEBUG, TAG, "OUT-CAManagerGetAutoConnectionFlag");
-    return false;
+    return CA_STATUS_FAILED;
 }
 
-void CAManagerSetAutoConnectionFlag(JNIEnv *env, jstring jaddress, bool flag)
+bool CAManagerSetAutoConnectingFlag(JNIEnv *env, jstring jaddress, bool flag)
 {
-    OIC_LOG(DEBUG, TAG, "IN-CAManagerSetAutoConnectionFlag");
-    VERIFY_NON_NULL_VOID(env, TAG, "env");
-    VERIFY_NON_NULL_VOID(jaddress, TAG, "jaddress");
+    OIC_LOG(DEBUG, TAG, "CAManagerSetAutoConnectingFlag");
+    VERIFY_NON_NULL_RET(env, TAG, "env", false);
+    VERIFY_NON_NULL_RET(jaddress, TAG, "jaddress", false);
 
     ca_mutex_lock(g_deviceACDataListMutex);
 
@@ -368,7 +393,7 @@ void CAManagerSetAutoConnectionFlag(JNIEnv *env, jstring jaddress, bool flag)
     {
         OIC_LOG(ERROR, TAG, "address is null");
         ca_mutex_unlock(g_deviceACDataListMutex);
-        return;
+        return false;
     }
 
     size_t length = u_arraylist_length(g_deviceACDataList);
@@ -381,7 +406,7 @@ void CAManagerSetAutoConnectionFlag(JNIEnv *env, jstring jaddress, bool flag)
             OIC_LOG(ERROR, TAG, "curData is null");
             (*env)->ReleaseStringUTFChars(env, jaddress, address);
             ca_mutex_unlock(g_deviceACDataListMutex);
-            return;
+            return false;
         }
 
         const char* setAddress = (*env)->GetStringUTFChars(env, curData->address, NULL);
@@ -390,24 +415,27 @@ void CAManagerSetAutoConnectionFlag(JNIEnv *env, jstring jaddress, bool flag)
             OIC_LOG(ERROR, TAG, "address is null");
             (*env)->ReleaseStringUTFChars(env, jaddress, address);
             ca_mutex_unlock(g_deviceACDataListMutex);
-            return;
+            return false;
         }
 
         if (!strcmp(setAddress, address))
         {
-            OIC_LOG_V(DEBUG, TAG, "flag is set to %d", flag);
-            curData->isAutoConnect = flag;
+            OIC_LOG_V(DEBUG, TAG, "isAutoConnecting flag of [%s] is set to %d", address,
+                      curData->isAutoConnecting);
+            curData->isAutoConnecting = flag;
             (*env)->ReleaseStringUTFChars(env, curData->address, setAddress);
             (*env)->ReleaseStringUTFChars(env, jaddress, address);
             ca_mutex_unlock(g_deviceACDataListMutex);
-            return;
+            return true;
         }
         (*env)->ReleaseStringUTFChars(env, curData->address, setAddress);
     }
+
+    OIC_LOG_V(DEBUG, TAG, "[%s] doesn't exist in list", address);
     (*env)->ReleaseStringUTFChars(env, jaddress, address);
     ca_mutex_unlock(g_deviceACDataListMutex);
 
-    OIC_LOG(DEBUG, TAG, "OUT-CAManagerSetAutoConnectionFlag");
+    return false;
 }
 
 size_t CAManagerGetACDataLength()
@@ -418,7 +446,7 @@ size_t CAManagerGetACDataLength()
 void CAManagerSetBTRecovery(bool flag)
 {
     g_isBTRecovery = flag;
-    OIC_LOG_V(DEBUG, TAG, "BT recovery flag : %d", g_isBTRecovery);
+    OIC_LOG_V(DEBUG, TAG, "BT recovery flag is set to %d", g_isBTRecovery);
 }
 
 bool CAManagerIsRecoveryFlagSet()
index f3ec358..f9598e8 100644 (file)
@@ -35,8 +35,8 @@ extern "C"
  */
 typedef struct
 {
-    jstring address;      /**< remote address */
-    bool isAutoConnect;   /**< auto connection flag */
+    jstring address;         /**< remote address */
+    bool isAutoConnecting;   /**< whether GATT connection has been in progress */
 } CAManagerACData_t;
 
 /**
@@ -49,9 +49,13 @@ jstring CAManagerGetLEAddressFromACData(JNIEnv *env, size_t idx);
 
 /**
  * create auto connection list.
- * @param[in]   env                   JNI interface pointer.
  */
-void CAManagerCreateACDataList(JNIEnv *env);
+void CAManagerCreateACDataList();
+
+/**
+ * Destroy auto connection list.
+ */
+void CAManagerDestroyACDataList();
 
 /**
  * initialize mutex.
@@ -65,11 +69,11 @@ CAResult_t CAManagerInitMutexVaraibles();
 void CAManagerTerminateMutexVariables();
 
 /**
- * check whether target address is already contained in list or not.
+ * check whether target address is already contained in ACData list or not.
  * @param[in]   env                   JNI interface pointer.
  * @param[in]   jaddress              ble address.
  */
-bool CAManagerIsMatchedACData(JNIEnv *env, jstring jaddress);
+bool CAManagerIsInACDataList(JNIEnv *env, jstring jaddress);
 
 /**
  * add auto connection data into list.
@@ -79,35 +83,37 @@ bool CAManagerIsMatchedACData(JNIEnv *env, jstring jaddress);
 void CAManagerAddACData(JNIEnv *env, jstring jaddress);
 
 /**
- * remove auto connection data for selected ble address.
+ * remove auto connection data from ACData list for selected ble address.
  * @param[in]   env                   JNI interface pointer.
  * @param[in]   jaddress              ble address.
  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
  */
-CAResult_t CAManagerRemoveData(JNIEnv *env, jstring jaddress);
+CAResult_t CAManagerRemoveACData(JNIEnv *env, jstring jaddress);
 
 /**
- * remove auto connection data for all devices.
+ * remove auto connection data from ACData list for all devices.
  * @param[in]   env                   JNI interface pointer.
  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
  */
-CAResult_t CAManagerRemoveAllData(JNIEnv *env);
+CAResult_t CAManagerRemoveAllACData(JNIEnv *env);
 
 /**
- * get current auto connection flag.
+ * get isAutoConnecting flag for the address.
  * @param[in]   env                   JNI interface pointer.
  * @param[in]   jaddress              ble address.
- * @return  true or false
+ * @param[out]  flag                  isAutoConnecting flag
+ * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
  */
-bool CAManagerGetAutoConnectionFlag(JNIEnv *env, jstring jaddress);
+CAResult_t CAManagerGetAutoConnectingFlag(JNIEnv *env, jstring jaddress, bool *flag);
 
 /**
- * set auto connection flag.
+ * set isAutoConnecting flag for the address.
  * @param[in]   env                   JNI interface pointer.
  * @param[in]   jaddress              ble address.
- * @param[in]   flag                  auto connection flag.
+ * @param[in]   flag                  isAutoConnecting flag.
+ * @return  true or false
  */
-void CAManagerSetAutoConnectionFlag(JNIEnv *env, jstring jaddress, bool flag);
+bool CAManagerSetAutoConnectingFlag(JNIEnv *env, jstring jaddress, bool flag);
 
 /**
  * get length of auto connection list.
index a181467..04121eb 100644 (file)
@@ -636,7 +636,7 @@ jobject CAManagerGetConnectedDeviceAddress(JNIEnv *env, jobject context)
 bool CAManagerRemoveConnectedDeviceAddress(JNIEnv *env, jobject context,
                                            jstring address, jobject set)
 {
-    OIC_LOG(DEBUG, TAG, "IN-CAManagerRemoveConnectedDeviceAddress");
+    OIC_LOG(DEBUG, TAG, "CAManagerRemoveConnectedDeviceAddress");
 
     VERIFY_NON_NULL_RET(env, TAG, "env", false);
     VERIFY_NON_NULL_RET(context, TAG, "context", false);