pub struct HostProxy { /* private fields */ }

Implementations§

source§

impl HostProxy

source

pub fn new(channel: AsyncChannel) -> Self

Create a new Proxy for fuchsia.bluetooth.host/Host.

source

pub fn take_event_stream(&self) -> HostEventStream

Get a Stream of events from the remote end of the protocol.

§Panics

Panics if the event stream was already taken.

source

pub fn request_protocol(&self, payload: ProtocolRequest) -> Result<(), Error>

Fulfills a given protocol request. bt-host will start processing FIDL messages. If the request cannot be fulfilled, the bt-host device will close its end of the given channel.

source

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

Shuts down the host, ending all active Bluetooth procedures:

  • All FIDL interface handles associated with this host are closed and all connections initiated via FIDL clients are severed.
  • All scan, discovery, and advertising procedures are stopped.
  • Bonded devices are cleared and removed from the auto-connect lists.
  • Auto-connected peripherals are disconnected.

This effectively resets the host to its initial state and the host remains available for future requests.

The Host will continue to send OnDeviceUpdated events as procedures get terminated.

The Host protocol will close when shutdown is complete.

source

pub fn watch_state(&self) -> QueryResponseFut<HostInfo>

Returns information about the Bluetooth host subsystem and controller managed by this Host instance. If there has been no change to the state since the last call to this method, the response will be deferred until there is a change.

The returned info structure will be populated with the current state of the bt-host device. However the active parameter will never be populated. This field is managed by a higher layer.

source

pub fn set_local_data(&self, payload: &HostData) -> Result<(), Error>

Assigns local data to this host.

source

pub fn watch_peers(&self) -> QueryResponseFut<(Vec<Peer>, Vec<PeerId>)>

Monitors updates for connectable peers known to the system. Replies only when peers have been added, modified, or removed since the most recent call to WatchPeers().

Peers are added and updated as new information is obtained during discovery, connection establishment, and bonding procedures.

Peers are removed either: a. explicitly via [fuchsia.bluetooth.host.Host/Forget], or b. no transmission has been received from the peer for an internally determined duration of time and the peer is neither connected nor bonded.

  • response updated Peers that were added or updated since the last call to WatchPeers().
  • response removed Ids of peers that were removed since the last call to WatchPeers().
source

pub fn set_local_name( &self, local_name: &str ) -> QueryResponseFut<HostSetLocalNameResult>

Sets the local name for this host device.

source

pub fn set_device_class( &self, device_class: &DeviceClass ) -> QueryResponseFut<HostSetDeviceClassResult>

Sets the device class for this host device.

source

pub fn start_discovery(&self) -> QueryResponseFut<HostStartDiscoveryResult>

Initiates a general discovery procedure for BR/EDR and LE devices. On success, discovered peers can be monitored using the [fuchsia.bluetooth.host/Host.WatchPeers] method.

On the LE transport, only general-discoverable and connectable peripherals will be reported.

Discovery will continue until it is terminated via StopDiscovery() or if the Host protocol channel gets closed. If the device does not support BR/EDR, only LE discovery will be performed.

source

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

Terminates discovery if one was started via StartDiscovery().

NOTE: If another client is performing discovery (e.g. via its own le.Central interface handle), then the system will continue performing device discovery even if this method results in success.

source

pub fn set_connectable( &self, enabled: bool ) -> QueryResponseFut<HostSetConnectableResult>

Sets whether this host should be connectable.

source

pub fn set_discoverable( &self, enabled: bool ) -> QueryResponseFut<HostSetDiscoverableResult>

Sets whether this host should be discoverable.

source

pub fn connect(&self, id: &PeerId) -> QueryResponseFut<HostConnectResult>

