gpt4 book ai didi

c++ - 使用 libdbus-c++ 获得了 DBus::Path - 下一步是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 14:06:55 26 4
gpt4 key购买 nike

我有一个简短的测试程序,用于确定如何将 D-Bus 与 libdbus-c++ 库一起使用。我正在尝试连接到 wpa_supplicant D-Bus API(已记录 here)以读取 WiFi AP 列表及其优势。

正在关注 this guide ,我用 dbusxx-xml2cpp wpa_supplicant_dbus_service.xml --proxy=proxy.h 生成了一个代理 header ,并实现了一个带有信号 stub 处理程序的 WPAS 类:

class WPAS : public fi::w1::wpa_supplicant1_proxy,
public DBus::IntrospectableProxy,
public DBus::ObjectProxy
{
public:
WPAS(DBus::Connection &connection, const char *path, const char *name):
DBus::ObjectProxy(connection, path, name)
{
}

void InterfaceAdded(const ::DBus::Path& path, const std::map< std::string, ::DBus::Variant >& properties) {}
void InterfaceRemoved(const ::DBus::Path& path) {}
void PropertiesChanged(const std::map< std::string, ::DBus::Variant >& properties) {}
};

其余代码如下所示:

#include <dbus-c++/dbus.h>
#include "proxy.h"

DBus::BusDispatcher dispatcher;

int main(int argc, char** argv)
{
DBus::default_dispatcher = &dispatcher;
DBus::Connection bus = DBus::Connection::SystemBus();

DBus::Path path;

WPAS wpad(bus, "/fi/w1/wpa_supplicant1", "fi.w1.wpa_supplicant1");

path = wpad.GetInterface("wlan2");

return 0;
}

但是,我不知道下一步该怎么做。目的是调用fi.w1.wpa_supplicant1.InterfaceScan()方法。

最佳答案

它遵循与调用 fi::w1::wpa_supplicant1.GetInterface 类似的模式;即我会创建另一个继承自 fi::w1::wpa_supplicant1::Interface_proxyDBus::IntrospectableProxy 的类(例如 WPASI)和DBus::ObjectProxy

假设两个对象(wpad 和界面)都在同一个服务上,您将创建这个新类的一个实例,如下所示:

WPASI wpasi( bus, path, "fi.w1.wpa_supplicant1" );

然后像往常一样调用wpasi.Scan()

关于c++ - 使用 libdbus-c++ 获得了 DBus::Path - 下一步是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16465383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com