6个版本

0.3.0-alpha.12021年12月9日
0.2.1 2021年7月30日
0.1.2 2021年7月21日
0.1.0 2020年11月29日

#12#gatt


用于 gatt

MIT/Apache

75KB
2K SLoC

蓝牙低功耗属性协议库。

参考 BLUETOOTH 核心规范 第5.1版 | 第3卷,第F部分 属性协议 (ATT)

示例

use att::packet as pkt;
use att::server::*;

/// GAP / GATT Service only (with no Characteristics)
#[derive(Debug)]
struct MyHandler;

impl Handler for MyHandler {
    fn handle_read_by_group_type_request(
        &mut self,
        item: &pkt::ReadByGroupTypeRequest,
    ) -> Result<pkt::ReadByGroupTypeResponse, ErrorResponse> {
        match (
            item.starting_handle().clone().into(),
            item.ending_handle().clone().into(),
        ) {
            (0x0001, 0xFFFF) => {
                Ok(vec![
                    (0x0001.into(), 0x000B.into(), vec![0x00, 0x18].into()), // Generic Access
                    (0x000C.into(), 0x000F.into(), vec![0x01, 0x18].into()), // Generic Attribute
                ]
                .into_iter()
                .collect())
            }
            (x, _) => Err(ErrorResponse::new(
                x.clone().into(),
                pkt::ErrorCode::AttributeNotFound,
            )),
        }
    }
}

#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()> {
    let server = Server::new()?;
    // let connection = server.accept().await?;
    // connection.run(MyHandler).await?;
    Ok(())
}

支持的目标

  • x86_64-unknown-linux-gnu

在Linux 5.9 (Arch Linux)上测试

许可证

许可方式为以下之一

贡献

除非您明确说明,否则您提交的任何贡献,根据Apache-2.0许可证定义,均应双许可,如上所述,不附加任何额外条款或条件!

依赖项

~4–16MB
~152K SLoC