pub struct ProfileServerFacade { /* private fields */ }
Expand description

Perform Profile Server operations.

Note this object is shared among all threads created by the server.

Implementations§

source§

impl ProfileServerFacade

source

pub fn new() -> ProfileServerFacade

source

pub fn create_profile_server_proxy(&self) -> Result<ProfileProxy, Error>

Creates a Profile Server Proxy.

source

pub async fn init_profile_server_proxy(&self) -> Result<(), Error>

Initialize the ProfileServer proxy.

source

pub fn generate_service_class_uuids( &self, uuid_list: &Vec<Value> ) -> Result<Vec<Uuid>, Error>

Returns a list of String UUIDs from a Serde JSON list of Values.

§Arguments
  • uuid_list - A serde json list of Values to parse. Example input: ‘uuid_list’: [“00000001-0000-1000-8000-00805F9B34FB”]
source

pub fn generate_protocol_descriptors( &self, protocol_descriptors: &Vec<Value> ) -> Result<Vec<ProtocolDescriptor>, Error>

Returns a list of ProtocolDescriptors from a Serde JSON input.

Defined Protocol Identifiers for the Protocol Descriptor We intentionally omit deprecated profile identifiers. From Bluetooth Assigned Numbers: https://www.bluetooth.com/specifications/assigned-numbers/service-discovery

