Trait Central

Source
pub trait Central:
    Send
    + Sync
    + Clone {
    type Peripheral: Peripheral;

    // Required methods
    fn events<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = CentralEvent> + Send>>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn start_scan<'life0, 'async_trait>(
        &'life0 self,
        filter: ScanFilter,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn stop_scan<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn peripherals<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<Self::Peripheral>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn peripheral<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: &'life1 PeripheralId,
    ) -> Pin<Box<dyn Future<Output = Result<Self::Peripheral>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn add_peripheral<'life0, 'life1, 'async_trait>(
        &'life0 self,
        address: &'life1 PeripheralId,
    ) -> Pin<Box<dyn Future<Output = Result<Self::Peripheral>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn adapter_info<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}
Expand description

Central is the “client” of BLE. It’s able to scan for and establish connections to peripherals. A Central can be obtained from Manager::adapters().

Required Associated Types§

Required Methods§

Source

fn events<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = CentralEvent> + Send>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Retrieve a stream of CentralEvents. This stream will receive notifications when events occur for this Central module. See CentralEvent for the full set of possible events.

Source

fn start_scan<'life0, 'async_trait>( &'life0 self, filter: ScanFilter, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Starts a scan for BLE devices. This scan will generally continue until explicitly stopped, although this may depend on your Bluetooth adapter. Discovered devices will be announced to subscribers of events and will be available via peripherals(). The filter can be used to scan only for specific devices. While some implementations might ignore (parts of) the filter and make additional devices available, other implementations might require at least one filter for security reasons. Cross-platform code should provide a filter, but must be able to handle devices, which do not fit into the filter.

Source

fn stop_scan<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stops scanning for BLE devices.

Source

fn peripherals<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Vec<Self::Peripheral>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns the list of Peripherals that have been discovered so far. Note that this list may contain peripherals that are no longer available.

Source

fn peripheral<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 PeripheralId, ) -> Pin<Box<dyn Future<Output = Result<Self::Peripheral>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Returns a particular Peripheral by its address if it has been discovered.

Source

fn add_peripheral<'life0, 'life1, 'async_trait>( &'life0 self, address: &'life1 PeripheralId, ) -> Pin<Box<dyn Future<Output = Result<Self::Peripheral>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Add a Peripheral from a MAC address without a scan result. Not supported on all Bluetooth systems.

Source

fn adapter_info<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get information about the Bluetooth adapter being used, such as the model or type.

The details of this are platform-specific andyou should not attempt to parse it, but it may be useful for debug logs.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§