Add initial sources for gtest in unittest
[platform/core/connectivity/wifi-direct-manager.git] / src / wifi-direct-session.c
index 26b8aa5..20ac78a 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include <glib.h>
 
 #include "wifi-direct-error.h"
 #include "wifi-direct-log.h"
 #include "wifi-direct-dbus.h"
-#ifdef TIZEN_FEATURE_ASP
 #include "wifi-direct-asp.h"
-#endif /* TIZEN_FEATURE_ASP */
-
 
+//LCOV_EXCL_START
 static gboolean _session_timeout_cb(gpointer *user_data)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_session_s *session = (wfd_session_s*) manager->session;
        unsigned char *peer_addr = NULL;
        char peer_mac_address[MACSTR_LEN+1] = {0, };
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
                return FALSE;
        }
        session->connecting_120 = 0;
        session->timer = 0;
-       WDS_LOGD("Session timer expired");
+       WDS_LOGD("Session timer expired");//LCOV_EXCL_LINE
 
        peer_addr = wfd_session_get_peer_addr(session);
        if (peer_addr != NULL)
@@ -77,9 +76,8 @@ static gboolean _session_timeout_cb(gpointer *user_data)
                                                            WFD_EVENT_CONNECTION_RSP,
                                                            peer_mac_address));
 
-#if defined(TIZEN_FEATURE_ASP)
-       if (!ISZEROMACADDR(session->session_mac)) {
-               if(session->state < SESSION_STATE_GO_NEG)
+       if (wfd_asp_is_asp_session(session)) {
+               if (session->state < SESSION_STATE_GO_NEG)
                        wfd_asp_connect_status(session->session_mac,
                                        session->session_id,
                                        ASP_CONNECT_STATUS_REQUEST_FAILED,
@@ -90,7 +88,6 @@ static gboolean _session_timeout_cb(gpointer *user_data)
                                        ASP_CONNECT_STATUS_GROUP_FORMATION_FAILED,
                                        NULL);
        }
-#endif
 
        wfd_session_cancel(session, peer_addr);
 
@@ -108,13 +105,14 @@ static gboolean _session_timeout_cb(gpointer *user_data)
                wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_ACTIVATED);
        }
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return FALSE;
 }
+//LCOV_EXCL_STOP
 
 static void _wfd_notify_session_failed(wfd_manager_s *manager, unsigned char *peer_addr)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        char peer_mac_address[MACSTR_LEN+1] = {0, };
 
        snprintf(peer_mac_address, MACSTR_LEN, MACSTR, MAC2STR(peer_addr));
@@ -124,14 +122,15 @@ static void _wfd_notify_session_failed(wfd_manager_s *manager, unsigned char *pe
                                                            WFD_EVENT_CONNECTION_RSP,
                                                            peer_mac_address));
 
-#if defined(TIZEN_FEATURE_ASP)
+
+
        wfd_session_s *session = manager->session;
-       if (session && !ISZEROMACADDR(session->session_mac))
+       if (wfd_asp_is_asp_session(session)) {
                wfd_asp_connect_status(session->session_mac,
                                                        session->session_id,
                                                        ASP_CONNECT_STATUS_GROUP_FORMATION_STARTED,
                                                        NULL);
-#endif
+       }
 
        if (manager->local->dev_role == WFD_DEV_ROLE_GO) {
                wfd_state_set(manager, WIFI_DIRECT_STATE_GROUP_OWNER);
@@ -141,16 +140,16 @@ static void _wfd_notify_session_failed(wfd_manager_s *manager, unsigned char *pe
                wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_ACTIVATED);
        }
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
 }
 
 int wfd_session_timer(wfd_session_s *session, int start)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -159,24 +158,24 @@ int wfd_session_timer(wfd_session_s *session, int start)
                        session->connecting_120 = 1;
 
                if (session->timer > 0) {
-                       WDS_LOGE("Session timer already started");
-                       __WDS_LOG_FUNC_EXIT__;
+                       WDS_LOGE("Session timer already started");//LCOV_EXCL_LINE
+                       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                        return -1;
                }
                session->timer = g_timeout_add(120000,
                                                (GSourceFunc) _session_timeout_cb,
                                                NULL);
