LISA Bluetooth 组件

简介

LISA Bluetooth 是一个蓝牙初始化和管理组件,封装了 BLE 协议栈的初始化流程,提供统一的 API 接口,支持自定义广播数据、扫描响应数据以及 GAP 配置。

主要特性

  • 统一初始化:提供 lisa_bluetooth_init() 接口,简化协议栈启动流程。

  • 自定义广播数据:支持通过弱符号覆盖机制自定义广播数据。

  • 自定义扫描响应:支持通过弱符号覆盖机制自定义扫描响应数据。

  • 自定义 GAP 配置:支持自定义 MAC 地址、设备名称等 GAP 参数。

  • 广播控制:提供简单的广播开启和停止接口。

API 参考

核心函数

int lisa_bluetooth_init(void)

初始化蓝牙协议栈。

Returns:

0 成功,非 0 失败。

uint8_t app_ble_adv_start(uint8_t adv_id, uint8_t adv_type)

开启 BLE 广播。

Parameters:
  • adv_id – 广播 ID。

  • adv_type – 广播类型 (参考 enum app_adv_type)。

Returns:

状态码。

uint8_t app_ble_adv_stop(uint8_t adv_id)

停止 BLE 广播。

Parameters:
  • adv_id – 广播 ID。

Returns:

状态码。

自定义接口 (Weak Symbols)

用户可以在应用程序中实现以下函数来覆盖默认行为。

const uint8_t *lisa_bt_get_adv_data(uint8_t *len)

获取自定义广播数据。

Parameters:
  • len – [输出] 数据长度指针。

Returns:

指向广播数据的指针。

const uint8_t *lisa_bt_get_scan_rsp_data(uint8_t *len)

获取自定义扫描响应数据。

Parameters:
  • len – [输出] 数据长度指针。

Returns:

指向扫描响应数据的指针。

void lisa_bt_gap_config(ble_gap_cfg_t *cfg)

配置 GAP 参数(如 MAC 地址、设备名称)。

Parameters:
  • cfg – [输入/输出] GAP 配置结构体指针。

使用示例

自定义广播数据和 GAP 配置

#include "lisa_bluetooth.h"
#include "bt_app_if.h"
#include <string.h>

// 自定义广播数据
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);

    // ...
}