2020-04-03 22:44:01 +03:00
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright ( C ) 2020 Google Corporation
*/
2020-06-17 17:39:13 +03:00
# define MSFT_FEATURE_MASK_BREDR_RSSI_MONITOR BIT(0)
# define MSFT_FEATURE_MASK_LE_CONN_RSSI_MONITOR BIT(1)
# define MSFT_FEATURE_MASK_LE_ADV_RSSI_MONITOR BIT(2)
# define MSFT_FEATURE_MASK_LE_ADV_MONITOR BIT(3)
# define MSFT_FEATURE_MASK_CURVE_VALIDITY BIT(4)
# define MSFT_FEATURE_MASK_CONCURRENT_ADV_MONITOR BIT(5)
2020-04-03 22:44:01 +03:00
# if IS_ENABLED(CONFIG_BT_MSFTEXT)
2021-01-22 11:36:12 +03:00
bool msft_monitor_supported ( struct hci_dev * hdev ) ;
2021-09-10 00:10:23 +03:00
void msft_register ( struct hci_dev * hdev ) ;
void msft_unregister ( struct hci_dev * hdev ) ;
2020-04-03 22:44:01 +03:00
void msft_do_open ( struct hci_dev * hdev ) ;
void msft_do_close ( struct hci_dev * hdev ) ;
2021-12-01 21:55:03 +03:00
void msft_vendor_evt ( struct hci_dev * hdev , void * data , struct sk_buff * skb ) ;
2020-06-17 17:39:13 +03:00
__u64 msft_get_features ( struct hci_dev * hdev ) ;
2021-01-22 11:36:12 +03:00
int msft_add_monitor_pattern ( struct hci_dev * hdev , struct adv_monitor * monitor ) ;
2022-07-21 02:21:14 +03:00
int msft_remove_monitor ( struct hci_dev * hdev , struct adv_monitor * monitor ) ;
2021-01-22 11:36:17 +03:00
void msft_req_add_set_filter_enable ( struct hci_request * req , bool enable ) ;
2021-01-22 11:36:15 +03:00
int msft_set_filter_enable ( struct hci_dev * hdev , bool enable ) ;
2021-10-28 02:59:00 +03:00
int msft_suspend_sync ( struct hci_dev * hdev ) ;
int msft_resume_sync ( struct hci_dev * hdev ) ;
2021-04-06 22:55:56 +03:00
bool msft_curve_validity ( struct hci_dev * hdev ) ;
2020-04-03 22:44:01 +03:00
# else
2021-01-22 11:36:12 +03:00
static inline bool msft_monitor_supported ( struct hci_dev * hdev )
{
return false ;
}
2021-09-10 00:10:23 +03:00
static inline void msft_register ( struct hci_dev * hdev ) { }
static inline void msft_unregister ( struct hci_dev * hdev ) { }
2020-04-03 22:44:01 +03:00
static inline void msft_do_open ( struct hci_dev * hdev ) { }
static inline void msft_do_close ( struct hci_dev * hdev ) { }
2021-12-06 22:27:01 +03:00
static inline void msft_vendor_evt ( struct hci_dev * hdev , void * data ,
struct sk_buff * skb ) { }
2020-06-17 17:39:13 +03:00
static inline __u64 msft_get_features ( struct hci_dev * hdev ) { return 0 ; }
2021-01-22 11:36:12 +03:00
static inline int msft_add_monitor_pattern ( struct hci_dev * hdev ,
struct adv_monitor * monitor )
{
return - EOPNOTSUPP ;
}
2020-04-03 22:44:01 +03:00
2021-01-22 11:36:13 +03:00
static inline int msft_remove_monitor ( struct hci_dev * hdev ,
2022-07-21 02:21:14 +03:00
struct adv_monitor * monitor )
2021-01-22 11:36:13 +03:00
{
return - EOPNOTSUPP ;
}
2021-01-22 11:36:17 +03:00
static inline void msft_req_add_set_filter_enable ( struct hci_request * req ,
bool enable ) { }
2021-01-22 11:36:15 +03:00
static inline int msft_set_filter_enable ( struct hci_dev * hdev , bool enable )
{
return - EOPNOTSUPP ;
}
2021-10-28 02:59:00 +03:00
static inline int msft_suspend_sync ( struct hci_dev * hdev )
{
return - EOPNOTSUPP ;
}
static inline int msft_resume_sync ( struct hci_dev * hdev )
{
return - EOPNOTSUPP ;
}
2021-09-22 00:47:10 +03:00
2021-04-06 22:55:56 +03:00
static inline bool msft_curve_validity ( struct hci_dev * hdev )
{
return false ;
}
2020-04-03 22:44:01 +03:00
# endif