blob: 5a814eddaed9e1b842d66c654c65ca6664061ac0 [file]
// 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;