Remove UI Dependency for headless devices
[platform/core/connectivity/net-config.git] / src / wifi-state.c
index 01ac8bf..4fb0e44 100755 (executable)
  *
  */
 
-#include <aul.h>
 #include <vconf.h>
 #include <vconf-keys.h>
-#include <bundle.h>
-#include <bundle_internal.h>
-#include <eventsystem.h>
 
 #include "log.h"
 #include "util.h"
@@ -45,25 +41,14 @@ static wifi_tech_state_e g_tech_state = NETCONFIG_WIFI_TECH_UNKNOWN;
 
 static GSList *notifier_list = NULL;
 
+static guint network_connected_popup_timer_id = 0;
+static gboolean block_network_connected_popup = FALSE;
 
-static void __netconfig_pop_wifi_connected_poppup(const char *ssid)
+static gboolean _block_network_connection_popup(gpointer data)
 {
-       bundle *b = NULL;
-
-       if (ssid == NULL)
-               return;
-
-       b = bundle_create();
-
-       bundle_add(b, "_SYSPOPUP_TITLE_", "Network connection popup");
-       bundle_add(b, "_SYSPOPUP_TYPE_", "notification");
-       bundle_add(b, "_SYSPOPUP_CONTENT_", "wifi connected");
-       bundle_add(b, "_AP_NAME_", ssid);
-
-       DBG("Launch Wi-Fi connected alert network popup");
-       aul_launch_app("net.netpopup", b);
-
-       bundle_free(b);
+       block_network_connected_popup = FALSE;
+       netconfig_stop_timer(&network_connected_popup_timer_id);
+       return FALSE;
 }
 
 static void __set_wifi_connected_essid(void)
@@ -87,7 +72,15 @@ static void __set_wifi_connected_essid(void)
        }
 
        netconfig_set_vconf_str(VCONFKEY_WIFI_CONNECTED_AP_NAME, essid_name);
-       __netconfig_pop_wifi_connected_poppup(essid_name);
+
+       /* Block Network Connected popup for 3sec
+        * to avoid multiple popup's due to ready signals */
+       if (block_network_connected_popup == FALSE) {
+               block_network_connected_popup = TRUE;
+               netconfig_start_timer(3000, _block_network_connection_popup,
+                               NULL, &network_connected_popup_timer_id);
+               __netconfig_pop_wifi_connected_poppup(essid_name);
+       }
 }
 
 static void __unset_wifi_connected_essid(void)
