mail archive of the rauc mailing list
 help / color / mirror / Atom feed
* [RAUC] D-Bus control Qt
@ 2021-08-02  6:15 Stahl, Michael
  2021-08-02  8:14 ` Bastian Krause
  2021-08-02 11:41 ` [RAUC] Antwort: " Eugen.Wiens
  0 siblings, 2 replies; 16+ messages in thread
From: Stahl, Michael @ 2021-08-02  6:15 UTC (permalink / raw)
  To: RAUC


[-- Attachment #1.1: Type: text/plain, Size: 934 bytes --]

Is there someone who implemented the DBus Property "Progress" into a Qt-Application? The problem seems the return value isi (Integer, String, Integer).
For all other properties with a single return value like "Operation" or "LastError" the Qt DBus API works fine.
I found an email from 28.Oct 2019 in the mailing list where Bastian Krause had the same issue. The answer was only that he had to cunsult the Qt DBus documentation on how a tuple is mapped to Qt types.

Thats a good hint but after hours of searching the web I didn't find a solution. The return value for a property is QVariant in Qt.

Trial 1 -> Read value by iface.property("Progress"):
This is the error message I got when I try to read the progress property:
Cannot construct placeholder type QDBusRawType

Trial 2 -> Read value by iface.call("Get",...):
Not able to get any information. The arguments of the returned QDBusMessages are always empty!



[-- Attachment #1.2: Type: text/html, Size: 5252 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] D-Bus control Qt
  2021-08-02  6:15 [RAUC] D-Bus control Qt Stahl, Michael
@ 2021-08-02  8:14 ` Bastian Krause
  2021-08-02  8:53   ` Wolk, Steffen
  2021-08-02 11:41 ` [RAUC] Antwort: " Eugen.Wiens
  1 sibling, 1 reply; 16+ messages in thread
From: Bastian Krause @ 2021-08-02  8:14 UTC (permalink / raw)
  To: Stahl, Michael, RAUC; +Cc: Wolk, Steffen


Hi,

On 8/2/21 8:15 AM, Stahl, Michael wrote:
> Is there someone who implemented the DBus Property "Progress" into a
> Qt-Application? The problem seems the return value isi (Integer, String,
> Integer). 
> For all other properties with a single return value like "Operation" or
> "LastError" the Qt DBus API works fine. 
> I found an email from 28.Oct 2019 in the mailing list where Bastian
> Krause had the same issue. The answer was only that he had to cunsult
> the Qt DBus documentation on how a tuple is mapped to Qt types.

I just answered the mail by Steffen Wolk back then.

> Thats a good hint but after hours of searching the web I didn't find a
> solution. The return value for a property is QVariant in Qt. 
> 
> Trial 1 -> Read value by iface.property("Progress"):
> This is the error message I got when I try to read the progress property:
> Cannot construct placeholder type QDBusRawType
> 
> Trial 2 -> Read value by iface.call("Get",...):
> Not able to get any information. The arguments of the returned
> QDBusMessages are always empty!

I don't have any experience here. Maybe Steffen Wolk (in cc) can share
how his solution looks like?

Regards,
Bastian

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] D-Bus control Qt
  2021-08-02  8:14 ` Bastian Krause
@ 2021-08-02  8:53   ` Wolk, Steffen
  0 siblings, 0 replies; 16+ messages in thread
From: Wolk, Steffen @ 2021-08-02  8:53 UTC (permalink / raw)
  To: Bastian Krause; +Cc: RAUC, Stahl, Michael

Hi,

no sorry, I can't.
I commented out Progress in rauc_installer.xml

Kind Regards,
Steffen


Freundliche Grüße / Best regards

--------------------------------------------------------------------------------------------
Steffen Wolk |  JULABO GmbH |  Elektronikentwicklung | Electronic Engineering
Phone: +49 7823 51-7073  |  Fax: +49 7823 74
E-Mail: s.wolk@julabo.com |  Website: http://www.julabo.com


JULABO GmbH
Gerhard-Juchheim-Strasse 1
77960 Seelbach
Germany

Geschaeftsfuehrer / CEO: Markus Juchheim
Sitz der Gesellschaft / Head Office: 77960 Seelbach
Registergericht / Registered at: Freiburg, HRB 390515
Umsatzsteuer-Ident-Nr. / VAT Registration No.: DE 811209079 | WEEE Reg. No.: DE 11561200

-----Ursprüngliche Nachricht-----
Von: Bastian Krause <bst@pengutronix.de>
Gesendet: Montag, 2. August 2021 10:15
An: Stahl, Michael <mstahl@moba.de>; RAUC@pengutronix.de
Cc: Wolk, Steffen <s.wolk@julabo.com>
Betreff: Re: [RAUC] D-Bus control Qt


Hi,

On 8/2/21 8:15 AM, Stahl, Michael wrote:
> Is there someone who implemented the DBus Property "Progress" into a
> Qt-Application? The problem seems the return value isi (Integer,
> String, Integer).
> For all other properties with a single return value like "Operation"
> or "LastError" the Qt DBus API works fine.
> I found an email from 28.Oct 2019 in the mailing list where Bastian
> Krause had the same issue. The answer was only that he had to cunsult
> the Qt DBus documentation on how a tuple is mapped to Qt types.

I just answered the mail by Steffen Wolk back then.

> Thats a good hint but after hours of searching the web I didn't find a
> solution. The return value for a property is QVariant in Qt.
>
> Trial 1 -> Read value by iface.property("Progress"):
> This is the error message I got when I try to read the progress property:
> Cannot construct placeholder type QDBusRawType
>
> Trial 2 -> Read value by iface.call("Get",...):
> Not able to get any information. The arguments of the returned
> QDBusMessages are always empty!

I don't have any experience here. Maybe Steffen Wolk (in cc) can share how his solution looks like?

Regards,
Bastian

--
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [RAUC] Antwort:  D-Bus control Qt
  2021-08-02  6:15 [RAUC] D-Bus control Qt Stahl, Michael
  2021-08-02  8:14 ` Bastian Krause
@ 2021-08-02 11:41 ` Eugen.Wiens
  2021-08-02 12:45   ` Stahl, Michael
  1 sibling, 1 reply; 16+ messages in thread
From: Eugen.Wiens @ 2021-08-02 11:41 UTC (permalink / raw)
  To: Stahl, Michael; +Cc: RAUC


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1: Type: text/plain; charset="US-ASCII", Size: 4132 bytes --]

Hi Michael,

"RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 08:15:26:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "RAUC@pengutronix.de" <RAUC@pengutronix.de>
> Datum: 02.08.2021 08:15
> Betreff: [RAUC] D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> 
> Is there someone who implemented the DBus Property "Progress" into a
> Qt-Application? The problem seems the return value isi (Integer, 
> String, Integer). 
> For all other properties with a single return value like "Operation"
> or "LastError" the Qt DBus API works fine. 
> I found an email from 28.Oct 2019 in the mailing list where Bastian 
> Krause had the same issue. The answer was only that he had to 
> cunsult the Qt DBus documentation on how a tuple is mapped to Qt types.
> 
> Thats a good hint but after hours of searching the web I didn't find
> a solution. The return value for a property is QVariant in Qt. 
> 
> Trial 1 -> Read value by iface.property("Progress"):
> This is the error message I got when I try to read the progress 
property:
> Cannot construct placeholder type QDBusRawType
> 
> Trial 2 -> Read value by iface.call("Get",...):
> Not able to get any information. The arguments of the returned 
> QDBusMessages are always empty!
That is the way we implemented it:

On Qt there are some pitfalls and you has to marshaling the data.

1. Create a Data Class

#include <QObject>
#include <QDBusArgument>
#include <QString>

class MyProgress
{
public:
[...]
    int m_Progress;
    QString m_Message;
    int m_Additional;
};

// this is one of the magic statements 
Q_DECLARE_METATYPE(MyProgress)
QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& 
parameterProgress);
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& 
parameterProgress);
};

You has to register the metatype and implement the operators. In the 
Constructor you has to add two register Methods 

qRegisterMetaType<MyProgress>();
qDBusRegisterMetaType<MyProgress>();

After this tree registrations your Class MyProgress is known by Qt 
Metatype System. Now you has to implement operators

QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& 
parameterProgress)
{
    argument.beginStructure();
    argument << parameterProgress.m_Progress;
    argument << parameterProgress.m_Message;
    argument << parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& 
parameterProgress)
{
    argument.beginStructure();
    argument >> parameterProgress.m_Progress;
    argument >> parameterProgress.m_Message;
    argument >> parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}

Now you are finished with preparing how to use it. In the Qt Slot of the 
D-Bus call your can pipe it in your class

MyProgress parameterProgress;
property.value<QDBusArgument>() >> parameterProgress;


This URL help you to map our code to the Qt example 
https://doc.qt.io/qt-5/qdbusargument.html

I hope it helps 


> 
> _______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte Informationen beinhalten und ist ausschließlich für die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte löschen Sie diese Nachricht und alle Anhänge dazu unverzüglich. Falls nicht ausdrücklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung. 

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Persönlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Geschäftsführer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis 
Ust.-Id.-Nr.: DE 112411234 

