LISA Bluetooth 组件 =================== 简介 ---- LISA Bluetooth 是一个蓝牙初始化和管理组件,封装了 BLE 协议栈的初始化流程,提供统一的 API 接口,支持自定义广播数据、扫描响应数据以及 GAP 配置。 主要特性 -------- - **统一初始化**:提供 ``lisa_bluetooth_init()`` 接口,简化协议栈启动流程。 - **自定义广播数据**:支持通过弱符号覆盖机制自定义广播数据。 - **自定义扫描响应**:支持通过弱符号覆盖机制自定义扫描响应数据。 - **自定义 GAP 配置**:支持自定义 MAC 地址、设备名称等 GAP 参数。 - **广播控制**:提供简单的广播开启和停止接口。 API 参考 -------- 核心函数 ~~~~~~~~ .. c:function:: int lisa_bluetooth_init(void) 初始化蓝牙协议栈。 :return: 0 成功,非 0 失败。 .. c:function:: uint8_t app_ble_adv_start(uint8_t adv_id, uint8_t adv_type) 开启 BLE 广播。 :param adv_id: 广播 ID。 :param adv_type: 广播类型 (参考 ``enum app_adv_type``)。 :return: 状态码。 .. c:function:: uint8_t app_ble_adv_stop(uint8_t adv_id) 停止 BLE 广播。 :param adv_id: 广播 ID。 :return: 状态码。 自定义接口 (Weak Symbols) ~~~~~~~~~~~~~~~~~~~~~~~~~ 用户可以在应用程序中实现以下函数来覆盖默认行为。 .. c:function:: const uint8_t* lisa_bt_get_adv_data(uint8_t *len) 获取自定义广播数据。 :param len: [输出] 数据长度指针。 :return: 指向广播数据的指针。 .. c:function:: const uint8_t* lisa_bt_get_scan_rsp_data(uint8_t *len) 获取自定义扫描响应数据。 :param len: [输出] 数据长度指针。 :return: 指向扫描响应数据的指针。 .. c:function:: void lisa_bt_gap_config(ble_gap_cfg_t *cfg) 配置 GAP 参数(如 MAC 地址、设备名称)。 :param cfg: [输入/输出] GAP 配置结构体指针。 使用示例 -------- 自定义广播数据和 GAP 配置 ~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c #include "lisa_bluetooth.h" #include "bt_app_if.h" #include // 自定义广播数据 static const uint8_t user_adv_data[] = { 0x02, 0x01, 0x06, // Flags 0x09, 0x09, 'M', 'Y', '_', 'B', 'L', 'E', // Local Name }; const uint8_t* lisa_bt_get_adv_data(uint8_t *len) { *len = sizeof(user_adv_data); return user_adv_data; } // 自定义 GAP 配置 void lisa_bt_gap_config(ble_gap_cfg_t *cfg) { // 设置自定义 MAC 地址 uint8_t mac[6] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66}; memcpy(cfg->addr.addr, mac, 6); // 设置设备名称 const char *name = "MY_DEVICE"; cfg->name_len = strlen(name); if (cfg->name_len > sizeof(cfg->name)) { cfg->name_len = sizeof(cfg->name); } memcpy(cfg->name, name, cfg->name_len); } int main(void) { // 初始化蓝牙 lisa_bluetooth_init(); // 开启广播 app_ble_adv_start(0, BLE_ADV_GEN); // ... }