1*a1157835SDaniel Fojt /*
2*a1157835SDaniel Fojt  * Generic advertisement service (GAS) server
3*a1157835SDaniel Fojt  * Copyright (c) 2017, Qualcomm Atheros, Inc.
4*a1157835SDaniel Fojt  *
5*a1157835SDaniel Fojt  * This software may be distributed under the terms of the BSD license.
6*a1157835SDaniel Fojt  * See README for more details.
7*a1157835SDaniel Fojt  */
8*a1157835SDaniel Fojt 
9*a1157835SDaniel Fojt #ifndef GAS_SERVER_H
10*a1157835SDaniel Fojt #define GAS_SERVER_H
11*a1157835SDaniel Fojt 
12*a1157835SDaniel Fojt #ifdef CONFIG_GAS_SERVER
13*a1157835SDaniel Fojt 
14*a1157835SDaniel Fojt struct gas_server;
15*a1157835SDaniel Fojt 
16*a1157835SDaniel Fojt struct gas_server * gas_server_init(void *ctx,
17*a1157835SDaniel Fojt 				    void (*tx)(void *ctx, int freq,
18*a1157835SDaniel Fojt 					       const u8 *da,
19*a1157835SDaniel Fojt 					       struct wpabuf *buf,
20*a1157835SDaniel Fojt 					       unsigned int wait_time));
21*a1157835SDaniel Fojt void gas_server_deinit(struct gas_server *gas);
22*a1157835SDaniel Fojt int gas_server_register(struct gas_server *gas,
23*a1157835SDaniel Fojt 			const u8 *adv_proto_id, u8 adv_proto_id_len,
24*a1157835SDaniel Fojt 			struct wpabuf *
25*a1157835SDaniel Fojt 			(*req_cb)(void *ctx, const u8 *sa,
26*a1157835SDaniel Fojt 				  const u8 *query, size_t query_len),
27*a1157835SDaniel Fojt 			void (*status_cb)(void *ctx, struct wpabuf *resp,
28*a1157835SDaniel Fojt 					  int ok),
29*a1157835SDaniel Fojt 			void *ctx);
30*a1157835SDaniel Fojt int gas_server_rx(struct gas_server *gas, const u8 *da, const u8 *sa,
31*a1157835SDaniel Fojt 		  const u8 *bssid, u8 categ, const u8 *data, size_t len,
32*a1157835SDaniel Fojt 		  int freq);
33*a1157835SDaniel Fojt void gas_server_tx_status(struct gas_server *gas, const u8 *dst, const u8 *data,
34*a1157835SDaniel Fojt 			  size_t data_len, int ack);
35*a1157835SDaniel Fojt 
36*a1157835SDaniel Fojt #else /* CONFIG_GAS_SERVER */
37*a1157835SDaniel Fojt 
gas_server_deinit(struct gas_server * gas)38*a1157835SDaniel Fojt static inline void gas_server_deinit(struct gas_server *gas)
39*a1157835SDaniel Fojt {
40*a1157835SDaniel Fojt }
41*a1157835SDaniel Fojt 
42*a1157835SDaniel Fojt #endif /* CONFIG_GAS_SERVER */
43*a1157835SDaniel Fojt 
44*a1157835SDaniel Fojt #endif /* GAS_SERVER_H */
45