Add support for pending scan and error handling to BSSID scan 63/167463/1 accepted/tizen/4.0/unified/20180131.050323 submit/tizen_4.0/20180119.040625 submit/tizen_4.0/20180124.230507
authorJaehyun Kim <jeik01.kim@samsung.com>
Wed, 17 Jan 2018 11:52:01 +0000 (20:52 +0900)
committertaesub kim <taesub.kim@samsung.com>
Thu, 18 Jan 2018 01:04:05 +0000 (10:04 +0900)
Change-Id: Ia1c4c473a4736ddb38b3ed1fbe03666e80136b89
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
include/network_internal.h
packaging/capi-network-wifi-manager.spec
src/network_dbus.c
src/network_signal.c

index 43a607ae99742569404c50b79ff944ac223d1fe3..2ca2afc8fd1f6a1c6acc4d0fc7c6e8527348d5e0 100755 (executable)
@@ -133,6 +133,7 @@ typedef enum {
        NETWORK_SCAN_TYPE_FULL_CHANNEL = 0x00,
        NETWORK_SCAN_TYPE_SPECIFIC_SCAN,
        NETWORK_SCAN_TYPE_MULTI_SCAN,
+       NETWORK_SCAN_TYPE_BSSID_SCAN,
 } network_scan_type_e;
 
 typedef struct {
index 6d111aca807332dd23e94dafb9bd5df44f861067..6398889110a2b295a8e4ebb516fc88b06d9c9d29 100755 (executable)
@@ -1,6 +1,6 @@
 Name:          capi-network-wifi-manager
 Summary:       Network Wi-Fi library in TIZEN C API
-Version:       1.0.27
+Version:       1.0.28
 Release:       1
 Group:         System/Network
 License:       Apache-2.0
index 33ed4b06cbc6893026b98babdf4f64fe8e099c15..c281c0a36fb9ae31d0552615c948d86ffe77c7cc 100755 (executable)
@@ -386,6 +386,9 @@ static void __net_scan_reply(GObject *source_object, GAsyncResult *res, gpointer
                if (request_table[NETWORK_REQUEST_TYPE_SCAN].flag == TRUE) {
                        WIFI_LOG(WIFI_INFO, "Full channel Scan pending\n");
                        scan_pending = TRUE;
+               } else if (bssid_scan_info->flag == TRUE) {
+                       WIFI_LOG(WIFI_INFO, "BSSID Scan pending\n");
+                       scan_pending = TRUE;
                }
        } else if (Error != NET_ERR_NONE) {
                WIFI_LOG(WIFI_ERROR, "Scan failed. Error [%d]\n", Error);
@@ -395,7 +398,14 @@ static void __net_scan_reply(GObject *source_object, GAsyncResult *res, gpointer
                                        0, sizeof(network_request_table_s));
 
                        event_data.Event = NET_EVENT_WIFI_SCAN_RSP;
+               } else if (bssid_scan_info->flag == TRUE) {
+                       memset(&request_table[NETWORK_REQUEST_TYPE_BSSID_SCAN],
+                                       0, sizeof(network_request_table_s));
+
+                       event_data.Event = NET_EVENT_WIFI_BSSID_SCAN_IND;
+               }
 
+               if (event_data.Event) {
                        event_data.Datalength = 0;
                        event_data.Data = NULL;
                        event_data.Error = Error;
@@ -406,8 +416,6 @@ static void __net_scan_reply(GObject *source_object, GAsyncResult *res, gpointer
                        __NETWORK_FUNC_EXIT__;
                        return;
                }
-
-
        } else
                WIFI_LOG(WIFI_INFO, "Scan Request success\n");
 
index 5496f2fed5a068acd39315c2458e5c33edb6e4e6..375fc0ff962f006f5a995db8de91355e5fb75b28 100755 (executable)
@@ -855,6 +855,8 @@ static int __net_handle_scan_done(GVariant *param)
                int current_scan_type = -1;
                if (request_table[NETWORK_REQUEST_TYPE_SCAN].flag == TRUE)
                        current_scan_type = NETWORK_SCAN_TYPE_FULL_CHANNEL;
+               else if (request_table[NETWORK_REQUEST_TYPE_BSSID_SCAN].flag == TRUE)
+                       current_scan_type = NETWORK_SCAN_TYPE_BSSID_SCAN;
                else if (request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN].flag == TRUE)
                        current_scan_type = NETWORK_SCAN_TYPE_SPECIFIC_SCAN;
                else if (request_table[NETWORK_REQUEST_TYPE_MULTI_SCAN].flag == TRUE)
@@ -867,6 +869,10 @@ static int __net_handle_scan_done(GVariant *param)
                } else if (current_scan_type == NETWORK_SCAN_TYPE_FULL_CHANNEL) {
                        Error = _net_dbus_scan_request();
                        return Error;
+               } else if (current_scan_type == NETWORK_SCAN_TYPE_BSSID_SCAN &&
+                               last_scan_type != NETWORK_SCAN_TYPE_FULL_CHANNEL) {
+                       Error = _net_dbus_scan_request();
+                       return Error;
                } else if (current_scan_type == NETWORK_SCAN_TYPE_SPECIFIC_SCAN) {
                        Error = _net_dbus_specific_scan_request(request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN].ssid);
                        return Error;