wifi_display: Add a utility function to get the sub-elements as IEs
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Mon, 15 Sep 2014 05:04:29 +0000 (08:04 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 28 Sep 2014 16:22:23 +0000 (19:22 +0300)
This will be useful for DBus API to expose current WFD configuration.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
wpa_supplicant/wifi_display.c
wpa_supplicant/wifi_display.h

index b6f9236..80c4e13 100644 (file)
@@ -36,6 +36,34 @@ void wifi_display_deinit(struct wpa_global *global)
 }
 
 
+struct wpabuf * wifi_display_get_wfd_ie(struct wpa_global *global)
+{
+       struct wpabuf *ie;
+       size_t len;
+       int i;
+
+       if (global->p2p == NULL)
+               return NULL;
+
+       len = 0;
+       for (i = 0; i < MAX_WFD_SUBELEMS; i++) {
+               if (global->wfd_subelem[i])
+                       len += wpabuf_len(global->wfd_subelem[i]);
+       }
+
+       ie = wpabuf_alloc(len);
+       if (ie == NULL)
+               return NULL;
+
+       for (i = 0; i < MAX_WFD_SUBELEMS; i++) {
+               if (global->wfd_subelem[i])
+                       wpabuf_put_buf(ie, global->wfd_subelem[i]);
+       }
+
+       return ie;
+}
+
+
 static int wifi_display_update_wfd_ie(struct wpa_global *global)
 {
        struct wpabuf *ie, *buf;
index 7554817..67d8bc1 100644 (file)
@@ -13,6 +13,7 @@
 int wifi_display_init(struct wpa_global *global);
 void wifi_display_deinit(struct wpa_global *global);
 void wifi_display_enable(struct wpa_global *global, int enabled);
+struct wpabuf *wifi_display_get_wfd_ie(struct wpa_global *global);
 int wifi_display_subelem_set(struct wpa_global *global, char *cmd);
 int wifi_display_subelem_get(struct wpa_global *global, char *cmd,
                             char *buf, size_t buflen);