BTstack实现了一组蓝牙协议和配置文件。要连接其他蓝牙设备或提供蓝牙服务,必须正确配置BTstack。
BTstack的配置既可以在编译时完成,也可以在运行时完成:
-
编译时配置:
-
adjust btstack_config.h - 此文件描述系统配置,使用的功能以及内存配置
-
将必要的源代码文件添加到项目中
-
-
运行时配置:
-
蓝牙芯片组
-
运行循环
-
HCI传输层
-
提供的服务
-
包处理程序
-
在下文中,我们概述了设置BTstack所需的配置。从执行运行循环开始,应用程序作为有限状态机运行,处理从BTstack接收的事件。BTstack在逻辑上对事件进行分组,并通过数据包处理程序提供它们。我们在此提供他们的概述。对于需要检查BTstack和蓝牙芯片组之间交换的数据的情况,我们描述了如何配置数据包记录机制。最后,我们概述了蓝牙中的电源管理以及如何在BTstack中节省能源。
在btstack_config.h中配置
文件btstack_config.h包含三个部分:
-
此处列出了 #define HAVE_ *指令。这些指令描述了可用的系统属性,类似于autoconf设置中的config.h。
-
此处列出了 #define ENABLE_ *指令。这些指令列出了启用的属性,最重要的是ENABLE_CLASSIC和ENABLE_BLE。
HAVE_ *指令
系统属性:
#限定 |
描述 |
HAVE_MALLOC |
使用动态内存 |
HAVE_AES128 |
使用平台AES128引擎 - 通常不需要 |
HAVE_BTSTACK_STDIN |
STDIN可用于CLI界面 |
HAVE_MBEDTLS_ECC_P256 |
mbedTLS提供NIST P-256操作,例如LE安全连接 |
嵌入式平台属性:
#限定 |
描述 |
HAVE_EMBEDDED_TIME_MS |
系统提供以毫秒为单位的时间 |
HAVE_EMBEDDED_TICK |
系统提供滴答中断 |
FreeRTOS平台属性:
#限定 |
描述 |
HAVE_FREERTOS_INCLUDE_PREFIX |
FreeRTOS标题位于'freertos'文件夹中(例如ESP32的esp-idf) |
POSIX平台属性:
#限定 |
描述 |
HAVE_POSIX_B300_MAPPED_TO_2000000 |
解决方法是使用2 mbps的串行端口 |
HAVE_POSIX_B600_MAPPED_TO_3000000 |
解决方法使用3 mpbs的串行端口 |
HAVE_POSIX_FILE_IO |
POSIX文件i / o用于hci转储 |
HAVE_POSIX_TIME |
系统提供时间功能 |
LINK_KEY_PATH |
存储链接密钥的路径 |
LE_DEVICE_DB_PATH |
存储LE设备信息的路径 |
|
|
|
|
ENABLE_ *指令
BTstack属性:
#限定 |
描述 |
ENABLE_CLASSIC |
在HCI和L2CAP中启用经典相关代码 |
ENABLE_BLE |
在HCI和L2CAP中启用BLE相关代码 |
ENABLE_EHCILL |
在TI CC256x / WL18xx芯片组上启用eHCILL低功耗模式 |
ENABLE_LOG_DEBUG |
启用log_debug消息 |
ENABLE_LOG_ERROR |
启用log_error消息 |
ENABLE_LOG_INFO |
启用log_info消息 |
ENABLE_SCO_OVER_HCI |
为芯片组启用SCO over HCI(如果支持) |
ENABLE_HFP_WIDE_BAND_SPEECH |
启用对宽带语音的HFP配置文件中使用的mSBC编解码器的支持 |
ENBALE_LE_PERIPHERAL |
在HCI和安全管理器中启用对LE外设角色的支持 |
ENBALE_LE_CENTRAL |
在HCI和安全管理器中启用对LE Central角色的支持 |
ENABLE_LE_SECURE_CONNECTIONS |
启用LE安全连接 |
ENABLE_LE_CENTRAL_AUTO_ENCRYPTION |
在重新连接时为绑定设备启用自动加密 |
ENABLE_GATT_CLIENT_PAIRING |
启用GATT Client以开始配对并重试安全性错误操作 |
ENABLE_MICRO_ECC_FOR_LE_SECURE_CONNECTIONS |
使用micro-ecc库进行ECC操作 |
ENABLE_LE_DATA_CHANNELS |
在基于信用的流 |