【发布时间】:2021-11-28 10:38:25
【问题描述】:
我正在尝试调用 D-Bus 方法,但不明白如何添加所需的参数。
- 方法名称: CreateSession (String destination, Dict of {String, Variant} args) ↦ (Object Path session)
- 巴士名称: org.bluez.obex
- 对象路径: /org/bluez/obex
- 接口: org.bluez.obex.Client1
我可以用这个参数在 D-Feet 应用程序中成功调用这个方法:
"D0:9C:7A:A1:A4:63",{'Target':GLib.Variant('s','OPP')}
但是如何只使用 dbus.h 来实现呢?
这是我的代码:
// Do before compile sudo apt-get install -y libdbus-1-dev
// gcc -o test -Wall test.c `pkg-config --cflags dbus-1` `pkg-config --libs dbus-1`
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dbus/dbus.h>
int main() {
DBusConnection *sesBusCon;
DBusError error;
DBusMessage *call;
DBusMessage *reply;
dbus_error_init(&error);
if (dbus_error_is_set(&error)) {
fprintf(stderr, "%s", error.message);
return 1;
}
sesBusCon = dbus_bus_get(DBUS_BUS_SESSION, &error);
if (dbus_error_is_set(&error)) {
fprintf(stderr, "%s", error.message);
return 1;
}
call = dbus_message_new_method_call("org.bluez.obex", "/org/bluez/obex", "org.bluez.obex.Client1", "CreateSession");
reply = dbus_connection_send_with_reply_and_block (sesBusCon, call, 100000, &error);
if (dbus_error_is_set(&error)) {
fprintf(stderr, "%s", error.message);
return 1;
}
return 0;
}
【问题讨论】:
标签: c linux dictionary dbus bluez