| // Copyright 2023 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| //! This crate implements the **Broadcast Assistant** role defined in the | |
| //! Bluetooth SIG Basic Audio Profile (BAP) v1.0.2 specification. | |
| //! | |
| //! A Broadcast Assistant is a Bluetooth Low Energy (LE) device that discovers | |
| //! Broadcast Sources and assists Broadcast Sinks (Scan Delegators) in | |
| //! synchronizing to LE Audio broadcast streams. | |
| //! | |
| //! # Usage Example | |
| //! | |
| //! ```rust,no_run | |
| //! use futures::StreamExt; | |
| //! use bt_broadcast_assistant::assistant::Error; | |
| //! use bt_broadcast_assistant::{event::Event, BroadcastAssistant}; | |
| //! use bt_gatt::central::Central; | |
| //! | |
| //! async fn run_assistant<T: bt_gatt::GattTypes + 'static>(central: T::Central) -> Result<(), Error> { | |
| //! let mut assistant = BroadcastAssistant::<T>::new(central); | |
| //! let mut event_stream = assistant.start()?; | |
| //! while let Some(event_res) = event_stream.next().await { | |
| //! match event_res? { | |
| //! Event::FoundBroadcastSource { peer, advertising_sid, source } => { | |
| //! println!("Discovered complete broadcast source: {:?}", source); | |
| //! } | |
| //! Event::CouldNotParseAdvertisingData { peer, error } => { | |
| //! eprintln!("Failed to parse advertisement from peer {:?}: {:?}", peer, error); | |
| //! } | |
| //! } | |
| //! } | |
| //! Ok(()) | |
| //! } | |
| //! ``` | |
| pub mod assistant; | |
| pub use assistant::event; | |
| pub use assistant::BroadcastAssistant; | |
| pub mod debug; | |
| pub mod types; |