[UTC][wifi-manager][Non-ACR][Update TC to handle exception cases] 57/224857/3
authorJaehyun Kim <jeik01.kim@samsung.com>
Thu, 13 Feb 2020 12:42:56 +0000 (21:42 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Mon, 17 Feb 2020 06:38:24 +0000 (15:38 +0900)
Change-Id: I3560cc1ee714b11ed945ad371e16de268e912683
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
src/utc/wifi-manager/utc-wifi-manager.c

index a65030925730af6a13316b445be1dedd659770e0..e1e71492bda05b10f9e3cb71f677514375805627 100755 (executable)
@@ -1473,35 +1473,60 @@ int utc_wifi_manager_connect_hidden_ap_n2(void)
  */
 int utc_wifi_manager_connect_hidden_ap_p(void)
 {
-        int ret = WIFI_MANAGER_ERROR_NONE;
-        char ap_name[CONFIG_VALUE_LEN_MAX] = {0,};
-        char ap_passphrase[CONFIG_VALUE_LEN_MAX] = {0,};
+       int ret = WIFI_MANAGER_ERROR_NONE;
+       char ap_name[CONFIG_VALUE_LEN_MAX] = {0,};
+       char ap_passphrase[CONFIG_VALUE_LEN_MAX] = {0,};
+       wifi_manager_security_type_e type;
 
-        if (!wifi_manager_get_value_from_configfile("WIFI_WPSACCESSPOINTNAME", ap_name)) {
-                      FPRINTF("[%s:%d] wifi_manager_get_value_from_configfile(WIFI_WPSACCESSPOINTNAME) failed \\n", __FILE__, __LINE__);
-                        return -1;
-        }
+       if (!wifi_manager_get_value_from_configfile("WIFI_WPSACCESSPOINTNAME", ap_name)) {
+               FPRINTF("[%s:%d] wifi_manager_get_value_from_configfile(WIFI_WPSACCESSPOINTNAME) failed \\n", __FILE__, __LINE__);
+               return -1;
+       }
 
-        if (!wifi_manager_get_value_from_configfile("WIFI_ACCESSPOINTPIN", ap_passphrase)) {
-                   FPRINTF("[%s:%d] wifi_manager_get_value_from_configfile(WIFI_ACCESSPOINTPIN) failed \\n", __FILE__, __LINE__);
-                        return -1;
-        }
+       if (!wifi_manager_get_value_from_configfile("WIFI_ACCESSPOINTPIN", ap_passphrase)) {
+               FPRINTF("[%s:%d] wifi_manager_get_value_from_configfile(WIFI_ACCESSPOINTPIN) failed \\n", __FILE__, __LINE__);
+               return -1;
+       }
 
-        if (!g_bFeatureWifi) {
+       if (!g_bFeatureWifi) {
                ret = wifi_manager_connect_hidden_ap(g_hWifi, ap_name, 2, ap_passphrase, wifi_manager_connected_callback, NULL);
-                CHECK_RETURN("wifi_manager_connect_hidden_ap", ret, WIFI_MANAGER_ERROR_NOT_SUPPORTED);
-                return 0;
-        }
+               CHECK_RETURN("wifi_manager_connect_hidden_ap", ret, WIFI_MANAGER_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
 
        ret = wifi_manager_scan(g_hWifi, wifi_manager_scanned_callback, NULL);
        PRINT_RETURN("wifi_manager_scan", ret);
        RUN_GMAIN_LOOP;
        CHECK_RETURN(CALLBACK_RETURN, ret, WIFI_MANAGER_ERROR_NONE);
 
-       ret = wifi_manager_connect_hidden_ap(g_hWifi, ap_name, 2, ap_passphrase, wifi_manager_connected_callback, NULL);
-       RUN_GMAIN_LOOP;
+       ret = wifi_manager_foreach_found_ap(g_hWifi, wifi_manager_found_ap_callback, ap_name);
+       CHECK_RETURN("wifi_manager_foreach_found_ap", ret, WIFI_MANAGER_ERROR_NONE);
+
+       if (g_nCallbackRet != WIFI_MANAGER_ERROR_NONE) {
+               /* AP is not found due to wrong environment or wrong user input */
+               FPRINTF("[%s:%d] No AP found!\\n", __FILE__, __LINE__);
+               return 0;
+       }
+
+       ret = wifi_manager_ap_get_security_type(g_hWifiAP, &type);
+       CHECK_RETURN("wifi_manager_ap_get_security_type", ret, WIFI_MANAGER_ERROR_NONE);
+
+       ret = wifi_manager_connect_hidden_ap(g_hWifi, ap_name, type, ap_passphrase, wifi_manager_connected_callback, NULL);
+       if (ret != WIFI_MANAGER_ERROR_NONE &&
+                       (type == WIFI_MANAGER_SECURITY_TYPE_WPA2_PSK || type == WIFI_MANAGER_SECURITY_TYPE_WPA_FT_PSK)) {
+               PRINT_RETURN("wifi_manager_connect_hidden_ap", ret);
+               /**
+                * wifi_manager_connect_hidden_ap treats WPA2_PSK or FT_WPA as WPA.
+                * This will be improved later.
+                */
+               ret = wifi_manager_connect_hidden_ap(g_hWifi, ap_name,
+                               WIFI_MANAGER_SECURITY_TYPE_WPA_PSK, ap_passphrase, wifi_manager_connected_callback, NULL);
+       }
+
+       /* wifi_manager_connect_hidden_ap invokes the callback only if there is no error */
        CHECK_RETURN("wifi_manager_connect_hidden_ap", ret, WIFI_MANAGER_ERROR_NONE);
 
+       RUN_GMAIN_LOOP;
        return 0;
 }