connmanctl 命令(RegisterAgent)无法通过 dbus 工作

问题描述 投票:0回答:1

我可以通过 Qt 使用 dbus 通过“connmanctl”连接到开放的 wifi。我想通过 dbus 使用 connmanctl 连接安全的妻子。有一个 API 可以注册代理(交互模式,输入密码),名为“RegisterAgent(对象路径)” ,在此,我不确定对象路径是什么意思。我已经尝试使用“”/net/connman/technology/wifi”的对象路径,但它不起作用。我想我在某些方面是错误的。我在下面添加了 Qt 编译代码。有人可以帮助我连接到安全网络吗通过 dbus 通过 connmanctl ?

//------------tocker.h------------------
#ifndef TOCKER_H
#define TOCKER_H

#include <QObject>
#include <QDBusMessage>
#include <QDBusError>


class Tocker : public QObject
{
    Q_OBJECT
public:
    explicit Tocker(QObject *parent = 0);

signals:

public slots:
    void onAgentRegisterRequested(QDBusMessage);
    void onErrorResponse(QDBusError);
};

#endif // TOCKER_H
//----------------------

//talker.cpp................
#include <QDBusInterface>
#include <QDBusConnection>
#include <QList>
#include <QVariant>
#include <QtDebug>
#include "tocker.h"\


Tocker::Tocker(QObject *parent) : QObject(parent)
{
    QDBusInterface interfaceObj("net.connman", "/", "net.connman.Manager", QDBusConnection::systemBus());
    bool isScucess = false;
    do
    {
    if(interfaceObj.isValid())
    {
        QList<QVariant> params;
        params << "/net/connman/technology/wifi"; //I am not sure is this path is correct

        if( interfaceObj.callWithCallback("RegisterAgent", params, this, SLOT(onAgentRegisterRequestedd(QDBusMessage)), SLOT(onErrorResponse(QDBusError))  ))
        {
            qDebug()<< Q_FUNC_INFO << "callWithCallback is success";
            isScucess = true;
        }
        else
        {
            isScucess = false;
        }
        break;
    }
    }
    while(false);
    if( !isScucess )
    {
        qDebug()<< Q_FUNC_INFO << interfaceObj.lastError().message();
    }
    else
    {
        qDebug() << Q_FUNC_INFO << "Callback is success.";
    }
}

void Tocker::onAgentRegisterRequested(QDBusMessage msg)
{
    qDebug()<< Q_FUNC_INFO << msg;
}

void Tocker::onErrorResponse(QDBusError errorMsg )
{
     qDebug()<< Q_FUNC_INFO << errorMsg;
}



-----------main.cpp........
#include <QCoreApplication>
#include "tocker.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Tocker tocker;
    return a.exec();
}
linux qt wifi dbus connman
1个回答
0
投票

对象路径应该是您的服务的路径,例如“/net/connman/service/wifi_6c302a07e1b2_526170746565204851_management_psk”。查看 net.connman.Service。

© www.soinside.com 2019 - 2024. All rights reserved.