Problems with NetworkManager and Qt

I'm still new to using Qt4 / Dbus, and I'm trying to get a list of access points with the Qt API to send / receive Dbus messages. I got the following error:

org.freedesktop.DBus.Error.UnknownMethod
Method "GetAccessPoint" with signature "" on interface "org.freedesktop.NetworkManager.Device.Wireless" doesn't exist

The code:

QStringList *netList = new QStringList();
    QDBusConnection sysbus = QDBusConnection::systemBus();
    QDBusInterface callNM("org.freedesktop.NetworkManager","/org/freedesktop/NetworkManager","org.freedesktop.NetworkManager.Device.Wireless",sysbus);
    if(callNM.isValid())
    {
        QDBusMessage query= callNM.call("GetAccessPoints");
        if(query.type() == QDBusMessage::ReplyMessage)
        {

            QDBusArgument arg = query.arguments().at(0).value<QDBusArgument>();
            arg.beginArray();
            while(!arg.atEnd())
            {                
                QString element = qdbus_cast<QString>(arg);
                netList->append(element);
            }
            arg.endArray();
        }else{
            std::cout<< query.errorName().toStdString() << std::endl;
            std::cout<< query.errorMessage().toStdString() << std::endl;
        }
        int x= netList->size();
        for(int y=0; y< x ;y++)
        {
            widget.avail_nets->addItem(netList->at(y)); // just print it to my gui from the stringlist array
        }

    }else{
            std::cout<<"fail" << std::endl;
    }

What happened? I called it right and I follow the exact specification from here

+3
source share
4 answers

The name of the GetAccessPoints method .

So far your error:

org.freedesktop.DBus.Error.UnknownMethod The "GetAccessPoint" method with the signature "on the interface" Org.freedesktop.NetworkManager.Device.Wireless "does not exist

"GetAccessPoint" . , , , , , , ?

+1

, , , GetAccessPoints . , (.. DeviceType NM_DEVICE_TYPE_WIFI), .

+1

QDBusInterface callNM("org.freedesktop.NetworkManager","/org/freedesktop/NetworkManager/Devices/0","org.freedesktop.NetworkManager.Device.Wireless",sysbus);

"/org/freedesktop/NetworkManager/AccessPoint/2"
"/org/freedesktop/NetworkManager/AccessPoint/1"

, /org/freedesktop/NetworkManager - ( ).

0
QDBusInterface dbus_iface("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager/Devices/0", "org.freedesktop.NetworkManager.Device.Wireless", bus);

QDBusMessage query = dbus_iface.call("GetAccessPoints");

if(query.type() == QDBusMessage::ReplyMessage) {

    QDBusArgument arg = query.arguments().at(0).value<QDBusArgument>();
    arg.beginArray();
    while(!arg.atEnd()) {
        QString element = qdbus_cast<QString>(arg);
        netList->append(element);
        showAccessPointProperties(element);
    }
    arg.endArray();
} else {
    qDebug() << "got dbus error: " << query.errorName();
    qDebug() << "check the parameters like service, path, interface and method name !!!";
}

, .

-1

Source: https://habr.com/ru/post/1781388/


All Articles