Example #1
0
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;
}
Example #2
0
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;
}