CAResult_t CARemoveBLEServiceInfoToList(BLEServiceList **serviceList, BLEServiceInfo *bleServiceInfo, const char *bdAddress) { OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN"); VERIFY_NON_NULL(serviceList, NULL, "Param serviceList is NULL"); VERIFY_NON_NULL(*serviceList, NULL, "Param *serviceList is NULL"); VERIFY_NON_NULL(bdAddress, NULL, "Param bdAddress is NULL"); BLEServiceList *prev = NULL; BLEServiceList *cur = *serviceList; while (cur != NULL) { if (!strcasecmp(cur->serviceInfo->bdAddress, bdAddress)) { if (cur == *serviceList) { *serviceList = cur->next; cur->next = NULL; CAFreeBLEServiceList(cur); CADecrementRegisteredServiceCount(); OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "OUT"); return CA_STATUS_OK; } else { prev->next = cur->next; cur->next = NULL; CAFreeBLEServiceList(cur); CADecrementRegisteredServiceCount(); OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "OUT"); return CA_STATUS_OK; } } else { prev = cur; cur = cur->next; } } OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, " OUT"); return CA_STATUS_FAILED; }
void CATerminateLEGattClient() { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); ca_mutex_lock(g_bleClientStateMutex); ca_mutex_lock(g_bleServerBDAddressMutex); OICFree(g_remoteAddress); ca_mutex_unlock(g_bleServerBDAddressMutex); ca_mutex_lock(g_bleServiceListMutex); CAFreeBLEServiceList(g_bLEServiceList); g_bLEServiceList = NULL; ca_mutex_unlock(g_bleServiceListMutex); CAResetRegisteredServiceCount(); ca_mutex_unlock(g_bleClientStateMutex); CATerminateGattClientMutexVariables(); OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "OUT"); }