Accept incoming negotiation request when autoconnection is ON. 10/192810/4
authorNishant Chaprana <n.chaprana@samsung.com>
Fri, 9 Nov 2018 11:51:12 +0000 (17:21 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Fri, 30 Nov 2018 09:22:03 +0000 (14:52 +0530)
Change-Id: Icf0dda99a9584622b6cc955174be134671af0319
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
src/wifi-direct-manager.c
src/wifi-direct-session.c

index 40b30b1..745242d 100644 (file)
@@ -965,6 +965,9 @@ int wfd_manager_accept_connection(wfd_manager_s *manager, unsigned char *peer_ad
                                res = wfd_session_join(session);
                        }
                } else {
+                       /**
+                        * TODO: Add autoconnection peer matching logic.
+                        */
                        if (manager->autoconnection && (manager->auto_pin[0] != 0))
                                g_strlcpy(session->wps_pin, manager->auto_pin, PINSTR_LEN + 1);
 
@@ -972,6 +975,9 @@ int wfd_manager_accept_connection(wfd_manager_s *manager, unsigned char *peer_ad
                        res = wfd_session_connect(session);
                }
        } else {
+               /**
+                * TODO: Add autoconnection peer matching logic.
+                */
                /* We should wait GO_NEGO_REQ from peer(MO) in autoconnection mode. */
                /* Otherwise, GO Nego is sometimes failed. */
                if (manager->autoconnection == FALSE) {
index 333e5b9..f5211f7 100644 (file)
@@ -1057,13 +1057,24 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                        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));
-                       wfd_manager_dbus_emit_signal(WFD_MANAGER_MANAGE_INTERFACE,
-                                       "Connection",
-                                       g_variant_new("(iis)", WIFI_DIRECT_ERROR_NONE,
-                                               WFD_EVENT_CONNECTION_REQ,
-                                               peer_mac_address));
+                       if (manager->autoconnection == TRUE) {
+                               /**
+                                * TODO: Add autoconnection peer matching logic.
+                                */
+                               /**
+                                * In autoconnection mode, connection request notification
+                                * should not be sent to library.
+                                */
+                               res  = wfd_session_connect(session);
+                       } else {
+                               char peer_mac_address[MACSTR_LEN+1] = {0, };
+                               g_snprintf(peer_mac_address, MACSTR_LEN, MACSTR, MAC2STR(event->dev_addr));
+                               wfd_manager_dbus_emit_signal(WFD_MANAGER_MANAGE_INTERFACE,
+                                                            "Connection",
+                                                            g_variant_new("(iis)", WIFI_DIRECT_ERROR_NONE,
+                                                                          WFD_EVENT_CONNECTION_REQ,
+                                                                          peer_mac_address));
+                       }
                } else {
                        /* Sometimes, Provision Discovery response is not received.
                         * At this time, connection should be triggered by GO Negotiation request event */
@@ -1072,8 +1083,13 @@ int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event)
                                        break;
                                res = wfd_session_connect(session);
                        } else {
-                               /* In autoconnection mode, MT should not send GO Nego Req
-                                  before receiving the GO Nego Req from peer (MO). */
+                               /**
+                                * TODO: Add autoconnection peer matching logic.
+                                */
+                               /**
+                                * In autoconnection mode, MT should not send GO Nego Req
+                                * before receiving the GO Nego Req from peer (MO).
+                                */
                                if (manager->autoconnection == TRUE)
                                        res  = wfd_session_connect(session);
                        }