blurdroid 0.1.6

Bluetooth lib for Rust using Android's bluedroid
Documentation
use bluetooth_adapter::Adapter;
use ffi;
use std::error::Error;
use std::sync::Arc;

#[derive(Debug)]
pub struct DiscoverySession {
    adapter: Arc<Adapter>,
}

impl DiscoverySession {
    fn new(adapter: Arc<Adapter>) -> DiscoverySession {
        DiscoverySession {
            adapter: adapter,
        }
    }

    pub fn create_session(adapter: Arc<Adapter>) -> Result<DiscoverySession, Box<Error>> {
        Ok(DiscoverySession::new(adapter.clone()))
    }

    pub fn start_discovery(&self) -> Result<(), Box<Error>> {
        let discovery = unsafe { ffi::bluetooth_adapter_start_discovery(self.adapter.adapter()) };
        if !discovery.is_positive() {
            return Err(Box::from("Discovery error!"));
        }
        Ok(())
    }

    pub fn stop_discovery(&self) -> Result<(), Box<Error>> {
        let discovery = unsafe { ffi::bluetooth_adapter_stop_discovery(self.adapter.adapter()) };
        if !discovery.is_positive() {
            return Err(Box::from("Discovery error!"));
        }
        Ok(())
    }
}