From 7ff89dadf9a409974dc411efdfce8106b1013e93 Mon Sep 17 00:00:00 2001 From: Milind Ramesh Murhekar Date: Thu, 29 Jun 2017 12:37:16 +0530 Subject: [PATCH] Append raw ssid to specific AP scan Decription: This patch appends the raw ssid in bytes to specific AP scan. Change-Id: I32a1bf81de5ea23f347cceae4eb1fee4669ec372 Signed-off-by: Milind Ramesh Murhekar --- src/wifi-ssid-scan.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/wifi-ssid-scan.c b/src/wifi-ssid-scan.c index 5e7fe37..620bf6d 100755 --- a/src/wifi-ssid-scan.c +++ b/src/wifi-ssid-scan.c @@ -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); -- 2.7.4