Append raw ssid to specific AP scan 41/136341/1 accepted/tizen/unified/20170707.154555 submit/tizen/20170706.230808
authorMilind Ramesh Murhekar <m.murhekar@samsung.com>
Thu, 29 Jun 2017 07:07:16 +0000 (12:37 +0530)
committerMilind Ramesh Murhekar <m.murhekar@samsung.com>
Thu, 29 Jun 2017 07:07:16 +0000 (12:37 +0530)
Decription: This patch appends the raw ssid
in bytes to specific AP scan.

Change-Id: I32a1bf81de5ea23f347cceae4eb1fee4669ec372
Signed-off-by: Milind Ramesh Murhekar <m.murhekar@samsung.com>
src/wifi-ssid-scan.c

index 5e7fe37..620bf6d 100755 (executable)
@@ -91,6 +91,7 @@ typedef struct {
        gboolean rsn_selected;
        gboolean privacy;
        gboolean wps;
+       int ssid_len;
 } bss_info_t;
 
 static gboolean g_ssid_scan_state = FALSE;
@@ -314,13 +315,18 @@ static void _emit_ssid_scan_completed(void)
        char *bssid_str = bssid_buf;
        const char *prop_security = "security";
        const char *prop_wps = "wps";
+       GVariantBuilder *rawssid_builder = NULL;
+       const char *prop_raw_ssid = "raw_ssid";
 
        builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
        for (list = bss_info_list; list != NULL; list = list->next) {
                bss_info_t *bss_info = (bss_info_t *)list->data;
                if (bss_info && g_strcmp0((char *)bss_info->ssid, g_ssid) == 0) {
                        const gchar *ssid = (char *)bss_info->ssid;
+                       int ssid_len = bss_info->ssid_len;
                        const gchar *bssid = (gchar *)&bss_info->bssid[0];
+                       int i = 0;
+
                        wifi_security_e security = __check_security(bss_info);
                        gboolean wps = bss_info->wps;
                        DBG("BSS found; SSID:%s security:%d WPS:%d", ssid, security, wps);
@@ -329,7 +335,17 @@ static void _emit_ssid_scan_completed(void)
                                snprintf(bssid_str, sizeof(bssid_buf), MACSTR, MAC2STR(bssid));
                                DBG("BSSID: %s", bssid_str);
                        }
+
                        g_variant_builder_add(builder, "{sv}", prop_ssid, g_variant_new_string(ssid));
+
+                       /* append raw SSID in bytes to the specific
+                          scan completed signal here */
+                       rawssid_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
+                       for (i = 0; i < ssid_len; i++)
+                               g_variant_builder_add(rawssid_builder, "y", ssid[i]);
+                       g_variant_builder_add(builder, "{sv}", prop_raw_ssid, g_variant_new("ay", rawssid_builder));
+                       g_variant_builder_unref(rawssid_builder);
+
                        g_variant_builder_add(builder, "{sv}", prop_bssid,
                                                g_variant_new_string(bssid));
                        g_variant_builder_add(builder, "{sv}", prop_security, g_variant_new_int32(security));
@@ -455,10 +471,13 @@ void wifi_ssid_scan_add_bss(GVariant *message)
                        const guchar *ssid;
                        gsize ssid_len;
                        ssid = g_variant_get_fixed_array(value, &ssid_len, sizeof(guchar));
-                       if (ssid != NULL && ssid_len > 0 && ssid_len < 33)
+                       if (ssid != NULL && ssid_len > 0 && ssid_len < 33) {
                                memcpy(bss_info->ssid, ssid, ssid_len);
-                       else
+                               bss_info->ssid_len = ssid_len;
+                       } else {
                                memset(bss_info->ssid, 0, sizeof(bss_info->ssid));
+                               bss_info->ssid_len = 0;
+                       }
                } else if (g_strcmp0(key, "Privacy") == 0) {
                        gboolean privacy = FALSE;
                        privacy = g_variant_get_boolean(value);