Crate att[][src]

Expand description

Bluetooth Low Energy Attribute Protocol Library.

ref BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 3, Part F Attribute Protocol (ATT)

Example

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(())
}

Supported target

  • x86_64-unknown-linux-gnu

Tested on Linux 5.9 (Arch Linux)

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.!

Re-exports

pub use crate::uuid::Uuid;
pub use server::Server;

Modules

ATT Protocol Packet

ATT Protocol UUIDs.

Structs

ATT Protocol Error Response

Attribute Handle.

Enums

Bluetooth Device Address

Traits

ATT Protocol Handler