/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #![feature(proc_macro)] extern crate ipc_channel; extern crate regex; #[macro_use] extern crate serde_derive; extern crate servo_config; pub mod blocklist; pub mod scanfilter; use ipc_channel::ipc::IpcSender; use scanfilter::RequestDeviceoptions; #[derive(Deserialize, Serialize)] pub enum BluetoothError { Type(String), Network, NotFound, NotSupported, Security, InvalidState, } #[derive(Deserialize, Serialize)] pub enum GATTType { PrimaryService, Characteristic, IncludedService, Descriptor, } #[derive(Deserialize, Serialize)] pub struct BluetoothDeviceMsg { // Bluetooth Device properties pub id: String, pub name: Option, } #[derive(Deserialize, Serialize)] pub struct BluetoothServiceMsg { pub uuid: String, pub is_primary: bool, pub instance_id: String, } #[derive(Deserialize, Serialize)] pub struct BluetoothCharacteristicMsg { // Characteristic pub uuid: String, pub instance_id: String, // Characteristic properties pub broadcast: bool, pub read: bool, pub write_without_response: bool, pub write: bool, pub notify: bool, pub indicate: bool, pub authenticated_signed_writes: bool, pub reliable_write: bool, pub writable_auxiliaries: bool, } #[derive(Deserialize, Serialize)] pub struct BluetoothDescriptorMsg { pub uuid: String, pub instance_id: String, } pub type BluetoothServicesMsg = Vec; pub type BluetoothCharacteristicsMsg = Vec; pub type BluetoothDescriptorsMsg = Vec; pub type BluetoothResult = Result; pub type BluetoothResponseResult = Result; #[derive(Deserialize, Serialize)] pub enum BluetoothRequest { RequestDevice(RequestDeviceoptions, IpcSender), GATTServerConnect(String, IpcSender), GATTServerDisconnect(String, IpcSender>), GetGATTChildren(String, Option, bool, GATTType, IpcSender), ReadValue(String, IpcSender), WriteValue(String, Vec, IpcSender), EnableNotification(String, bool, IpcSender), WatchAdvertisements(String, IpcSender), Test(String, IpcSender>), Exit, } #[derive(Deserialize, Serialize)] pub enum BluetoothResponse { RequestDevice(BluetoothDeviceMsg), GATTServerConnect(bool), GetPrimaryServices(BluetoothServicesMsg, bool), GetIncludedServices(BluetoothServicesMsg, bool), GetCharacteristics(BluetoothCharacteristicsMsg, bool), GetDescriptors(BluetoothDescriptorsMsg, bool), ReadValue(Vec), WriteValue(Vec), EnableNotification(()), WatchAdvertisements(()), } pub trait BluetoothResponseListener { fn response(&mut self, response: BluetoothResponseResult); }