blob: 10229b2bbb28dd6eeb45a234f2a7061425c4aa24 [file] [log] [blame]
extern crate bt_shim;
use bt_topshim::btif::{BtDeviceType, BtSspVariant, BtTransport, Uuid128Bit};
use btstack::bluetooth::{
BluetoothDevice, IBluetooth, IBluetoothCallback, IBluetoothConnectionCallback,
};
use btstack::uuid::Profile;
use btstack::RPCProxy;
use dbus::arg::RefArg;
use dbus::nonblock::SyncConnection;
use dbus::strings::Path;
use dbus_macros::{dbus_method, dbus_propmap, dbus_proxy_obj, generate_dbus_exporter};
use dbus_projection::DisconnectWatcher;
use dbus_projection::{dbus_generated, impl_dbus_arg_enum};
use num_traits::cast::{FromPrimitive, ToPrimitive};
use std::sync::Arc;
use crate::dbus_arg::{DBusArg, DBusArgError, RefArgToRust};
#[dbus_propmap(BluetoothDevice)]
pub struct BluetoothDeviceDBus {
address: String,
name: String,
}
#[allow(dead_code)]
struct BluetoothCallbackDBus {}
#[dbus_proxy_obj(BluetoothCallback, "org.chromium.bluetooth.BluetoothCallback")]
impl IBluetoothCallback for BluetoothCallbackDBus {
#[dbus_method("OnAddressChanged")]
fn on_address_changed(&self, addr: String) {
dbus_generated!()
}
#[dbus_method("OnDeviceFound")]
fn on_device_found(&self, remote_device: BluetoothDevice) {
dbus_generated!()
}
#[dbus_method("OnDiscoveringChanged")]
fn on_discovering_changed(&self, discovering: bool) {
dbus_generated!()
}
#[dbus_method("OnSspRequest")]
fn on_ssp_request(
&self,
remote_device: BluetoothDevice,
cod: u32,
variant: BtSspVariant,
passkey: u32,
) {
dbus_generated!()
}
#[dbus_method("OnBondStateChanged")]
fn on_bond_state_changed(&self, status: u32, address: String, state: u32) {
dbus_generated!()
}
}
impl_dbus_arg_enum!(BtDeviceType);
impl_dbus_arg_enum!(BtSspVariant);
impl_dbus_arg_enum!(BtTransport);
impl_dbus_arg_enum!(Profile);
#[allow(dead_code)]
struct BluetoothConnectionCallbackDBus {}
#[dbus_proxy_obj(BluetoothConnectionCallback, "org.chromium.bluetooth.BluetoothConnectionCallback")]
impl IBluetoothConnectionCallback for BluetoothConnectionCallbackDBus {
#[dbus_method("OnDeviceConnected")]
fn on_device_connected(&self, remote_device: BluetoothDevice) {
dbus_generated!()
}
#[dbus_method("OnDeviceDisconnected")]
fn on_device_disconnected(&self, remote_device: BluetoothDevice) {
dbus_generated!()
}
}
#[allow(dead_code)]
struct IBluetoothDBus {}
#[generate_dbus_exporter(export_bluetooth_dbus_obj, "org.chromium.bluetooth.Bluetooth")]
impl IBluetooth for IBluetoothDBus {
#[dbus_method("RegisterCallback")]
fn register_callback(&mut self, callback: Box<dyn IBluetoothCallback + Send>) {
dbus_generated!()
}
#[dbus_method("RegisterConnectionCallback")]
fn register_connection_callback(
&mut self,
callback: Box<dyn IBluetoothConnectionCallback + Send>,
) -> u32 {
dbus_generated!()
}
#[dbus_method("UnregisterConnectionCallback")]
fn unregister_connection_callback(&mut self, id: u32) -> bool {
dbus_generated!()
}
// Not exposed over D-Bus. The stack is automatically enabled when the daemon starts.
fn enable(&mut self) -> bool {
dbus_generated!()
}
// Not exposed over D-Bus. The stack is automatically disabled when the daemon exits.
// TODO(b/189495858): Handle shutdown properly when SIGTERM is received.
fn disable(&mut self) -> bool {
dbus_generated!()
}
#[dbus_method("GetAddress")]
fn get_address(&self) -> String {
dbus_generated!()
}
#[dbus_method("GetUuids")]
fn get_uuids(&self) -> Vec<Uuid128Bit> {
dbus_generated!()
}
#[dbus_method("GetName")]
fn get_name(&self) -> String {
dbus_generated!()
}
#[dbus_method("SetName")]
fn set_name(&self, name: String) -> bool {
dbus_generated!()
}
#[dbus_method("GetBluetoothClass")]
fn get_bluetooth_class(&self) -> u32 {
dbus_generated!()
}
#[dbus_method("SetBluetoothClass")]
fn set_bluetooth_class(&self, cod: u32) -> bool {
dbus_generated!()
}
#[dbus_method("GetDiscoverable")]
fn get_discoverable(&self) -> bool {
dbus_generated!()
}
#[dbus_method("GetDiscoverableTimeout")]
fn get_discoverable_timeout(&self) -> u32 {
dbus_generated!()
}
#[dbus_method("SetDiscoverable")]
fn set_discoverable(&self, mode: bool, duration: u32) -> bool {
dbus_generated!()
}
#[dbus_method("IsMultiAdvertisementSupported")]
fn is_multi_advertisement_supported(&self) -> bool {
dbus_generated!()
}
#[dbus_method("IsLeExtendedAdvertisingSupported")]
fn is_le_extended_advertising_supported(&self) -> bool {
dbus_generated!()
}
#[dbus_method("StartDiscovery")]
fn start_discovery(&self) -> bool {
dbus_generated!()
}
#[dbus_method("CancelDiscovery")]
fn cancel_discovery(&self) -> bool {
dbus_generated!()
}
#[dbus_method("IsDiscovering")]
fn is_discovering(&self) -> bool {
dbus_generated!()
}
#[dbus_method("GetDiscoveryEndMillis")]
fn get_discovery_end_millis(&self) -> u64 {
dbus_generated!()
}
#[dbus_method("CreateBond")]
fn create_bond(&self, device: BluetoothDevice, transport: BtTransport) -> bool {
dbus_generated!()
}
#[dbus_method("CancelBondProcess")]
fn cancel_bond_process(&self, device: BluetoothDevice) -> bool {
dbus_generated!()
}
#[dbus_method("RemoveBond")]
fn remove_bond(&self, device: BluetoothDevice) -> bool {
dbus_generated!()
}
#[dbus_method("GetBondedDevices")]
fn get_bonded_devices(&self) -> Vec<BluetoothDevice> {
dbus_generated!()
}
#[dbus_method("GetBondState")]
fn get_bond_state(&self, device: BluetoothDevice) -> u32 {
dbus_generated!()
}
#[dbus_method("SetPin")]
fn set_pin(&self, device: BluetoothDevice, accept: bool, pin_code: Vec<u8>) -> bool {
dbus_generated!()
}
#[dbus_method("SetPasskey")]
fn set_passkey(&self, device: BluetoothDevice, accept: bool, passkey: Vec<u8>) -> bool {
dbus_generated!()
}
#[dbus_method("SetPairingConfirmation")]
fn set_pairing_confirmation(&self, device: BluetoothDevice, accept: bool) -> bool {
dbus_generated!()
}
#[dbus_method("GetRemoteName")]
fn get_remote_name(&self, _device: BluetoothDevice) -> String {
dbus_generated!()
}
#[dbus_method("GetRemoteType")]
fn get_remote_type(&self, _device: BluetoothDevice) -> BtDeviceType {
dbus_generated!()
}
#[dbus_method("GetRemoteAlias")]
fn get_remote_alias(&self, _device: BluetoothDevice) -> String {
dbus_generated!()
}
#[dbus_method("SetRemoteAlias")]
fn set_remote_alias(&mut self, _device: BluetoothDevice, new_alias: String) {
dbus_generated!()
}
#[dbus_method("GetRemoteClass")]
fn get_remote_class(&self, _device: BluetoothDevice) -> u32 {
dbus_generated!()
}
#[dbus_method("GetConnectionState")]
fn get_connection_state(&self, device: BluetoothDevice) -> u32 {
dbus_generated!()
}
#[dbus_method("GetProfileConnectionState")]
fn get_profile_connection_state(&self, profile: Profile) -> u32 {
dbus_generated!()
}
#[dbus_method("GetRemoteUuids")]
fn get_remote_uuids(&self, device: BluetoothDevice) -> Vec<Uuid128Bit> {
dbus_generated!()
}
#[dbus_method("FetchRemoteUuids")]
fn fetch_remote_uuids(&self, device: BluetoothDevice) -> bool {
dbus_generated!()
}
#[dbus_method("SdpSearch")]
fn sdp_search(&self, device: BluetoothDevice, uuid: Uuid128Bit) -> bool {
dbus_generated!()
}
#[dbus_method("ConnectAllEnabledProfiles")]
fn connect_all_enabled_profiles(&self, device: BluetoothDevice) -> bool {
dbus_generated!()
}
#[dbus_method("DisconnectAllEnabledProfiles")]
fn disconnect_all_enabled_profiles(&self, device: BluetoothDevice) -> bool {
dbus_generated!()
}
}