-               WDS_LOGD("Session timer started");
+               WDS_LOGD("Session timer started");//LCOV_EXCL_LINE
        } else {
                session->connecting_120 = 0;
                if (session->timer > 0) {
                        g_source_remove(session->timer);
                        session->timer = 0;
-                       WDS_LOGD("Session timer stoped");
+                       WDS_LOGD("Session timer stoped");//LCOV_EXCL_LINE
                }
        }
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
@@ -184,28 +183,28 @@ int wfd_session_timer(wfd_session_s *session, int start)
  * before using this function */
 wfd_session_s *wfd_create_session(void *data, unsigned char *peer_addr, int wps_mode, int direction)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = (wfd_manager_s*) data;
        wfd_session_s *session = NULL;
        wfd_device_s *peer = NULL;
 
        if (!data || !peer_addr) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return NULL;
        }
 
        WDS_LOGD("create session for peer[" MACSTR "]", MAC2STR(peer_addr));
 
        if (manager->session) {
-               WDS_LOGE("Session already exist");
+               WDS_LOGE("Session already exist");//LCOV_EXCL_LINE
                return NULL;
        }
 
        session = (wfd_session_s*) g_try_malloc0(sizeof(wfd_session_s));
        if (!session) {
-               WDS_LOGE("Failed to allocate memory for session");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Failed to allocate memory for session");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return NULL;
        }
 
