2017-09-17 159 views
0

嗨,目前我正在項目,需要連接到無線網絡,我正在使用libconnman-qt。libconnman-qt連接到wifi

一切順利(啓用/禁用wifi,無線網絡列表),直到我發現連接到無線網絡的問題。所以當我通過以下方式將服務連接到wifi時:

mCurrentNetworkService->setPassphrase(ui->linePassword->text()); 
mCurrentNetworkService->requestConnect(); 

發生錯誤,指出:「未註冊」。我不知道發生了什麼,因爲lib不給我任何線索。或者,也許我錯過了一步?

回答

0

您必須先註冊一個可以響應來自connman守護程序的輸入請求的「代理程序」。這是一個簡單的例子。

#include <networkservice.h> 
#include <useragent.h> 

class Wifi : public QObject { 
    Q_OBJECT 
public: 
    Wifi(QObject *parent = 0) : 
     QObject(parent), m_agent(NULL), m_service(NULL) { 

     //Register an agent to handle requests from connmand 
     m_agent = new UserAgent(this); 

     //Connect to UserAgent signal 
     connect(m_agent, SIGNAL(userInputRequested(QString, QVariantMap)), 
       this, SLOT(agentRequestedUserInput(QString, QVariantMap))); 
    } 

    ~Wifi() {} 

public Q_SLOTS: 
    void agentRequestedUserInput(QString path, QVariantMap fields) { 
     Q_UNUSED(path) 
     QVariantMap reply; 
     reply.insert("Passphrase", QString("pass1234")); 
     m_agent->sendUserReply(reply); 
    } 

    void connectToService(QString servicePath) { 
     // Add logic to find NetworkService pointer for the service you will connect to 

     // pseudo code 
     // m_service = findService(servicePath); 

     m_service->requestConnect(); 
    } 

private: 
    UserAgent *m_agent; 
    NetworkService *m_service; 
}