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     #define DEFAULT_BT_LE_POWER_CONTROL_ENABLED    MYNEWT_VAL(BLE_POWER_CONTROL)
43     #if defined(CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT)
44     #define DEFAULT_BT_LE_50_FEATURE_SUPPORT (1)
45     #else
46     #define DEFAULT_BT_LE_50_FEATURE_SUPPORT (0)
47     #endif
48 #else
49 
50     #if CONFIG_BT_LE_LL_CFG_FEAT_LE_CODED_PHY
51     #define BLE_LL_SCAN_PHY_NUMBER_N (2)
52     #else
53     #define BLE_LL_SCAN_PHY_NUMBER_N (1)
54     #endif
55 
56     #if defined(CONFIG_BT_LE_MAX_PERIODIC_ADVERTISER_LIST)
57         #define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST (CONFIG_BT_LE_MAX_PERIODIC_ADVERTISER_LIST)
58     #else
59         #define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST (5)
60     #endif
61 
62     #if defined(CONFIG_BT_LE_MAX_PERIODIC_SYNCS)
63         #define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS (CONFIG_BT_LE_MAX_PERIODIC_SYNCS)
64     #else
65         #define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS (1)
66     #endif
67 
68     #if defined(CONFIG_BT_LE_MAX_CONNECTIONS)
69         #define DEFAULT_BT_LE_MAX_CONNECTIONS (CONFIG_BT_LE_MAX_CONNECTIONS)
70     #else
71         #define DEFAULT_BT_LE_MAX_CONNECTIONS (2)
72     #endif
73 
74     #if defined(CONFIG_BT_LE_ACL_BUF_SIZE)
75         #define DEFAULT_BT_LE_ACL_BUF_SIZE (CONFIG_BT_LE_ACL_BUF_SIZE)
76     #else
77         #define DEFAULT_BT_LE_ACL_BUF_SIZE (255)
78     #endif
79 
80     #if defined(CONFIG_BT_LE_ACL_BUF_COUNT)
81         #define DEFAULT_BT_LE_ACL_BUF_COUNT (CONFIG_BT_LE_ACL_BUF_COUNT)
82     #else
83         #define DEFAULT_BT_LE_ACL_BUF_COUNT (24)
84     #endif
85 
86     #if defined(CONFIG_BT_LE_HCI_EVT_BUF_SIZE)
87         #define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE (CONFIG_BT_LE_HCI_EVT_BUF_SIZE)
88     #else
89         #define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE (70)
90     #endif
91 
92     #if defined(CONFIG_BT_LE_EXT_ADV_MAX_SIZE)
93         #define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE (CONFIG_BT_LE_EXT_ADV_MAX_SIZE)
94     #else
95         #define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE (31)
96     #endif
97 
98     #if defined(CONFIG_BT_LE_MAX_EXT_ADV_INSTANCES)
99         #define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES (CONFIG_BT_LE_MAX_EXT_ADV_INSTANCES)
100     #else
101         #define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES (1)
102     #endif
103 
104     #if defined(CONFIG_BT_LE_WHITELIST_SIZE)
105         #define DEFAULT_BT_NIMBLE_WHITELIST_SIZE (CONFIG_BT_LE_WHITELIST_SIZE)
106     #else
107         #define DEFAULT_BT_NIMBLE_WHITELIST_SIZE (12)
108     #endif
109 
110     #if defined(CONFIG_BT_LE_HCI_EVT_HI_BUF_COUNT)
111         #define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT (CONFIG_BT_LE_HCI_EVT_HI_BUF_COUNT)
112     #else
113         #define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT (30)
114     #endif
115 
116     #if defined(CONFIG_BT_LE_HCI_EVT_LO_BUF_COUNT)
117         #define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT (CONFIG_BT_LE_HCI_EVT_LO_BUF_COUNT)
118     #else
119         #define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT (8)
120     #endif
121 
122     #if defined(CONFIG_BT_LE_POWER_CONTROL_ENABLED)
123         #define DEFAULT_BT_LE_POWER_CONTROL_ENABLED (CONFIG_BT_LE_POWER_CONTROL_ENABLED)
124     #else
125         #define DEFAULT_BT_LE_POWER_CONTROL_ENABLED (0)
126     #endif
127     #if defined(CONFIG_BT_LE_50_FEATURE_SUPPORT)
128         #define DEFAULT_BT_LE_50_FEATURE_SUPPORT (1)
129     #else
130         #define DEFAULT_BT_LE_50_FEATURE_SUPPORT (0)
131     #endif
132 
133     #if defined (CONFIG_BT_LE_HCI_UART_FLOWCTRL)
134         #define DEFAULT_BT_LE_HCI_UART_FLOW_CTRL (CONFIG_BT_LE_HCI_UART_FLOWCTRL)
135         #if DEFAULT_BT_LE_HCI_UART_FLOW_CTRL
136             #define DEFAULT_BT_LE_HCI_UART_CTS_PIN (CONFIG_BT_LE_HCI_UART_CTS_PIN)
137             #define DEFAULT_BT_LE_HCI_UART_RTS_PIN (CONFIG_BT_LE_HCI_UART_RTS_PIN)
138         #else
139             #define DEFAULT_BT_LE_HCI_UART_CTS_PIN (-1)
140             #define DEFAULT_BT_LE_HCI_UART_RTS_PIN (-1)
141         #endif
142     #else
143         #define DEFAULT_BT_LE_HCI_UART_FLOW_CTRL (0)
144         #define DEFAULT_BT_LE_HCI_UART_CTS_PIN (-1)
145         #define DEFAULT_BT_LE_HCI_UART_RTS_PIN (-1)
146     #endif
147 #endif
148 
149 #define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF
150 
151 #ifdef CONFIG_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS
152 #define DEFAULT_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS  (CONFIG_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS)
153 #else
154 #define DEFAULT_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS  (0)
155 #endif
156 
157 #ifdef CONFIG_BT_LE_HCI_INTERFACE_USE_UART
158 #define HCI_UART_EN CONFIG_BT_LE_HCI_INTERFACE_USE_UART
159 #else
160 #define HCI_UART_EN 0 // hci ram mode
161 #endif
162 
163 #ifdef CONFIG_BT_LE_SLEEP_ENABLE
164 #define NIMBLE_SLEEP_ENABLE CONFIG_BT_LE_SLEEP_ENABLE
165 #else
166 #define NIMBLE_SLEEP_ENABLE  0
167 #endif
168 
169 
170 #ifdef CONFIG_BT_LE_TX_CCA_ENABLED
171     #define DEFAULT_BT_LE_TX_CCA_ENABLED (CONFIG_BT_LE_TX_CCA_ENABLED)
172 #else
173     #define DEFAULT_BT_LE_TX_CCA_ENABLED (0)
174 #endif
175 
176 #ifdef CONFIG_BT_LE_CCA_RSSI_THRESH
177     #define DEFAULT_BT_LE_CCA_RSSI_THRESH (CONFIG_BT_LE_CCA_RSSI_THRESH)
178 #else
179     #define DEFAULT_BT_LE_CCA_RSSI_THRESH (50)
180 #endif
181 
182 #define DEFAULT_BT_LE_SCAN_RSP_DATA_MAX_LEN_N DEFAULT_BT_LE_EXT_ADV_MAX_SIZE
183 
184 
185 #if HCI_UART_EN
186     #define DEFAULT_BT_LE_HCI_UART_TX_PIN (CONFIG_BT_LE_HCI_UART_TX_PIN)
187     #define DEFAULT_BT_LE_HCI_UART_RX_PIN (CONFIG_BT_LE_HCI_UART_RX_PIN)
188     #define DEFAULT_BT_LE_HCI_UART_PORT (CONFIG_BT_LE_HCI_UART_PORT)
189     #define DEFAULT_BT_LE_HCI_UART_BAUD (CONFIG_BT_LE_HCI_UART_BAUD)
190     #define DEFAULT_BT_LE_HCI_UART_DATA_BITS (UART_DATA_8_BITS)
191     #define DEFAULT_BT_LE_HCI_UART_STOP_BITS (UART_STOP_BITS_1)
192     #define DEFAULT_BT_LE_HCI_UART_PARITY (0)
193 #else
194     #define DEFAULT_BT_LE_HCI_UART_TX_PIN (0)
195     #define DEFAULT_BT_LE_HCI_UART_RX_PIN (0)
196     #define DEFAULT_BT_LE_HCI_UART_PORT (0)
197     #define DEFAULT_BT_LE_HCI_UART_BAUD (0)
198     #define DEFAULT_BT_LE_HCI_UART_DATA_BITS (0)
199     #define DEFAULT_BT_LE_HCI_UART_STOP_BITS (0)
200     #define DEFAULT_BT_LE_HCI_UART_PARITY (0)
201 #endif
202 
203 /* Unchanged configuration */
204 
205 #define BLE_LL_CTRL_PROC_TIMEOUT_MS_N       (40000) /* ms */
206 
207 #define BLE_LL_CFG_NUM_HCI_CMD_PKTS_N       (1)
208 
209 #define BLE_LL_SCHED_ADV_MAX_USECS_N        (852)
210 
211 #define BLE_LL_SCHED_DIRECT_ADV_MAX_USECS_N (502)
212 
213 #define BLE_LL_SCHED_MAX_ADV_PDU_USECS_N    (376)
214 
215 #define BLE_LL_SUB_VERS_NR_N                (0x0000)
216 
217 #define BLE_LL_JITTER_USECS_N               (16)
218 
219 #define BLE_PHY_MAX_PWR_DBM_N               (10)
220 
221 #define BLE_LL_CONN_DEF_AUTH_PYLD_TMO_N     (3000)
222 
223 #define RTC_FREQ_N                          (32768) /* in Hz */
224 
225 #define BLE_LL_TX_PWR_DBM_N                 (CONFIG_BT_LE_DFT_TX_POWER_LEVEL_DBM_EFF)
226 
227 #define RUN_BQB_TEST                        (0)
228 #define RUN_QA_TEST                         (0)
229 #define NIMBLE_DISABLE_SCAN_BACKOFF         (0)
230 
231 #ifdef __cplusplus
232 }
233 #endif
234 
235 #endif /* __ESP_BT_CFG_H__ */
236