extern crate btleplug;
extern crate rand;
use btleplug::api::{Central, CentralEvent};
#[cfg(target_os = "linux")]
use btleplug::bluez::{adapter::ConnectedAdapter, manager::Manager};
#[cfg(target_os = "macos")]
use btleplug::corebluetooth::{adapter::Adapter, manager::Manager};
#[cfg(target_os = "windows")]
use btleplug::winrtble::{adapter::Adapter, manager::Manager};
#[cfg(any(target_os = "windows", target_os = "macos"))]
fn get_central(manager: &Manager) -> Adapter {
let adapters = manager.adapters().unwrap();
adapters.into_iter().nth(0).unwrap()
}
#[cfg(target_os = "linux")]
fn get_central(manager: &Manager) -> ConnectedAdapter {
let adapters = manager.adapters().unwrap();
let adapter = adapters.into_iter().nth(0).unwrap();
adapter.connect().unwrap()
}
pub fn main() {
let manager = Manager::new().unwrap();
let central = get_central(&manager);
let event_receiver = central.event_receiver().unwrap();
central.start_scan().unwrap();
while let Ok(event) = event_receiver.recv() {
match event {
CentralEvent::DeviceDiscovered(bd_addr) => {
println!("DeviceDiscovered: {:?}", bd_addr);
}
CentralEvent::DeviceConnected(bd_addr) => {
println!("DeviceConnected: {:?}", bd_addr);
}
CentralEvent::DeviceDisconnected(bd_addr) => {
println!("DeviceDisconnected: {:?}", bd_addr);
}
_ => {}
}
}
}