@@ -135,9 +128,8 @@ static gboolean __is_wifi_profile_available(void)
 
        g_variant_get(message, "(a(oa{sv}))", &iter);
        while (g_variant_iter_loop(iter, "(oa{sv})", &obj, &next)) {
-               if (obj == NULL || netconfig_is_wifi_profile((const gchar*)obj) == FALSE) {
+               if (obj == NULL || netconfig_is_wifi_profile((const gchar*)obj) == FALSE)
                        continue;
-               }
 
                g_variant_iter_free(next);
                g_free(obj);
@@ -160,9 +152,8 @@ static gboolean __is_favorited(GVariantIter *array)
        while (g_variant_iter_loop(array, "{sv}", &key, &var)) {
                gboolean value;
 
-               if (g_str_equal(key, "Favorite") != TRUE) {
+               if (g_str_equal(key, "Favorite") != TRUE)
                        continue;
-               }
 
                value = g_variant_get_boolean(var);
                if (value)
@@ -178,11 +169,6 @@ static gboolean __is_favorited(GVariantIter *array)
 static void _wifi_state_connected_activation(void)
 {
        /* Add activation of services when Wi-Fi is connected */
-       bundle *b = NULL;
-
-       b = bundle_create();
-       aul_launch_app("com.samsung.keepit-service-standby", b);
-       bundle_free(b);
 }
 
 static void _wifi_state_changed(wifi_service_state_e state)
@@ -237,16 +223,15 @@ static gboolean _check_network_notification(gpointer data)
                goto cleanup;
        }
 
-       vconf_get_int(VCONFKEY_WIFI_ENABLE_QS, &qs_enable);
+       netconfig_vconf_get_int(VCONFKEY_WIFI_ENABLE_QS, &qs_enable);
        if (qs_enable != VCONFKEY_WIFI_QS_ENABLE) {
                DBG("qs_enable != VCONFKEY_WIFI_QS_ENABLE");
                goto cleanup;
        }
 
-       vconf_get_int(VCONFKEY_WIFI_UG_RUN_STATE, &ug_state);
-       if (ug_state == VCONFKEY_WIFI_UG_RUN_STATE_ON_FOREGROUND) {
+       netconfig_vconf_get_int(VCONFKEY_WIFI_UG_RUN_STATE, &ug_state);
+       if (ug_state == VCONFKEY_WIFI_UG_RUN_STATE_ON_FOREGROUND)
                goto cleanup;
-       }
 
        netconfig_send_notification_to_net_popup(NETCONFIG_ADD_FOUND_AP_NOTI, NULL);
 
@@ -274,9 +259,8 @@ static char *_get_connman_favorite_service(void)
 
        g_variant_get(message, "(a(oa{sv}))", &iter);
        while (g_variant_iter_loop(iter, "(oa{sv})", &obj, &next)) {
-               if (obj == NULL || netconfig_is_wifi_profile(obj) == FALSE) {
+               if (obj == NULL || netconfig_is_wifi_profile(obj) == FALSE)
                        continue;
-               }
 
                if (__is_favorited(next) == TRUE) {
                        favorite_service = g_strdup(obj);
@@ -296,13 +280,11 @@ static void __notification_value_changed_cb(keynode_t *node, void *user_data)
 {
        int value = -1;
 
-       if (vconf_get_int(VCONFKEY_WIFI_ENABLE_QS, &value) < 0) {
+       if (netconfig_vconf_get_int(VCONFKEY_WIFI_ENABLE_QS, &value) < 0)
                return;
-       }
 
-       if (value == VCONFKEY_WIFI_QS_DISABLE) {
+       if (value == VCONFKEY_WIFI_QS_DISABLE)
                netconfig_send_notification_to_net_popup(NETCONFIG_DEL_FOUND_AP_NOTI, NULL);
-       }
 }
 
 static void _register_network_notification(void)
@@ -355,6 +337,7 @@ static void _set_power_save(gboolean power_save)
        else
                old_state = power_save;
 
+       g_variant_unref(input_args);
        return;
 }
 
@@ -395,7 +378,7 @@ static void _set_power_lock(gboolean power_lock)
                        "org.tizen.system.deviced.display",
                        lock_method,
                        params);
-       if (reply == NULL){
+       if (reply == NULL) {
                ERR("Failed to set_power_lock");
                return;
        }
@@ -419,7 +402,7 @@ void wifi_state_emit_power_completed(gboolean power_on)
        else
                wifi_emit_power_off_completed((Wifi *)get_wifi_object());
 
-       DBG("Successfully sent signal [%s]",(power_on)?"powerOn":"powerOff");
+       DBG("Successfully sent signal [%s]", (power_on) ? "powerOn" : "powerOff");
 }
 
 void wifi_state_emit_power_failed(void)
@@ -453,7 +436,7 @@ void wifi_state_update_power_state(gboolean powered)
                        netconfig_set_vconf_int(VCONFKEY_WIFI_STATE, VCONFKEY_WIFI_UNCONNECTED);
                        netconfig_set_vconf_int(VCONFKEY_NETWORK_WIFI_STATE, VCONFKEY_NETWORK_WIFI_NOT_CONNECTED);
 
-                       netconfig_set_system_event(SYS_EVENT_WIFI_STATE, EVT_KEY_WIFI_STATE, EVT_VAL_WIFI_ON);
+                       netconfig_set_system_event(SYS_EVT_WIFI_STATE, EKEY_WIFI_STATE, EVAL_WIFI_ON);
 
                        netconfig_wifi_bgscan_stop();
                        netconfig_wifi_bgscan_start(TRUE);
@@ -477,7 +460,7 @@ void wifi_state_update_power_state(gboolean powered)
                netconfig_set_vconf_int(VCONFKEY_WIFI_STATE, VCONFKEY_WIFI_OFF);
                netconfig_set_vconf_int(VCONFKEY_NETWORK_WIFI_STATE, VCONFKEY_NETWORK_WIFI_OFF);
 
-               netconfig_set_system_event(SYS_EVENT_WIFI_STATE, EVT_KEY_WIFI_STATE, EVT_VAL_WIFI_OFF);
+               netconfig_set_system_event(SYS_EVT_WIFI_STATE, EKEY_WIFI_STATE, EVAL_WIFI_OFF);
 
                netconfig_wifi_set_bgscan_pause(FALSE);
                netconfig_wifi_bgscan_stop();
@@ -563,7 +546,7 @@ void wifi_state_set_service_state(wifi_service_state_e new_state)
                netconfig_set_vconf_int(VCONFKEY_WIFI_STATE, VCONFKEY_WIFI_CONNECTED);
                netconfig_set_vconf_int(VCONFKEY_NETWORK_WIFI_STATE, VCONFKEY_NETWORK_WIFI_CONNECTED);
 
-               netconfig_set_system_event(SYS_EVENT_WIFI_STATE, EVT_KEY_WIFI_STATE, EVT_VAL_WIFI_CONNECTED);
+               netconfig_set_system_event(SYS_EVT_WIFI_STATE, EKEY_WIFI_STATE, EVAL_WIFI_CONNECTED);
 
                __set_wifi_connected_essid();
 
@@ -576,7 +559,7 @@ void wifi_state_set_service_state(wifi_service_state_e new_state)
                netconfig_set_vconf_int (VCONFKEY_WIFI_STATE, VCONFKEY_WIFI_UNCONNECTED);
                netconfig_set_vconf_int(VCONFKEY_NETWORK_WIFI_STATE, VCONFKEY_NETWORK_WIFI_NOT_CONNECTED);
 
-               netconfig_set_system_event(SYS_EVENT_WIFI_STATE, EVT_KEY_WIFI_STATE, EVT_VAL_WIFI_ON);
+               netconfig_set_system_event(SYS_EVT_WIFI_STATE, EKEY_WIFI_STATE, EVAL_WIFI_ON);
 
                netconfig_wifi_indicator_stop();
 
@@ -584,8 +567,8 @@ void wifi_state_set_service_state(wifi_service_state_e new_state)
 
                netconfig_wifi_bgscan_stop();
                netconfig_wifi_bgscan_start(TRUE);
-       } else if ((old_state > NETCONFIG_WIFI_IDLE && old_state < NETCONFIG_WIFI_CONNECTED) && new_state == NETCONFIG_WIFI_IDLE){
-               //in ipv6 case disconnect/association -> association
+       } else if ((old_state > NETCONFIG_WIFI_IDLE && old_state < NETCONFIG_WIFI_CONNECTED) && new_state == NETCONFIG_WIFI_IDLE) {
+               /* in ipv6 case disconnect/association -> association */
                DBG("reset the bg scan period");
                netconfig_wifi_set_bgscan_pause(FALSE);
 
@@ -595,12 +578,8 @@ void wifi_state_set_service_state(wifi_service_state_e new_state)
 
        _wifi_state_changed(new_state);
 
-       if (new_state == NETCONFIG_WIFI_CONNECTED){
+       if (new_state == NETCONFIG_WIFI_CONNECTED)
                _wifi_state_connected_activation();
-#if defined TIZEN_WEARABLE
-               wc_launch_syspopup(WC_POPUP_TYPE_WIFI_CONNECTED);
-#endif
-       }
 }
 
 wifi_service_state_e wifi_state_get_service_state(void)
