CAResult_t CALEStopAdvertise() { OIC_LOG(DEBUG, TAG, "IN"); if (NULL != g_hAdvertiser) { int ret = bt_adapter_le_stop_advertising(g_hAdvertiser); if (0 != ret) { OIC_LOG_V(ERROR, TAG, "bt_adapter_le_stop_advertising failed with ret[%s]", CALEGetErrorMsg(ret)); } ret = bt_adapter_le_destroy_advertiser(g_hAdvertiser); if (0 != ret) { OIC_LOG_V(ERROR, TAG, "bt_adapter_le_destroy_advertiser failed with ret[%s]", CALEGetErrorMsg(ret)); } g_hAdvertiser = NULL; } else { OIC_LOG(ERROR, TAG, "Advertising is not running"); return CA_STATUS_FAILED; } OIC_LOG(DEBUG, TAG, "OUT"); return CA_STATUS_OK; }
CAResult_t CAStopLEGattServer() { OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN"); ca_mutex_lock(g_bleServerStateMutex); if (false == g_isBleGattServerStarted) { OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "Gatt Server is not running to stop"); ca_mutex_unlock(g_bleServerStateMutex); return CA_STATUS_OK; } g_isBleGattServerStarted = false; if (NULL != g_hAdvertiser ) { int ret = 0; ret = bt_adapter_le_stop_advertising(g_hAdvertiser); if (0 != ret) { OIC_LOG_V(ERROR, TZ_BLE_SERVER_TAG, "bt_adapter_le_stop_advertising failed with ret [%d]", ret); } ret = bt_adapter_le_destroy_advertiser(g_hAdvertiser); if (0 != ret) { OIC_LOG_V(ERROR, TZ_BLE_SERVER_TAG, "bt_adapter_le_destroy_advertiser failed with ret [%d]", ret); } g_hAdvertiser = NULL; } CAResult_t res = CARemoveAllBleServicesFromGattServer(); if (CA_STATUS_OK != res) { OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "removeAllBleServicesFromGattServer failed"); } res = CADeInitBleGattService(); if (CA_STATUS_OK != res) { OIC_LOG_V(ERROR, TZ_BLE_SERVER_TAG, "_bt_gatt_deinit_service failed with ret [%d]", res); } GMainContext *context_event_loop = NULL; // Required for waking up the thread which is running in gmain loop if (NULL != g_eventLoop) { context_event_loop = g_main_loop_get_context(g_eventLoop); if (context_event_loop) { OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "g_eventLoop context %x", context_event_loop); g_main_context_wakeup(context_event_loop); // Kill g main loops and kill threads g_main_loop_quit(g_eventLoop); } } else { OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "g_eventLoop context is NULL"); } ca_mutex_unlock(g_bleServerStateMutex); OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "OUT"); return CA_STATUS_OK; }