Device can now be downcasted to a specific type of device (and upcasted back)

This commit is contained in:
Lucy 2022-01-11 17:51:15 -05:00
parent 2acdb272fb
commit e40c3e7787
No known key found for this signature in database
GPG key ID: EBC517FAD666BBF1
7 changed files with 106 additions and 6 deletions

View file

@ -1,10 +1,22 @@
// SPDX-License-Identifier: MPL-2.0
use crate::interface::device::bluetooth::BluetoothDeviceProxy;
use super::Device;
use crate::interface::device::{bluetooth::BluetoothDeviceProxy, DeviceProxy};
use std::ops::Deref;
use zbus::Result;
pub struct BluetoothDevice<'a>(BluetoothDeviceProxy<'a>);
impl<'a> BluetoothDevice<'a> {
pub async fn upcast(&'a self) -> Result<Device<'a>> {
DeviceProxy::builder(self.0.connection())
.path(self.0.path())?
.build()
.await
.map(Device::from)
}
}
impl<'a> Deref for BluetoothDevice<'a> {
type Target = BluetoothDeviceProxy<'a>;