Establish a BR/EDR and/or LE connection to the peer with identifier id:

  • If the peer is known to support the BR/EDR transport then a logical link over that transport will be established to the device. If the connection attempt is successful, local services registered using “RequestProfile()” will be available to the peer. Traditional services discovered on the peer will be notified to local services asynchronously.

  • If the peer is known to support the LE transport then a logical link over that transport will be established to the device. If the connection attempt is successful, GATT services in the local database (populated via RequestGattServer()) will become available to the peer. Similarly, remote GATT services that are discovered on the peer will become available to holders of a gatt.Client capability and to device drivers that can bind to the bt-gatt-svc class of devices.

The result of the procedure will be communicated via status. If the remote device supports both BR/EDR and LE transports and a link cannot be established over both, then an error Status will be returned and neither transport will be connected.

source

pub fn disconnect(&self, id: &PeerId) -> QueryResponseFut<HostDisconnectResult>

Terminate all connections (BR/EDR or LE) to the remote peer with identifier id.

  • request id The identifier of the peer to disconnect.
  • response status Contains an error if either LE or BR/EDR transport fails to disconnect. Contains success when both transports are successfully disconnected or if the peer is already disconnected.
source

pub fn pair( &self, id: &PeerId, options: &PairingOptions ) -> QueryResponseFut<HostPairResult>

Initiates pairing to the peer with the supplied id and options. Returns an error if no connected peer with id is found or the pairing procedure fails.

If options specifies a higher security level than the current pairing, this method attempts to raise the security level. Otherwise this method has no effect and returns success.

NOTE: This is intended to satisfy test scenarios that require pairing procedures to be initiated without relying on service access. In normal operation, Bluetooth security is enforced during service access.

source

pub fn forget(&self, id: &PeerId) -> QueryResponseFut<HostForgetResult>

Deletes a peer from the Bluetooth host. If the peer is connected, it will be disconnected. device_id will no longer refer to any peer, even if a device with the same address is discovered again.

Returns success after no peer exists that’s identified by device_id (even if it didn’t exist before Forget), failure if the peer specified by device_id could not be disconnected or deleted and still exists.

source

pub fn enable_background_scan(&self, enabled: bool) -> Result<(), Error>

Enable or disable a passive LE background scan. When enabled, the bt-host device will continuously perform a passive LE scan in the background when no device discovery sessions are active and accept connection requests from bonded peripherals.

source

pub fn enable_privacy(&self, enabled: bool) -> Result<(), Error>

Enable or disable the LE privacy feature. When enabled, the bt-host device will use a private device address in all LE procedures. When disabled, the public identity address will be used instead (which is the default).

source

pub fn set_br_edr_security_mode( &self, bredr_security_mode: BrEdrSecurityMode ) -> Result<(), Error>

Set the GAP BR/EDR Security Mode of the host. bt-host only supports encrypted, connection-based security modes, i.e. Mode 4 and Secure Connections Only mode. If the security mode is set to Secure Connections Only, any existing encrypted connections which do not meet the security requirements of Secure Connections Only mode will be disconnected.

source

pub fn set_le_security_mode( &self, le_security_mode: LeSecurityMode ) -> Result<(), Error>

Set the GAP LE Security Mode of the host. bt-host only supports encrypted, connection-based security modes, i.e. Mode 1 and Secure Connections Only mode. If the security mode is set to Secure Connections Only, any existing encrypted connections which do not meet the security requirements of Secure Connections Only mode will be disconnected.

source

pub fn set_pairing_delegate( &self, input: InputCapability, output: OutputCapability, delegate: ClientEnd<PairingDelegateMarker> ) -> Result<(), Error>

Assigns the pairing delegate that will respond to authentication challenges using the given I/O capabilities. Calling this method cancels any on-going pairing procedure started using a previous delegate. Pairing requests will be rejected if no PairingDelegate has been assigned.

source

pub fn restore_bonds( &self, bonds: &[BondingData] ) -> QueryResponseFut<Vec<BondingData>>

Restores existing bonded devices to the host. An authenticated session will be established for future connections using the provided bonding data.

If bonding data for the LE transport is available, then the host will automatically establish a connection when the peer is in range and connectable.

