11/*
2- * Copyright (c) 2016-2021 Nordic Semiconductor ASA
2+ * Copyright (c) 2016-2025 Nordic Semiconductor ASA
33 * Copyright (c) 2016 Vinayak Kariappa Chettimada
44 *
55 * SPDX-License-Identifier: Apache-2.0
66 */
77
8+ #if defined(CONFIG_BT_CTLR_HCI_ADV_HANDLE_MAPPING )
9+ #define LL_ADV_HANDLE_MAPPING
10+ #else /* !CONFIG_BT_CTLR_HCI_ADV_HANDLE_MAPPING */
11+ #define LL_ADV_HANDLE_MAPPING static __attribute__((always_inline)) inline
12+ #endif /* !CONFIG_BT_CTLR_HCI_ADV_HANDLE_MAPPING */
13+
14+ /* Initialization and Reset Interfaces */
815int ll_init (struct k_sem * sem_rx );
916int ll_deinit (void );
1017void ll_reset (void );
1118
19+ /* Features Interfaces */
1220uint8_t ll_set_host_feature (uint8_t bit_number , uint8_t bit_value );
1321uint64_t ll_feat_get (void );
1422
23+ /* Device Address Interfaces */
1524uint8_t ll_addr_set (uint8_t addr_type , uint8_t const * const p_bdaddr );
1625uint8_t * ll_addr_get (uint8_t addr_type );
1726uint8_t * ll_addr_read (uint8_t addr_type , uint8_t * const bdaddr );
1827
19- #if defined(CONFIG_BT_CTLR_HCI_ADV_HANDLE_MAPPING )
20- uint8_t ll_adv_set_by_hci_handle_get (uint8_t hci_handle , uint8_t * handle );
21- uint8_t ll_adv_set_by_hci_handle_get_or_new (uint8_t hci_handle ,
22- uint8_t * handle );
23- uint8_t ll_adv_set_hci_handle_get (uint8_t handle );
24- uint8_t ll_adv_iso_by_hci_handle_get (uint8_t hci_handle , uint8_t * handle );
25- uint8_t ll_adv_iso_by_hci_handle_new (uint8_t hci_handle , uint8_t * handle );
26- #else
27- static inline uint8_t ll_adv_set_by_hci_handle_get (uint8_t hci_handle ,
28- uint8_t * handle )
29- {
30- * handle = hci_handle ;
31- return 0 ;
32- }
33-
34- static inline uint8_t ll_adv_set_by_hci_handle_get_or_new (uint8_t hci_handle ,
35- uint8_t * handle )
36- {
37- * handle = hci_handle ;
38- return 0 ;
39- }
40-
41- static inline uint8_t ll_adv_set_hci_handle_get (uint8_t handle )
42- {
43- return handle ;
44- }
45-
46- static inline uint8_t ll_adv_iso_by_hci_handle_get (uint8_t hci_handle ,
47- uint8_t * handle )
48- {
49- * handle = hci_handle ;
50- return 0 ;
51- }
52-
53- static inline uint8_t ll_adv_iso_by_hci_handle_new (uint8_t hci_handle ,
54- uint8_t * handle )
55- {
56- * handle = hci_handle ;
57- return 0 ;
58- }
59- #endif
28+ /* Advertising Handles Interfaces */
29+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_set_by_hci_handle_get (uint8_t hci_handle , uint8_t * handle );
30+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_set_by_hci_handle_get_or_new (uint8_t hci_handle ,
31+ uint8_t * handle );
32+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_set_hci_handle_get (uint8_t handle );
33+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_iso_by_hci_handle_get (uint8_t hci_handle , uint8_t * handle );
34+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_iso_by_hci_handle_new (uint8_t hci_handle , uint8_t * handle );
6035
36+ /* Advertising State Interfaces */
6137#if defined(CONFIG_BT_CTLR_ADV_EXT )
6238uint8_t ll_adv_params_set (uint8_t handle , uint16_t evt_prop , uint32_t interval ,
6339 uint8_t adv_type , uint8_t own_addr_type ,
@@ -78,6 +54,7 @@ uint8_t ll_adv_data_set(uint8_t len, uint8_t const *const p_data);
7854uint8_t ll_adv_scan_rsp_set (uint8_t len , uint8_t const * const p_data );
7955#endif /* !CONFIG_BT_CTLR_ADV_EXT */
8056
57+ /* Extended Advertising State Interfaces */
8158uint8_t ll_adv_aux_random_addr_set (uint8_t handle , uint8_t const * const addr );
8259uint8_t ll_adv_aux_ad_data_set (uint8_t handle , uint8_t op , uint8_t frag_pref ,
8360 uint8_t len , uint8_t const * const data );
@@ -87,12 +64,15 @@ uint16_t ll_adv_aux_max_data_length_get(void);
8764uint8_t ll_adv_aux_set_count_get (void );
8865uint8_t ll_adv_aux_set_remove (uint8_t handle );
8966uint8_t ll_adv_aux_set_clear (void );
67+
68+ /* Periodic Advertising State Interfaces */
9069uint8_t ll_adv_sync_param_set (uint8_t handle , uint16_t interval ,
9170 uint16_t flags );
9271uint8_t ll_adv_sync_ad_data_set (uint8_t handle , uint8_t op , uint8_t len ,
9372 uint8_t const * const data );
9473uint8_t ll_adv_sync_enable (uint8_t handle , uint8_t enable );
9574
75+ /* Advertising Enable and Disable Interfaces */
9676#if defined(CONFIG_BT_CTLR_ADV_EXT ) || defined(CONFIG_BT_HCI_MESH_EXT )
9777#if defined(CONFIG_BT_HCI_MESH_EXT )
9878uint8_t ll_adv_enable (uint8_t handle , uint8_t enable ,
@@ -108,6 +88,7 @@ uint8_t ll_adv_enable(uint8_t enable);
10888
10989uint8_t ll_adv_disable_all (void );
11090
91+ /* Broadcast ISO State Interfaces */
11192uint8_t ll_big_create (uint8_t big_handle , uint8_t adv_handle , uint8_t num_bis ,
11293 uint32_t sdu_interval , uint16_t max_sdu ,
11394 uint16_t max_latency , uint8_t rtn , uint8_t phy ,
@@ -121,6 +102,7 @@ uint8_t ll_big_test_create(uint8_t big_handle, uint8_t adv_handle,
121102 uint8_t pto , uint8_t encryption , uint8_t * bcode );
122103uint8_t ll_big_terminate (uint8_t big_handle , uint8_t reason );
123104
105+ /* Scanning State Interfaces */
124106uint8_t ll_scan_params_set (uint8_t type , uint16_t interval , uint16_t window ,
125107 uint8_t own_addr_type , uint8_t filter_policy );
126108#if defined(CONFIG_BT_CTLR_ADV_EXT )
@@ -129,24 +111,30 @@ uint8_t ll_scan_enable(uint8_t enable, uint16_t duration, uint16_t period);
129111uint8_t ll_scan_enable (uint8_t enable );
130112#endif /* !CONFIG_BT_CTLR_ADV_EXT */
131113
114+ /* Periodic Advertising Sync State Interfaces */
132115uint8_t ll_sync_create (uint8_t options , uint8_t sid , uint8_t adv_addr_type ,
133116 uint8_t * adv_addr , uint16_t skip ,
134117 uint16_t sync_timeout , uint8_t sync_cte_type );
135118uint8_t ll_sync_create_cancel (void * * rx );
136119uint8_t ll_sync_terminate (uint16_t handle );
137120uint8_t ll_sync_recv_enable (uint16_t handle , uint8_t enable );
121+
122+ /* Periodic Advertising Sync Transfer Interfaces */
138123uint8_t ll_sync_transfer (uint16_t conn_handle , uint16_t service_data , uint16_t sync_handle );
139124uint8_t ll_adv_sync_set_info_transfer (uint16_t conn_handle , uint16_t service_data ,
140125 uint8_t adv_handle );
141126uint8_t ll_past_param (uint16_t conn_handle , uint8_t mode , uint16_t skip , uint16_t timeout ,
142127 uint8_t cte_type );
143128uint8_t ll_default_past_param (uint8_t mode , uint16_t skip , uint16_t timeout , uint8_t cte_type );
129+
130+ /* Broadcast ISO Sync Receiver State Interfaces */
144131uint8_t ll_big_sync_create (uint8_t big_handle , uint16_t sync_handle ,
145132 uint8_t encryption , uint8_t * bcode , uint8_t mse ,
146133 uint16_t sync_timeout , uint8_t num_bis ,
147134 uint8_t * bis );
148135uint8_t ll_big_sync_terminate (uint8_t big_handle , void * * rx );
149136
137+ /* Connected ISO State Interfaces */
150138uint8_t ll_cig_parameters_open (uint8_t cig_id ,
151139 uint32_t c_interval , uint32_t p_interval ,
152140 uint8_t sca , uint8_t packing , uint8_t framing ,
@@ -172,6 +160,15 @@ uint8_t ll_cis_parameters_test_set(uint8_t cis_id, uint8_t nse,
172160 uint16_t c_pdu , uint16_t p_pdu ,
173161 uint8_t c_phy , uint8_t p_phy ,
174162 uint8_t c_bn , uint8_t p_bn );
163+ uint8_t ll_cig_remove (uint8_t cig_id );
164+ uint8_t ll_cis_create_check (uint16_t cis_handle , uint16_t acl_handle );
165+ void ll_cis_create (uint16_t cis_handle , uint16_t acl_handle );
166+ uint8_t ll_cis_accept (uint16_t handle );
167+ uint8_t ll_cis_reject (uint16_t handle , uint8_t reason );
168+ uint8_t ll_conn_iso_accept_timeout_get (uint16_t * timeout );
169+ uint8_t ll_conn_iso_accept_timeout_set (uint16_t timeout );
170+
171+ /* ISO SDU data Interfaces */
175172/* Must be implemented by vendor if vendor-specific data path is supported */
176173uint8_t ll_configure_data_path (uint8_t data_path_dir ,
177174 uint8_t data_path_id ,
@@ -200,24 +197,19 @@ uint8_t ll_iso_read_test_counters(uint16_t handle, uint32_t *received_cnt,
200197 uint32_t * missed_cnt ,
201198 uint32_t * failed_cnt );
202199
203- uint8_t ll_cig_remove (uint8_t cig_id );
204-
205- uint8_t ll_cis_create_check (uint16_t cis_handle , uint16_t acl_handle );
206- void ll_cis_create (uint16_t cis_handle , uint16_t acl_handle );
207-
208- uint8_t ll_cis_accept (uint16_t handle );
209- uint8_t ll_cis_reject (uint16_t handle , uint8_t reason );
210-
200+ /* Filter Accept List Interfaces */
211201uint8_t ll_fal_size_get (void );
212202uint8_t ll_fal_clear (void );
213203uint8_t ll_fal_add (bt_addr_le_t * addr );
214204uint8_t ll_fal_remove (bt_addr_le_t * addr );
215205
206+ /* Privacy Accept List Interfaces */
216207uint8_t ll_pal_size_get (void );
217208uint8_t ll_pal_clear (void );
218209uint8_t ll_pal_add (const bt_addr_le_t * const addr , const uint8_t sid );
219210uint8_t ll_pal_remove (const bt_addr_le_t * const addr , const uint8_t sid );
220211
212+ /* Private Resolvable Address Resolution Interfaces */
221213void ll_rl_id_addr_get (uint8_t rl_idx , uint8_t * id_addr_type , uint8_t * id_addr );
222214uint8_t ll_rl_size_get (void );
223215uint8_t ll_rl_clear (void );
@@ -231,6 +223,7 @@ uint8_t ll_rl_enable(uint8_t enable);
231223void ll_rl_timeout_set (uint16_t timeout );
232224uint8_t ll_priv_mode_set (bt_addr_le_t * id_addr , uint8_t mode );
233225
226+ /* Connection State Interfaces */
234227#if defined(CONFIG_BT_CTLR_ADV_EXT )
235228uint8_t ll_create_connection (uint16_t scan_interval , uint16_t scan_window ,
236229 uint8_t filter_policy , uint8_t peer_addr_type ,
@@ -283,7 +276,7 @@ uint8_t ll_phy_req_send(uint16_t handle, uint8_t tx, uint8_t flags, uint8_t rx);
283276uint8_t ll_set_min_used_chans (uint16_t handle , uint8_t const phys ,
284277 uint8_t const min_used_chans );
285278
286- /* Direction Finding */
279+ /* Direction Finding Interfaces */
287280/* Sets CTE transmission parameters for periodic advertising */
288281uint8_t ll_df_set_cl_cte_tx_params (uint8_t adv_handle , uint8_t cte_len ,
289282 uint8_t cte_type , uint8_t cte_count ,
@@ -316,12 +309,21 @@ void ll_df_read_ant_inf(uint8_t *switch_sample_rates,
316309 uint8_t * max_switch_pattern_len ,
317310 uint8_t * max_cte_len );
318311
319- /* Downstream - Data */
312+ /* Path Loss Monitoring Interfaces */
313+ uint8_t ll_conn_set_path_loss_parameters (uint16_t handle ,
314+ uint8_t high_threshold ,
315+ uint8_t high_hysteresis ,
316+ uint8_t low_threshold ,
317+ uint8_t low_hysteresis ,
318+ uint16_t min_time_spent );
319+ uint8_t ll_conn_set_path_loss_reporting (uint16_t handle , uint8_t enable );
320+
321+ /* Downstream - ACL Data */
320322void * ll_tx_mem_acquire (void );
321323void ll_tx_mem_release (void * node_tx );
322324int ll_tx_mem_enqueue (uint16_t handle , void * node_tx );
323325
324- /* Upstream - Num. Completes, Events and Data */
326+ /* Upstream - Num. Completes, Events, ACL and ISO Data */
325327uint8_t ll_rx_get (void * * node_rx , uint16_t * handle );
326328void ll_rx_dequeue (void );
327329void ll_rx_mem_release (void * * node_rx );
@@ -333,9 +335,6 @@ void ll_iso_tx_mem_release(void *tx);
333335int ll_iso_tx_mem_enqueue (uint16_t handle , void * tx , void * link );
334336void ll_iso_link_tx_release (void * link );
335337
336- uint8_t ll_conn_iso_accept_timeout_get (uint16_t * timeout );
337- uint8_t ll_conn_iso_accept_timeout_set (uint16_t timeout );
338-
339338/* External co-operation */
340339void ll_timeslice_ticker_id_get (uint8_t * const instance_index ,
341340 uint8_t * const ticker_id );
@@ -344,11 +343,35 @@ void ll_coex_ticker_id_get(uint8_t * const instance_index,
344343void ll_radio_state_abort (void );
345344uint32_t ll_radio_state_is_idle (void );
346345
347- uint8_t ll_conn_set_path_loss_parameters (uint16_t handle ,
348- uint8_t high_threshold ,
349- uint8_t high_hysteresis ,
350- uint8_t low_threshold ,
351- uint8_t low_hysteresis ,
352- uint16_t min_time_spent );
346+ /* Static inline functions */
347+ #if !defined(CONFIG_BT_CTLR_HCI_ADV_HANDLE_MAPPING )
348+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_set_by_hci_handle_get (uint8_t hci_handle , uint8_t * handle )
349+ {
350+ * handle = hci_handle ;
351+ return 0U ;
352+ }
353353
354- uint8_t ll_conn_set_path_loss_reporting (uint16_t handle , uint8_t enable );
354+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_set_by_hci_handle_get_or_new (uint8_t hci_handle ,
355+ uint8_t * handle )
356+ {
357+ * handle = hci_handle ;
358+ return 0U ;
359+ }
360+
361+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_set_hci_handle_get (uint8_t handle )
362+ {
363+ return handle ;
364+ }
365+
366+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_iso_by_hci_handle_get (uint8_t hci_handle , uint8_t * handle )
367+ {
368+ * handle = hci_handle ;
369+ return 0U ;
370+ }
371+
372+ LL_ADV_HANDLE_MAPPING uint8_t ll_adv_iso_by_hci_handle_new (uint8_t hci_handle , uint8_t * handle )
373+ {
374+ * handle = hci_handle ;
375+ return 0U ;
376+ }
377+ #endif /* !CONFIG_BT_CTLR_HCI_ADV_HANDLE_MAPPING */
0 commit comments