@@ -643,9 +622,8 @@ wifi_tech_state_e wifi_state_get_technology_state(void)
 
        g_variant_get(message, "(a(oa{sv}))", &iter);
        while (g_variant_iter_loop(iter, "(oa{sv})", &path, &next)) {
-               if (path == NULL || g_strcmp0(path, CONNMAN_WIFI_TECHNOLOGY_PREFIX) != 0) {
+               if (path == NULL || g_strcmp0(path, CONNMAN_WIFI_TECHNOLOGY_PREFIX) != 0)
                        continue;
-               }
 
                while (g_variant_iter_loop(next, "{sv}", &key, &variant)) {
                        const gchar *sdata = NULL;
@@ -655,24 +633,24 @@ wifi_tech_state_e wifi_state_get_technology_state(void)
                                data = g_variant_get_boolean(variant);
                                DBG("key-[%s] - %s", key, data ? "True" : "False");
 
-                               if (strcmp(key, "Powered") == 0 && data) {
+                               if (strcmp(key, "Powered") == 0 && data)
                                        wifi_tech_powered = TRUE;
-                               } else if (strcmp(key, "Connected") == 0 && data) {
+                               else if (strcmp(key, "Connected") == 0 && data)
                                        wifi_tech_connected = TRUE;
-                               } else if (strcmp(key, "Tethering") == 0 && data) {
-                                       // For further use
-                               }
+                               /* For further use
+                               else if (strcmp(key, "Tethering") == 0 && data) {
+                               } */
                        } else if (g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) {
                                sdata = g_variant_get_string(variant, NULL);
                                DBG("%s", sdata);
                        }
                }
