From 7e79ee0036c8d5d3a869bf58622a71a0d48b051d Mon Sep 17 00:00:00 2001 From: Yu Jiung Date: Thu, 6 Oct 2016 15:11:02 +0900 Subject: [PATCH] Fix ASP Wi-Fi P2P ConfirmSession method Change-Id: Ifbd08bbdd02ccc98537756743efb6cb304a62ed5 Signed-off-by: Yu jiung --- oem/wifi-direct-oem.h | 1 + packaging/wifi-direct-manager.spec | 2 +- .../ctrl_iface_dbus/wfd-plugin-wpasupplicant.c | 12 ++++++------ src/wifi-direct-event.c | 1 + src/wifi-direct-iface.c | 16 +++++++++++++--- src/wifi-direct-manager.c | 1 + src/wifi-direct-session.c | 12 +++++++++--- src/wifi-direct-util.c | 4 ---- 8 files changed, 32 insertions(+), 17 deletions(-) diff --git a/oem/wifi-direct-oem.h b/oem/wifi-direct-oem.h index a42456f..01e4ed5 100644 --- a/oem/wifi-direct-oem.h +++ b/oem/wifi-direct-oem.h @@ -530,6 +530,7 @@ typedef struct { char *session_information; int proto; int status; + int deferring; unsigned char service_mac[OEM_MACADDR_LEN]; unsigned char group_mac[OEM_MACADDR_LEN]; char wps_pin[OEM_PINSTR_LEN+1]; diff --git a/packaging/wifi-direct-manager.spec b/packaging/wifi-direct-manager.spec index 6703454..883af52 100644 --- a/packaging/wifi-direct-manager.spec +++ b/packaging/wifi-direct-manager.spec @@ -2,7 +2,7 @@ Name: wifi-direct-manager Summary: Wi-Fi Direct manger -Version: 1.2.207 +Version: 1.2.208 Release: 1 Group: Network & Connectivity/Wireless License: Apache-2.0 diff --git a/plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c b/plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c index e004d6a..267c125 100755 --- a/plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c +++ b/plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c @@ -67,10 +67,6 @@ #define NETCONFIG_DBUS_REPLY_TIMEOUT (10 * 1000) -#if defined TIZEN_PROFILE_MOBILE -#define DEFAULT_MAC_FILE_PATH tzplatform_mkpath(TZ_SYS_ETC, ".mac.info") -#endif - #if defined TIZEN_WIFI_MODULE_BUNDLE #define DEFAULT_MAC_FILE_PATH "/sys/class/net/wlan0/address" #endif @@ -7104,8 +7100,12 @@ int ws_asp_prov_disc_req(wfd_oem_asp_prov_s *asp_params) dbus_set_method_param(¶ms, "ASPProvisionDiscoveryRequest", g_pd->iface_path, g_dbus); - g_snprintf(peer_path, DBUS_OBJECT_PATH_MAX, "%s/Peers/" - COMPACT_MACSTR, g_pd->iface_path, MAC2STR(asp_params->service_mac)); + if(asp_params->deferring == 0) + g_snprintf(peer_path, DBUS_OBJECT_PATH_MAX, "%s/Peers/" + COMPACT_MACSTR, g_pd->iface_path, MAC2STR(asp_params->service_mac)); + else + g_snprintf(peer_path, DBUS_OBJECT_PATH_MAX, "%s/Peers/" + COMPACT_MACSTR, g_pd->iface_path, MAC2STR(asp_params->session_mac)); WDP_LOGD("get peer path [%s]", peer_path); builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}")); diff --git a/src/wifi-direct-event.c b/src/wifi-direct-event.c index 3de0381..75eaa3b 100644 --- a/src/wifi-direct-event.c +++ b/src/wifi-direct-event.c @@ -1658,6 +1658,7 @@ int __wfd_handle_asp_prov_done(wfd_session_s *session, wfd_oem_event_s *event) } else if (prov_params->network_role == WFD_OEM_ASP_SESSION_ROLE_CLIENT) { res = wfd_session_asp_connect(session, WFD_OEM_ASP_SESSION_ROLE_CLIENT); } else if (prov_params->network_role == WFD_OEM_ASP_SESSION_ROLE_GO) { + res = wfd_session_asp_connect(session, WFD_OEM_ASP_SESSION_ROLE_GO); WDS_LOGD("don't need to take action."); } else { diff --git a/src/wifi-direct-iface.c b/src/wifi-direct-iface.c index a0248f9..cacaadd 100644 --- a/src/wifi-direct-iface.c +++ b/src/wifi-direct-iface.c @@ -2544,7 +2544,17 @@ static void __wfd_manager_asp_iface_handler(const gchar *method_name, g_variant_get(parameters, "(a{sv})", &iter); while (g_variant_iter_loop(iter, "{sv}", &key, &var)) { - if (!g_strcmp0(key, "session_mac")) { + if (!g_strcmp0(key, "service_mac")) { + g_variant_get(var, "&s", &mac_str); + if (mac_str == NULL) { + ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER; + g_variant_iter_free(iter); + goto failed; + } + macaddr_atoe(mac_str, prov_params.service_mac); + } else if (!g_strcmp0(key, "adv_id")) { + g_variant_get(var, "u", &(prov_params.adv_id)); + } else if (!g_strcmp0(key, "session_mac")) { g_variant_get(var, "&s", &mac_str); if (mac_str == NULL) { ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER; @@ -2554,8 +2564,8 @@ static void __wfd_manager_asp_iface_handler(const gchar *method_name, macaddr_atoe(mac_str, prov_params.session_mac); } else if (!g_strcmp0(key, "session_id")) { g_variant_get(var, "u", &(prov_params.session_id)); - } else if (!g_strcmp0(key, "confirmed")) { - g_variant_get(var, "y", &(confirmed)); + } else if (!g_strcmp0(key, "confirm")) { + g_variant_get(var, "i", &(confirmed)); } else if (!g_strcmp0(key, "pin")) { g_variant_get(var, "&s", &(pin)); g_strlcpy(prov_params.wps_pin, pin, PINSTR_LEN); diff --git a/src/wifi-direct-manager.c b/src/wifi-direct-manager.c index 02f0375..43f26de 100644 --- a/src/wifi-direct-manager.c +++ b/src/wifi-direct-manager.c @@ -883,6 +883,7 @@ int wfd_manager_asp_confirm_session(wfd_manager_s *manager, void *params, int co prov_params->status = 12; else prov_params->status = 11; + prov_params->deferring = 1; res = wfd_oem_asp_prov_disc_req(manager->oem_ops, prov_params); if (res < 0) { diff --git a/src/wifi-direct-session.c b/src/wifi-direct-session.c index d41f71d..c45c198 100644 --- a/src/wifi-direct-session.c +++ b/src/wifi-direct-session.c @@ -715,13 +715,19 @@ int wfd_session_asp_connect(wfd_session_s *session, int role) return -1; } - if (session->state > SESSION_STATE_GO_NEG) { - WDS_LOGE("Session already finished GO Negotiation"); + if (session->state >= SESSION_STATE_GO_NEG) { + WDS_LOGE("Session already starting GO Negotiation"); __WDS_LOG_FUNC_EXIT__; return -1; } - session->state = SESSION_STATE_GO_NEG; + if (role == WFD_OEM_ASP_SESSION_ROLE_GO) { + session->state = SESSION_STATE_WPS; + return 0; + } else { + session->state = SESSION_STATE_GO_NEG; + } + peer = session->peer; memset(¶m, 0x00, sizeof(wfd_oem_conn_param_s)); diff --git a/src/wifi-direct-util.c b/src/wifi-direct-util.c index cca62a2..7ac97b7 100644 --- a/src/wifi-direct-util.c +++ b/src/wifi-direct-util.c @@ -76,10 +76,6 @@ #define TIZEN_P2P_GO_IPADDR "192.168.49.1" #define MAX_SIZE_ERROR_BUFFER 256 -#if defined TIZEN_PROFILE_MOBILE -#define DEFAULT_MAC_FILE_PATH tzplatform_mkpath(TZ_SYS_ETC, ".mac.info") -#endif /* TIZEN_PROFILE_MOBILE */ - #if defined TIZEN_PROFILE_TV # if defined TIZEN_WIFI_MODULE_BUNDLE # define DEFAULT_MAC_FILE_PATH "/sys/class/net/wlan0/address" -- 2.7.4