确定代理的 dbus 目的地的正确方法
Correct way to determine dbus destination for a proxy
我想弄清楚,当代理的值设置为 (null destination)
时,确定 destination
应该与代理一起使用的正确方法应该是什么?
我目前正在尝试使用 rust's DBus impelementation 接收设备数据的蓝牙信号。
我收到的信号:
signal time=1641856074.929459 sender=:1.2 -> destination=(null destination) serial=152 path=/org/bluez/hci0/dev_<mac>; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
string "org.bluez.Device1"
array [
dict entry(
string "ManufacturerData"
variant array [
dict entry(
uint16 1177
variant array of bytes [
05 0f c0 1e ff cd 59 ff e4 ff e0 03 e4 4c 36 b0 31 46
c0 cb 4e 3d 3e 12
]
)
]
)
]
array [
]
我碰巧通过测试不同的东西发现代理的目的地是 org.bluez
。
我最终使用的代码
let conn = Connection::new_system()?;
{
let proxy = conn.with_proxy(
"org.bluez",
"/org/bluez/hci0/dev_C0_CB_4E_3D_3E_12",
Duration::from_millis(5000),
);
// --snip--
这行得通,但我不确定我应该如何正确地找到它,或者这是否是正确的方法。
查看 documentation 的 Proxy
它说第一个字段是 BusName:
pub struct Proxy<'a, C> {
pub destination: BusName<'a>,
pub path: Path<'a>,
pub timeout: Duration,
pub connection: C,
}
查看该字段的详细信息表明它是 D-Bus 服务。
destination: BusName<'a>
Destination, i e what D-Bus service you’re communicating with
查看 BlueZ documentation 的 org.bluez.Device1
界面,它说该服务是 org.bluez
> Service org.bluez
> Interface org.bluez.Device1
> Object path [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX
所以你是对的,上面文档的链接是你如何解决的。
我想弄清楚,当代理的值设置为 (null destination)
时,确定 destination
应该与代理一起使用的正确方法应该是什么?
我目前正在尝试使用 rust's DBus impelementation 接收设备数据的蓝牙信号。
我收到的信号:
signal time=1641856074.929459 sender=:1.2 -> destination=(null destination) serial=152 path=/org/bluez/hci0/dev_<mac>; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
string "org.bluez.Device1"
array [
dict entry(
string "ManufacturerData"
variant array [
dict entry(
uint16 1177
variant array of bytes [
05 0f c0 1e ff cd 59 ff e4 ff e0 03 e4 4c 36 b0 31 46
c0 cb 4e 3d 3e 12
]
)
]
)
]
array [
]
我碰巧通过测试不同的东西发现代理的目的地是 org.bluez
。
我最终使用的代码
let conn = Connection::new_system()?;
{
let proxy = conn.with_proxy(
"org.bluez",
"/org/bluez/hci0/dev_C0_CB_4E_3D_3E_12",
Duration::from_millis(5000),
);
// --snip--
这行得通,但我不确定我应该如何正确地找到它,或者这是否是正确的方法。
查看 documentation 的 Proxy
它说第一个字段是 BusName:
pub struct Proxy<'a, C> {
pub destination: BusName<'a>,
pub path: Path<'a>,
pub timeout: Duration,
pub connection: C,
}
查看该字段的详细信息表明它是 D-Bus 服务。
destination: BusName<'a>
Destination, i e what D-Bus service you’re communicating with
查看 BlueZ documentation 的 org.bluez.Device1
界面,它说该服务是 org.bluez
> Service org.bluez
> Interface org.bluez.Device1
> Object path [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX
所以你是对的,上面文档的链接是你如何解决的。