§Arguments
  • protocol_descriptors: A Json Representation of the ProtocolDescriptors to set up. Example: ‘protocol_descriptors’: [ { ‘protocol’: 25, # u64 Representation of ProtocolIdentifier::AVDTP ‘params’: [ { ‘data’: 0x0103 # to indicate 1.3 }, { ‘data’: 0x0105 # to indicate 1.5 } ] }, { ‘protocol’: 1, # u64 Representation of ProtocolIdentifier::SDP ‘params’: [{ ‘data’: 0x0019 }] } ]
source

pub fn generate_profile_descriptors( &self, profile_descriptors: &Vec<Value> ) -> Result<Vec<ProfileDescriptor>, Error>

Returns a list of ProfileDescriptors from a Serde JSON input.

Identifiers that are valid for Bluetooth Classes / Profiles We intentionally omit classes and profile IDs that are unsupported, deprecated, or reserved for use by Fuchsia Bluetooth. From Bluetooth Assigned Numbers for SDP https://www.bluetooth.com/specifications/assigned-numbers/service-discovery

§Arguments
  • profile_descriptors: A Json Representation of the ProtocolDescriptors. Example: ‘profile_descriptors’: [{ ‘profile_id’: 0x110D, # Represents ServiceClassProfileIdentifier::AdvancedAudioDistribution ‘major_version’: 1, # u64 representation of the major_version. ‘minor_version’: 3, # u64 representation of the minor_version. }],
source

pub fn generate_information( &self, information_list: &Vec<Value> ) -> Result<Vec<Information>, Error>

Returns a list of Information objects from a Serde JSON input.

§Arguments
  • information_list: A Json Representation of the Information objects. Example: ‘information_list’: [{ ‘language’: “en”, ‘name’: “A2DP”, ‘description’: “Advanced Audio Distribution Profile”, ‘provider’: “Fuchsia” }],
source

pub fn generate_additional_attributes( &self, additional_attributes_list: &Vec<Value> ) -> Result<Vec<Attribute>, Error>

Returns a list of Attributes from a Serde JSON input.

§Arguments
  • additional_attributes_list: A Json Representation of the Attribute objects. Example: ‘additional_attributes’: [{ ‘id’: 201, ‘element’: { ‘data’: int(sig_uuid_constants[‘AVDTP’], 16) } }]
source

pub async fn monitor_connection_receiver( requests: ConnectionReceiverRequestStream, end_signal: Receiver<()> ) -> Result<(), Error>

Monitor the connection request stream, printing outputs when connections happen.

source

pub async fn monitor_search_results( requests: SearchResultsRequestStream ) -> Result<(), Error>

Monitor the search results stream, printing logs when results are produced.

source

pub async fn add_service(&self, args: Value) -> Result<usize, Error>

Adds a service record based on a JSON dictrionary.

§Arguments:
  • args : A Json object representing the service to add: Example Python dictionary pre JSON conversion args: { ‘service_class_uuids’: [“0001”], ‘protocol_descriptors’: [ { ‘protocol’: int(sig_uuid_constants[‘AVDTP’], 16), ‘params’: [ { ‘data’: 0x0103 } ] }, { ‘protocol’: int(sig_uuid_constants[‘SDP’], 16), ‘params’: [{ ‘data’: int(sig_uuid_constants[‘AVDTP’], 16), }] } ], ‘profile_descriptors’: [{ ‘profile_id’: int(sig_uuid_constants[‘AdvancedAudioDistribution’], 16), ‘major_version’: 1, ‘minor_version’: 3, }], ‘additional_protocol_descriptors’: [{ ‘protocol’: int(sig_uuid_constants[‘L2CAP’], 16), ‘params’: [{ ‘data’: int(sig_uuid_constants[‘AVDTP’], 16), }] }], ‘information’: [{ ‘language’: “en”, ‘name’: “A2DP”, ‘description’: “Advanced Audio Distribution Profile”, ‘provider’: “Fuchsia” }], ‘additional_attributes’: [{ ‘id’: 201, ‘element’: { ‘data’: int(sig_uuid_constants[‘AVDTP’], 16) } }] }
source

pub async fn remove_service(&self, service_id: usize) -> Result<(), Error>

Removes a remote service by id.

§Arguments:
  • service_id: The service id to remove.
source

pub fn get_service_class_profile_identifier_from_id( &self, raw_profile_id: &Value ) -> Result<ServiceClassProfileIdentifier, Error>

source

pub async fn connect( &self, id: String, psm: u16, mode: &str ) -> Result<(), Error>

Sends an outgoing l2cap connection request

§Arguments:
  • id: String - The peer id to connect to.
  • psm: u16 - The PSM value to connect to: Valid PSM values: https://www.bluetooth.com/specifications/assigned-numbers/logical-link-control/
  • mode: String - The channel mode to connect over Available Values: BASIC, ERTM
source

pub async fn cleanup(&self) -> Result<(), Error>

Cleanup any Profile Server related objects.

Trait Implementations§

source§

impl Debug for ProfileServerFacade

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Facade for ProfileServerFacade

source§

fn handle_request<'life0, 'async_trait>( &'life0 self, method: String, args: Value ) -> Pin<Box<dyn Future<Output = Result<Value, Error>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Asynchronously handle the incoming request for the given method and arguments, returning a future object representing the pending operation.
source§

fn cleanup(&self)

In response to a request to /cleanup, cleanup any cross-request state.
source§

fn print(&self)

In response to a request to /print, log relevant facade state.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> DebugExt for T
where T: Debug,

source§

fn debug(&self) -> String

source§

impl<T> Encode<Ambiguous1> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> Encode<Ambiguous2> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Cast the given object into a dyn std::any::Any.
source§

impl<T, U> IntoExt<U> for T
where U: FromExt<T>,

source§

fn into_ext(self) -> U

Performs the conversion.
source§

impl<T> OptionalField for T
where T: ?Sized,

source§

const PRESENT: Presence<Self> = _

source§

const ABSENT: Presence<Self> = _

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T, U> TryIntoExt<U> for T
where U: TryFromExt<T>,

§

type Error = <U as TryFromExt<T>>::Error

source§

fn try_into_ext(self) -> Result<U, <T as TryIntoExt<U>>::Error>

Tries to perform the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<St> WithTag for St

source§

fn tagged<T>(self, tag: T) -> Tagged<T, St>

Produce a new stream from this one which yields item tupled with a constant tag