-               g_variant_iter_free (next);
+               g_variant_iter_free(next);
        }
 
        g_variant_unref(message);
 
-       g_variant_iter_free (iter);
+       g_variant_iter_free(iter);
 
        if (wifi_tech_powered == TRUE)
                ret = NETCONFIG_WIFI_TECH_POWERED;
@@ -688,9 +666,6 @@ wifi_tech_state_e wifi_state_get_technology_state(void)
 void wifi_state_set_connected_essid(void)
 {
        __set_wifi_connected_essid();
-#if defined TIZEN_WEARABLE
-       wc_launch_syspopup(WC_POPUP_TYPE_WIFI_CONNECTED);
-#endif
 }
 
 void wifi_state_get_connected_essid(gchar **essid)
@@ -706,35 +681,50 @@ void wifi_state_get_connected_essid(gchar **essid)
  *     WIFI_CONNECTION_STATE_CONFIGURATION     = 2
  *     WIFI_CONNECTION_STATE_CONNECTED         = 3
  */
+/*     connection_wifi_state_e in CAPI
+ *
+ *     CONNECTION_WIFI_STATE_DEACTIVATED       = 0
+ *     CONNECTION_WIFI_STATE_DISCONNECTED      = 1
+ *     CONNECTION_WIFI_STATE_CONNECTED         = 2
+ */
 gboolean handle_get_wifi_state(Wifi *wifi, GDBusMethodInvocation *context)
 {
        g_return_val_if_fail(wifi != NULL, FALSE);
-       wifi_service_state_e state = NETCONFIG_WIFI_UNKNOWN;
-       gint wifi_state = 0;
-       state = wifi_state_get_service_state();
+       GVariant *param = NULL;
+       wifi_tech_state_e tech_state = NETCONFIG_WIFI_TECH_UNKNOWN;
+       wifi_service_state_e service_state = NETCONFIG_WIFI_UNKNOWN;
+       tech_state = wifi_state_get_technology_state();
+       service_state = wifi_state_get_service_state();
 
-       switch (state) {
-       case NETCONFIG_WIFI_FAILURE:
-               wifi_state = -1;
-               break;
-       case NETCONFIG_WIFI_UNKNOWN:
-       case NETCONFIG_WIFI_IDLE:
-               wifi_state = 0;
-               break;
-       case NETCONFIG_WIFI_ASSOCIATION:
-               wifi_state = 1;
-               break;
-       case NETCONFIG_WIFI_CONFIGURATION:
-               wifi_state = 2;
-               break;
-       case NETCONFIG_WIFI_CONNECTED:
-               wifi_state = 3;
-               break;
-       default:
-               wifi_state = 0;
+       if (tech_state == NETCONFIG_WIFI_TECH_UNKNOWN)
+               param = g_variant_new("(s)", "unknown");
+       else if (tech_state == NETCONFIG_WIFI_TECH_OFF ||
+               tech_state == NETCONFIG_WIFI_TECH_WPS_ONLY)
+               param = g_variant_new("(s)", "deactivated");
+       else if (tech_state == NETCONFIG_WIFI_TECH_CONNECTED)
+               param = g_variant_new("(s)", "connected");
+       else {
+               switch (service_state) {
+               case NETCONFIG_WIFI_FAILURE:
+                       param = g_variant_new("(s)", "failure");
+                       break;
+               case NETCONFIG_WIFI_ASSOCIATION:
+                       param = g_variant_new("(s)", "association");
+                       break;
+               case NETCONFIG_WIFI_CONFIGURATION:
+                       param = g_variant_new("(s)", "configuration");
+                       break;
+               case NETCONFIG_WIFI_CONNECTED:
+                       param = g_variant_new("(s)", "connected");
+                       break;
+               case NETCONFIG_WIFI_UNKNOWN:
+               case NETCONFIG_WIFI_IDLE:
+               default:
+                       param = g_variant_new("(s)", "disconnected");
+               }
        }
 
-       g_dbus_method_invocation_return_value(context, g_variant_new("(i)", wifi_state));
+       g_dbus_method_invocation_return_value(context, param);
 
        return TRUE;
 }