Passing QVariant as argument to QDBusInterface->Call in bluez Set method



  • I am trying to set a property (Powered) in the bluez service but fail with this error message.

    QDBusMessage(type=Error, service="", error name="org.freedesktop.DBus.Error.UnknownMethod", error message="Method "Set" with signature "ssb" on interface "org.freedesktop.DBus.Properties" doesn't exist
    ", signature="", contents=([]) )

    I should be passing a string, string, variant to the Set method. But per the error message it looks like I am sending "ssb" or string, string, bool??. This is irritating because I should be sending a QVarriant of type bool.

    When I call the Get method everything works. So I believe that the QDBusInterface is good.

    Here is the code snippet. my appologies for the formatting, it is hard to get the spacing right on the posting
    @
    QDBusInterface *adapter1 = new QDBusInterface("org.bluez","/org/bluez/hci0","org.freedesktop.DBus.Properties",bus);

    //does not work
    QVariant power(false);
    QDBusMessage blah=adapter1->call("Set","org.bluez.Adapter1","Powered",power);
    qDebug()<<blah;

    //works
    QDBusReply<QVariant> replyAdapter=adapter1->call("Get","org.bluez.Adapter1","Powered")
    qDebug()<<replyAdapter.value().toBool();
    @


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.