WFD: Allow WFD_SUBELEM_SET/GET all to be used with full IE buffer
This extends the previously used WFD_SUBELEM_SET/GET <subelem id> design to allow special "all" value to be used as an id to indicate that all WFD subelements are to be set/get. This uses similar interface as was previously added over D-Bus. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
ceb767d501
commit
bc0ba01d70
1 changed files with 32 additions and 3 deletions
|
@ -233,15 +233,31 @@ int wifi_display_subelem_set(struct wpa_global *global, char *cmd)
|
|||
if (pos == NULL)
|
||||
return -1;
|
||||
*pos++ = '\0';
|
||||
subelem = atoi(cmd);
|
||||
if (subelem < 0 || subelem >= MAX_WFD_SUBELEMS)
|
||||
return -1;
|
||||
|
||||
len = os_strlen(pos);
|
||||
if (len & 1)
|
||||
return -1;
|
||||
len /= 2;
|
||||
|
||||
if (os_strcmp(cmd, "all") == 0) {
|
||||
int res;
|
||||
|
||||
e = wpabuf_alloc(len);
|
||||
if (e == NULL)
|
||||
return -1;
|
||||
if (hexstr2bin(pos, wpabuf_put(e, len), len) < 0) {
|
||||
wpabuf_free(e);
|
||||
return -1;
|
||||
}
|
||||
res = wifi_display_subelem_set_from_ies(global, e);
|
||||
wpabuf_free(e);
|
||||
return res;
|
||||
}
|
||||
|
||||
subelem = atoi(cmd);
|
||||
if (subelem < 0 || subelem >= MAX_WFD_SUBELEMS)
|
||||
return -1;
|
||||
|
||||
if (len == 0) {
|
||||
/* Clear subelement */
|
||||
e = NULL;
|
||||
|
@ -325,6 +341,19 @@ int wifi_display_subelem_get(struct wpa_global *global, char *cmd,
|
|||
{
|
||||
int subelem;
|
||||
|
||||
if (os_strcmp(cmd, "all") == 0) {
|
||||
struct wpabuf *ie;
|
||||
int res;
|
||||
|
||||
ie = wifi_display_get_wfd_ie(global);
|
||||
if (ie == NULL)
|
||||
return 0;
|
||||
res = wpa_snprintf_hex(buf, buflen, wpabuf_head(ie),
|
||||
wpabuf_len(ie));
|
||||
wpabuf_free(ie);
|
||||
return res;
|
||||
}
|
||||
|
||||
subelem = atoi(cmd);
|
||||
if (subelem < 0 || subelem >= MAX_WFD_SUBELEMS)
|
||||
return -1;
|
||||
|
|
Loading…
Reference in a new issue