Fix: Update function to check service user favorite 15/30515/2
authorChengyi Zhao <chengyi1.zhao@archermind.com>
Wed, 19 Nov 2014 08:47:34 +0000 (16:47 +0800)
committerChengyi Zhao <chengyi1.zhao@archermind.com>
Fri, 21 Nov 2014 07:26:01 +0000 (15:26 +0800)
Change-Id: Ib678ed4e7bd4f0db066808717e56ccc80a5417b2
Signed-off-by: Chengyi Zhao <chengyi1.zhao@archermind.com>
src/include/wifi-internal.h
src/wifi-ap.c
src/wifi-internal.c

index 49e3dd0b572ebe0f89add8358ef0ded02504e797..185a23c77f523a74dac8491bbde777048fbccffd 100644 (file)
@@ -109,7 +109,8 @@ net_state_type_t _wifi_get_service_state_type(const char *state);
 /*For connection which CAPI send some message to WiNet daemon*/
 void _wifi_set_conn_info(net_wifi_connection_info_t *wifi_conn_info);
 net_wifi_connection_info_t *_wifi_get_conn_info(void);
-
+void convert_wifi_security(wlan_security_info_t *security_info,
+                                                       char **security);
 char *_wifi_get_ip_config_str(net_ip_config_type_t ip_config_type);
 net_ip_config_type_t _wifi_get_ip_config_type(const char *config);
 net_proxy_type_t _wifi_get_proxy_type(const char *proxy);
index 523ae619b7351d6516e02199c7e4f2db80860cee..01a5ea1cd19727a382f4d1436052a9acf69d543d 100755 (executable)
 
 #include "wifi-internal.h"
 
-static void convert_wifi_security(wlan_security_info_t *security_info,
-                                                       char **security)
-{
-       while (*security) {
-               if (g_strcmp0(*security, "none") == 0 &&
-                   security_info->sec_mode < WLAN_SEC_MODE_NONE)
-                       security_info->sec_mode = WLAN_SEC_MODE_NONE;
-               else if (!g_strcmp0(*security, "wep"))
-                       security_info->sec_mode = WLAN_SEC_MODE_WEP;
-               else if (!g_strcmp0(*security, "psk"))
-                       security_info->sec_mode = WLAN_SEC_MODE_WPA_PSK;
-               else if (!g_strcmp0(*security, "ieee8021x"))
-                       security_info->sec_mode = WLAN_SEC_MODE_IEEE8021X;
-               else if (!g_strcmp0(*security, "wpa"))
-                       security_info->sec_mode = WLAN_SEC_MODE_WPA_PSK;
-               else if (!g_strcmp0(*security, "rsn"))
-                       security_info->sec_mode = WLAN_SEC_MODE_WPA2_PSK;
-               else if (!g_strcmp0(*security, "wps"))
-                       security_info->wps_support = TRUE;
-               else
-                       security_info->sec_mode = WLAN_SEC_MODE_NONE;
-
-               security++;
-       }
-
-}
-
 static void __wifi_init_ap(net_profile_info_t *profile_info,
                                                        const char *bssid)
 {
@@ -983,7 +956,7 @@ EXPORT_API int wifi_ap_is_passphrase_required(wifi_ap_h ap, bool* required)
        if (!service)
                return WIFI_ERROR_INVALID_PARAMETER;
 
-       if (connman_service_get_favorite(service)) {
+       if (connman_service_get_user_favorite(service)) {
                *required = false;
                return WIFI_ERROR_NONE;
        }
index 009e97ff57d59351900109b77686578112064856..d0f690f179d8f21a098bfd5e37d15ee58982abd4 100755 (executable)
@@ -92,6 +92,31 @@ net_wifi_connection_info_t *_wifi_get_conn_info(void)
        return &net_wifi_conn_info;
 }
 
+void convert_wifi_security(wlan_security_info_t *security_info, char **security)
+{
+       while (*security) {
+               if (g_strcmp0(*security, "none") == 0 &&
+                   security_info->sec_mode < WLAN_SEC_MODE_NONE)
+                       security_info->sec_mode = WLAN_SEC_MODE_NONE;
+               else if (!g_strcmp0(*security, "wep"))
+                       security_info->sec_mode = WLAN_SEC_MODE_WEP;
+               else if (!g_strcmp0(*security, "psk"))
+                       security_info->sec_mode = WLAN_SEC_MODE_WPA_PSK;
+               else if (!g_strcmp0(*security, "ieee8021x"))
+                       security_info->sec_mode = WLAN_SEC_MODE_IEEE8021X;
+               else if (!g_strcmp0(*security, "wpa"))
+                       security_info->sec_mode = WLAN_SEC_MODE_WPA_PSK;
+               else if (!g_strcmp0(*security, "rsn"))
+                       security_info->sec_mode = WLAN_SEC_MODE_WPA2_PSK;
+               else if (!g_strcmp0(*security, "wps"))
+                       security_info->wps_support = TRUE;
+               else
+                       security_info->sec_mode = WLAN_SEC_MODE_NONE;
+
+               security++;
+       }
+}
+
 net_state_type_t _wifi_get_service_state_type(const char *state)
 {
        if (!g_strcmp0(state, "idle"))
@@ -921,13 +946,23 @@ int _wifi_libnet_open_profile(wifi_ap_h ap_h, wifi_connected_cb callback,
                                                        void *user_data)
 {
        enum connman_lib_err err = CONNMAN_LIB_ERR_NONE;
+       wlan_security_info_t sec_info;
+       char **security;
+
        struct connman_service *service = _wifi_get_service_h(ap_h);
        if (!service)
                return WIFI_ERROR_INVALID_PARAMETER;
 
        __libnet_set_connected_cb(callback, user_data);
 
-       if (connman_service_get_favorite(service))
+       security = connman_service_get_security(service);
+       if (!security)
+               return WIFI_ERROR_INVALID_OPERATION;
+
+       convert_wifi_security(&sec_info, security);
+
+       if (sec_info.sec_mode == WLAN_SEC_MODE_NONE ||
+                               connman_service_get_user_favorite(service))
                err = connman_service_connect(service,
                                        connman_service_connect_cb, NULL);
        else
@@ -968,12 +1003,7 @@ int _wifi_libnet_connect_with_wps(wifi_ap_h ap_h,
 
        __libnet_set_connected_cb(callback, user_data);
 
-       if (connman_service_get_favorite(service))
-               err = connman_service_connect(service,
-                                       connman_service_connect_cb, NULL);
-       else
-               return __libnet_connect_with_wifi_info(ap_h, callback,
-                                                               user_data);
+       return __libnet_connect_with_wifi_info(ap_h, callback, user_data);
 
        if (err != CONNMAN_LIB_ERR_NONE)
                return _wifi_connman_lib_error2wifi_error(err);