Struct ManagerConfig

Source
pub struct ManagerConfig {
    pub scan_options: ScanOptions,
    pub default_reconnect_options: ReconnectOptions,
    pub event_capacity: usize,
    pub health_check_interval: Duration,
    pub max_concurrent_connections: usize,
    pub use_adaptive_interval: bool,
    pub min_health_check_interval: Duration,
    pub max_health_check_interval: Duration,
    pub default_priority: DevicePriority,
    pub use_connection_validation: bool,
}
Expand description

Configuration for the device manager.

Fields§

§scan_options: ScanOptions

Default scan options.

§default_reconnect_options: ReconnectOptions

Default reconnect options for new devices.

The health monitor (DeviceManager::start_health_monitor) waits between automatic reconnects of a device as these options say, and stops after max_attempts failures in a row, emitting one DeviceEvent::Error; DeviceManager::connect starts over. With max_attempts of 0 it never reconnects a device that has been connected, but a device that has never been connected, such as one just added, still gets one attempt.

The default is ReconnectOptions::unlimited since 0.3.0. With the five attempts of ReconnectOptions::default(), the monitor would give up on a device after about a minute.

§event_capacity: usize

Event channel capacity.

§health_check_interval: Duration

Health check interval for auto-reconnect (base interval).

§max_concurrent_connections: usize

Maximum number of concurrent BLE connections.

Most BLE adapters support 5-7 concurrent connections. Attempting to connect beyond this limit will return an error. Set to 0 for no limit (not recommended).

§use_adaptive_interval: bool

Whether to use adaptive health check intervals.

When enabled, the health check interval will automatically adjust:

  • Decrease (more frequent) when connections are unstable
  • Increase (less frequent) when connections are stable
§min_health_check_interval: Duration

Minimum health check interval (for adaptive mode).

§max_health_check_interval: Duration

Maximum health check interval (for adaptive mode).

§default_priority: DevicePriority

Default priority for new devices.

§use_connection_validation: bool

Whether to use connection validation (keepalive checks).

When enabled, health checks use device.validate_connection(), which reads the current measurements to verify the connection is alive. That read needs no pairing that reading the sensor doesn’t. This catches “zombie connections” but uses more power.

When disabled, health checks only ask the Bluetooth stack whether the device is connected. A zombie connection passes that check, so the health monitor replaces it only once the stack reports it lost.

Implementations§

Source§

impl ManagerConfig

Source

pub fn with_max_connections(self, max: usize) -> Self

Create a configuration with a specific connection limit.

Source

pub fn unlimited_connections(self) -> Self

Create a configuration with no connection limit (not recommended).

Source

pub fn adaptive_interval(self, enabled: bool) -> Self

Enable or disable adaptive health check intervals.

Source

pub fn health_check_interval(self, interval: Duration) -> Self

Set the health check interval (base interval for adaptive mode).

Source

pub fn default_priority(self, priority: DevicePriority) -> Self

Set the default device priority.

Source

pub fn connection_validation(self, enabled: bool) -> Self

Enable or disable connection validation in health checks.

Trait Implementations§

Source§

impl Clone for ManagerConfig

Source§

fn clone(&self) -> ManagerConfig

Returns a duplicate 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 ManagerConfig

Source§

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

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

impl Default for ManagerConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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

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.
§

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,