1 /*
2  * Copyright (c) 2017, 2020 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /**
21  * DOC: wifi_pos_ucfg_i.h
22  * This file prototyps the important functions pertinent to wifi positioning
23  * component.
24  */
25 
26 #ifndef _WIFI_POS_UCFG_H_
27 #define _WIFI_POS_UCFG_H_
28 
29 #include "qdf_types.h"
30 #include "qdf_status.h"
31 #include "os_if_wifi_pos_utils.h"
32 #include "wifi_pos_pasn_api.h"
33 #include "wifi_pos_api.h"
34 
35 struct wlan_objmgr_psoc;
36 struct wifi_pos_req_msg;
37 
38 /**
39  * ucfg_wifi_pos_process_req: ucfg API to be called from HDD/OS_IF to process a
40  * wifi_pos request from userspace
41  * @psoc: pointer to psoc object
42  * @req: wifi_pos request msg
43  * @send_rsp_cb: callback pointer required to send msg to userspace
44  *
45  * Return: status of operation
46  */
47 QDF_STATUS ucfg_wifi_pos_process_req(struct wlan_objmgr_psoc *psoc,
48 				     struct wifi_pos_req_msg *req,
49 				     wifi_pos_send_rsp_handler send_rsp_cb);
50 
51 #ifdef WIFI_POS_CONVERGED
52 /**
53  * ucfg_wifi_pos_register_osif_callbacks() - Register WIFI pos module OSIF
54  * callbacks
55  * @psoc: Pointer to PSOC object
56  * @osif_ops: Pointer to OSIF callbacks
57  *
58  * Return: QDF_STATUS
59  */
60 static inline QDF_STATUS
ucfg_wifi_pos_register_osif_callbacks(struct wlan_objmgr_psoc * psoc,struct wifi_pos_osif_ops * osif_ops)61 ucfg_wifi_pos_register_osif_callbacks(struct wlan_objmgr_psoc *psoc,
62 				      struct wifi_pos_osif_ops *osif_ops)
63 {
64 	return wifi_pos_register_osif_callbacks(osif_ops);
65 }
66 
67 /**
68  * ucfg_wifi_pos_deregister_osif_callbacks() - De-Register WIFI pos module OSIF
69  * callbacks
70  * @psoc: Pointer to PSOC object
71  *
72  * Return: QDF_STATUS
73  */
74 static inline QDF_STATUS
ucfg_wifi_pos_deregister_osif_callbacks(struct wlan_objmgr_psoc * psoc)75 ucfg_wifi_pos_deregister_osif_callbacks(struct wlan_objmgr_psoc *psoc)
76 {
77 	return wifi_pos_register_osif_callbacks(NULL);
78 }
79 #else
80 static inline QDF_STATUS
ucfg_wifi_pos_deregister_osif_callbacks(struct wlan_objmgr_psoc * psoc)81 ucfg_wifi_pos_deregister_osif_callbacks(struct wlan_objmgr_psoc *psoc)
82 {
83 	return QDF_STATUS_SUCCESS;
84 }
85 #endif /* WIFI_POS_CONVERGED */
86 
87 #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT)
88 static inline bool
ucfg_wifi_pos_is_ltf_keyseed_required_for_peer(struct wlan_objmgr_peer * peer)89 ucfg_wifi_pos_is_ltf_keyseed_required_for_peer(struct wlan_objmgr_peer *peer)
90 {
91 	return wifi_pos_is_ltf_keyseed_required_for_peer(peer);
92 }
93 
94 static inline
ucfg_wifi_pos_get_rsta_11az_ranging_cap(void)95 uint32_t ucfg_wifi_pos_get_rsta_11az_ranging_cap(void)
96 {
97 	return wifi_pos_get_rsta_11az_ranging_cap();
98 }
99 #endif
100 #endif /* _WIFI_POS_UCFG_H_ */
101