trouble-host

Crates

git

Versions

default

Flavors

StackBuilder

Struct StackBuilder 

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

Builder for configuring the BLE stack before use.

Call build() to finalize configuration and obtain the Stack.

Implementations§

Source§

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

Source

pub fn register_l2cap_spsm(self, spsm: u16) -> Self

Register an L2CAP SPSM (Simplified Protocol/Service Multiplexer) for accepting incoming connections.

Source

pub fn set_random_address(self, address: Address) -> Self

Set the random address used by this host.

Source

pub fn enable_privacy(self, irk: IdentityResolvingKey) -> Self

Enable BLE address privacy with the given Identity Resolving Key (IRK).

When privacy is enabled, the controller generates Resolvable Private Addresses (RPAs) that rotate periodically, preventing device tracking while allowing bonded peers to resolve the device’s identity.

The IRK should be persisted across reboots so bonded peers can continue to resolve our RPAs. Generate a new IRK using a CSPRNG for first-time setup.

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 set_rpa_timeout(self, timeout: Duration) -> Self

Set the RPA (Resolvable Private Address) rotation timeout.

The controller will automatically generate a new RPA after this duration. Default is 900 seconds (15 minutes) per the BLE specification.

Source

pub fn set_random_generator_seed<RNG: RngCore + CryptoRng>( self, _random_generator: &mut RNG, ) -> Self

Set the random generator seed for random generator used by security manager.

Source

pub fn set_io_capabilities(self, io_capabilities: IoCapabilities) -> Self

Set the IO capabilities used by the security manager.

Only relevant if the feature security is enabled.

Source

pub fn build(self) -> Stack<'stack, C, P>

Finalize configuration and return the stack.

Use the returned Stack for runtime operations: obtain a Runner via Stack::runner(), and Central or Peripheral handles via Stack::central() and Stack::peripheral().

Trait Implementations§

Source§

impl<'stack, C, P: PacketPool> Drop for StackBuilder<'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 StackBuilder<'stack, C, P>

§

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

§

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

§

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

§

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

§

impl<'stack, C, P> !UnwindSafe for StackBuilder<'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