rust/bt-pacs: Expose AudioContexts
New ServerBuilder needs the client to provide available
and supported contexts to start. Add them to the public API.
Test: cargo build
Bug: b/309977153
Change-Id: Ic23162506b80d78837b7ab9930f202c6ec8ee475
Reviewed-on: https://bluetooth-review.googlesource.com/c/bluetooth/+/2761
Reviewed-by: Dayeong Lee <dayeonglee@google.com>
diff --git a/rust/bt-pacs/src/lib.rs b/rust/bt-pacs/src/lib.rs
index b77a577..3e34f35 100644
--- a/rust/bt-pacs/src/lib.rs
+++ b/rust/bt-pacs/src/lib.rs
@@ -2,20 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-use bt_common::core::ltv::LtValue;
+use bt_common::Uuid;
use bt_common::core::CodecId;
+use bt_common::core::ltv::LtValue;
use bt_common::generic_audio::codec_capabilities::CodecCapability;
use bt_common::generic_audio::metadata_ltv::Metadata;
use bt_common::generic_audio::{AudioLocation, ContextType};
use bt_common::packet_encoding::{Decodable, Encodable};
-use bt_common::Uuid;
-use bt_gatt::{client::FromCharacteristic, Characteristic};
+use bt_gatt::{Characteristic, client::FromCharacteristic};
use std::collections::HashSet;
pub mod debug;
pub mod server;
+pub use server::types::AudioContexts;
+
/// UUID from Assigned Numbers section 3.4.
pub const PACS_UUID: Uuid = Uuid::from_u16(0x1850);
@@ -460,12 +462,12 @@
use super::*;
use bt_common::{
- generic_audio::codec_capabilities::{CodecCapabilityType, SamplingFrequency},
Uuid,
+ generic_audio::codec_capabilities::{CodecCapabilityType, SamplingFrequency},
};
use bt_gatt::{
- types::{AttributePermissions, Handle},
Characteristic,
+ types::{AttributePermissions, Handle},
};
use pretty_assertions::assert_eq;
diff --git a/rust/bt-pacs/src/server.rs b/rust/bt-pacs/src/server.rs
index 5531187..c279433 100644
--- a/rust/bt-pacs/src/server.rs
+++ b/rust/bt-pacs/src/server.rs
@@ -17,8 +17,10 @@
//! // Define supported and available audio contexts for this PACS.
//! let supported = AudioContexts::new(...);
//! let available = AudioContexts::new(...);
-//! let pacs_server = ServerBuilder::new(supported,
-//! available).with_sources(...).with_sinks(...).build()?;
+//! let pacs_server = ServerBuilder::new()
+//! .with_sources(...)
+//! .with_sinks(...)
+//! .build(supported, available)?;
//!
//! // Publish the server.
//! pacs_server.publish(gatt_server).expect("publishes fine");
@@ -28,10 +30,10 @@
//! }
use bt_common::generic_audio::ContextType;
+use bt_gatt::Server as _;
use bt_gatt::server::LocalService;
use bt_gatt::server::{ReadResponder, ServiceDefinition, WriteResponder};
use bt_gatt::types::{GattError, Handle};
-use bt_gatt::Server as _;
use futures::task::{Poll, Waker};
use futures::{Future, Stream};
use pin_project::pin_project;
@@ -43,7 +45,7 @@
SupportedAudioContexts,
};
-mod types;
+pub(crate) mod types;
use crate::server::types::*;
#[pin_project(project = LocalServiceProj)]
@@ -394,10 +396,10 @@
mod tests {
use super::*;
- use bt_common::core::{CodecId, CodingFormat};
- use bt_common::generic_audio::codec_capabilities::*;
- use bt_common::generic_audio::AudioLocation;
use bt_common::PeerId;
+ use bt_common::core::{CodecId, CodingFormat};
+ use bt_common::generic_audio::AudioLocation;
+ use bt_common::generic_audio::codec_capabilities::*;
use bt_gatt::server;
use bt_gatt::test_utils::{FakeServer, FakeServerEvent, FakeTypes};
use bt_gatt::types::ServiceKind;
diff --git a/rust/bt-pacs/src/server/types.rs b/rust/bt-pacs/src/server/types.rs
index db45e52..a718502 100644
--- a/rust/bt-pacs/src/server/types.rs
+++ b/rust/bt-pacs/src/server/types.rs
@@ -4,11 +4,11 @@
//! Define types and trait implementations specific to the PACS server.
+use bt_gatt::Characteristic;
use bt_gatt::client::FromCharacteristic;
use bt_gatt::types::{
AttributePermissions, CharacteristicProperties, CharacteristicProperty, Handle, SecurityLevels,
};
-use bt_gatt::Characteristic;
use std::collections::HashSet;
@@ -132,7 +132,6 @@
}
impl AudioContexts {
- #[cfg(test)]
pub fn new(sink: HashSet<ContextType>, source: HashSet<ContextType>) -> Self {
AudioContexts { sink, source }
}