[-- Attachment #1.2: Type: text/html, Size: 6815 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] Antwort:  D-Bus control Qt
  2021-08-02 11:41 ` [RAUC] Antwort: " Eugen.Wiens
@ 2021-08-02 12:45   ` Stahl, Michael
  2021-08-02 13:20     ` Stahl, Michael
  0 siblings, 1 reply; 16+ messages in thread
From: Stahl, Michael @ 2021-08-02 12:45 UTC (permalink / raw)
  To: Eugen.Wiens; +Cc: RAUC


[-- Attachment #1.1: Type: text/plain, Size: 6370 bytes --]

Hi Eugen,

thanks for the informations. They were very useful. Some lines are familiar to me because I tested a lot.
But I still need some support.

This is the way I request the property:

MyProgress parameterProgress;
QDBusInterface interface( "de.pengutronix.rauc",

                    "/",

                    "de.pengutronix.rauc.Installer",

                    QDBusConnection::systemBus() );

QVariant property = interface.property("Progress");

property.value<QDBusArgument>() >> parameterProgress;


No I get a compiler error:

no match for operator>>'(opernad types are 'QDBusArgument' and 'MyProgress')


I think I do the registration an the installing of the oparators wrong.


The registration is done in the constructor of MyProgress:

MyProgress ::MyProgress(){

    qRegisterMetaType<MyProgress>();

    qDBusRegisterMetaType<MyProgress>();

}


The magic statement I place in top of my MyProcess.cpp
// this is one of the magic statements
Q_DECLARE_METATYPE(MyProgress)

But where exactly do you place the operators? Also in the MyProcess.cpp?
QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress);
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress);
QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress)
{
    argument.beginStructure();
    argument << parameterProgress.m_Progress;
    argument << parameterProgress.m_Message;
    argument << parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress)
{
    argument.beginStructure();
    argument >> parameterProgress.m_Progress;
    argument >> parameterProgress.m_Message;
    argument >> parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}

It seems like I am only a few millimeters away from my goal.

Thanks

________________________________
Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Montag, 2. August 2021 13:41
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>
Betreff: Antwort: [RAUC] D-Bus control Qt

Hi Michael,

"RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 08:15:26:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "RAUC@pengutronix.de" <RAUC@pengutronix.de>
> Datum: 02.08.2021 08:15
> Betreff: [RAUC] D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
>
> Is there someone who implemented the DBus Property "Progress" into a
> Qt-Application? The problem seems the return value isi (Integer,
> String, Integer).
> For all other properties with a single return value like "Operation"
> or "LastError" the Qt DBus API works fine.
> I found an email from 28.Oct 2019 in the mailing list where Bastian
> Krause had the same issue. The answer was only that he had to
> cunsult the Qt DBus documentation on how a tuple is mapped to Qt types.
>
> Thats a good hint but after hours of searching the web I didn't find
> a solution. The return value for a property is QVariant in Qt.
>
> Trial 1 -> Read value by iface.property("Progress"):
> This is the error message I got when I try to read the progress property:
> Cannot construct placeholder type QDBusRawType
>
> Trial 2 -> Read value by iface.call("Get",...):
> Not able to get any information. The arguments of the returned
> QDBusMessages are always empty!
That is the way we implemented it:

On Qt there are some pitfalls and you has to marshaling the data.

1. Create a Data Class

#include <QObject>
#include <QDBusArgument>
#include <QString>

class MyProgress
{
public:
[...]
    int m_Progress;
    QString m_Message;
    int m_Additional;
};

// this is one of the magic statements
Q_DECLARE_METATYPE(MyProgress)
QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress);
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress);
};

You has to register the metatype and implement the operators. In the Constructor you has to add two register Methods

qRegisterMetaType<MyProgress>();
qDBusRegisterMetaType<MyProgress>();

After this tree registrations your Class MyProgress is known by Qt Metatype System. Now you has to implement operators

QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress)
{
    argument.beginStructure();
    argument << parameterProgress.m_Progress;
    argument << parameterProgress.m_Message;
    argument << parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress)
{
    argument.beginStructure();
    argument >> parameterProgress.m_Progress;
    argument >> parameterProgress.m_Message;
    argument >> parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}

Now you are finished with preparing how to use it. In the Qt Slot of the D-Bus call your can pipe it in your class

MyProgress parameterProgress;
property.value<QDBusArgument>() >> parameterProgress;


This URL help you to map our code to the Qt example https://doc.qt.io/qt-5/qdbusargument.html

I hope it helps


>
> _______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234

[-- Attachment #1.2: Type: text/html, Size: 23736 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] Antwort:  D-Bus control Qt
  2021-08-02 12:45   ` Stahl, Michael
@ 2021-08-02 13:20     ` Stahl, Michael
  2021-08-02 13:36       ` [RAUC] Antwort: " Eugen.Wiens
  0 siblings, 1 reply; 16+ messages in thread
From: Stahl, Michael @ 2021-08-02 13:20 UTC (permalink / raw)
  To: Eugen.Wiens; +Cc: RAUC


[-- Attachment #1.1: Type: text/plain, Size: 9070 bytes --]

Hi Eugen,

I think I got it.

MyProgress.cpp:
Q_DECLARE_METATYPE(MyProgress)


QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress)

{

    argument.beginStructure();

    argument << parameterProgress.m_Progress;

    argument << parameterProgress.m_Message;

    argument << parameterProgress.m_Additional;

    argument.endStructure();

    return argument;

}


const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress)

{

    argument.beginStructure();

    argument >> parameterProgress.m_Progress;

    argument >> parameterProgress.m_Message;

    argument >> parameterProgress.m_Additional;

    argument.endStructure();

    return argument;

}



MyProgress ::MyProgress(){

    qRegisterMetaType<MyProgress>();

    qDBusRegisterMetaType<MyProgress>();

}


MyProgress.h:

#ifndef MYPROGRESS_H


#define MYPROGRESS_H

#include <QObject>

#include <QDBusArgument>

#include <QMetaType>

#include <QDBusMetaType>


class MyProgress

{

public:

    MyProgress();

    ~MyProgress();

    int m_Progress;

    QString m_Message;

    int m_Additional;

public slots:

    friend QDBusArgument &operator<<(QDBusArgument &argument, const RaucProgress &parameterProgress);

    friend const QDBusArgument &operator>>(const QDBusArgument &argument, RaucProgress &parameterProgress);

};

#endif // MYPROGRESS_H



update.cpp:

...

    QDBusInterface interface( "de.pengutronix.rauc",


                              "/",

                              "de.pengutronix.rauc.Installer",

                              QDBusConnection::systemBus() );


    if (interface.isValid() == true)

    {

        qDebug() << "interface is valid";

                  qDebug() << "Read property (Progress)";

       QVariant property = interface.property("Progress");

      property.value<QDBusArgument>() >> parameterProgress;

       qDebug() << parameterProgress.m_Progress;

       qDebug() << parameterProgress.m_Message;

}

...



parameterProgress is delcared in the update.h


I have a last question. Maybe you can answer it. Why have I add the keyword "friend" in front of the QDBusArguments? I wount compile without it.


Many thanks.


Kind regards

Michael




________________________________
Von: RAUC <rauc-bounces@pengutronix.de> im Auftrag von Stahl, Michael <mstahl@moba.de>
Gesendet: Montag, 2. August 2021 14:45
An: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>
Betreff: Re: [RAUC] Antwort: D-Bus control Qt

Hi Eugen,

thanks for the informations. They were very useful. Some lines are familiar to me because I tested a lot.
But I still need some support.

This is the way I request the property:

MyProgress parameterProgress;
QDBusInterface interface( "de.pengutronix.rauc",

                    "/",

                    "de.pengutronix.rauc.Installer",

                    QDBusConnection::systemBus() );

QVariant property = interface.property("Progress");

property.value<QDBusArgument>() >> parameterProgress;


No I get a compiler error:

no match for operator>>'(opernad types are 'QDBusArgument' and 'MyProgress')


I think I do the registration an the installing of the oparators wrong.


The registration is done in the constructor of MyProgress:

MyProgress ::MyProgress(){

    qRegisterMetaType<MyProgress>();

    qDBusRegisterMetaType<MyProgress>();

}


The magic statement I place in top of my MyProcess.cpp
// this is one of the magic statements
Q_DECLARE_METATYPE(MyProgress)

But where exactly do you place the operators? Also in the MyProcess.cpp?
QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress);
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress);
QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress)
{
    argument.beginStructure();
    argument << parameterProgress.m_Progress;
    argument << parameterProgress.m_Message;
    argument << parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress)
{
    argument.beginStructure();
    argument >> parameterProgress.m_Progress;
    argument >> parameterProgress.m_Message;
    argument >> parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}

It seems like I am only a few millimeters away from my goal.

Thanks

________________________________
Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Montag, 2. August 2021 13:41
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>
Betreff: Antwort: [RAUC] D-Bus control Qt

Hi Michael,

"RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 08:15:26:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "RAUC@pengutronix.de" <RAUC@pengutronix.de>
> Datum: 02.08.2021 08:15
> Betreff: [RAUC] D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
>
> Is there someone who implemented the DBus Property "Progress" into a
> Qt-Application? The problem seems the return value isi (Integer,
> String, Integer).
> For all other properties with a single return value like "Operation"
> or "LastError" the Qt DBus API works fine.
> I found an email from 28.Oct 2019 in the mailing list where Bastian
> Krause had the same issue. The answer was only that he had to
> cunsult the Qt DBus documentation on how a tuple is mapped to Qt types.
>
> Thats a good hint but after hours of searching the web I didn't find
> a solution. The return value for a property is QVariant in Qt.
>
> Trial 1 -> Read value by iface.property("Progress"):
> This is the error message I got when I try to read the progress property:
> Cannot construct placeholder type QDBusRawType
>
> Trial 2 -> Read value by iface.call("Get",...):
> Not able to get any information. The arguments of the returned
> QDBusMessages are always empty!
That is the way we implemented it:

On Qt there are some pitfalls and you has to marshaling the data.

1. Create a Data Class

#include <QObject>
#include <QDBusArgument>
#include <QString>

class MyProgress
{
public:
[...]
    int m_Progress;
    QString m_Message;
    int m_Additional;
};

// this is one of the magic statements
Q_DECLARE_METATYPE(MyProgress)
QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress);
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress);
};

You has to register the metatype and implement the operators. In the Constructor you has to add two register Methods

qRegisterMetaType<MyProgress>();
qDBusRegisterMetaType<MyProgress>();

After this tree registrations your Class MyProgress is known by Qt Metatype System. Now you has to implement operators

QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& parameterProgress)
{
    argument.beginStructure();
    argument << parameterProgress.m_Progress;
    argument << parameterProgress.m_Message;
    argument << parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}
const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress& parameterProgress)
{
    argument.beginStructure();
    argument >> parameterProgress.m_Progress;
    argument >> parameterProgress.m_Message;
    argument >> parameterProgress.m_Additional;
    argument.endStructure();
    return argument;
}

Now you are finished with preparing how to use it. In the Qt Slot of the D-Bus call your can pipe it in your class

MyProgress parameterProgress;
property.value<QDBusArgument>() >> parameterProgress;


This URL help you to map our code to the Qt example https://doc.qt.io/qt-5/qdbusargument.html

I hope it helps


>
> _______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234

