+static int CALEWaittillDisconnect(oc_mutex mutex, oc_cond cv, int wait_seconds)
+{
+ OIC_LOG(DEBUG, TAG, "Waiting for server to be disconnected...");
+ oc_mutex_lock(mutex);
+ uint64_t wait_time = wait_seconds * MICROSECS_PER_SEC;
+ int ret = oc_cond_wait_for(cv, mutex, wait_time);
+ oc_mutex_unlock(mutex);
+ return ret;
+}
+
+static CAResult_t CALEGattConnectionRetry(const char *remoteAddress)
+{
+ OIC_LOG(DEBUG, TAG, "IN");
+
+ VERIFY_NON_NULL_VOID(remoteAddress, TAG, "remote address is NULL")
+
+ CALEGattDisConnect(remoteAddress);
+ CALEWaittillDisconnect(g_isDisconnectedMutex, g_LEDisconnectedCond, 10);
+ CAResult_t result = CALEGattConnect(remoteAddress);
+ OIC_LOG(DEBUG, TAG, "OUT");
+ return result;
+}
+