1 /*
2  * NAN unsynchronized service discovery (USD)
3  * Copyright (c) 2024, Qualcomm Innovation Center, Inc.
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8 
9 #ifndef NAN_USD_H
10 #define NAN_USD_H
11 
12 struct nan_subscribe_params;
13 struct nan_publish_params;
14 enum nan_service_protocol_type;
15 
16 int wpas_nan_usd_init(struct wpa_supplicant *wpa_s);
17 void wpas_nan_usd_deinit(struct wpa_supplicant *wpa_s);
18 void wpas_nan_usd_rx_sdf(struct wpa_supplicant *wpa_s, const u8 *src,
19 			 const u8 *a3,
20 			 unsigned int freq, const u8 *buf, size_t len);
21 void wpas_nan_usd_flush(struct wpa_supplicant *wpa_s);
22 int wpas_nan_usd_publish(struct wpa_supplicant *wpa_s, const char *service_name,
23 			 enum nan_service_protocol_type srv_proto_type,
24 			 const struct wpabuf *ssi,
25 			 struct nan_publish_params *params, bool p2p);
26 void wpas_nan_usd_cancel_publish(struct wpa_supplicant *wpa_s, int publish_id);
27 int wpas_nan_usd_update_publish(struct wpa_supplicant *wpa_s, int publish_id,
28 				const struct wpabuf *ssi);
29 int wpas_nan_usd_unpause_publish(struct wpa_supplicant *wpa_s, int publish_id,
30 				 u8 peer_instance_id, const u8 *peer_addr);
31 int wpas_nan_usd_subscribe(struct wpa_supplicant *wpa_s,
32 			   const char *service_name,
33 			   enum nan_service_protocol_type srv_proto_type,
34 			   const struct wpabuf *ssi,
35 			   struct nan_subscribe_params *params, bool p2p);
36 void wpas_nan_usd_cancel_subscribe(struct wpa_supplicant *wpa_s,
37 				   int subscribe_id);
38 int wpas_nan_usd_transmit(struct wpa_supplicant *wpa_s, int handle,
39 			  const struct wpabuf *ssi, const struct wpabuf *elems,
40 			  const u8 *peer_addr, u8 req_instance_id);
41 void wpas_nan_usd_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
42 				       unsigned int freq,
43 				       unsigned int duration);
44 void wpas_nan_usd_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
45 					      unsigned int freq);
46 void wpas_nan_usd_tx_wait_expire(struct wpa_supplicant *wpa_s);
47 int * wpas_nan_usd_all_freqs(struct wpa_supplicant *wpa_s);
48 
49 #endif /* NAN_USD_H */
50