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§
type Peripheral: Peripheral
Required Methods§
Sourcefn 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 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 CentralEvent
s. This stream will receive notifications when events
occur for this Central module. See CentralEvent
for the full set of possible events.
Sourcefn 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 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.
Sourcefn stop_scan<'life0, 'async_trait>(
&'life0 self,
) -> 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,
Stops scanning for BLE devices.
Sourcefn 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 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 Peripheral
s that have been discovered so far. Note that this list
may contain peripherals that are no longer available.
Sourcefn 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 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.
Sourcefn 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 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.
Sourcefn adapter_info<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: '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,
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.