+static void _wps_cancel_cb(void* data, Evas_Object* obj, void* event_info)
+{
+ __COMMON_FUNC_ENTER__;
+
+ if (ug_app_state->passpopup == NULL) {
+ return;
+ }
+
+ current_popup_free(ug_app_state->passpopup, POPUP_WPS_OPTIONS);
+
+ __COMMON_FUNC_EXIT__;
+}
+
+static void _wps_pin_cb(void* data, Evas_Object* obj, void* event_info)
+{
+ __COMMON_FUNC_ENTER__;
+ unsigned int rpin = 0;
+ char npin[9] = { '\0' };
+ int pin_len = 0;
+ int ret = WLAN_MANAGER_ERR_NONE;
+ wifi_ap_h ap = NULL;
+ Evas_Object *info_popup = NULL;
+
+ if (!ug_app_state->passpopup) {
+ return;
+ }
+
+ /* Generate WPS pin */
+ rpin = wps_generate_pin();
+ if (rpin > 0)
+ g_snprintf(npin, sizeof(npin), "%08d", rpin);
+
+ pin_len = strlen(npin);
+ if (pin_len != 8) {
+ info_popup = common_utils_show_info_ok_popup(
+ ug_app_state->layout_main, PACKAGE,
+ sc(PACKAGE, I18N_TYPE_Invalid_pin),
+ _info_popup_ok_cb,
+ ug_app_state->passpopup);
+ ug_app_state->passpopup->info_popup = info_popup;
+
+ __COMMON_FUNC_EXIT__;
+ return;
+ }
+
+ ap = passwd_popup_get_ap(ug_app_state->passpopup);
+
+ ret = wlan_manager_wps_pin_connect(ap, npin);
+ if (ret == WLAN_MANAGER_ERR_NONE) {
+ INFO_LOG(UG_NAME_NORMAL, "wlan_manager_wps_pin_connect successful");
+
+ create_pbc_popup(ug_app_state->passpopup,
+ __wps_pbc_popup_cancel_connecting, NULL,
+ POPUP_WPS_PIN, npin);
+ } else {
+ ERROR_LOG(UG_NAME_NORMAL, "wlan_manager_wps_pin_connect failed");
+ passwd_popup_free(ug_app_state->passpopup);
+ ug_app_state->passpopup = NULL;
+ }
+
+ __COMMON_FUNC_EXIT__;
+}
+
+static void __wps_options_popup_cb(void* data, Evas_Object* obj, void* event_info)
+{
+ __COMMON_FUNC_ENTER__;
+ pswd_popup_create_req_data_t popup_info;
+
+ if (!ug_app_state->passpopup) {
+ return;
+ }
+
+ memset(&popup_info, 0, sizeof(pswd_popup_create_req_data_t));
+
+ popup_info.title = "IDS_WIFI_HEADER_SELECT_WPS_METHOD_ABB";
+ popup_info.ok_cb = NULL;
+ popup_info.cancel_cb = _wps_cancel_cb;
+ popup_info.show_wps_btn = EINA_FALSE;
+ popup_info.wps_btn_cb = _wps_btn_cb;
+ popup_info.wps_pin_cb = _wps_pin_cb;
+ popup_info.ap = passwd_popup_get_ap(ug_app_state->passpopup);
+ popup_info.cb_data = NULL;
+ create_wps_options_popup(ug_app_state->layout_main, ug_app_state->passpopup,
+ &popup_info);
+
+ __COMMON_FUNC_EXIT__;
+}
+
+void viewer_list_wifi_reconnect(wifi_device_info_t *device_info)
+{
+ pswd_popup_create_req_data_t popup_info;
+ wifi_security_type_e sec_type = WIFI_SECURITY_TYPE_NONE;
+ wifi_device_info_t *device_info_temp = NULL;
+ struct ug_data *ugd = (struct ug_data *)ug_app_state->gadget;
+
+ if (device_info == NULL)
+ return;
+
+ if (ug_app_state->passpopup != NULL || ug_app_state->eap_view != NULL) {
+ INFO_LOG(UG_NAME_ERR, "already launched popup");
+ return;
+ }
+
+ wifi_ap_get_security_type(device_info->ap, &sec_type);
+
+ switch (sec_type) {
+ case WIFI_SECURITY_TYPE_WEP:
+ case WIFI_SECURITY_TYPE_WPA_PSK:
+ case WIFI_SECURITY_TYPE_WPA2_PSK:
+ memset(&popup_info, 0, sizeof(pswd_popup_create_req_data_t));
+
+ device_info_temp = view_list_item_device_info_create(device_info->ap);
+
+ popup_info.title = device_info->ssid;
+ popup_info.ok_cb = __passwd_popup_ok_cb;
+ popup_info.cancel_cb = __passwd_popup_cancel_cb;
+ popup_info.show_wps_btn = device_info->wps_mode;
+ popup_info.wps_btn_cb = __wps_options_popup_cb;
+ popup_info.ap = device_info->ap;
+ popup_info.cb_data = device_info_temp;
+ popup_info.sec_type = sec_type;
+
+ /* TODO: parameter with device_info */
+ /* TODO: finally parameter with wifi_ap_h, WPA, EAP */
+ ug_app_state->passpopup = create_passwd_popup(
+ ug_app_state->conformant,
+ ug_app_state->layout_main, PACKAGE, &popup_info);
+
+ if (ug_app_state->passpopup == NULL) {
+ INFO_LOG(UG_NAME_ERR, "Fail to create password popup");
+ }
+
+ break;
+ case WIFI_SECURITY_TYPE_EAP:
+ ug_app_state->eap_view = create_eap_view(
+ ug_app_state->layout_main, ugd->win_main,
+ ug_app_state->conformant,
+ PACKAGE, device_info,
+ viewer_manager_eap_view_deref);
+ break;
+ default:
+ ERROR_LOG(UG_NAME_NORMAL, "Unknown security type [%d]", sec_type);
+ return;
+ }
+
+}
+
+void viewer_list_wifi_connect(wifi_device_info_t *device_info)