From f790d327e97ed80cdaf61871b80e7e3b8be02082 Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Thu, 20 Jul 2023 08:15:03 +0200 Subject: [PATCH] Add dbus interface for SystemController --- DCPlugin.pro | 2 + src/ATBAPP/ATBDeviceControllerPlugin.cpp | 44 +++++++++++++ src/ATBAPP/ATBDeviceControllerPlugin.h | 5 ++ src/ATBAPP/support/DBusController.xml | 14 ++++ .../support/DBusControllerInterface.cpp | 26 ++++++++ src/ATBAPP/support/DBusControllerInterface.h | 64 +++++++++++++++++++ 6 files changed, 155 insertions(+) create mode 100644 src/ATBAPP/support/DBusController.xml create mode 100644 src/ATBAPP/support/DBusControllerInterface.cpp create mode 100644 src/ATBAPP/support/DBusControllerInterface.h diff --git a/DCPlugin.pro b/DCPlugin.pro index 98002ff..f07f685 100644 --- a/DCPlugin.pro +++ b/DCPlugin.pro @@ -77,6 +77,7 @@ HEADERS += \ src/ATBAPP/ATBMachineEvent.h \ src/ATBAPP/ATBDeviceControllerPlugin.h \ src/ATBAPP/Utils.h \ + src/ATBAPP/support/DBusControllerInterface.h \ src/ATBAPP/support/JSON.h SOURCES += \ @@ -85,6 +86,7 @@ SOURCES += \ src/ATBAPP/ATBDeviceControllerPlugin.cpp \ src/ATBAPP/DeviceControllerDiag.cpp \ src/ATBAPP/Utils.cpp \ + src/ATBAPP/support/DBusControllerInterface.cpp \ src/ATBAPP/support/JSON.cpp DISTFILES += \ diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.cpp b/src/ATBAPP/ATBDeviceControllerPlugin.cpp index 77956b4..bdc6e19 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.cpp +++ b/src/ATBAPP/ATBDeviceControllerPlugin.cpp @@ -3,6 +3,7 @@ #include "src/ATBAPP/ATBMachineEvent.h" #include "src/ATBAPP/Utils.h" #include "src/ATBAPP/support/JSON.h" +#include "src/ATBAPP/support/DBusControllerInterface.h" #include #include @@ -31,6 +32,9 @@ ATBDeviceControllerPlugin::ATBDeviceControllerPlugin(QObject *parent) return; } + this->init_sc_dbus(); + + //connect(dynamic_cast(hw), SIGNAL(hwapi_templatePrintFinished_OK()), this, SLOT(onPrintFinishedOK()), Qt::QueuedConnection); //connect(dynamic_cast(hw), SIGNAL(hwapi_templatePrintFinished_Err()), this, SLOT(onPrintFinishedERR()), Qt::QueuedConnection); @@ -911,6 +915,46 @@ bool ATBDeviceControllerPlugin::private_loadCashAgentLib(QString pluginName) + + +/*********************************************************************************************** + * dbus + */ +int ATBDeviceControllerPlugin::init_sc_dbus() +{ +#if defined (ARCH_PTU4) + this->dbus = new DBusControllerInterface("eu.atb.ptu", "/systemcontrol", QDBusConnection::systemBus(), 0); +#elif defined (ARCH_PTU5) + this->dbus = new DBusControllerInterface("eu.atb.ptu.systemcontrol", "/systemcontrol", QDBusConnection::systemBus(), 0); +#else + this->dbus = new DBusControllerInterface("eu.atb.ptu", "/systemcontrol", QDBusConnection::sessionBus(), 0); +#endif + if (!dbus->isValid()) { + QString errorString = QDBusError::errorString(dbus->lastError().type()); + qCritical() << errorString; + + if (dbus->lastError().isValid()){ + qCritical() << "last error is valid."; + } + + qCritical() << "message: " << dbus->lastError().message(); + qCritical() << "SystemController is not valid."; + return 0; + } + + if (!dbus->connection().isConnected()) { + qCritical() << "SystemController is not connected."; + return 0; + } + + connect(this->dbus, SIGNAL(wokeUpFrom(uchar)), this, SLOT(onWokeUp(uchar))); + + return 1; +} + + + + /************************************************************************************************ * Mandatory plugin methods * diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.h b/src/ATBAPP/ATBDeviceControllerPlugin.h index d913b05..391e097 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.h +++ b/src/ATBAPP/ATBDeviceControllerPlugin.h @@ -16,6 +16,7 @@ #include +class DBusControllerInterface; class QTextCodec; @@ -97,6 +98,8 @@ private: QObject* eventReceiver; + DBusControllerInterface* dbus; + hwinf* hw; DeviceControllerDiag* diag; @@ -113,6 +116,8 @@ private: // counts failed hw->log_chkIfVaultRecordAvailable() int accountCheckCounter; + // dbus + int init_sc_dbus(); private slots: // printer diff --git a/src/ATBAPP/support/DBusController.xml b/src/ATBAPP/support/DBusController.xml new file mode 100644 index 0000000..80e41a1 --- /dev/null +++ b/src/ATBAPP/support/DBusController.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/ATBAPP/support/DBusControllerInterface.cpp b/src/ATBAPP/support/DBusControllerInterface.cpp new file mode 100644 index 0000000..8bd2c7c --- /dev/null +++ b/src/ATBAPP/support/DBusControllerInterface.cpp @@ -0,0 +1,26 @@ +/* + * This file was generated by qdbusxml2cpp version 0.7 + * Command line was: qdbusxml2cpp -p DBusControllerInterface -c DBusControllerInterface DBusController.xml + * + * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. + * + * This is an auto-generated file. + * This file may have been hand-edited. Look for HAND-EDIT comments + * before re-generating it. + */ + +#include "DBusControllerInterface.h" + +/* + * Implementation of interface class DBusControllerInterface + */ + +DBusControllerInterface::DBusControllerInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) + : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) +{ +} + +DBusControllerInterface::~DBusControllerInterface() +{ +} + diff --git a/src/ATBAPP/support/DBusControllerInterface.h b/src/ATBAPP/support/DBusControllerInterface.h new file mode 100644 index 0000000..24941f7 --- /dev/null +++ b/src/ATBAPP/support/DBusControllerInterface.h @@ -0,0 +1,64 @@ +/* + * This file was generated by qdbusxml2cpp version 0.7 + * Command line was: qdbusxml2cpp -p DBusControllerInterface -c DBusControllerInterface DBusController.xml + * + * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. + * + * This is an auto-generated file. + * Do not edit! All changes made to it will be lost. + */ + +#ifndef DBUSCONTROLLERINTERFACE_H +#define DBUSCONTROLLERINTERFACE_H + +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Proxy class for interface eu.atb.ptu.systemcontrol + */ +class DBusControllerInterface: public QDBusAbstractInterface +{ + Q_OBJECT +public: + static inline const char *staticInterfaceName() + { return "eu.atb.ptu.systemcontrol"; } + +public: + DBusControllerInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); + + ~DBusControllerInterface(); + +public Q_SLOTS: // METHODS + inline QDBusPendingReply<> finishedBackgroundTask(const QString &id) + { + QList argumentList; + argumentList << QVariant::fromValue(id); + return asyncCallWithArgumentList(QLatin1String("finishedBackgroundTask"), argumentList); + } + + inline QDBusPendingReply<> startBackgroundTask(const QString &id) + { + QList argumentList; + argumentList << QVariant::fromValue(id); + return asyncCallWithArgumentList(QLatin1String("startBackgroundTask"), argumentList); + } + +Q_SIGNALS: // SIGNALS + void wokeUpFrom(uchar source); +}; + +namespace eu { + namespace atb { + namespace ptu { + typedef ::DBusControllerInterface systemcontrol; + } + } +} +#endif