1
1
/*
2
- * Copyright (c) 2016-2021 Nordic Semiconductor ASA
2
+ * Copyright (c) 2016-2025 Nordic Semiconductor ASA
3
3
* Copyright (c) 2016 Vinayak Kariappa Chettimada
4
4
*
5
5
* SPDX-License-Identifier: Apache-2.0
6
6
*/
7
7
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 */
8
15
int ll_init (struct k_sem * sem_rx );
9
16
int ll_deinit (void );
10
17
void ll_reset (void );
11
18
19
+ /* Features Interfaces */
12
20
uint8_t ll_set_host_feature (uint8_t bit_number , uint8_t bit_value );
13
21
uint64_t ll_feat_get (void );
14
22
23
+ /* Device Address Interfaces */
15
24
uint8_t ll_addr_set (uint8_t addr_type , uint8_t const * const p_bdaddr );
16
25
uint8_t * ll_addr_get (uint8_t addr_type );
17
26
uint8_t * ll_addr_read (uint8_t addr_type , uint8_t * const bdaddr );
18
27
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 );
60
35
36
+ /* Advertising State Interfaces */
61
37
#if defined(CONFIG_BT_CTLR_ADV_EXT )
62
38
uint8_t ll_adv_params_set (uint8_t handle , uint16_t evt_prop , uint32_t interval ,
63
39
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);
78
54
uint8_t ll_adv_scan_rsp_set (uint8_t len , uint8_t const * const p_data );
79
55
#endif /* !CONFIG_BT_CTLR_ADV_EXT */
80
56
57
+ /* Extended Advertising State Interfaces */
81
58
uint8_t ll_adv_aux_random_addr_set (uint8_t handle , uint8_t const * const addr );
82
59
uint8_t ll_adv_aux_ad_data_set (uint8_t handle , uint8_t op , uint8_t frag_pref ,
83
60
uint8_t len , uint8_t const * const data );
@@ -87,12 +64,15 @@ uint16_t ll_adv_aux_max_data_length_get(void);
87
64
uint8_t ll_adv_aux_set_count_get (void );
88
65
uint8_t ll_adv_aux_set_remove (uint8_t handle );
89
66
uint8_t ll_adv_aux_set_clear (void );
67
+
68
+ /* Periodic Advertising State Interfaces */
90
69
uint8_t ll_adv_sync_param_set (uint8_t handle , uint16_t interval ,
91
70
uint16_t flags );
92
71
uint8_t ll_adv_sync_ad_data_set (uint8_t handle , uint8_t op , uint8_t len ,
93
72
uint8_t const * const data );
94
73
uint8_t ll_adv_sync_enable (uint8_t handle , uint8_t enable );
95
74
75
+ /* Advertising Enable and Disable Interfaces */
96
76
#if defined(CONFIG_BT_CTLR_ADV_EXT ) || defined(CONFIG_BT_HCI_MESH_EXT )
97
77
#if defined(CONFIG_BT_HCI_MESH_EXT )
98
78
uint8_t ll_adv_enable (uint8_t handle , uint8_t enable ,
@@ -108,6 +88,7 @@ uint8_t ll_adv_enable(uint8_t enable);
108
88
109
89
uint8_t ll_adv_disable_all (void );
110
90
91
+ /* Broadcast ISO State Interfaces */
111
92
uint8_t ll_big_create (uint8_t big_handle , uint8_t adv_handle , uint8_t num_bis ,
112
93
uint32_t sdu_interval , uint16_t max_sdu ,
113
94
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,
121
102
uint8_t pto , uint8_t encryption , uint8_t * bcode );
122
103
uint8_t ll_big_terminate (uint8_t big_handle , uint8_t reason );
123
104
105
+ /* Scanning State Interfaces */
124
106
uint8_t ll_scan_params_set (uint8_t type , uint16_t interval , uint16_t window ,
125
107
uint8_t own_addr_type , uint8_t filter_policy );
126
108
#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);
129
111
uint8_t ll_scan_enable (uint8_t enable );
130
112
#endif /* !CONFIG_BT_CTLR_ADV_EXT */
131
113
114
+ /* Periodic Advertising Sync State Interfaces */
132
115
uint8_t ll_sync_create (uint8_t options , uint8_t sid , uint8_t adv_addr_type ,
133
116
uint8_t * adv_addr , uint16_t skip ,
134
117
uint16_t sync_timeout , uint8_t sync_cte_type );
135
118
uint8_t ll_sync_create_cancel (void * * rx );
136
119
uint8_t ll_sync_terminate (uint16_t handle );
137
120
uint8_t ll_sync_recv_enable (uint16_t handle , uint8_t enable );
121
+
122
+ /* Periodic Advertising Sync Transfer Interfaces */
138
123
uint8_t ll_sync_transfer (uint16_t conn_handle , uint16_t service_data , uint16_t sync_handle );
139
124
uint8_t ll_adv_sync_set_info_transfer (uint16_t conn_handle , uint16_t service_data ,
140
125
uint8_t adv_handle );
141
126
uint8_t ll_past_param (uint16_t conn_handle , uint8_t mode , uint16_t skip , uint16_t timeout ,
142
127
uint8_t cte_type );
143
128
uint8_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 */
144
131
uint8_t ll_big_sync_create (uint8_t big_handle , uint16_t sync_handle ,
145
132
uint8_t encryption , uint8_t * bcode , uint8_t mse ,
146
133
uint16_t sync_timeout , uint8_t num_bis ,
147
134
uint8_t * bis );
148
135
uint8_t ll_big_sync_terminate (uint8_t big_handle , void * * rx );
149
136
137
+ /* Connected ISO State Interfaces */
150
138
uint8_t ll_cig_parameters_open (uint8_t cig_id ,
151
139
uint32_t c_interval , uint32_t p_interval ,
152
140
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,
172
160
uint16_t c_pdu , uint16_t p_pdu ,
173
161
uint8_t c_phy , uint8_t p_phy ,
174
162
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 */
175
172
/* Must be implemented by vendor if vendor-specific data path is supported */
176
173
uint8_t ll_configure_data_path (uint8_t data_path_dir ,
177
174
uint8_t data_path_id ,
@@ -200,24 +197,19 @@ uint8_t ll_iso_read_test_counters(uint16_t handle, uint32_t *received_cnt,
200
197
uint32_t * missed_cnt ,
201
198
uint32_t * failed_cnt );
202
199
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 */
211
201
uint8_t ll_fal_size_get (void );
212
202
uint8_t ll_fal_clear (void );
213
203
uint8_t ll_fal_add (bt_addr_le_t * addr );
214
204
uint8_t ll_fal_remove (bt_addr_le_t * addr );
215
205
206
+ /* Privacy Accept List Interfaces */
216
207
uint8_t ll_pal_size_get (void );
217
208
uint8_t ll_pal_clear (void );
218
209
uint8_t ll_pal_add (const bt_addr_le_t * const addr , const uint8_t sid );
219
210
uint8_t ll_pal_remove (const bt_addr_le_t * const addr , const uint8_t sid );
220
211
212
+ /* Private Resolvable Address Resolution Interfaces */
221
213
void ll_rl_id_addr_get (uint8_t rl_idx , uint8_t * id_addr_type , uint8_t * id_addr );
222
214
uint8_t ll_rl_size_get (void );
223
215
uint8_t ll_rl_clear (void );
@@ -231,6 +223,7 @@ uint8_t ll_rl_enable(uint8_t enable);
231
223
void ll_rl_timeout_set (uint16_t timeout );
232
224
uint8_t ll_priv_mode_set (bt_addr_le_t * id_addr , uint8_t mode );
233
225
226
+ /* Connection State Interfaces */
234
227
#if defined(CONFIG_BT_CTLR_ADV_EXT )
235
228
uint8_t ll_create_connection (uint16_t scan_interval , uint16_t scan_window ,
236
229
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);
283
276
uint8_t ll_set_min_used_chans (uint16_t handle , uint8_t const phys ,
284
277
uint8_t const min_used_chans );
285
278
286
- /* Direction Finding */
279
+ /* Direction Finding Interfaces */
287
280
/* Sets CTE transmission parameters for periodic advertising */
288
281
uint8_t ll_df_set_cl_cte_tx_params (uint8_t adv_handle , uint8_t cte_len ,
289
282
uint8_t cte_type , uint8_t cte_count ,
@@ -316,12 +309,21 @@ void ll_df_read_ant_inf(uint8_t *switch_sample_rates,
316
309
uint8_t * max_switch_pattern_len ,
317
310
uint8_t * max_cte_len );
318
311
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 */
320
322
void * ll_tx_mem_acquire (void );
321
323
void ll_tx_mem_release (void * node_tx );
322
324
int ll_tx_mem_enqueue (uint16_t handle , void * node_tx );
323
325
324
- /* Upstream - Num. Completes, Events and Data */
326
+ /* Upstream - Num. Completes, Events, ACL and ISO Data */
325
327
uint8_t ll_rx_get (void * * node_rx , uint16_t * handle );
326
328
void ll_rx_dequeue (void );
327
329
void ll_rx_mem_release (void * * node_rx );
@@ -333,9 +335,6 @@ void ll_iso_tx_mem_release(void *tx);
333
335
int ll_iso_tx_mem_enqueue (uint16_t handle , void * tx , void * link );
334
336
void ll_iso_link_tx_release (void * link );
335
337
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
-
339
338
/* External co-operation */
340
339
void ll_timeslice_ticker_id_get (uint8_t * const instance_index ,
341
340
uint8_t * const ticker_id );
@@ -344,11 +343,35 @@ void ll_coex_ticker_id_get(uint8_t * const instance_index,
344
343
void ll_radio_state_abort (void );
345
344
uint32_t ll_radio_state_is_idle (void );
346
345
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
+ }
353
353
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