@@ -213,7 +212,7 @@ wfd_session_s *wfd_create_session(void *data, unsigned char *peer_addr, int wps_
        if (!peer) {
                WDS_LOGE("Failed to find peer info[" MACSECSTR "]", MAC2SECSTR(peer_addr));
                g_free(session);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return NULL;
        }
        peer->state = WFD_PEER_STATE_CONNECTING;
@@ -224,10 +223,8 @@ wfd_session_s *wfd_create_session(void *data, unsigned char *peer_addr, int wps_
                session->wps_mode = WFD_WPS_MODE_KEYPAD;
        else if (wps_mode == WFD_WPS_MODE_KEYPAD)
                session->wps_mode = WFD_WPS_MODE_DISPLAY;
-#if defined(TIZEN_FEATURE_ASP)
        else if (wps_mode == WFD_WPS_MODE_P2PS)
                session->wps_mode = WFD_WPS_MODE_P2PS;
-#endif /* TIZEN_FEATURE_ASP */
        else
                session->wps_mode = wps_mode;
        session->direction = direction;
@@ -243,12 +240,15 @@ wfd_session_s *wfd_create_session(void *data, unsigned char *peer_addr, int wps_
                        session->req_wps_mode = WFD_WPS_MODE_KEYPAD;
 
                        if (wfd_oem_generate_pin(manager->oem_ops, &generated_pin) != 0) {
-                               WDS_LOGE("Failed to generate pin");
+                               WDS_LOGE("Failed to generate pin");//LCOV_EXCL_LINE
                                g_free(session);
-                               __WDS_LOG_FUNC_EXIT__;
+                               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                                return NULL;
                        }
 
+#if defined(BUILD_GTESTS)
+                       generated_pin = g_strndup("12345678", PINSTR_LEN + 1);
+#endif /* BUILD_GTESTS */
                        g_strlcpy(session->wps_pin, generated_pin, PINSTR_LEN + 1);
                        g_free(generated_pin);
        }
@@ -256,29 +256,30 @@ wfd_session_s *wfd_create_session(void *data, unsigned char *peer_addr, int wps_
        if (peer->dev_role == WFD_DEV_ROLE_GO && manager->local->dev_role != WFD_DEV_ROLE_GO)
                manager->local->dev_role = WFD_DEV_ROLE_GC;
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return session;
 }
 
 int wfd_destroy_session(void *data)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = (wfd_manager_s*) data;
        wfd_session_s *session = NULL;
        wfd_device_s *peer = NULL;
 
        if (!manager) {
-               WDS_LOGE("Invalid parameter");
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
                return -1;
        }
 
        session = (wfd_session_s*) manager->session;
        if (!session) {
-               WDS_LOGE("Session not found");  /* self prevent */
+               WDS_LOGE("Session not found");//LCOV_EXCL_LINE  /* self prevent */
                return -1;
        }
        wfd_session_timer(session, 0);
        peer = session->peer;
+       WDS_LOGD("peer :%p", peer);
 
        if (peer) {
                if (session->state == SESSION_STATE_COMPLETED)
@@ -286,7 +287,7 @@ int wfd_destroy_session(void *data)
                else
                        peer->state = WFD_PEER_STATE_DISCOVERED;
        } else {
-               WDS_LOGE("Peer not found");
+               WDS_LOGE("Peer not found");//LCOV_EXCL_LINE
        }
 
        g_free(session);
@@ -297,21 +298,21 @@ int wfd_destroy_session(void *data)
        if (manager->local->dev_role == WFD_DEV_ROLE_GC)
                manager->local->dev_role = WFD_DEV_ROLE_NONE;
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_start(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_device_s *peer = NULL;
        int join = 0;
        int res = 0;
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -339,41 +340,40 @@ int wfd_session_start(wfd_session_s *session)
                                                                        MAC2SECSTR(peer->dev_addr));
                wfd_destroy_session(manager);
                /* TODO: send notification to App */
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        wfd_session_timer(session, 1);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
-#if defined(TIZEN_FEATURE_ASP)
 int wfd_session_asp_session_start(wfd_session_s *session, wfd_oem_asp_prov_s *params)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
 
        wfd_manager_s *manager = wfd_get_manager();
        int res = 0;
 
        if (session == NULL || params == NULL) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        if (session->state > SESSION_STATE_STARTED) {
                WDS_LOGE("Invalid session state(%d)", session->state);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        res = wfd_oem_asp_prov_disc_req(manager->oem_ops, params);
        if (res < 0) {
-               WDS_LOGD("Failed to send ASP provision discovery request to peer");
+               WDS_LOGD("Failed to send ASP provision discovery request to peer");//LCOV_EXCL_LINE
                wfd_destroy_session(manager);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -383,22 +383,21 @@ int wfd_session_asp_session_start(wfd_session_s *session, wfd_oem_asp_prov_s *pa
        memcpy(session->service_mac, params->service_mac, MACADDR_LEN);
        wfd_session_timer(session, 1);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
-#endif /* TIZEN_FEATURE_ASP */
 
 #if 0
 int wfd_session_stop(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_device_s *peer = NULL;
        int res = 0;
 
        if (!session) {
                WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -411,7 +410,7 @@ int wfd_session_stop(wfd_session_s *session)
 
                        if (res < 0) {
                        WDS_LOGE("Failed to reject or cancel connection");
-                       __WDS_LOG_FUNC_EXIT__;
+                       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                        return -1;
                }
        }
@@ -419,7 +418,7 @@ int wfd_session_stop(wfd_session_s *session)
        session->state = SESSION_STATE_STOPPED;
        wfd_destroy_session(manager);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 #endif
@@ -430,20 +429,20 @@ int wfd_session_stop(wfd_session_s *session)
  */
 int wfd_session_connect(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_oem_conn_param_s param;
        wfd_device_s *peer = NULL;
        int res = 0;
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        if (session->state > SESSION_STATE_GO_NEG) {
-               WDS_LOGE("Session already finished GO Negotiation");
+               WDS_LOGE("Session already finished GO Negotiation");//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -479,30 +478,30 @@ int wfd_session_connect(wfd_session_s *session)
        if (res < 0) {
                WDS_LOGD("Failed to connect peer [" MACSECSTR "]", MAC2SECSTR(peer->dev_addr));
                wfd_destroy_session(manager);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        wfd_session_timer(session, 1);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_cancel(wfd_session_s *session, unsigned char *peer_addr)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        int res = 0;
 
        if (!session || !session->peer) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return WIFI_DIRECT_ERROR_NOT_PERMITTED;
        }
 
        if (memcmp(peer_addr, session->peer->dev_addr, MACADDR_LEN)) {
-               WDS_LOGE("Peer is not included in this session");
+               WDS_LOGE("Peer is not included in this session");//LCOV_EXCL_LINE
                return WIFI_DIRECT_ERROR_NOT_PERMITTED;
        }
 
@@ -512,26 +511,26 @@ int wfd_session_cancel(wfd_session_s *session, unsigned char *peer_addr)
                res = wfd_oem_cancel_connection(manager->oem_ops, peer_addr);
 
        if (res < 0) {
-               WDS_LOGE("Failed to cancel connection");
+               WDS_LOGE("Failed to cancel connection");//LCOV_EXCL_LINE
                return WIFI_DIRECT_ERROR_OPERATION_FAILED;
        }
 
        wfd_destroy_session(manager);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_reject(wfd_session_s *session, unsigned char *peer_addr)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_device_s *peer = NULL;
        int res = 0;
 
        if (!session || !manager) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -539,7 +538,7 @@ int wfd_session_reject(wfd_session_s *session, unsigned char *peer_addr)
        if (session->state < SESSION_STATE_CREATED ||
                session->state >= SESSION_STATE_STOPPED) {
                WDS_LOGE("Session state is Invalid [%d]", session->state);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -556,29 +555,29 @@ int wfd_session_reject(wfd_session_s *session, unsigned char *peer_addr)
        else
                res = wfd_oem_reject_connection(manager->oem_ops, peer->dev_addr);
        if (res < 0) {
-               WDS_LOGE("Failed to reject connection");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Failed to reject connection");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        wfd_destroy_session(manager);
        /* TODO: send notification to App */
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_join(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_oem_conn_param_s param;
        wfd_device_s *peer = NULL;
        int res = 0;
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -597,19 +596,19 @@ int wfd_session_join(wfd_session_s *session)
        if (res < 0) {
                WDS_LOGD("Failed to join with peer [" MACSECSTR "]", MAC2SECSTR(peer->dev_addr));
                wfd_destroy_session(manager);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        wfd_session_timer(session, 1);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_invite(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_oem_invite_param_s param;
        wfd_device_s *peer = NULL;
@@ -617,8 +616,8 @@ int wfd_session_invite(wfd_session_s *session)
        int res = 0;
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -641,31 +640,31 @@ int wfd_session_invite(wfd_session_s *session)
        if (res < 0) {
                WDS_LOGE("Failed to invite with peer [" MACSECSTR "]", MAC2SECSTR(peer->dev_addr));
                wfd_destroy_session(manager);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        wfd_session_timer(session, 1);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_wps(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_device_s *peer = NULL;
        int res = 0;
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        if (session->state > SESSION_STATE_WPS) {
-               WDS_LOGE("Session already starts WPS");
+               WDS_LOGE("Session already starts WPS");//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -688,40 +687,45 @@ int wfd_session_wps(wfd_session_s *session)
        if (res < 0) {
                WDS_LOGE("Failed to start wps with peer [" MACSECSTR "]", MAC2SECSTR(peer->dev_addr));
                wfd_destroy_session(manager);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
-#if defined(TIZEN_FEATURE_ASP)
 /* In case of incomming session, when user accept connection request, this function should be called.
  * In case of outgoing session, when prov_disc response arrived, this function should be called.
  * Even though peer is GO, we can use this function, which can decide using join itself.
  */
 int wfd_session_asp_connect(wfd_session_s *session, int role)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
        wfd_oem_conn_param_s param;
        wfd_device_s *peer = NULL;
        int res = 0;
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
-       if (session->state > SESSION_STATE_GO_NEG) {
-               WDS_LOGE("Session already finished GO Negotiation");
-               __WDS_LOG_FUNC_EXIT__;
+       if (session->state >= SESSION_STATE_GO_NEG) {
+               WDS_LOGE("Session already starting GO Negotiation");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                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(&param, 0x00, sizeof(wfd_oem_conn_param_s));
@@ -739,13 +743,13 @@ int wfd_session_asp_connect(wfd_session_s *session, int role)
        if (res < 0) {
                WDS_LOGD("Failed to connect peer [" MACSECSTR "]", MAC2SECSTR(peer->dev_addr));
                wfd_destroy_session(manager);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        wfd_session_timer(session, 1);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
@@ -755,21 +759,20 @@ int wfd_session_asp_connect(wfd_session_s *session, int role)
  */
 int wfd_session_asp_persistent_connect(wfd_session_s *session, int persist_group_id)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_manager_s *manager = wfd_get_manager();
-       wfd_device_s *peer = NULL;
        wfd_oem_group_param_s param;
        int res = 0;
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        if (session->state > SESSION_STATE_GO_NEG) {
-               WDS_LOGE("Session already finished GO Negotiation");
-               __WDS_LOG_FUNC_EXIT__;
+               WDS_LOGE("Session already finished GO Negotiation");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -781,101 +784,100 @@ int wfd_session_asp_persistent_connect(wfd_session_s *session, int persist_group
 
        res = wfd_oem_create_group(manager->oem_ops, &param);
        if (res < 0) {
-               WDS_LOGD("Failed to connect peer [" MACSECSTR "]", MAC2SECSTR(peer->dev_addr));
+               WDS_LOGD("Failed to create persistent group for ASP");//LCOV_EXCL_LINE
                wfd_destroy_session(manager);
-               __WDS_LOG_FUNC_EXIT__;
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                return -1;
        }
 
        wfd_session_timer(session, 1);
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
-#endif /* TIZEN_FEATURE_ASP */
 
 wfd_device_s *wfd_session_get_peer(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_device_s *peer = NULL;
 
        if (!session) {
-               WDS_LOGE("Invalid parameter");
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
                return NULL;
        }
 
        peer = session->peer;
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return peer;
 }
 
 unsigned char *wfd_session_get_peer_addr(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_device_s *peer = NULL;
 
        if (!session || !session->peer) {
-               WDS_LOGE("Invalid parameter");
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
                return NULL;
        }
 
        peer = session->peer;
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return peer->dev_addr;
 }
 
 #if 0
 int wfd_session_get_wps_pin(wfd_session_s *session, unsigned char *pin)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_set_wps_pin(wfd_session_s *session, unsigned char *pin)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_set_freq(wfd_session_s *session, int freq)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_get_state(wfd_session_s *session)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 
 int wfd_session_set_state(wfd_session_s *session, int state)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
 
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }
 #endif
 
 int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
 {
-       __WDS_LOG_FUNC_ENTER__;
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
        wfd_session_s *session = NULL;
        int res = 0;
 
        if (!manager || !event) {
-               WDS_LOGE("Invalid parameter");
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
                return -1;
        }
 
@@ -901,7 +903,12 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                                                                MAC2SECSTR(event->dev_addr));
                                break;
                        }
-                       WDS_LOGD("=====> session already exist. (invitation session)");
+                       WDS_LOGD("=====> session already exist. (invitation session)");//LCOV_EXCL_LINE
+                       if (session->state > SESSION_STATE_WPS) {
+                               WDS_LOGE("Session already starts WPS");//LCOV_EXCL_LINE
+                               break;
+                       }
+
                        session->req_wps_mode = req_wps_mode;
                        session->wps_mode = event->wps_mode;
                } else {
@@ -920,7 +927,7 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
 
                session->state = SESSION_STATE_STARTED;
                if (session->type == SESSION_TYPE_INVITE)
-                       WDS_LOGD("Invitation session");
+                       WDS_LOGD("Invitation session");//LCOV_EXCL_LINE
                else if (WFD_DEV_ROLE_GO == manager->local->dev_role)
                        session->type = SESSION_TYPE_JOIN;
                else
@@ -932,6 +939,7 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                manager->local->wps_mode = event->wps_mode;
 
                wfd_state_set(manager, WIFI_DIRECT_STATE_CONNECTING);
+               wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_CONNECTING);
 
                if (session->type == SESSION_TYPE_INVITE) {
                        WDS_LOGD("Start WPS corresponding to OEM event [%d]", event->event_id);
@@ -973,12 +981,12 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                }
 
                if (session->state > SESSION_STATE_STARTED) {
-                       WDS_LOGE("Unexpected event. Session is already started");
+                       WDS_LOGE("Unexpected event. Session is already started");//LCOV_EXCL_LINE
                        break;
                }
 
                if (session->type == SESSION_TYPE_INVITE) {
-                       WDS_LOGE("Session type is invite, ignore provision discovery response");
+                       WDS_LOGE("Session type is invite, ignore provision discovery response");//LCOV_EXCL_LINE
                        break;
                }
 
@@ -1036,8 +1044,8 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                        session = wfd_create_session(manager, event->dev_addr,
                                        event->wps_mode, SESSION_DIRECTION_INCOMING);
                        if (!session) {
-                               WDS_LOGE("Failed to create session");
-                               __WDS_LOG_FUNC_EXIT__;
+                               WDS_LOGE("Failed to create session");//LCOV_EXCL_LINE
+                               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
                                break;
                        }
 
@@ -1045,6 +1053,7 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                        session->state = SESSION_STATE_GO_NEG;
                        wfd_session_timer(session, 1);
                        wfd_state_set(manager, WIFI_DIRECT_STATE_CONNECTING);
+                       wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_CONNECTING);
 
                        char peer_mac_address[MACSTR_LEN+1] = {0, };
                        g_snprintf(peer_mac_address, MACSTR_LEN, MACSTR, MAC2STR(event->dev_addr));
@@ -1057,6 +1066,8 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                        /* Sometimes, Provision Discovery response is not received.
                         * At this time, connection should be triggered by GO Negotiation request event */
                        if (session->direction == SESSION_DIRECTION_OUTGOING) {
+                               if (session->wps_mode == WFD_WPS_MODE_KEYPAD && session->wps_pin[0] == '\0')
+                                       break;
                                res = wfd_session_connect(session);
                        } else {
                                /* In autoconnection mode, MT should not send GO Nego Req
@@ -1103,7 +1114,6 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                }
        }
                break;
-#if defined(TIZEN_FEATURE_ASP)
        case WFD_OEM_EVENT_ASP_PROV_START:
        {
                int req_wps_mode = WFD_WPS_MODE_NONE;
@@ -1156,13 +1166,9 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                }
        }
                break;
-#endif /* TIZEN_FEATURE_ASP */
-       if (res < 0)
-               _wfd_notify_session_failed(manager, event->dev_addr);
-       break;
        default:
                break;
        }
-       __WDS_LOG_FUNC_EXIT__;
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
        return 0;
 }