[-- Attachment #1.2: Type: text/html, Size: 48045 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
  2021-08-02 13:20     ` Stahl, Michael
@ 2021-08-02 13:36       ` Eugen.Wiens
  2021-08-02 14:29         ` Stahl, Michael
  0 siblings, 1 reply; 16+ messages in thread
From: Eugen.Wiens @ 2021-08-02 13:36 UTC (permalink / raw)
  To: Stahl, Michael; +Cc: RAUC, RAUC


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1: Type: text/plain; charset="US-ASCII", Size: 11066 bytes --]

Hi Michael,

"RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 15:20:25:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC@pengutronix.de" <RAUC@pengutronix.de>
> Datum: 02.08.2021 15:20
> Betreff: Re: [RAUC] Antwort:  D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> 
> Hi Eugen,
> 
> I think I got it.
> 
> MyProgress.cpp:
> Q_DECLARE_METATYPE(MyProgress) 
> 
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& 
> parameterProgress)
> {
>     argument.beginStructure();
>     argument << parameterProgress.m_Progress;
>     argument << parameterProgress.m_Message;
>     argument << parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
> 
> const QDBusArgument &operator>>(const QDBusArgument &argument, 
MyProgress& 
> parameterProgress)
> {
>     argument.beginStructure();
>     argument >> parameterProgress.m_Progress;
>     argument >> parameterProgress.m_Message;
>     argument >> parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
> 
> MyProgress ::MyProgress(){
>     qRegisterMetaType<MyProgress>();
>     qDBusRegisterMetaType<MyProgress>();
> }
> 
> MyProgress.h:
> #ifndef MYPROGRESS_H

> #define MYPROGRESS_H
> 

> #include <QObject>
> #include <QDBusArgument>
> #include <QMetaType>
> #include <QDBusMetaType>
> 
> class MyProgress
> {
> public:
>     MyProgress();
>     ~MyProgress();
>     int m_Progress;
>     QString m_Message;
>     int m_Additional;
> public slots:
>     friend QDBusArgument &operator<<(QDBusArgument &argument, const 
> RaucProgress &parameterProgress);
>     friend const QDBusArgument &operator>>(const QDBusArgument 
&argument, 
> RaucProgress &parameterProgress);
> };
> #endif // MYPROGRESS_H
> 
> update.cpp:
> ...
>     QDBusInterface interface( "de.pengutronix.rauc",

>                               "/",
>                               "de.pengutronix.rauc.Installer",
>                               QDBusConnection::systemBus() );
> 
>     if (interface.isValid() == true)
>     {
>         qDebug() << "interface is valid";
>                   qDebug() << "Read property (Progress)";
>        QVariant property = interface.property("Progress");
>       property.value<QDBusArgument>() >> parameterProgress;
>        qDebug() << parameterProgress.m_Progress;
>        qDebug() << parameterProgress.m_Message;
>      }
> ...
> 
> parameterProgress is delcared in the update.h
> 
> I have a last question. Maybe you can answer it. Why have I add the 
> keyword "friend" in front of the QDBusArguments? I wount compile without 
it.
If you add the operators as a member, you Qt has problem to find them. We 
implement the operators outside of the class. As "normal" functions not as 
Member Methods. Qt is searching "operator >> ( Type, Type)" and not as 
Member of a class.

> 
> Many thanks.
> 
> Kind regards 
> Michael
> 
> Von: RAUC <rauc-bounces@pengutronix.de> im Auftrag von Stahl, 
> Michael <mstahl@moba.de>
> Gesendet: Montag, 2. August 2021 14:45
> An: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>
> Betreff: Re: [RAUC] Antwort: D-Bus control Qt 
> 
> Hi Eugen,
> 
> thanks for the informations. They were very useful. Some lines are 
> familiar to me because I tested a lot.
> But I still need some support. 
> 
> This is the way I request the property:
> 
> MyProgress parameterProgress;
> QDBusInterface interface( "de.pengutronix.rauc", 
>                     "/",
>                     "de.pengutronix.rauc.Installer",
>                     QDBusConnection::systemBus() );
> QVariant property = interface.property("Progress"); 
> property.value<QDBusArgument>() >> parameterProgress;
> 
> No I get a compiler error:
> no match for operator>>'(opernad types are 'QDBusArgument' and 
'MyProgress')
> 
> I think I do the registration an the installing of the oparators wrong.
> 
> The registration is done in the constructor of MyProgress:
> MyProgress ::MyProgress(){
>     qRegisterMetaType<MyProgress>();
>     qDBusRegisterMetaType<MyProgress>();
> }
> 
> The magic statement I place in top of my MyProcess.cpp
> // this is one of the magic statements
> Q_DECLARE_METATYPE(MyProgress)
> 
> But where exactly do you place the operators? Also in the MyProcess.cpp? 

> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress);
> const QDBusArgument &operator>>(const QDBusArgument &argument, 
> MyProgress& parameterProgress);
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress)
> {
>     argument.beginStructure();
>     argument << parameterProgress.m_Progress;
>     argument << parameterProgress.m_Message;
>     argument << parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
> const QDBusArgument &operator>>(const QDBusArgument &argument, 
> MyProgress& parameterProgress)
> {
>     argument.beginStructure();
>     argument >> parameterProgress.m_Progress;
>     argument >> parameterProgress.m_Message;
>     argument >> parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
> 
> It seems like I am only a few millimeters away from my goal.
> 
> Thanks
> 
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Gesendet: Montag, 2. August 2021 13:41
> An: Stahl, Michael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>
> Betreff: Antwort: [RAUC] D-Bus control Qt 
> 
> Hi Michael,
> 
> "RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 08:15:26:
> 
> > Von: "Stahl, Michael" <mstahl@moba.de>
> > An: "RAUC@pengutronix.de" <RAUC@pengutronix.de>
> > Datum: 02.08.2021 08:15
> > Betreff: [RAUC] D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> > 
> > Is there someone who implemented the DBus Property "Progress" into a
> > Qt-Application? The problem seems the return value isi (Integer, 
> > String, Integer). 
> > For all other properties with a single return value like "Operation"
> > or "LastError" the Qt DBus API works fine. 
> > I found an email from 28.Oct 2019 in the mailing list where Bastian 
> > Krause had the same issue. The answer was only that he had to 
> > cunsult the Qt DBus documentation on how a tuple is mapped to Qt 
types.
> > 
> > Thats a good hint but after hours of searching the web I didn't find
> > a solution. The return value for a property is QVariant in Qt. 
> > 
> > Trial 1 -> Read value by iface.property("Progress"):
> > This is the error message I got when I try to read the progress 
property:
> > Cannot construct placeholder type QDBusRawType
> > 
> > Trial 2 -> Read value by iface.call("Get",...):
> > Not able to get any information. The arguments of the returned 
> > QDBusMessages are always empty!
> That is the way we implemented it:
> 
> On Qt there are some pitfalls and you has to marshaling the data.
> 
> 1. Create a Data Class
> 
> #include <QObject>
> #include <QDBusArgument>
> #include <QString>
> 
> class MyProgress
> {
> public:
> [...]
>     int m_Progress;
>     QString m_Message;
>     int m_Additional;
> };
> 
> // this is one of the magic statements 
> Q_DECLARE_METATYPE(MyProgress)
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress);
> const QDBusArgument &operator>>(const QDBusArgument &argument, 
> MyProgress& parameterProgress);
> };
> 
> You has to register the metatype and implement the operators. In the
> Constructor you has to add two register Methods 
> 
> qRegisterMetaType<MyProgress>();
> qDBusRegisterMetaType<MyProgress>();
> 
> After this tree registrations your Class MyProgress is known by Qt 
> Metatype System. Now you has to implement operators
> 
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress)
> {
>     argument.beginStructure();
>     argument << parameterProgress.m_Progress;
>     argument << parameterProgress.m_Message;
>     argument << parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
> const QDBusArgument &operator>>(const QDBusArgument &argument, 
> MyProgress& parameterProgress)
> {
>     argument.beginStructure();
>     argument >> parameterProgress.m_Progress;
>     argument >> parameterProgress.m_Message;
>     argument >> parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
> 
> Now you are finished with preparing how to use it. In the Qt Slot of
> the D-Bus call your can pipe it in your class
> 
> MyProgress parameterProgress;
> property.value<QDBusArgument>() >> parameterProgress;
> 
> 
> This URL help you to map our code to the Qt example https://
> doc.qt.io/qt-5/qdbusargument.html
> 
> I hope it helps 
> 
> 
> > 
> > _______________________________________________
> > RAUC mailing list
> Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte 
> Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren sowie die 
> unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte 
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. 
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine 
> rechtlich bindende Vereinbarung.
> 
> Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, 
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. 
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, 
> Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael 
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: DE 
112411234_______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte Informationen beinhalten und ist ausschließlich für die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte löschen Sie diese Nachricht und alle Anhänge dazu unverzüglich. Falls nicht ausdrücklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung. 

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Persönlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Geschäftsführer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis 
Ust.-Id.-Nr.: DE 112411234 

[-- Attachment #1.2: Type: text/html, Size: 17833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
  2021-08-02 13:36       ` [RAUC] Antwort: " Eugen.Wiens
@ 2021-08-02 14:29         ` Stahl, Michael
  2021-08-02 14:53           ` [RAUC] Antwort: " Eugen.Wiens
  0 siblings, 1 reply; 16+ messages in thread
From: Stahl, Michael @ 2021-08-02 14:29 UTC (permalink / raw)
  To: Eugen.Wiens; +Cc: RAUC, RAUC


[-- Attachment #1.1: Type: text/plain, Size: 11467 bytes --]

Okay, thanks a lot.

A last question. Is it correct that I have to poll the "Progress" property or is there any signal system where I can subcribe to get a notification at every change of progress status?



________________________________
Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Montag, 2. August 2021 15:36
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: Antwort: Re: [RAUC] Antwort: D-Bus control Qt

Hi Michael,

"RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 15:20:25:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC@pengutronix.de" <RAUC@pengutronix.de>
> Datum: 02.08.2021 15:20
> Betreff: Re: [RAUC] Antwort:  D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
>
> Hi Eugen,
>
> I think I got it.
>
> MyProgress.cpp:
> Q_DECLARE_METATYPE(MyProgress)
>
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress)
> {
>     argument.beginStructure();
>     argument << parameterProgress.m_Progress;
>     argument << parameterProgress.m_Message;
>     argument << parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
>
> const QDBusArgument &operator>>(const QDBusArgument &argument, MyProgress&
> parameterProgress)
> {
>     argument.beginStructure();
>     argument >> parameterProgress.m_Progress;
>     argument >> parameterProgress.m_Message;
>     argument >> parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
>
> MyProgress ::MyProgress(){
>     qRegisterMetaType<MyProgress>();
>     qDBusRegisterMetaType<MyProgress>();
> }
>
> MyProgress.h:
> #ifndef MYPROGRESS_H

> #define MYPROGRESS_H
>

> #include <QObject>
> #include <QDBusArgument>
> #include <QMetaType>
> #include <QDBusMetaType>
>
> class MyProgress
> {
> public:
>     MyProgress();
>     ~MyProgress();
>     int m_Progress;
>     QString m_Message;
>     int m_Additional;
> public slots:
>     friend QDBusArgument &operator<<(QDBusArgument &argument, const
> RaucProgress &parameterProgress);
>     friend const QDBusArgument &operator>>(const QDBusArgument &argument,
> RaucProgress &parameterProgress);
> };
> #endif // MYPROGRESS_H
>
> update.cpp:
> ...
>     QDBusInterface interface( "de.pengutronix.rauc",

>                               "/",
>                               "de.pengutronix.rauc.Installer",
>                               QDBusConnection::systemBus() );
>
>     if (interface.isValid() == true)
>     {
>         qDebug() << "interface is valid";
>                   qDebug() << "Read property (Progress)";
>        QVariant property = interface.property("Progress");
>       property.value<QDBusArgument>() >> parameterProgress;
>        qDebug() << parameterProgress.m_Progress;
>        qDebug() << parameterProgress.m_Message;
>      }
> ...
>
> parameterProgress is delcared in the update.h
>
> I have a last question. Maybe you can answer it. Why have I add the
> keyword "friend" in front of the QDBusArguments? I wount compile without it.
If you add the operators as a member, you Qt has problem to find them. We implement the operators outside of the class. As "normal" functions not as Member Methods. Qt is searching "operator >> ( Type, Type)" and not as Member of a class.

>
> Many thanks.
>
> Kind regards
> Michael
>
> Von: RAUC <rauc-bounces@pengutronix.de> im Auftrag von Stahl,
> Michael <mstahl@moba.de>
> Gesendet: Montag, 2. August 2021 14:45
> An: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>
> Betreff: Re: [RAUC] Antwort: D-Bus control Qt
>
> Hi Eugen,
>
> thanks for the informations. They were very useful. Some lines are
> familiar to me because I tested a lot.
> But I still need some support.
>
> This is the way I request the property:
>
> MyProgress parameterProgress;
> QDBusInterface interface( "de.pengutronix.rauc",
>                     "/",
>                     "de.pengutronix.rauc.Installer",
>                     QDBusConnection::systemBus() );
> QVariant property = interface.property("Progress");
> property.value<QDBusArgument>() >> parameterProgress;
>
> No I get a compiler error:
> no match for operator>>'(opernad types are 'QDBusArgument' and 'MyProgress')
>
> I think I do the registration an the installing of the oparators wrong.
>
> The registration is done in the constructor of MyProgress:
> MyProgress ::MyProgress(){
>     qRegisterMetaType<MyProgress>();
>     qDBusRegisterMetaType<MyProgress>();
> }
>
> The magic statement I place in top of my MyProcess.cpp
> // this is one of the magic statements
> Q_DECLARE_METATYPE(MyProgress)
>
> But where exactly do you place the operators? Also in the MyProcess.cpp?
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress);
> const QDBusArgument &operator>>(const QDBusArgument &argument,
> MyProgress& parameterProgress);
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress)
> {
>     argument.beginStructure();
>     argument << parameterProgress.m_Progress;
>     argument << parameterProgress.m_Message;
>     argument << parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
> const QDBusArgument &operator>>(const QDBusArgument &argument,
> MyProgress& parameterProgress)
> {
>     argument.beginStructure();
>     argument >> parameterProgress.m_Progress;
>     argument >> parameterProgress.m_Message;
>     argument >> parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
>
> It seems like I am only a few millimeters away from my goal.
>
> Thanks
>
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Gesendet: Montag, 2. August 2021 13:41
> An: Stahl, Michael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>
> Betreff: Antwort: [RAUC] D-Bus control Qt
>
> Hi Michael,
>
> "RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 08:15:26:
>
> > Von: "Stahl, Michael" <mstahl@moba.de>
> > An: "RAUC@pengutronix.de" <RAUC@pengutronix.de>
> > Datum: 02.08.2021 08:15
> > Betreff: [RAUC] D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> >
> > Is there someone who implemented the DBus Property "Progress" into a
> > Qt-Application? The problem seems the return value isi (Integer,
> > String, Integer).
> > For all other properties with a single return value like "Operation"
> > or "LastError" the Qt DBus API works fine.
> > I found an email from 28.Oct 2019 in the mailing list where Bastian
> > Krause had the same issue. The answer was only that he had to
> > cunsult the Qt DBus documentation on how a tuple is mapped to Qt types.
> >
> > Thats a good hint but after hours of searching the web I didn't find
> > a solution. The return value for a property is QVariant in Qt.
> >
> > Trial 1 -> Read value by iface.property("Progress"):
> > This is the error message I got when I try to read the progress property:
> > Cannot construct placeholder type QDBusRawType
> >
> > Trial 2 -> Read value by iface.call("Get",...):
> > Not able to get any information. The arguments of the returned
> > QDBusMessages are always empty!
> That is the way we implemented it:
>
> On Qt there are some pitfalls and you has to marshaling the data.
>
> 1. Create a Data Class
>
> #include <QObject>
> #include <QDBusArgument>
> #include <QString>
>
> class MyProgress
> {
> public:
> [...]
>     int m_Progress;
>     QString m_Message;
>     int m_Additional;
> };
>
> // this is one of the magic statements
> Q_DECLARE_METATYPE(MyProgress)
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress);
> const QDBusArgument &operator>>(const QDBusArgument &argument,
> MyProgress& parameterProgress);
> };
>
> You has to register the metatype and implement the operators. In the
> Constructor you has to add two register Methods
>
> qRegisterMetaType<MyProgress>();
> qDBusRegisterMetaType<MyProgress>();
>
> After this tree registrations your Class MyProgress is known by Qt
> Metatype System. Now you has to implement operators
>
> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress)
> {
>     argument.beginStructure();
>     argument << parameterProgress.m_Progress;
>     argument << parameterProgress.m_Message;
>     argument << parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
> const QDBusArgument &operator>>(const QDBusArgument &argument,
> MyProgress& parameterProgress)
> {
>     argument.beginStructure();
>     argument >> parameterProgress.m_Progress;
>     argument >> parameterProgress.m_Message;
>     argument >> parameterProgress.m_Additional;
>     argument.endStructure();
>     return argument;
> }
>
> Now you are finished with preparing how to use it. In the Qt Slot of
> the D-Bus call your can pipe it in your class
>
> MyProgress parameterProgress;
> property.value<QDBusArgument>() >> parameterProgress;
>
>
> This URL help you to map our code to the Qt example https://
> doc.qt.io/qt-5/qdbusargument.html
>
> I hope it helps
>
>
> >
> > _______________________________________________
> > RAUC mailing list
> Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte
> Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren sowie die
> unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind.
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine
> rechtlich bindende Vereinbarung.
>
> Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda,
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M.
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17,
> Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: DE 112411234_______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234

[-- Attachment #1.2: Type: text/html, Size: 20331 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [RAUC] Antwort: Re:  Antwort: Re:  Antwort:  D-Bus control Qt
  2021-08-02 14:29         ` Stahl, Michael
@ 2021-08-02 14:53           ` Eugen.Wiens
  2021-08-03  6:21             ` Stahl, Michael
  0 siblings, 1 reply; 16+ messages in thread
From: Eugen.Wiens @ 2021-08-02 14:53 UTC (permalink / raw)
  To: Stahl, Michael; +Cc: RAUC, RAUC


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1: Type: text/plain; charset="US-ASCII", Size: 1615 bytes --]

Hi Michael,

"RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 16:29:18:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: RAUC <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de" 
> <RAUC@pengutronix.de>
> Datum: 02.08.2021 16:29
> Betreff: Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> 
> Okay, thanks a lot.
> 
> A last question. Is it correct that I have to poll the "Progress" 
> property or is there any signal system where I can subcribe to get a
> notification at every change of progress status?

We are using a dbus signal. You can connect to it with Qt.

Best regards,
Eugen 
Diese E-Mail kann vertrauliche und/oder rechtlich geschützte Informationen beinhalten und ist ausschließlich für die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte löschen Sie diese Nachricht und alle Anhänge dazu unverzüglich. Falls nicht ausdrücklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung. 

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Persönlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Geschäftsführer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis 
Ust.-Id.-Nr.: DE 112411234 

[-- Attachment #1.2: Type: text/html, Size: 2274 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] Antwort: Re:  Antwort: Re:  Antwort:  D-Bus control Qt
  2021-08-02 14:53           ` [RAUC] Antwort: " Eugen.Wiens
@ 2021-08-03  6:21             ` Stahl, Michael
  2021-08-03  6:27               ` [RAUC] Antwort: " Eugen.Wiens
  0 siblings, 1 reply; 16+ messages in thread
From: Stahl, Michael @ 2021-08-03  6:21 UTC (permalink / raw)
  To: Eugen.Wiens; +Cc: RAUC, RAUC


[-- Attachment #1.1: Type: text/plain, Size: 2776 bytes --]

Hi Eugen,

thanks again. I implemented the signal and now I get the signal that the update is finished.
But thats the only signal that rauc is provided, isn't it? To get the progress I have to poll the property, or are there general signals on the dbus that I can connect to?

Do you read the property "Progress" like
QDBusInterface iface( "de.pengutronix.rauc",

                 "/",

                 "de.pengutronix.rauc.Installer",

                 QDBusConnection::systemBus() );

QVariant property = iface.property("Progress");

MyProgress parameterProgress;

property.value<QDBusArgument>() >> parameterProgress;

or did you use another possibility?
If I use the above I get a message five times and the marshaled data (m_Progress, m_Message, ..) are always empty.
QDBusArgument: read from a write-only object




________________________________
Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Montag, 2. August 2021 16:53
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: D-Bus control Qt

Hi Michael,

"RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 16:29:18:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: RAUC <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> <RAUC@pengutronix.de>
> Datum: 02.08.2021 16:29
> Betreff: Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
>
> Okay, thanks a lot.
>
> A last question. Is it correct that I have to poll the "Progress"
> property or is there any signal system where I can subcribe to get a
> notification at every change of progress status?

We are using a dbus signal. You can connect to it with Qt.

Best regards,
Eugen

Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234

[-- Attachment #1.2: Type: text/html, Size: 7716 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt
  2021-08-03  6:21             ` Stahl, Michael
@ 2021-08-03  6:27               ` Eugen.Wiens
  2021-08-03  8:27                 ` Stahl, Michael
  0 siblings, 1 reply; 16+ messages in thread
From: Eugen.Wiens @ 2021-08-03  6:27 UTC (permalink / raw)
  To: Stahl, Michael; +Cc: RAUC, RAUC


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1: Type: text/plain; charset="US-ASCII", Size: 4380 bytes --]

Hi Michael,

you can connect to a property change on dbus level. That is the way we do 
it.


"RAUC" <rauc-bounces@pengutronix.de> schrieb am 03.08.2021 08:21:32:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC" <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de" 
> <RAUC@pengutronix.de>
> Datum: 03.08.2021 08:21
> Betreff: Re: [RAUC] Antwort: Re:  Antwort: Re:  Antwort:  D-Bus control 
Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> 
> Hi Eugen,
> 
> thanks again. I implemented the signal and now I get the signal that
> the update is finished.
> But thats the only signal that rauc is provided, isn't it? To get 
> the progress I have to poll the property, or are there general 
> signals on the dbus that I can connect to?
> 
> Do you read the property "Progress" like 
> QDBusInterface iface( "de.pengutronix.rauc", 
>                  "/",
>                  "de.pengutronix.rauc.Installer",
>                  QDBusConnection::systemBus() );
> QVariant property = iface.property("Progress");
> MyProgress parameterProgress;
> property.value<QDBusArgument>() >> parameterProgress;
> 
> or did you use another possibility?
> If I use the above I get a message five times and the marshaled data (
> m_Progress, m_Message, ..) are always empty.
> QDBusArgument: read from a write-only object

> 
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Gesendet: Montag, 2. August 2021 16:53
> An: Stahl, Michael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-
> bounces@pengutronix.de>
> Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: D-Bus control Qt 
> 
> Hi Michael,
> 
> "RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 16:29:18:
> 
> > Von: "Stahl, Michael" <mstahl@moba.de>
> > An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> > Kopie: RAUC <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de" 
> > <RAUC@pengutronix.de>
> > Datum: 02.08.2021 16:29
> > Betreff: Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> > 
> > Okay, thanks a lot.
> > 
> > A last question. Is it correct that I have to poll the "Progress" 
> > property or is there any signal system where I can subcribe to get a
> > notification at every change of progress status?
> 
> We are using a dbus signal. You can connect to it with Qt.
> 
> Best regards,
> Eugen 
> Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte 
> Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren sowie die 
> unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte 
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. 
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine 
> rechtlich bindende Vereinbarung.
> 
> Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, 
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. 
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, 
> Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael 
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: DE 
112411234_______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte Informationen beinhalten und ist ausschließlich für die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte löschen Sie diese Nachricht und alle Anhänge dazu unverzüglich. Falls nicht ausdrücklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung. 

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Persönlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Geschäftsführer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis 
Ust.-Id.-Nr.: DE 112411234 

[-- Attachment #1.2: Type: text/html, Size: 6141 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt
  2021-08-03  6:27               ` [RAUC] Antwort: " Eugen.Wiens
@ 2021-08-03  8:27                 ` Stahl, Michael
  2021-08-03 10:57                   ` Stahl, Michael
  2021-08-03 11:00                   ` Stahl, Michael
  0 siblings, 2 replies; 16+ messages in thread
From: Stahl, Michael @ 2021-08-03  8:27 UTC (permalink / raw)
  To: Eugen.Wiens; +Cc: RAUC, RAUC


[-- Attachment #1.1: Type: text/plain, Size: 5694 bytes --]

Hi Euen,

I know but I am stucking. I am polling the propery "Operation". Just when it changes from "idle" to "installing" I subscribe the PropertiesChanged signal but without success. I tried several connect strings but all without success.


if (QDBusConnection::sessionBus().connect("de.pengutronix.rauc",

                                 "/",

                                 "org.freedesktop.DBus.Properties",

                                 "PropertiesChanged",

                                 this,

                                 SLOT(propertyChanged(const QString& ,

                                                      const QMap<QString, QVariant>& ,

                                                      const QStringList& ))))

{

    qDebug() << "PropertiesChanged signal connected successfully to slot";

} else {

    qDebug() << "PropertiesChanged signal connection was not successful";

}

Please can you tell me how to subcribe the PropertiesChanged signal?

________________________________
Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Dienstag, 3. August 2021 08:27
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt

Hi Michael,

you can connect to a property change on dbus level. That is the way we do it.


"RAUC" <rauc-bounces@pengutronix.de> schrieb am 03.08.2021 08:21:32:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC" <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> <RAUC@pengutronix.de>
> Datum: 03.08.2021 08:21
> Betreff: Re: [RAUC] Antwort: Re:  Antwort: Re:  Antwort:  D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
>
> Hi Eugen,
>
> thanks again. I implemented the signal and now I get the signal that
> the update is finished.
> But thats the only signal that rauc is provided, isn't it? To get
> the progress I have to poll the property, or are there general
> signals on the dbus that I can connect to?
>
> Do you read the property "Progress" like
> QDBusInterface iface( "de.pengutronix.rauc",
>                  "/",
>                  "de.pengutronix.rauc.Installer",
>                  QDBusConnection::systemBus() );
> QVariant property = iface.property("Progress");
> MyProgress parameterProgress;
> property.value<QDBusArgument>() >> parameterProgress;
>
> or did you use another possibility?
> If I use the above I get a message five times and the marshaled data (
> m_Progress, m_Message, ..) are always empty.
> QDBusArgument: read from a write-only object

>
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Gesendet: Montag, 2. August 2021 16:53
> An: Stahl, Michael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-
> bounces@pengutronix.de>
> Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: D-Bus control Qt
>
> Hi Michael,
>
> "RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 16:29:18:
>
> > Von: "Stahl, Michael" <mstahl@moba.de>
> > An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> > Kopie: RAUC <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> > <RAUC@pengutronix.de>
> > Datum: 02.08.2021 16:29
> > Betreff: Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> >
> > Okay, thanks a lot.
> >
> > A last question. Is it correct that I have to poll the "Progress"
> > property or is there any signal system where I can subcribe to get a
> > notification at every change of progress status?
>
> We are using a dbus signal. You can connect to it with Qt.
>
> Best regards,
> Eugen
> Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte
> Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren sowie die
> unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind.
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine
> rechtlich bindende Vereinbarung.
>
> Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda,
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M.
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17,
> Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: DE 112411234_______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234

[-- Attachment #1.2: Type: text/html, Size: 13493 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt
  2021-08-03  8:27                 ` Stahl, Michael
@ 2021-08-03 10:57                   ` Stahl, Michael
  2021-08-03 11:00                   ` Stahl, Michael
  1 sibling, 0 replies; 16+ messages in thread
From: Stahl, Michael @ 2021-08-03 10:57 UTC (permalink / raw)
  To: Eugen.Wiens; +Cc: RAUC, RAUC


[-- Attachment #1.1: Type: text/plain, Size: 7076 bytes --]

I found the issue

You have to connect to the systemBus not to the sessionBus!

if (QDBusConnection::systemBus().connect("de.pengutronix.rauc",                                         //Service

                                 "/",                               //Path

                                 "org.freedesktop.DBus.Properties", //Interface

                                 "PropertiesChanged",

                                 this,

                                 SLOT(propertyChanged(const QString& ,

                                                      const QMap<QString, QVariant>& ,

                                                      const QStringList& )))) {


        qDebug() << "PropertiesChanged signal connected successfully to slot";

        } else {

        qDebug() << "PropertiesChanged signal connection was not successful";

        }

Now I my function propertyChanged is called every time the property changes.

If you use
________________________________
Von: RAUC <rauc-bounces@pengutronix.de> im Auftrag von Stahl, Michael <mstahl@moba.de>
Gesendet: Dienstag, 3. August 2021 10:27
An: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Cc: RAUC <rauc-bounces@pengutronix.de>; RAUC@pengutronix.de <RAUC@pengutronix.de>
Betreff: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt

Hi Euen,

I know but I am stucking. I am polling the propery "Operation". Just when it changes from "idle" to "installing" I subscribe the PropertiesChanged signal but without success. I tried several connect strings but all without success.


if (QDBusConnection::sessionBus().connect("de.pengutronix.rauc",

                                 "/",

                                 "org.freedesktop.DBus.Properties",

                                 "PropertiesChanged",

                                 this,

                                 SLOT(propertyChanged(const QString& ,

                                                      const QMap<QString, QVariant>& ,

                                                      const QStringList& ))))

{

    qDebug() << "PropertiesChanged signal connected successfully to slot";

} else {

    qDebug() << "PropertiesChanged signal connection was not successful";

}

Please can you tell me how to subcribe the PropertiesChanged signal?

________________________________
Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Dienstag, 3. August 2021 08:27
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt

Hi Michael,

you can connect to a property change on dbus level. That is the way we do it.


"RAUC" <rauc-bounces@pengutronix.de> schrieb am 03.08.2021 08:21:32:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC" <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> <RAUC@pengutronix.de>
> Datum: 03.08.2021 08:21
> Betreff: Re: [RAUC] Antwort: Re:  Antwort: Re:  Antwort:  D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
>
> Hi Eugen,
>
> thanks again. I implemented the signal and now I get the signal that
> the update is finished.
> But thats the only signal that rauc is provided, isn't it? To get
> the progress I have to poll the property, or are there general
> signals on the dbus that I can connect to?
>
> Do you read the property "Progress" like
> QDBusInterface iface( "de.pengutronix.rauc",
>                  "/",
>                  "de.pengutronix.rauc.Installer",
>                  QDBusConnection::systemBus() );
> QVariant property = iface.property("Progress");
> MyProgress parameterProgress;
> property.value<QDBusArgument>() >> parameterProgress;
>
> or did you use another possibility?
> If I use the above I get a message five times and the marshaled data (
> m_Progress, m_Message, ..) are always empty.
> QDBusArgument: read from a write-only object

>
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Gesendet: Montag, 2. August 2021 16:53
> An: Stahl, Michael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-
> bounces@pengutronix.de>
> Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: D-Bus control Qt
>
> Hi Michael,
>
> "RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 16:29:18:
>
> > Von: "Stahl, Michael" <mstahl@moba.de>
> > An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> > Kopie: RAUC <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> > <RAUC@pengutronix.de>
> > Datum: 02.08.2021 16:29
> > Betreff: Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> >
> > Okay, thanks a lot.
> >
> > A last question. Is it correct that I have to poll the "Progress"
> > property or is there any signal system where I can subcribe to get a
> > notification at every change of progress status?
>
> We are using a dbus signal. You can connect to it with Qt.
>
> Best regards,
> Eugen
> Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte
> Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren sowie die
> unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind.
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine
> rechtlich bindende Vereinbarung.
>
> Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda,
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M.
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17,
> Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: DE 112411234_______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234

[-- Attachment #1.2: Type: text/html, Size: 20606 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt
  2021-08-03  8:27                 ` Stahl, Michael
  2021-08-03 10:57                   ` Stahl, Michael
@ 2021-08-03 11:00                   ` Stahl, Michael
  2021-08-03 11:14                     ` [RAUC] Antwort: " Eugen.Wiens
  1 sibling, 1 reply; 16+ messages in thread
From: Stahl, Michael @ 2021-08-03 11:00 UTC (permalink / raw)
  To: RAUC; +Cc: RAUC


[-- Attachment #1.1: Type: text/plain, Size: 7164 bytes --]

I found the issue

You have to connect to the systemBus not to the sessionBus!

if (QDBusConnection::systemBus().connect("de.pengutronix.rauc",                                         //Service

                                 "/",                               //Path

                                 "org.freedesktop.DBus.Properties", //Interface

                                 "PropertiesChanged",

                                 this,

                                 SLOT(propertyChanged(const QString& ,

                                                      const QMap<QString, QVariant>& ,

                                                      const QStringList& )))) {


        qDebug() << "PropertiesChanged signal connected successfully to slot";

        } else {

        qDebug() << "PropertiesChanged signal connection was not successful";

        }

Now I my function propertyChanged is called every time the property changes.

If you use
export QDBUS_DEBUG=1
you get a lot of debug output. It is very useful.

The next step is to extract the informations of the QMap.


________________________________
Von: Stahl, Michael <mstahl@moba.de>
Gesendet: Dienstag, 3. August 2021 10:27
An: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: AW: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt

Hi Euen,

I know but I am stucking. I am polling the propery "Operation". Just when it changes from "idle" to "installing" I subscribe the PropertiesChanged signal but without success. I tried several connect strings but all without success.


if (QDBusConnection::sessionBus().connect("de.pengutronix.rauc",

                                 "/",

                                 "org.freedesktop.DBus.Properties",

                                 "PropertiesChanged",

                                 this,

                                 SLOT(propertyChanged(const QString& ,

                                                      const QMap<QString, QVariant>& ,

                                                      const QStringList& ))))

{

    qDebug() << "PropertiesChanged signal connected successfully to slot";

} else {

    qDebug() << "PropertiesChanged signal connection was not successful";

}

Please can you tell me how to subcribe the PropertiesChanged signal?

________________________________
Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Dienstag, 3. August 2021 08:27
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt

Hi Michael,

you can connect to a property change on dbus level. That is the way we do it.


"RAUC" <rauc-bounces@pengutronix.de> schrieb am 03.08.2021 08:21:32:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC" <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> <RAUC@pengutronix.de>
> Datum: 03.08.2021 08:21
> Betreff: Re: [RAUC] Antwort: Re:  Antwort: Re:  Antwort:  D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
>
> Hi Eugen,
>
> thanks again. I implemented the signal and now I get the signal that
> the update is finished.
> But thats the only signal that rauc is provided, isn't it? To get
> the progress I have to poll the property, or are there general
> signals on the dbus that I can connect to?
>
> Do you read the property "Progress" like
> QDBusInterface iface( "de.pengutronix.rauc",
>                  "/",
>                  "de.pengutronix.rauc.Installer",
>                  QDBusConnection::systemBus() );
> QVariant property = iface.property("Progress");
> MyProgress parameterProgress;
> property.value<QDBusArgument>() >> parameterProgress;
>
> or did you use another possibility?
> If I use the above I get a message five times and the marshaled data (
> m_Progress, m_Message, ..) are always empty.
> QDBusArgument: read from a write-only object

>
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Gesendet: Montag, 2. August 2021 16:53
> An: Stahl, Michael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-
> bounces@pengutronix.de>
> Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: D-Bus control Qt
>
> Hi Michael,
>
> "RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 16:29:18:
>
> > Von: "Stahl, Michael" <mstahl@moba.de>
> > An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> > Kopie: RAUC <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> > <RAUC@pengutronix.de>
> > Datum: 02.08.2021 16:29
> > Betreff: Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> >
> > Okay, thanks a lot.
> >
> > A last question. Is it correct that I have to poll the "Progress"
> > property or is there any signal system where I can subcribe to get a
> > notification at every change of progress status?
>
> We are using a dbus signal. You can connect to it with Qt.
>
> Best regards,
> Eugen
> Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte
> Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren sowie die
> unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind.
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine
> rechtlich bindende Vereinbarung.
>
> Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda,
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M.
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17,
> Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: DE 112411234_______________________________________________
> RAUC mailing list

Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234

[-- Attachment #1.2: Type: text/html, Size: 22393 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt
  2021-08-03 11:00                   ` Stahl, Michael
@ 2021-08-03 11:14                     ` Eugen.Wiens
  2021-08-03 13:27                       ` Stahl, Michael
  0 siblings, 1 reply; 16+ messages in thread
From: Eugen.Wiens @ 2021-08-03 11:14 UTC (permalink / raw)
  To: Stahl, Michael; +Cc: RAUC, RAUC


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1: Type: text/plain; charset="US-ASCII", Size: 8432 bytes --]

Hi Michael,

sounds good.



Von:    "Stahl, Michael" <mstahl@moba.de>
An:     "RAUC@pengutronix.de" <RAUC@pengutronix.de>
Kopie:  RAUC <rauc-bounces@pengutronix.de>
Datum:  03.08.2021 13:00
Betreff:        Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: 
D-Bus control Qt
Gesendet von:   "RAUC" <rauc-bounces@pengutronix.de>



I found the issue 

You have to connect to the systemBus not to the sessionBus!

if (QDBusConnection::systemBus().connect("de.pengutronix.rauc",           
//Service 
                                 "/",                               //Path
                                 "org.freedesktop.DBus.Properties", 
//Interface
                                 "PropertiesChanged",
                                 this,
                                 SLOT(propertyChanged(const QString& ,
                                                      const QMap<QString, 
QVariant>& ,
                                                      const QStringList& 
)))) {

        qDebug() << "PropertiesChanged signal connected successfully to 
slot";
        } else {
        qDebug() << "PropertiesChanged signal connection was not 
successful";
        }

Now I my function propertyChanged is called every time the property 
changes.

If you use 
export QDBUS_DEBUG=1
you get a lot of debug output. It is very useful.

The next step is to extract the informations of the QMap.



Von: Stahl, Michael <mstahl@moba.de>
Gesendet: Dienstag, 3. August 2021 10:27
An: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC 
<rauc-bounces@pengutronix.de>
Betreff: AW: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: D-Bus 
control Qt 
 
Hi Euen,

I know but I am stucking. I am polling the propery "Operation". Just when 
it changes from "idle" to "installing" I subscribe the PropertiesChanged 
signal but without success. I tried several connect strings but all 
without success. 


if (QDBusConnection::sessionBus().connect("de.pengutronix.rauc",
                                 "/",
                                 "org.freedesktop.DBus.Properties",
                                 "PropertiesChanged",
                                 this,
                                 SLOT(propertyChanged(const QString& ,
                                                      const QMap<QString, 
QVariant>& ,
                                                      const QStringList& 
)))) 
{
    qDebug() << "PropertiesChanged signal connected successfully to slot";
} else {
    qDebug() << "PropertiesChanged signal connection was not successful";
}

Please can you tell me how to subcribe the PropertiesChanged signal?


Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Dienstag, 3. August 2021 08:27
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC 
<rauc-bounces@pengutronix.de>
Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: D-Bus 
control Qt 
 
Hi Michael,

you can connect to a property change on dbus level. That is the way we do 
it.


"RAUC" <rauc-bounces@pengutronix.de> schrieb am 03.08.2021 08:21:32:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC" <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de" 
> <RAUC@pengutronix.de>
> Datum: 03.08.2021 08:21
> Betreff: Re: [RAUC] Antwort: Re:  Antwort: Re:  Antwort:  D-Bus control 
Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> 
> Hi Eugen,
> 
> thanks again. I implemented the signal and now I get the signal that
> the update is finished.
> But thats the only signal that rauc is provided, isn't it? To get 
> the progress I have to poll the property, or are there general 
> signals on the dbus that I can connect to?
> 
> Do you read the property "Progress" like 
> QDBusInterface iface( "de.pengutronix.rauc", 
>                  "/",
>                  "de.pengutronix.rauc.Installer",
>                  QDBusConnection::systemBus() );
> QVariant property = iface.property("Progress");
> MyProgress parameterProgress;
> property.value<QDBusArgument>() >> parameterProgress;
> 
> or did you use another possibility?
> If I use the above I get a message five times and the marshaled data (
> m_Progress, m_Message, ..) are always empty.
> QDBusArgument: read from a write-only object

> 
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Gesendet: Montag, 2. August 2021 16:53
> An: Stahl, Michael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-
> bounces@pengutronix.de>
> Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: D-Bus control Qt 
> 
> Hi Michael,
> 
> "RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 16:29:18:
> 
> > Von: "Stahl, Michael" <mstahl@moba.de>
> > An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> > Kopie: RAUC <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de" 
> > <RAUC@pengutronix.de>
> > Datum: 02.08.2021 16:29
> > Betreff: Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> > 
> > Okay, thanks a lot.
> > 
> > A last question. Is it correct that I have to poll the "Progress" 
> > property or is there any signal system where I can subcribe to get a
> > notification at every change of progress status?
> 
> We are using a dbus signal. You can connect to it with Qt.
> 
> Best regards,
> Eugen 
> Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte 
> Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren sowie die 
> unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte 
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. 
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine 
> rechtlich bindende Vereinbarung.
> 
> Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, 
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. 
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, 
> Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael 
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: DE 
112411234_______________________________________________
> RAUC mailing list
Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen 
beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen 
bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser 
Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls 
telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat 
dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge 
dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail 
keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht 
Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, 
Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. 
Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios 
Charisiadis
Ust.-Id.-Nr.: DE 112411234_______________________________________________
RAUC mailing list



Diese E-Mail kann vertrauliche und/oder rechtlich geschützte Informationen beinhalten und ist ausschließlich für die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte löschen Sie diese Nachricht und alle Anhänge dazu unverzüglich. Falls nicht ausdrücklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung. 

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Persönlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Geschäftsführer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis 
Ust.-Id.-Nr.: DE 112411234 

[-- Attachment #1.2: Type: text/html, Size: 21434 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt
  2021-08-03 11:14                     ` [RAUC] Antwort: " Eugen.Wiens
@ 2021-08-03 13:27                       ` Stahl, Michael
  0 siblings, 0 replies; 16+ messages in thread
From: Stahl, Michael @ 2021-08-03 13:27 UTC (permalink / raw)
  To: Eugen.Wiens; +Cc: RAUC, RAUC


[-- Attachment #1.1: Type: text/plain, Size: 12891 bytes --]

I solved my problems. Now I want to share my solution. Many thanks to Eugen Wiens who gave the most important input.

Summary:
1. Create a Data Class
2. Register the Data Class
3. Implement operators for marshalling
4. Install signal notification for PropertyChange signal
5. Pip the DBus data into the data class

1. Data Class
raucprogress.cpp
#include "raucprogress.h"


QDBusArgument &operator<<(QDBusArgument &argument, const RaucProgress& parameterProgress)

{

    argument.beginStructure();

    argument << parameterProgress.m_Progress;

    argument << parameterProgress.m_Message;

    argument << parameterProgress.m_Additional;

    argument.endStructure();

    return argument;

}


const QDBusArgument &operator>>(const QDBusArgument &argument, RaucProgress& parameterProgress)

{

    argument.beginStructure();

    argument >> parameterProgress.m_Progress;

    argument >> parameterProgress.m_Message;

    argument >> parameterProgress.m_Additional;

    argument.endStructure();

    return argument;

}


raucprogress.h

#ifndef RAUCPROGRESS_H


#define RAUCPROGRESS_H

#include <QObject>

#include <QDBusArgument>

#include <QMetaType>

#include <QDBusMetaType>

class RaucProgress

{

public:

    int m_Progress;

    QString m_Message;

    int m_Additional;

};

QDBusArgument &operator<<(QDBusArgument &argument, const RaucProgress &parameterProgress);

const QDBusArgument &operator>>(const QDBusArgument &argument, RaucProgress &parameterProgress);

#endif // RAUCPROGRESS_H


2. Register the Data Class

notifier.cpp:

// this is one of the magic statements

Q_DECLARE_METATYPE(RaucProgress)


3. Register the Data Class

notifier.cpp:

Notifier::Notifier()

{

    qRegisterMetaType<RaucProgress>();

  qDBusRegisterMetaType<RaucProgress>();

}



4. Install signal notification for PropertyChange signal

notifier.cpp:

int Notifier::Init()


{

    if (!QDBusConnection::sessionBus().isConnected()) {

         fprintf(stderr, "Cannot connect to the D-Bus session bus.\n"

                 "To start it, run:\n"

                 "\teval `dbus-launch --auto-syntax`\n");

         return 1;

     }

    dbus_iface = new QDBusInterface ( "de.pengutronix.rauc",

                                      "/",

                                      "de.pengutronix.rauc.Installer",

                                      QDBusConnection::systemBus() );

    if (dbus_iface->isValid() == false)

    {

        return 1;

    }


    connect(dbus_iface, SIGNAL(Completed(int)),this,SLOT(UpdateFinished(int)));


    if (QDBusConnection::systemBus().connect("de.pengutronix.rauc",             //Service

                                             "/",                               //Path

                                             "org.freedesktop.DBus.Properties", //Interface

                                             "PropertiesChanged",

                                             this,

                                             SLOT(propertyChanged(const QString& ,

                                                                  const QMap<QString, QVariant>& ,

                                                                  const QStringList& )))) {

        qDebug() << "PropertiesChanged signal connected successfully to slot";

        } else {

         qDebug() << "PropertiesChanged signal connection was not successful";

         return 1;

        }

    return 0;

}


5. Pip the DBus data into the data class

notifier.cpp


void Notifier::propertyChanged(const QString text , const QMap<QString, QVariant> map, const QStringList list){


    RaucProgress parameterProgress;

    map["Progress"].value<QDBusArgument>() >> parameterProgress;

    qDebug() << parameterProgress.m_Progress;

    qDebug() << parameterProgress.m_Message;

}


I hope it can be useful for people who have similar problems as I.


Kind Regards


Michael


________________________________
Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Dienstag, 3. August 2021 13:14
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt

Hi Michael,

sounds good.



Von:        "Stahl, Michael" <mstahl@moba.de>
An:        "RAUC@pengutronix.de" <RAUC@pengutronix.de>
Kopie:        RAUC <rauc-bounces@pengutronix.de>
Datum:        03.08.2021 13:00
Betreff:        Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt
Gesendet von:        "RAUC" <rauc-bounces@pengutronix.de>
________________________________



I found the issue

You have to connect to the systemBus not to the sessionBus!

if(QDBusConnection::systemBus().connect("de.pengutronix.rauc",                                        //Service
                                 "/",                              //Path
                                 "org.freedesktop.DBus.Properties",//Interface
                                 "PropertiesChanged",
                                 this,
                                 SLOT(propertyChanged(constQString&,
                                                      constQMap<QString,QVariant>&,
                                                      constQStringList&)))){

        qDebug()<<"PropertiesChangedsignalconnectedsuccessfullytoslot";
        }else{
        qDebug()<<"PropertiesChangedsignalconnectionwasnotsuccessful";
        }

Now I my function propertyChanged is called every time the property changes.

If you use
export QDBUS_DEBUG=1
you get a lot of debug output. It is very useful.

The next step is to extract the informations of the QMap.


________________________________

Von: Stahl, Michael <mstahl@moba.de>
Gesendet: Dienstag, 3. August 2021 10:27
An: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: AW: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt

Hi Euen,

I know but I am stucking. I am polling the propery "Operation". Just when it changes from "idle" to "installing" I subscribe the PropertiesChanged signal but without success. I tried several connect strings but all without success.


if(QDBusConnection::sessionBus().connect("de.pengutronix.rauc",
                                 "/",
                                 "org.freedesktop.DBus.Properties",
                                 "PropertiesChanged",
                                 this,
                                 SLOT(propertyChanged(constQString&,
                                                      constQMap<QString,QVariant>&,
                                                      constQStringList&))))
{
    qDebug()<<"PropertiesChangedsignalconnectedsuccessfullytoslot";
}else{
    qDebug()<<"PropertiesChangedsignalconnectionwasnotsuccessful";
}

Please can you tell me how to subcribe the PropertiesChanged signal?

________________________________

Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
Gesendet: Dienstag, 3. August 2021 08:27
An: Stahl, Michael <mstahl@moba.de>
Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-bounces@pengutronix.de>
Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: Re: Antwort: D-Bus control Qt

Hi Michael,

you can connect to a property change on dbus level. That is the way we do it.


"RAUC" <rauc-bounces@pengutronix.de> schrieb am 03.08.2021 08:21:32:

> Von: "Stahl, Michael" <mstahl@moba.de>
> An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC" <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> <RAUC@pengutronix.de>
> Datum: 03.08.2021 08:21
> Betreff: Re: [RAUC] Antwort: Re:  Antwort: Re:  Antwort:  D-Bus control Qt
> Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
>
> Hi Eugen,
>
> thanks again. I implemented the signal and now I get the signal that
> the update is finished.
> But thats the only signal that rauc is provided, isn't it? To get
> the progress I have to poll the property, or are there general
> signals on the dbus that I can connect to?
>
> Do you read the property "Progress" like
> QDBusInterface iface( "de.pengutronix.rauc",
>                  "/",
>                  "de.pengutronix.rauc.Installer",
>                  QDBusConnection::systemBus() );
> QVariant property = iface.property("Progress");
> MyProgress parameterProgress;
> property.value<QDBusArgument>() >> parameterProgress;
>
> or did you use another possibility?
> If I use the above I get a message five times and the marshaled data (
> m_Progress, m_Message, ..) are always empty.
> QDBusArgument: read from a write-only object

>
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>
> Gesendet: Montag, 2. August 2021 16:53
> An: Stahl, Michael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>; RAUC <rauc-
> bounces@pengutronix.de>
> Betreff: Antwort: Re: [RAUC] Antwort: Re: Antwort: D-Bus control Qt
>
> Hi Michael,
>
> "RAUC" <rauc-bounces@pengutronix.de> schrieb am 02.08.2021 16:29:18:
>
> > Von: "Stahl, Michael" <mstahl@moba.de>
> > An: "Eugen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> > Kopie: RAUC <rauc-bounces@pengutronix.de>, "RAUC@pengutronix.de"
> > <RAUC@pengutronix.de>
> > Datum: 02.08.2021 16:29
> > Betreff: Re: [RAUC] Antwort: Re:  Antwort:  D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-bounces@pengutronix.de>
> >
> > Okay, thanks a lot.
> >
> > A last question. Is it correct that I have to poll the "Progress"
> > property or is there any signal system where I can subcribe to get a
> > notification at every change of progress status?
>
> We are using a dbus signal. You can connect to it with Qt.
>
> Best regards,
> Eugen
> Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte
> Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren sowie die
> unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind.
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine
> rechtlich bindende Vereinbarung.
>
> Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda,
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M.
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17,
> Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: DE 112411234_______________________________________________
> RAUC mailing list
Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234_______________________________________________
RAUC mailing list



Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz?glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Charisiadis
Ust.-Id.-Nr.: DE 112411234

[-- Attachment #1.2: Type: text/html, Size: 57834 bytes --]

[-- Attachment #2: Type: text/plain, Size: 66 bytes --]

_______________________________________________
RAUC mailing list

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-08-03 13:27 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-02  6:15 [RAUC] D-Bus control Qt Stahl, Michael
2021-08-02  8:14 ` Bastian Krause
2021-08-02  8:53   ` Wolk, Steffen
2021-08-02 11:41 ` [RAUC] Antwort: " Eugen.Wiens
2021-08-02 12:45   ` Stahl, Michael
2021-08-02 13:20     ` Stahl, Michael
2021-08-02 13:36       ` [RAUC] Antwort: " Eugen.Wiens
2021-08-02 14:29         ` Stahl, Michael
2021-08-02 14:53           ` [RAUC] Antwort: " Eugen.Wiens
2021-08-03  6:21             ` Stahl, Michael
2021-08-03  6:27               ` [RAUC] Antwort: " Eugen.Wiens
2021-08-03  8:27                 ` Stahl, Michael
2021-08-03 10:57                   ` Stahl, Michael
2021-08-03 11:00                   ` Stahl, Michael
2021-08-03 11:14                     ` [RAUC] Antwort: " Eugen.Wiens
2021-08-03 13:27                       ` Stahl, Michael

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox