1 /*
2  * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef __ESP_BT_CFG_H__
8 #define __ESP_BT_CFG_H__
9 
10 #include <stdint.h>
11 #include <stdbool.h>
12 #include "esp_err.h"
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 #if CONFIG_BT_NIMBLE_ENABLED
19 #include "syscfg/syscfg.h"
20 #endif
21 
22 #define NIMBLE_LL_STACK_SIZE CONFIG_BT_LE_CONTROLLER_TASK_STACK_SIZE
23 
24 #if CONFIG_BT_NIMBLE_ENABLED
25 
26     #if CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_CODED_PHY
27     #define BLE_LL_SCAN_PHY_NUMBER_N (2)
28     #else
29     #define BLE_LL_SCAN_PHY_NUMBER_N (1)
30     #endif
31     #define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST MYNEWT_VAL(BLE_MAX_PERIODIC_ADVERTISER_LIST)
32     #define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS)
33     #define DEFAULT_BT_LE_MAX_CONNECTIONS MYNEWT_VAL(BLE_MAX_CONNECTIONS)
34     #define DEFAULT_BT_LE_ACL_BUF_SIZE MYNEWT_VAL(BLE_TRANSPORT_ACL_SIZE)
35     #define DEFAULT_BT_LE_ACL_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_ACL_FROM_LL_COUNT)
36     #define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE MYNEWT_VAL(BLE_TRANSPORT_EVT_SIZE)
37     #define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)
38     #define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)
39     #define DEFAULT_BT_NIMBLE_WHITELIST_SIZE MYNEWT_VAL(BLE_LL_WHITELIST_SIZE)
40     #define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_EVT_COUNT)
41     #define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_EVT_DISCARDABLE_COUNT)
42     #if defined(CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT)
43     #define DEFAULT_BT_LE_50_FEATURE_SUPPORT (1)
44     #else
45     #define DEFAULT_BT_LE_50_FEATURE_SUPPORT (0)
46     #endif
47 
48     #define DEGAULT_BT_LE_2M_PHY                         (CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_2M_PHY)
49     #define DEGAULT_BT_LE_CODED_PHY                      (CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_CODED_PHY)
50     #define DEFAULT_BT_LE_EXT_ADV                        (CONFIG_BT_NIMBLE_EXT_ADV)
51     #define DEFAULT_BT_LE_PERIODIC_ADV                   (CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV)
52     #define DEFAULT_BT_LE_EXT_SCAN                       (CONFIG_BT_NIMBLE_EXT_SCAN)
53     #define DEFAULT_BT_LE_PERIODIC_SYNC                  (CONFIG_BT_NIMBLE_ENABLE_PERIODIC_SYNC)
54     #define DEFAULT_BT_LE_PAST                           (CONFIG_BT_NIMBLE_PERIODIC_ADV_SYNC_TRANSFER)
55 
56     #define DEFAULT_BT_LE_ROLE_OBSERVER                  MYNEWT_VAL(BLE_ROLE_OBSERVER)
57     #define DEFAULT_BT_LE_ROLE_CENTROL                   MYNEWT_VAL(BLE_ROLE_CENTRAL)
58     #define DEFAULT_BT_LE_ROLE_PERIPHERAL                MYNEWT_VAL(BLE_ROLE_PERIPHERAL)
59     #define DEFAULT_BT_LE_ROLE_BROADCASTER               MYNEWT_VAL(BLE_ROLE_BROADCASTER)
60 #else
61 
62     #if CONFIG_BT_LE_LL_CFG_FEAT_LE_CODED_PHY
63     #define BLE_LL_SCAN_PHY_NUMBER_N (2)
64     #else
65     #define BLE_LL_SCAN_PHY_NUMBER_N (1)
66     #endif
67 
68     #if defined(CONFIG_BT_LE_MAX_PERIODIC_ADVERTISER_LIST)
69         #define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST (CONFIG_BT_LE_MAX_PERIODIC_ADVERTISER_LIST)
70     #else
71         #define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST (0)
72     #endif
73 
74     #if defined(CONFIG_BT_LE_MAX_PERIODIC_SYNCS)
75         #define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS (CONFIG_BT_LE_MAX_PERIODIC_SYNCS)
76     #else
77         #define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS (0)
78     #endif
79 
80     #if defined(CONFIG_BT_LE_MAX_CONNECTIONS)
81         #define DEFAULT_BT_LE_MAX_CONNECTIONS (CONFIG_BT_LE_MAX_CONNECTIONS)
82     #else
83         #define DEFAULT_BT_LE_MAX_CONNECTIONS (2)
84     #endif
85 
86     #if defined(CONFIG_BT_LE_ACL_BUF_SIZE)
87         #define DEFAULT_BT_LE_ACL_BUF_SIZE (CONFIG_BT_LE_ACL_BUF_SIZE)
88     #else
89         #define DEFAULT_BT_LE_ACL_BUF_SIZE (255)
90     #endif
91 
92     #if defined(CONFIG_BT_LE_ACL_BUF_COUNT)
93         #define DEFAULT_BT_LE_ACL_BUF_COUNT (CONFIG_BT_LE_ACL_BUF_COUNT)
94     #else
95         #define DEFAULT_BT_LE_ACL_BUF_COUNT (24)
96     #endif
97 
98     #if defined(CONFIG_BT_LE_HCI_EVT_BUF_SIZE)
99         #define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE (CONFIG_BT_LE_HCI_EVT_BUF_SIZE)
100     #else
101         #define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE (70)
102     #endif
103 
104     #if defined(CONFIG_BT_LE_EXT_ADV_MAX_SIZE)
105         #define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE (CONFIG_BT_LE_EXT_ADV_MAX_SIZE)
106     #else
107         #define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE (31)
108     #endif
109 
110     #if defined(CONFIG_BT_LE_MAX_EXT_ADV_INSTANCES)
111         #define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES (CONFIG_BT_LE_MAX_EXT_ADV_INSTANCES)
112     #else
113         #define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES (1)
114     #endif
115 
116     #if defined(CONFIG_BT_LE_WHITELIST_SIZE)
117         #define DEFAULT_BT_NIMBLE_WHITELIST_SIZE (CONFIG_BT_LE_WHITELIST_SIZE)
118     #else
119         #define DEFAULT_BT_NIMBLE_WHITELIST_SIZE (12)
120     #endif
121 
122     #if defined(CONFIG_BT_LE_HCI_EVT_HI_BUF_COUNT)
123         #define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT (CONFIG_BT_LE_HCI_EVT_HI_BUF_COUNT)
124     #else
125         #define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT (30)
126     #endif
127 
128     #if defined(CONFIG_BT_LE_HCI_EVT_LO_BUF_COUNT)
129         #define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT (CONFIG_BT_LE_HCI_EVT_LO_BUF_COUNT)
130     #else
131         #define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT (8)
132     #endif
133 
134     #if defined(CONFIG_BT_LE_50_FEATURE_SUPPORT)
135         #define DEFAULT_BT_LE_50_FEATURE_SUPPORT (1)
136     #else
137         #define DEFAULT_BT_LE_50_FEATURE_SUPPORT (0)
138     #endif
139 
140     #if defined(CONFIG_BT_LE_LL_CFG_FEAT_LE_2M_PHY)
141         #define DEGAULT_BT_LE_2M_PHY (CONFIG_BT_LE_LL_CFG_FEAT_LE_2M_PHY)
142     #else
143         #define DEGAULT_BT_LE_2M_PHY (0)
144     #endif
145 
146     #if defined(CONFIG_BT_LE_LL_CFG_FEAT_LE_CODED_PHY)
147         #define DEGAULT_BT_LE_CODED_PHY (CONFIG_BT_LE_LL_CFG_FEAT_LE_CODED_PHY)
148     #else
149         #define DEGAULT_BT_LE_CODED_PHY (0)
150     #endif
151 
152     #if defined(CONFIG_BT_LE_EXT_ADV)
153         #define DEFAULT_BT_LE_EXT_ADV       (CONFIG_BT_LE_EXT_ADV)
154     #else
155         #define DEFAULT_BT_LE_EXT_ADV       (0)
156     #endif
157 
158     #if defined(CONFIG_BT_LE_ENABLE_PERIODIC_ADV)
159         #define DEFAULT_BT_LE_PERIODIC_ADV  (CONFIG_BT_LE_ENABLE_PERIODIC_ADV)
160     #else
161         #define DEFAULT_BT_LE_PERIODIC_ADV  (0)
162     #endif
163 
164     #if defined(CONFIG_BT_LE_EXT_SCAN)
165         #define DEFAULT_BT_LE_EXT_SCAN      (CONFIG_BT_LE_EXT_SCAN)
166     #else
167         #define DEFAULT_BT_LE_EXT_SCAN      (0)
168     #endif
169 
170     #if defined(CONFIG_BT_LE_ENABLE_PERIODIC_SYNC)
171         #define DEFAULT_BT_LE_PERIODIC_SYNC  (CONFIG_BT_LE_ENABLE_PERIODIC_SYNC)
172     #else
173         #define DEFAULT_BT_LE_PERIODIC_SYNC  (0)
174     #endif
175 
176     #if defined(BT_LE_PERIODIC_ADV_SYNC_TRANSFER)
177         #define DEFAULT_BT_LE_PAST          (BT_LE_PERIODIC_ADV_SYNC_TRANSFER)
178     #else
179         #define DEFAULT_BT_LE_PAST          (0)
180     #endif
181 
182     #if defined(CONFIG_BT_LE_ROLE_CENTROL_ENABLE)
183         #define DEFAULT_BT_LE_ROLE_CENTROL (1)
184     #else
185         #define DEFAULT_BT_LE_ROLE_CENTROL (0)
186     #endif
187 
188     #if defined(CONFIG_BT_LE_ROLE_PERIPHERAL_ENABLE)
189         #define DEFAULT_BT_LE_ROLE_PERIPHERAL (1)
190     #else
191         #define DEFAULT_BT_LE_ROLE_PERIPHERAL (0)
192     #endif
193 
194     #if defined(CONFIG_BT_LE_ROLE_BROADCASTER_ENABLE)
195         #define DEFAULT_BT_LE_ROLE_BROADCASTER (1)
196     #else
197         #define DEFAULT_BT_LE_ROLE_BROADCASTER (0)
198     #endif
199 
200     #if defined(CONFIG_BT_LE_ROLE_OBSERVER_ENABLE)
201         #define DEFAULT_BT_LE_ROLE_OBSERVER (1)
202     #else
203         #define DEFAULT_BT_LE_ROLE_OBSERVER (0)
204     #endif
205     #if defined (CONFIG_BT_LE_HCI_UART_FLOWCTRL)
206         #define DEFAULT_BT_LE_HCI_UART_FLOW_CTRL (CONFIG_BT_LE_HCI_UART_FLOWCTRL)
207         #if DEFAULT_BT_LE_HCI_UART_FLOW_CTRL
208             #define DEFAULT_BT_LE_HCI_UART_CTS_PIN (CONFIG_BT_LE_HCI_UART_CTS_PIN)
209             #define DEFAULT_BT_LE_HCI_UART_RTS_PIN (CONFIG_BT_LE_HCI_UART_RTS_PIN)
210         #else
211             #define DEFAULT_BT_LE_HCI_UART_CTS_PIN (-1)
212             #define DEFAULT_BT_LE_HCI_UART_RTS_PIN (-1)
213         #endif
214     #else
215         #define DEFAULT_BT_LE_HCI_UART_FLOW_CTRL (0)
216         #define DEFAULT_BT_LE_HCI_UART_CTS_PIN (-1)
217         #define DEFAULT_BT_LE_HCI_UART_RTS_PIN (-1)
218     #endif
219 #endif
220 
221 #define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF
222 
223 #ifdef CONFIG_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS
224 #define DEFAULT_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS  (CONFIG_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS)
225 #else
226 #define DEFAULT_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS  (0)
227 #endif
228 
229 #ifdef CONFIG_BT_LE_HCI_INTERFACE_USE_UART
230 #define HCI_UART_EN CONFIG_BT_LE_HCI_INTERFACE_USE_UART
231 #else
232 #define HCI_UART_EN 0 // hci ram mode
233 #endif
234 
235 #ifdef CONFIG_BT_LE_SLEEP_ENABLE
236 #define NIMBLE_SLEEP_ENABLE CONFIG_BT_LE_SLEEP_ENABLE
237 #else
238 #define NIMBLE_SLEEP_ENABLE  0
239 #endif
240 
241 
242 #ifdef CONFIG_BT_LE_TX_CCA_ENABLED
243     #define DEFAULT_BT_LE_TX_CCA_ENABLED (CONFIG_BT_LE_TX_CCA_ENABLED)
244 #else
245     #define DEFAULT_BT_LE_TX_CCA_ENABLED (0)
246 #endif
247 
248 #ifdef CONFIG_BT_LE_CCA_RSSI_THRESH
249     #define DEFAULT_BT_LE_CCA_RSSI_THRESH (CONFIG_BT_LE_CCA_RSSI_THRESH)
250 #else
251     #define DEFAULT_BT_LE_CCA_RSSI_THRESH (50)
252 #endif
253 
254 #define DEFAULT_BT_LE_SCAN_RSP_DATA_MAX_LEN_N DEFAULT_BT_LE_EXT_ADV_MAX_SIZE
255 
256 
257 #if HCI_UART_EN
258     #define DEFAULT_BT_LE_HCI_UART_TX_PIN (CONFIG_BT_LE_HCI_UART_TX_PIN)
259     #define DEFAULT_BT_LE_HCI_UART_RX_PIN (CONFIG_BT_LE_HCI_UART_RX_PIN)
260     #define DEFAULT_BT_LE_HCI_UART_PORT (CONFIG_BT_LE_HCI_UART_PORT)
261     #define DEFAULT_BT_LE_HCI_UART_BAUD (CONFIG_BT_LE_HCI_UART_BAUD)
262     #define DEFAULT_BT_LE_HCI_UART_DATA_BITS (UART_DATA_8_BITS)
263     #define DEFAULT_BT_LE_HCI_UART_STOP_BITS (UART_STOP_BITS_1)
264     #define DEFAULT_BT_LE_HCI_UART_PARITY (0)
265 #else
266     #define DEFAULT_BT_LE_HCI_UART_TX_PIN (0)
267     #define DEFAULT_BT_LE_HCI_UART_RX_PIN (0)
268     #define DEFAULT_BT_LE_HCI_UART_PORT (0)
269     #define DEFAULT_BT_LE_HCI_UART_BAUD (0)
270     #define DEFAULT_BT_LE_HCI_UART_DATA_BITS (0)
271     #define DEFAULT_BT_LE_HCI_UART_STOP_BITS (0)
272     #define DEFAULT_BT_LE_HCI_UART_PARITY (0)
273 #endif
274 
275 /* Unchanged configuration */
276 
277 #define BLE_LL_CTRL_PROC_TIMEOUT_MS_N       (40000) /* ms */
278 
279 #define BLE_LL_CFG_NUM_HCI_CMD_PKTS_N       (1)
280 
281 #define BLE_LL_SCHED_ADV_MAX_USECS_N        (852)
282 
283 #define BLE_LL_SCHED_DIRECT_ADV_MAX_USECS_N (502)
284 
285 #define BLE_LL_SCHED_MAX_ADV_PDU_USECS_N    (376)
286 
287 #define BLE_LL_SUB_VERS_NR_N                (0x0000)
288 
289 #define BLE_LL_JITTER_USECS_N               (16)
290 
291 #define BLE_PHY_MAX_PWR_DBM_N               (10)
292 
293 #define BLE_LL_CONN_DEF_AUTH_PYLD_TMO_N     (3000)
294 
295 #ifdef CONFIG_XTAL_FREQ_26
296     #define RTC_FREQ_N                      (40000) /* in Hz */
297 #else
298     #define RTC_FREQ_N                      (32000) /* in Hz */
299 #endif // CONFIG_XTAL_FREQ_26
300 
301 #define BLE_LL_TX_PWR_DBM_N                 (CONFIG_BT_LE_DFT_TX_POWER_LEVEL_DBM_EFF)
302 
303 
304 #define RUN_BQB_TEST                        (0)
305 #define RUN_QA_TEST                         (0)
306 #define NIMBLE_DISABLE_SCAN_BACKOFF         (0)
307 
308 
309 #ifdef __cplusplus
310 }
311 #endif
312 
313 #endif /* __ESP_BT_CFG_H__ */
314