If any of the entries in bonds could not be restored, then they will be returned in errors. This can happen for entries that are malformed and for peers that are already known to the bt-host. An empty errors list indicates that all bonds were successfully restored.

Trait Implementations§

source§

impl Clone for HostProxy

source§

fn clone(&self) -> HostProxy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HostProxy

source§

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

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

impl HostProxyInterface for HostProxy

source§

fn request_protocol(&self, payload: ProtocolRequest) -> Result<(), Error>

source§

fn shutdown(&self) -> Result<(), Error>

§

type WatchStateResponseFut = QueryResponseFut<HostInfo>

source§

fn watch_state(&self) -> Self::WatchStateResponseFut

source§

fn set_local_data(&self, payload: &HostData) -> Result<(), Error>

§

type WatchPeersResponseFut = QueryResponseFut<(Vec<Peer>, Vec<PeerId>)>

source§

fn watch_peers(&self) -> Self::WatchPeersResponseFut

§

type SetLocalNameResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn set_local_name(&self, local_name: &str) -> Self::SetLocalNameResponseFut

§

type SetDeviceClassResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn set_device_class( &self, device_class: &DeviceClass ) -> Self::SetDeviceClassResponseFut

§

type StartDiscoveryResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn start_discovery(&self) -> Self::StartDiscoveryResponseFut

source§

fn stop_discovery(&self) -> Result<(), Error>

§

type SetConnectableResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn set_connectable(&self, enabled: bool) -> Self::SetConnectableResponseFut

§

type SetDiscoverableResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn set_discoverable(&self, enabled: bool) -> Self::SetDiscoverableResponseFut

§

type ConnectResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn connect(&self, id: &PeerId) -> Self::ConnectResponseFut

§

type DisconnectResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn disconnect(&self, id: &PeerId) -> Self::DisconnectResponseFut

§

type PairResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn pair(&self, id: &PeerId, options: &PairingOptions) -> Self::PairResponseFut

§

type ForgetResponseFut = QueryResponseFut<Result<(), Error>>

source§

fn forget(&self, id: &PeerId) -> Self::ForgetResponseFut

source§

fn enable_background_scan(&self, enabled: bool) -> Result<(), Error>

source§

fn enable_privacy(&self, enabled: bool) -> Result<(), Error>

source§

fn set_br_edr_security_mode( &self, bredr_security_mode: BrEdrSecurityMode ) -> Result<(), Error>

source§

fn set_le_security_mode( &self, le_security_mode: LeSecurityMode ) -> Result<(), Error>

source§

fn set_pairing_delegate( &self, input: InputCapability, output: OutputCapability, delegate: ClientEnd<PairingDelegateMarker> ) -> Result<(), Error>

§

type RestoreBondsResponseFut = QueryResponseFut<Vec<BondingData>>

source§

fn restore_bonds(&self, bonds: &[BondingData]) -> Self::RestoreBondsResponseFut

source§

impl Proxy for HostProxy

§

type Protocol = HostMarker

The protocol which this Proxy controls.
source§

fn from_channel(inner: AsyncChannel) -> Self

Create a proxy over the given channel.
source§

fn into_channel(self) -> Result<AsyncChannel, Self>

Attempt to convert the proxy back into a channel. Read more
source§

fn as_channel(&self) -> &AsyncChannel

Get a reference to the proxy’s underlying channel. Read more
§

fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>

Attempt to convert the proxy back into a client end. Read more
§

fn is_closed(&self) -> bool

Returns true if the proxy has received the PEER_CLOSED signal.
§

fn on_closed(&self) -> OnSignals<'_, Unowned<'_, Handle>>

Returns a future that completes when the proxy receives the PEER_CLOSED signal.

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
§

impl<T> Encode<Ambiguous1> for T

§

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
§

impl<T> Encode<Ambiguous2> for T

§

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> 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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.
§

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