Deactivate WiFi

This set of short functions will do anything that should be done to deactivate WiFi service. PRIVILEGES NEEDED: http://tizen.org/privilege/network.get http://tizen.org/privilege/network.set
//    PRIVILEGES needed to be set in tizen-manifest.xml:
//    http://tizen.org/privilege/network.get
//    http://tizen.org/privilege/network.set

#include <wifi.h>
#include <dlog.h> // for logging purposes

//callback to be called when WiFi is deactivated
void on_wifi_deactivated(wifi_error_e result, void *user_data)
{
    if (result == WIFI_ERROR_NONE)
    {
        LOGI("WiFi deactivation request successfully finished!");
        bool wifi_activated = false;
        if (wifi_is_activated(&wifi_activated) == WIFI_ERROR_NONE)
        {
            if (!wifi_activated)
            {
                LOGI("status: deactivated!");
            }
            else
            {
                LOGE("Error! WiFi is still activated!");
            }
        }
        else
        {
            LOGE("Error! Could not check WiFi status!");
        }
    }
    else
    {
    	LOGE("Error! WiFi deactivation failed!");
    }
}

// This simple function deactivates WiFi.
// It returns:
// -1 on failure,
// 0 when the WiFi deactivation request was successful (in that case callback will be executed),
// and 1 when WiFi is already deactivated.
int deactivate_wifi()
{
    int result = -1;
    if (wifi_initialize() == WIFI_ERROR_NONE)
    {
        bool wifi_activated = false;
        if (wifi_is_activated(&wifi_activated) == WIFI_ERROR_NONE)
        {
            if (!wifi_activated)
            {
                LOGI("WIFI already deactivated!");

                // As WiFi is already deactivated,
                // you shouldn't call wifi_deactivate(), because it will return error.
                // So you shouldn't also wait for callback.

                // You can call the callback function manually here:
                // on_wifi_deactivated(WIFI_ERROR_NONE, NULL);
                // or check the function result and act accordingly outside of this function.

                result = 1;
            }
            else
            {
                LOGI("WIFI is currently activated!");
                if (wifi_deactivate(on_wifi_deactivated, NULL)== WIFI_ERROR_NONE)
                {
                    LOGI("WIFI deactivation requested! Please wait for callback");
                    result = 0;
                }
                else
                {
                    LOGE("Failed to request WiFi deactivation!");
                    result = -1;
                }
            }
        }
        else
        {
            LOGE("Could not check WiFi status!");
            result = -1;
        }
    }
    else
    {
        LOGE("WiFi initialization error!");
        result = -1;
    }
    return result;
}

// This should be called when the deactivation callback is executed 
// and you don't need WiFi services anymore (e.g. on app shutdown).
void deinitialize()
{
    if (wifi_deinitialize() == WIFI_ERROR_NONE)
    {
        LOGI("WiFi deinitialized!");
    }
}

Responses

0 Replies