【发布时间】:2023-03-11 16:27:01
【问题描述】:
我有一个简短的测试程序,用于研究如何将 D-Bus 与 libdbus-c++ 库一起使用。我正在尝试连接到wpa_supplicant D-Bus API(记录在here),以便阅读WiFi AP 列表及其优势。
在this guide 之后,我使用dbusxx-xml2cpp wpa_supplicant_dbus_service.xml --proxy=proxy.h 生成了一个代理标头,并实现了一个带有信号存根处理程序的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.Interface的Scan()方法。
【问题讨论】: