trouble-host

Crates

git

Versions

default

Flavors

Stack

Struct Stack 

Source
pub struct Stack<'stack, C, P: PacketPool> { /* private fields */ }
Expand description

Contains the host stack

Implementations§

Source§

impl<'stack, C: Controller, P: PacketPool> Stack<'stack, C, P>

Source

pub fn runner(&self) -> Runner<'_, C, P>

Obtain a Runner to drive the BLE host.

The runner must be polled (e.g. via Runner::run()) to drive the BLE host.

Source

pub fn central(&self) -> Central<'_, C, P>

Obtain a Central handle for the central BLE role.

This is a lightweight handle that can be created multiple times. Concurrent connect operations are serialized internally.

Source

pub fn peripheral(&self) -> Peripheral<'_, C, P>

Obtain a Peripheral handle for the peripheral BLE role.

This is a lightweight handle that can be created multiple times. Concurrent advertise operations are serialized internally.

Source

pub fn set_io_capabilities(&self, io_capabilities: IoCapabilities)

Set the IO capabilities used by the security manager.

Only relevant if the feature security is enabled.

Source

pub async fn set_rpa_timeout( &self, timeout: Duration, ) -> Result<(), BleHostError<C::Error>>

Set the RPA (Resolvable Private Address) rotation timeout.

Updates the stored timeout. If the host is already initialized, also sends the LeSetResolvablePrivateAddrTimeout HCI command to the controller. If called before initialization (e.g. during pre-server setup), the value will be used when the controller is initialized.

Valid range is 1s to 3600s.

Source

pub async fn command<T>( &self, cmd: T, ) -> Result<T::Return, BleHostError<C::Error>>
where T: SyncCmd, C: ControllerCmdSync<T>,

Run a HCI command and return the response.

Source

pub async fn async_command<T>( &self, cmd: T, ) -> Result<(), BleHostError<C::Error>>
where T: AsyncCmd, C: ControllerCmdAsync<T>,

Run an async HCI command where the response will generate an event later.

Source

pub async fn read_minimum_supported_connection_interval( &self, ) -> Result<<LeReadMinimumSupportedConnectionInterval as SyncCmd>::Return, BleHostError<C::Error>>

Read the minimum supported connection interval from the controller.

Source

pub fn metrics<F: FnOnce(&HostMetrics) -> R, R>(&self, f: F) -> R

Read current host metrics

Source

pub fn log_status(&self, verbose: bool)

Log status information of the host

Source

pub fn get_local_oob_data(&self) -> OobData

Generate local OOB data for LESC pairing.

The returned data should be transferred to the peer device via an out-of-band channel (NFC, QR code, etc.) before pairing begins.

Source

pub fn get_local_address(&self) -> Option<Address>

Get the local address configured on the security manager.

Source

pub fn is_privacy_enabled(&self) -> bool

Check whether BLE address privacy is enabled.

Source

pub fn add_bond_information( &self, bond_information: BondInformation, ) -> Result<(), Error>

Add bond information for a peer device.

After bonds are added or removed (either directly or via pairing), the controller’s resolving list is updated automatically the next time advertising, scanning, and connecting are all idle. Applications should ensure periodic idle windows to allow resolving list updates to take effect.

Source

pub fn remove_bond_information(&self, identity: Identity) -> Result<(), Error>

Remove a bonded device.

After bonds are added or removed (either directly or via pairing), the controller’s resolving list is updated automatically the next time advertising, scanning, and connecting are all idle. Applications should ensure periodic idle windows to allow resolving list updates to take effect.

Source

pub fn with_bond_information<R>( &self, f: impl FnOnce(&[BondInformation]) -> R, ) -> R

Access bonded devices

Source

pub fn get_connection_by_peer_address( &self, peer_address: Address, ) -> Option<Connection<'_, P>>

Get a connection by its peer address

Source

pub fn get_connected_handle( &self, handle: ConnHandle, ) -> Option<Connection<'_, P>>

Get a connection by its handle

Source

pub fn connections(&self) -> ConnectedIter<'_, P>

Iterate over all currently connected connections.

Trait Implementations§

Source§

impl<'stack, C, P: PacketPool> Drop for Stack<'stack, C, P>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'stack, C, P> !Freeze for Stack<'stack, C, P>

§

impl<'stack, C, P> !RefUnwindSafe for Stack<'stack, C, P>

§

impl<'stack, C, P> !Send for Stack<'stack, C, P>

§

impl<'stack, C, P> !Sync for Stack<'stack, C, P>

§

impl<'stack, C, P> Unpin for Stack<'stack, C, P>

§

impl<'stack, C, P> !UnwindSafe for Stack<'stack, C, P>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V