blob: 8d5eaa256bac29fbddc4718431f3a5f2cfbad0aa [file] [log] [blame]
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001/*
2 * Generic advertisement service (GAS) server
3 * Copyright (c) 2017, Qualcomm Atheros, Inc.
Hai Shalom899fcc72020-10-19 14:38:18 -07004 * Copyright (c) 2020, The Linux Foundation
Hai Shalomc1a21442022-02-04 13:43:00 -08005 * Copyright (c) 2022, Qualcomm Innovation Center, Inc.
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07006 *
7 * This software may be distributed under the terms of the BSD license.
8 * See README for more details.
9 */
10
11#ifndef GAS_SERVER_H
12#define GAS_SERVER_H
13
14#ifdef CONFIG_GAS_SERVER
15
16struct gas_server;
17
18struct gas_server * gas_server_init(void *ctx,
19 void (*tx)(void *ctx, int freq,
20 const u8 *da,
21 struct wpabuf *buf,
22 unsigned int wait_time));
23void gas_server_deinit(struct gas_server *gas);
24int gas_server_register(struct gas_server *gas,
25 const u8 *adv_proto_id, u8 adv_proto_id_len,
26 struct wpabuf *
Hai Shalom899fcc72020-10-19 14:38:18 -070027 (*req_cb)(void *ctx, void *resp_ctx, const u8 *sa,
28 const u8 *query, size_t query_len,
Hai Shalomc1a21442022-02-04 13:43:00 -080029 int *comeback_delay),
Dmitry Shmidtd2986c22017-10-23 14:22:09 -070030 void (*status_cb)(void *ctx, struct wpabuf *resp,
31 int ok),
32 void *ctx);
33int gas_server_rx(struct gas_server *gas, const u8 *da, const u8 *sa,
34 const u8 *bssid, u8 categ, const u8 *data, size_t len,
35 int freq);
36void gas_server_tx_status(struct gas_server *gas, const u8 *dst, const u8 *data,
37 size_t data_len, int ack);
Hai Shalomc1a21442022-02-04 13:43:00 -080038int gas_server_set_comeback_delay(struct gas_server *gas, void *resp_ctx,
39 u16 comeback_delay);
Hai Shalom899fcc72020-10-19 14:38:18 -070040int gas_server_set_resp(struct gas_server *gas, void *resp_ctx,
41 struct wpabuf *resp);
Hai Shalom60840252021-02-19 19:02:11 -080042bool gas_server_response_sent(struct gas_server *gas, void *resp_ctx);
Dmitry Shmidtd2986c22017-10-23 14:22:09 -070043
44#else /* CONFIG_GAS_SERVER */
45
46static inline void gas_server_deinit(struct gas_server *gas)
47{
48}
49
50#endif /* CONFIG_GAS_SERVER */
51
52#endif /* GAS_SERVER_H */