#蓝牙 #esp32 #ble

bluedroid

ESP32 Bluedroid 蓝牙堆栈的封装器

11 个版本

0.3.7 2023年3月6日
0.3.6 2022年11月24日
0.2.0 2022年10月30日
0.1.1 2022年10月22日

#44#esp32

每月下载量 39

MIT 许可证

105KB
2.5K SLoC

Bluedroid Rust 封装器

crates.io build docs.rs crates.io crates.io

这是 ESP32 Bluedroid 蓝牙堆栈的 Rust 封装器。它允许您使用声明性 API 构建一个 GATT 服务器,并支持多线程。

使用方法

声明一个特性

  let manufacturer_name_characteristic = Characteristic::new(BleUuid::Uuid16(0x2A29))
        .name("Manufacturer Name String")
        .permissions(AttributePermissions::new().read().write())
        .properties(CharacteristicProperties::new().read().write().notify())
        .max_value_length(20)
        .on_write(|data, param| {
            info!("Received write request: {:?} {:?}", data, param);
        })
        .show_name()
        .set_value("Hello, world!".as_bytes().to_vec())
        .build();

声明一个服务

let device_information_service = Service::new(BleUuid::Uuid16(0x180A))
    .name("Device Information")
    .primary()
    .characteristic(&manufacturer_name_characteristic)
    .build();

声明一个配置文件并启动服务器

let profile = Profile::new(0x0001)
    .name("Device Information")
    .service(&device_information_service)
    .build();

GLOBAL_GATT_SERVER
    .lock()
    .unwrap()
    .profile(profile)
    .device_name("ESP32-GATT-Server")
    .appearance(Appearance::WristWornPulseOximeter)
    .advertise_service(&device_information_service)
    .start();

功能

  • GATT 服务器
    • 广告
      • 自定义名称
      • 自定义外观
    • 多个应用程序
    • 服务
      • 声明
      • 广告
    • 特性
      • 声明
      • 广播
      • 读取
        • 静态(由堆栈提供)
        • 动态(由应用程序提供,带有回调)
      • 写入
        • 带响应
        • 不带响应
      • 通知
      • 指示
    • 描述符
      • 声明
      • 读取
      • 写入
    • 加密
  • GATT 客户端

    目前没有计划实现 GATT 客户端 API。欢迎贡献。

  • BR/EDR

    目前没有计划实现蓝牙经典 API。欢迎贡献。

依赖项

~5–14MB
~181K SLoC