dbus: Signals for NAN USD
USD had a control interface events defined for it. Extend this by providing similar USD signals through the dbus control interface. Signed-off-by: Lo,Chin-Ran <chin-ran.lo@nxp.com>
This commit is contained in:
parent
d2408e3032
commit
dcf58aec8d
5 changed files with 416 additions and 1 deletions
|
@ -1385,6 +1385,51 @@ fi.w1.wpa_supplicant1.CreateInterface.
|
|||
<dd>Determine if the request was successful. If so fields are available in BSS.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<h3>NANDiscoveryResult ( a{sv} : args )</h3>
|
||||
<p>The DiscoveryResult event in the NAN Discovery Engine to indicate the result of an NANSubscribe.</p>
|
||||
<dl>
|
||||
<dt>a{sv} : args</dt>
|
||||
<dd>A dictionary with pairs of field names and their values. Possible dictionary keys are: "subscribe_id", "publish_id", "peer_addr", "fsd", "fsd_gas", "srv_proto_type", "ssi"</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li>
|
||||
<h3>NANReplied ( a{sv} : args )</h3>
|
||||
<p>The Replied event in the NAN Discovery Engine.</p>
|
||||
<dl>
|
||||
<dt>a{sv} : args</dt>
|
||||
<dd>A dictionary with pairs of field names and their values. Possible dictionary keys are: "publish_id", "subscribe_id", "peer_addr", "srv_proto_type", "ssi"</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li>
|
||||
<h3>NANReceive ( a{sv} : args )</h3>
|
||||
<p>The Receive event in the NAN Discovery Engine.</p>
|
||||
<dl>
|
||||
<dt>a{sv} : nanrx</dt>
|
||||
<dd>A dictionary with pairs of field names and their values. Possible dictionary keys are: "id", "peer_id", "peer_addr", "ssi"</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li>
|
||||
<h3>NANPublishTerminated ( u : publish_id, s : reason )</h3>
|
||||
<p>The PublishTerminated event in the NAN Discovery Engine.</p>
|
||||
<dl>
|
||||
<dt>u : publish_id</dt>
|
||||
<dd>The terminated publish_id</dd>
|
||||
<dt>s : reason</dt>
|
||||
<dd>The reason of termination</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li>
|
||||
<h3>NANSubscribeTerminated ( u : subscribe_id, s : reason )</h3>
|
||||
<p>The SubscribeTerminated event in the NAN Discovery Engine.</p>
|
||||
<dl>
|
||||
<dt>u : subscribe_id</dt>
|
||||
<dd>The terminated subscribe_id</dd>
|
||||
<dt>s : reason</dt>
|
||||
<dd>The reason of termination</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
|
|
@ -4384,6 +4384,40 @@ static const struct wpa_dbus_signal_desc wpas_dbus_interface_signals[] = {
|
|||
}
|
||||
},
|
||||
#endif /* CONFIG_HS20 */
|
||||
#ifdef CONFIG_NAN_USD
|
||||
{ "NANDiscoveryResult", WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
{
|
||||
{ "args", "a{sv}", ARG_OUT },
|
||||
END_ARGS
|
||||
}
|
||||
},
|
||||
{ "NANReplied", WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
{
|
||||
{ "args", "a{sv}", ARG_OUT },
|
||||
END_ARGS
|
||||
}
|
||||
},
|
||||
{ "NANReceive", WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
{
|
||||
{ "args", "a{sv}", ARG_OUT },
|
||||
END_ARGS
|
||||
}
|
||||
},
|
||||
{ "NANPublishTerminated", WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
{
|
||||
{ "publish_id", "u", ARG_OUT },
|
||||
{ "reason", "s", ARG_OUT },
|
||||
END_ARGS
|
||||
}
|
||||
},
|
||||
{ "NANSubscribeTerminated", WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
{
|
||||
{ "subscribe_id", "u", ARG_OUT },
|
||||
{ "reason", "s", ARG_OUT },
|
||||
END_ARGS
|
||||
}
|
||||
},
|
||||
#endif /* CONFIG_NAN_USD */
|
||||
{ NULL, NULL, { END_ARGS } }
|
||||
};
|
||||
|
||||
|
@ -5253,3 +5287,259 @@ void wpas_dbus_signal_hs20_t_c_acceptance(struct wpa_supplicant *wpa_s,
|
|||
dbus_message_unref(msg);
|
||||
}
|
||||
#endif /* CONFIG_HS20 */
|
||||
|
||||
|
||||
#ifdef CONFIG_NAN_USD
|
||||
|
||||
/**
|
||||
* wpas_dbus_signal_nan_discovery_result - Send NANDiscoveryResult signal
|
||||
* @wpa_s: %wpa_supplicant network interface data
|
||||
* @srv_proto_type: Service Protocol Type
|
||||
* @subscribe_id: Subscribe ID of the session
|
||||
* @peer_publish_id: Publish ID of the sender
|
||||
* @peer_addr: MAC address of the peer device
|
||||
* @ssi: Service specific information payload
|
||||
* @ssi_len: Length of the SSI field
|
||||
*
|
||||
* This is used to indicate the NAN DE DiscoveryResult event.
|
||||
*/
|
||||
void wpas_dbus_signal_nan_discovery_result(struct wpa_supplicant *wpa_s,
|
||||
enum nan_service_protocol_type
|
||||
srv_proto_type,
|
||||
int subscribe_id,
|
||||
int peer_publish_id,
|
||||
const u8 *peer_addr,
|
||||
bool fsd, bool fsd_gas,
|
||||
const u8 *ssi, size_t ssi_len)
|
||||
{
|
||||
struct wpas_dbus_priv *iface;
|
||||
DBusMessage *msg;
|
||||
DBusMessageIter iter, dict_iter;
|
||||
char addr_str[20];
|
||||
|
||||
iface = wpa_s->global->dbus;
|
||||
/* Do nothing if the interface is not turned on */
|
||||
if (!iface || !wpa_s->dbus_new_path)
|
||||
return;
|
||||
msg = dbus_message_new_signal(wpa_s->dbus_new_path,
|
||||
WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
"NANDiscoveryResult");
|
||||
if (!msg)
|
||||
return;
|
||||
|
||||
snprintf(addr_str, sizeof(addr_str), MACSTR, MAC2STR(peer_addr));
|
||||
|
||||
dbus_message_iter_init_append(msg, &iter);
|
||||
|
||||
if (!wpa_dbus_dict_open_write(&iter, &dict_iter) ||
|
||||
!wpa_dbus_dict_append_uint32(&dict_iter, "subscribe_id",
|
||||
subscribe_id) ||
|
||||
!wpa_dbus_dict_append_uint32(&dict_iter, "publish_id",
|
||||
peer_publish_id) ||
|
||||
!wpa_dbus_dict_append_string(&dict_iter, "peer_addr", addr_str) ||
|
||||
!wpa_dbus_dict_append_bool(&dict_iter, "fsd", fsd) ||
|
||||
!wpa_dbus_dict_append_bool(&dict_iter, "fsd_gas", fsd_gas) ||
|
||||
!wpa_dbus_dict_append_uint32(&dict_iter, "srv_proto_type",
|
||||
srv_proto_type) ||
|
||||
(ssi &&
|
||||
!wpa_dbus_dict_append_byte_array(&dict_iter,
|
||||
"ssi",
|
||||
(const char *) ssi,
|
||||
ssi_len)) ||
|
||||
!wpa_dbus_dict_close_write(&iter, &dict_iter))
|
||||
wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
|
||||
else
|
||||
dbus_connection_send(iface->con, msg, NULL);
|
||||
dbus_message_unref(msg);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpas_dbus_signal_nan_replied - Send NANReplied signal
|
||||
* @wpa_s: %wpa_supplicant network interface data
|
||||
* @srv_proto_type: Service Protocol Type
|
||||
* @publish_id: Publish id of the session
|
||||
* @peer_subscribe_id: Subscribe id of the sender
|
||||
* @peer_addr: MAC address of the peer device
|
||||
* @ssi: Service specific information payload
|
||||
* @ssi_len: Length of the SSI field
|
||||
*
|
||||
* This is used to indicate the NAN DE Replied event.
|
||||
*/
|
||||
void wpas_dbus_signal_nan_replied(struct wpa_supplicant *wpa_s,
|
||||
enum nan_service_protocol_type srv_proto_type,
|
||||
int publish_id,
|
||||
int peer_subscribe_id,
|
||||
const u8 *peer_addr,
|
||||
const u8 *ssi, size_t ssi_len)
|
||||
{
|
||||
struct wpas_dbus_priv *iface;
|
||||
DBusMessage *msg;
|
||||
DBusMessageIter iter, dict_iter;
|
||||
char addr_str[20];
|
||||
|
||||
iface = wpa_s->global->dbus;
|
||||
/* Do nothing if the interface is not turned on */
|
||||
if (!iface || !wpa_s->dbus_new_path)
|
||||
return;
|
||||
|
||||
msg = dbus_message_new_signal(wpa_s->dbus_new_path,
|
||||
WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
"NANReplied");
|
||||
if (!msg)
|
||||
return;
|
||||
|
||||
snprintf(addr_str, sizeof(addr_str), MACSTR, MAC2STR(peer_addr));
|
||||
|
||||
dbus_message_iter_init_append(msg, &iter);
|
||||
|
||||
if (!wpa_dbus_dict_open_write(&iter, &dict_iter) ||
|
||||
!wpa_dbus_dict_append_uint32(&dict_iter, "publish_id",
|
||||
publish_id) ||
|
||||
!wpa_dbus_dict_append_uint32(&dict_iter, "subscribe_id",
|
||||
peer_subscribe_id) ||
|
||||
!wpa_dbus_dict_append_string(&dict_iter, "peer_addr", addr_str) ||
|
||||
!wpa_dbus_dict_append_uint32(&dict_iter, "srv_proto_type",
|
||||
srv_proto_type) ||
|
||||
(ssi &&
|
||||
!wpa_dbus_dict_append_byte_array(&dict_iter, "ssi",
|
||||
(const char *) ssi,
|
||||
ssi_len)) ||
|
||||
!wpa_dbus_dict_close_write(&iter, &dict_iter))
|
||||
wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
|
||||
else
|
||||
dbus_connection_send(iface->con, msg, NULL);
|
||||
dbus_message_unref(msg);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpas_dbus_signal_nan_receive - Send NANReceive signal
|
||||
* @wpa_s: %wpa_supplicant network interface data
|
||||
* @id: The original publish_id or subscribe_id
|
||||
* @peer_id: Peer instance identifier
|
||||
* @peer_addr: Address of the sender
|
||||
* @ssi: Service specific information payload
|
||||
* @ssi_len: Length of the SSI
|
||||
*
|
||||
* This is used to indicate the NAN DE Receive event to notify reception of a
|
||||
* follow-up frame.
|
||||
*/
|
||||
void wpas_dbus_signal_nan_receive(struct wpa_supplicant *wpa_s,
|
||||
int id, int peer_id, const u8 *peer_addr,
|
||||
const u8 *ssi, size_t ssi_len)
|
||||
{
|
||||
struct wpas_dbus_priv *iface;
|
||||
DBusMessage *msg;
|
||||
DBusMessageIter iter, dict_iter;
|
||||
char addr_str[20];
|
||||
|
||||
iface = wpa_s->global->dbus;
|
||||
/* Do nothing if the interface is not turned on */
|
||||
if (!iface || !wpa_s->dbus_new_path)
|
||||
return;
|
||||
|
||||
msg = dbus_message_new_signal(wpa_s->dbus_new_path,
|
||||
WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
"NANReceive");
|
||||
if (!msg)
|
||||
return;
|
||||
|
||||
snprintf(addr_str, sizeof(addr_str), MACSTR, MAC2STR(peer_addr));
|
||||
|
||||
dbus_message_iter_init_append(msg, &iter);
|
||||
|
||||
if (!wpa_dbus_dict_open_write(&iter, &dict_iter) ||
|
||||
!wpa_dbus_dict_append_uint32(&dict_iter, "id", id) ||
|
||||
!wpa_dbus_dict_append_uint32(&dict_iter, "peer_id", peer_id) ||
|
||||
!wpa_dbus_dict_append_string(&dict_iter, "peer_addr", addr_str) ||
|
||||
(ssi &&
|
||||
!wpa_dbus_dict_append_byte_array(&dict_iter, "ssi",
|
||||
(const char *) ssi,
|
||||
ssi_len)) ||
|
||||
!wpa_dbus_dict_close_write(&iter, &dict_iter))
|
||||
wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
|
||||
else
|
||||
dbus_connection_send(iface->con, msg, NULL);
|
||||
dbus_message_unref(msg);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpas_dbus_signal_nan_publish_terminated - Send NANPublishTerminated signal
|
||||
* @wpa_s: %wpa_supplicant network interface data
|
||||
* @publish_id: The publish_id of the session
|
||||
* @reason: The reason of the termination
|
||||
*
|
||||
* This is used to indicate the NAN DE PublishTerminated event to notify when
|
||||
* the session has expired.
|
||||
*/
|
||||
void wpas_dbus_signal_nan_publish_terminated(struct wpa_supplicant *wpa_s,
|
||||
int publish_id,
|
||||
const char *reason)
|
||||
{
|
||||
struct wpas_dbus_priv *iface;
|
||||
DBusMessage *msg;
|
||||
dbus_uint32_t pub_id = publish_id;
|
||||
|
||||
iface = wpa_s->global->dbus;
|
||||
/* Do nothing if the interface is not turned on */
|
||||
if (!iface || !wpa_s->dbus_new_path)
|
||||
return;
|
||||
|
||||
msg = dbus_message_new_signal(wpa_s->dbus_new_path,
|
||||
WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
"NANPublishTerminated");
|
||||
if (!msg)
|
||||
return;
|
||||
|
||||
if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &pub_id,
|
||||
DBUS_TYPE_INVALID) ||
|
||||
!dbus_message_append_args(msg, DBUS_TYPE_STRING, &reason,
|
||||
DBUS_TYPE_INVALID))
|
||||
wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
|
||||
else
|
||||
dbus_connection_send(iface->con, msg, NULL);
|
||||
dbus_message_unref(msg);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpas_dbus_signal_nan_subscribe_terminated - Send NANSubscribeTerminated signal
|
||||
* @wpa_s: %wpa_supplicant network interface data
|
||||
* @subscribe_id: The subscribe_id of the session
|
||||
* @reason: The reason of the termination
|
||||
*
|
||||
* This is used to indicate the NAN DE SubscribeTerminated event to notify when
|
||||
* the session has expired.
|
||||
*/
|
||||
void wpas_dbus_signal_nan_subscribe_terminated(struct wpa_supplicant *wpa_s,
|
||||
int subscribe_id,
|
||||
const char *reason)
|
||||
{
|
||||
struct wpas_dbus_priv *iface;
|
||||
DBusMessage *msg;
|
||||
dbus_uint32_t sub_id = subscribe_id;
|
||||
|
||||
iface = wpa_s->global->dbus;
|
||||
/* Do nothing if the interface is not turned on */
|
||||
if (!iface || !wpa_s->dbus_new_path)
|
||||
return;
|
||||
|
||||
msg = dbus_message_new_signal(wpa_s->dbus_new_path,
|
||||
WPAS_DBUS_NEW_IFACE_INTERFACE,
|
||||
"NANSubscribeTerminated");
|
||||
if (!msg)
|
||||
return;
|
||||
|
||||
if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &sub_id,
|
||||
DBUS_TYPE_INVALID) ||
|
||||
!dbus_message_append_args(msg, DBUS_TYPE_STRING, &reason,
|
||||
DBUS_TYPE_INVALID))
|
||||
wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
|
||||
else
|
||||
dbus_connection_send(iface->con, msg, NULL);
|
||||
dbus_message_unref(msg);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_NAN_USD */
|
||||
|
|
|
@ -21,6 +21,7 @@ struct wpa_bss;
|
|||
struct wps_event_m2d;
|
||||
struct wps_event_fail;
|
||||
struct wps_credential;
|
||||
enum nan_service_protocol_type;
|
||||
|
||||
enum wpas_dbus_prop {
|
||||
WPAS_DBUS_PROP_AP_SCAN,
|
||||
|
@ -285,6 +286,28 @@ void wpas_dbus_signal_anqp_query_done(struct wpa_supplicant *wpa_s,
|
|||
const u8 *dst, const char *result);
|
||||
void wpas_dbus_signal_hs20_t_c_acceptance(struct wpa_supplicant *wpa_s,
|
||||
const char *url);
|
||||
void wpas_dbus_signal_nan_discovery_result(struct wpa_supplicant *wpa_s,
|
||||
enum nan_service_protocol_type
|
||||
srv_proto_type,
|
||||
int subscribe_id,
|
||||
int peer_publish_id,
|
||||
const u8 *peer_addr,
|
||||
bool fsd, bool fsd_gas,
|
||||
const u8 *ssi, size_t ssi_len);
|
||||
void wpas_dbus_signal_nan_replied(struct wpa_supplicant *wpa_s,
|
||||
enum nan_service_protocol_type srv_proto_type,
|
||||
int publish_id, int peer_subscribe_id,
|
||||
const u8 *peer_addr,
|
||||
const u8 *ssi, size_t ssi_len);
|
||||
void wpas_dbus_signal_nan_receive(struct wpa_supplicant *wpa_s, int id,
|
||||
int peer_id, const u8 *peer_addr,
|
||||
const u8 *ssi, size_t ssi_len);
|
||||
void wpas_dbus_signal_nan_publish_terminated(struct wpa_supplicant *wpa_s,
|
||||
int publish_id,
|
||||
const char *reason);
|
||||
void wpas_dbus_signal_nan_subscribe_terminated(struct wpa_supplicant *wpa_s,
|
||||
int subscribe_id,
|
||||
const char *reason);
|
||||
|
||||
#else /* CONFIG_CTRL_IFACE_DBUS_NEW */
|
||||
|
||||
|
@ -668,6 +691,45 @@ void wpas_dbus_signal_hs20_t_c_acceptance(struct wpa_supplicant *wpa_s,
|
|||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
wpas_dbus_signal_nan_discovery_result(struct wpa_supplicant *wpa_s,
|
||||
enum nan_service_protocol_type
|
||||
srv_proto_type,
|
||||
int subscribe_id,
|
||||
int peer_publish_id, const u8 *peer_addr,
|
||||
bool fsd, bool fsd_gas,
|
||||
const u8 *ssi, size_t ssi_len)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
wpas_dbus_signal_nan_replied(struct wpa_supplicant *wpa_s,
|
||||
enum nan_service_protocol_type srv_proto_type,
|
||||
int publish_id, int peer_subscribe_id,
|
||||
const u8 *peer_addr, const u8 *ssi, size_t ssi_len)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static inline void
|
||||
wpas_dbus_signal_nan_receive(struct wpa_supplicant *wpa_s,
|
||||
int id, int peer_id, const u8 *peer_addr,
|
||||
const u8 *ssi, size_t ssi_len)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
wpas_dbus_signal_nan_publish_terminated(struct wpa_supplicant *wpa_s,
|
||||
int publish_id, const char *reason)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
wpas_dbus_signal_nan_subscribe_terminated(struct wpa_supplicant *wpa_s,
|
||||
int subscribe_id, const char *reason)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
|
||||
|
||||
#endif /* CTRL_IFACE_DBUS_H_NEW */
|
||||
|
|
|
@ -38,7 +38,7 @@ static struct interfaces * add_interface(struct dl_list *list,
|
|||
if (!iface)
|
||||
return NULL;
|
||||
iface->dbus_interface = os_strdup(dbus_interface);
|
||||
iface->xml = wpabuf_alloc(16000);
|
||||
iface->xml = wpabuf_alloc(17000);
|
||||
if (iface->dbus_interface == NULL || iface->xml == NULL) {
|
||||
os_free(iface->dbus_interface);
|
||||
wpabuf_free(iface->xml);
|
||||
|
|
|
@ -1094,6 +1094,11 @@ void wpas_notify_nan_discovery_result(struct wpa_supplicant *wpa_s,
|
|||
subscribe_id, peer_publish_id, MAC2STR(peer_addr),
|
||||
fsd, fsd_gas, srv_proto_type, ssi_hex);
|
||||
os_free(ssi_hex);
|
||||
|
||||
wpas_dbus_signal_nan_discovery_result(wpa_s, srv_proto_type,
|
||||
subscribe_id, peer_publish_id,
|
||||
peer_addr, fsd, fsd_gas,
|
||||
ssi, ssi_len);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1116,6 +1121,10 @@ void wpas_notify_nan_replied(struct wpa_supplicant *wpa_s,
|
|||
publish_id, MAC2STR(peer_addr), peer_subscribe_id,
|
||||
srv_proto_type, ssi_hex);
|
||||
os_free(ssi_hex);
|
||||
|
||||
wpas_dbus_signal_nan_replied(wpa_s, srv_proto_type, publish_id,
|
||||
peer_subscribe_id, peer_addr,
|
||||
ssi, ssi_len);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1134,6 +1143,9 @@ void wpas_notify_nan_receive(struct wpa_supplicant *wpa_s, int id,
|
|||
"id=%d peer_instance_id=%d address=" MACSTR " ssi=%s",
|
||||
id, peer_instance_id, MAC2STR(peer_addr), ssi_hex);
|
||||
os_free(ssi_hex);
|
||||
|
||||
wpas_dbus_signal_nan_receive(wpa_s, id, peer_instance_id, peer_addr,
|
||||
ssi, ssi_len);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1159,6 +1171,9 @@ void wpas_notify_nan_publish_terminated(struct wpa_supplicant *wpa_s,
|
|||
wpa_msg(wpa_s, MSG_INFO, NAN_PUBLISH_TERMINATED
|
||||
"publish_id=%d reason=%s",
|
||||
publish_id, nan_reason_txt(reason));
|
||||
|
||||
wpas_dbus_signal_nan_publish_terminated(wpa_s, publish_id,
|
||||
nan_reason_txt(reason));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1169,6 +1184,9 @@ void wpas_notify_nan_subscribe_terminated(struct wpa_supplicant *wpa_s,
|
|||
wpa_msg(wpa_s, MSG_INFO, NAN_SUBSCRIBE_TERMINATED
|
||||
"subscribe_id=%d reason=%s",
|
||||
subscribe_id, nan_reason_txt(reason));
|
||||
|
||||
wpas_dbus_signal_nan_subscribe_terminated(wpa_s, subscribe_id,
|
||||
nan_reason_txt(reason));
|
||||
}
|
||||
|
||||
#endif /* CONFIG_NAN_USD */
|
||||
|
|
Loading…
Add table
Reference in a new issue