/* 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 https://mozilla.org/MPL/2.0/. */ pub mod blocklist; pub mod scanfilter; use ipc_channel::ipc::IpcSender; use serde::{Deserialize, Serialize}; use crate::scanfilter::{BluetoothScanfilterSequence, RequestDeviceoptions}; #[derive(Debug, Deserialize, Serialize)] pub enum BluetoothError { Type(String), Network, NotFound, NotSupported, Security, InvalidState, } #[derive(Debug, Deserialize, Serialize)] pub enum GATTType { PrimaryService, Characteristic, IncludedService, Descriptor, } #[derive(Debug, Deserialize, Serialize)] pub struct BluetoothDeviceMsg { // Bluetooth Device properties pub id: String, pub name: Option, } #[derive(Debug, Deserialize, Serialize)] pub struct BluetoothServiceMsg { pub uuid: String, pub is_primary: bool, pub instance_id: String, } #[derive(Debug, 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(Debug, 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(Debug, 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), SetRepresentedToNull(Vec, Vec, Vec), IsRepresentedDeviceNull(String, IpcSender), GetAvailability(IpcSender), MatchesFilter( String, BluetoothScanfilterSequence, IpcSender>, ), Test(String, IpcSender>), Exit, } #[derive(Debug, 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(()), GetAvailability(bool), }