Compare commits

...

13 Commits

8 changed files with 202 additions and 1545 deletions

View File

@ -5,12 +5,8 @@ QT += serialport
INCLUDEPATH+=$$_PRO_FILE_PWD_ INCLUDEPATH+=$$_PRO_FILE_PWD_
INCLUDEPATH+=$$_PRO_FILE_PWD_/support
INCLUDEPATH+=$$_PRO_FILE_PWD_/plugins INCLUDEPATH+=$$_PRO_FILE_PWD_/plugins
INCLUDEPATH+=$$_PRO_FILE_PWD_/include INCLUDEPATH+=$$_PRO_FILE_PWD_/include
INCLUDEPATH+=$$_PRO_FILE_PWD_/HMI
INCLUDEPATH+=$$_PRO_FILE_PWD_/HMI/screens
INCLUDEPATH+=$$_PRO_FILE_PWD_/HMI/support
INCLUDEPATH+=$$_PRO_FILE_PWD_/src INCLUDEPATH+=$$_PRO_FILE_PWD_/src
INCLUDEPATH+=$$_PRO_FILE_PWD_/src/ATBAPP INCLUDEPATH+=$$_PRO_FILE_PWD_/src/ATBAPP
INCLUDEPATH+=$$_PRO_FILE_PWD_/src/ATBAPP/support INCLUDEPATH+=$$_PRO_FILE_PWD_/src/ATBAPP/support
@ -21,12 +17,11 @@ QMAKE_CXXFLAGS += -Wno-deprecated-copy -O
# default # default
ARCH = PTU5 ARCH = PTU5
DEFINES+=ATB_QT_VERSION=\\\"5.11\\\"
contains( CONFIG, DesktopLinux ) { contains( CONFIG, DesktopLinux ) {
QMAKE_CC = ccache $$QMAKE_CC QMAKE_CC = ccache $$QMAKE_CC
QMAKE_CXX = ccache $$QMAKE_CXX QMAKE_CXX = ccache $$QMAKE_CXX
QMAKE_CXXFLAGS += -std=c++11 QMAKE_CXXFLAGS += -std=c++17
# QMAKE_CXXFLAGS += -Wno-deprecated-ctor # QMAKE_CXXFLAGS += -Wno-deprecated-ctor
linux-clang { QMAKE_CXXFLAGS += -Qunused-arguments } linux-clang { QMAKE_CXXFLAGS += -Qunused-arguments }
ARCH = DesktopLinux ARCH = DesktopLinux
@ -35,7 +30,7 @@ contains( CONFIG, DesktopLinux ) {
contains( CONFIG, PTU5 ) { contains( CONFIG, PTU5 ) {
# QMAKE_CC = ccache $$QMAKE_CC # QMAKE_CC = ccache $$QMAKE_CC
# QMAKE_CXX = ccache $$QMAKE_CXX # QMAKE_CXX = ccache $$QMAKE_CXX
QMAKE_CXXFLAGS += -std=c++11 QMAKE_CXXFLAGS += -std=c++17
linux-clang { QMAKE_CXXFLAGS += -Qunused-arguments } linux-clang { QMAKE_CXXFLAGS += -Qunused-arguments }
CONFIG += link_pkgconfig CONFIG += link_pkgconfig
ARCH = PTU5 ARCH = PTU5
@ -57,6 +52,27 @@ INTERFACE_DEFINITION = $${PWD}/src/ATBAPP/VMCInterface.h
DEFINES += VMCPLUGIN_LIBRARY DEFINES += VMCPLUGIN_LIBRARY
win32 {
BUILD_DATE=$$system("date /t")
BUILD_TIME=$$system("time /t")
} else {
BUILD_DATE=$$system("date +%d-%m-%y")
BUILD_TIME=$$system("date +%H:%M:%S")
}
GIT_COMMIT=$$system("git log -1 --format=oneline | cut -d' ' -f1")
EXTENDED_VERSION="$${VERSION}-$${GIT_COMMIT}"
CONFIG += c++17
DEFINES+=APP_VERSION=\\\"$$VERSION\\\"
DEFINES+=ATB_QT_VERSION=\\\"$${QT_VERSION}\\\"
DEFINES+=APP_BUILD_DATE=\\\"$$BUILD_DATE\\\"
DEFINES+=APP_BUILD_TIME=\\\"$$BUILD_TIME\\\"
DEFINES+=APP_EXTENDED_VERSION=\\\"$$EXTENDED_VERSION\\\"
# Default rules for deployment. # Default rules for deployment.
#qnx: target.path = /tmp/$${TARGET}/bin #qnx: target.path = /tmp/$${TARGET}/bin
#else: unix:!android: target.path = /opt/$${TARGET}/bin #else: unix:!android: target.path = /opt/$${TARGET}/bin
@ -67,6 +83,7 @@ HEADERS += \
include/interfaces.h \ include/interfaces.h \
src/ATBAPP/VMCInterface.h \ src/ATBAPP/VMCInterface.h \
src/ATBAPP/ATBVMCPlugin.h \ src/ATBAPP/ATBVMCPlugin.h \
src/ATBAPP/ATBAPPplugin.h \
src/ATBAPP/UnifiedDCVMCInterface.h \ src/ATBAPP/UnifiedDCVMCInterface.h \
src/ATBAPP/support/VMC/com_interface.h \ src/ATBAPP/support/VMC/com_interface.h \
src/ATBAPP/support/VMC/ReceiveBuffer.h \ src/ATBAPP/support/VMC/ReceiveBuffer.h \
@ -82,16 +99,5 @@ SOURCES += \
src/ATBAPP/support/VMC/vmc.cpp \ src/ATBAPP/support/VMC/vmc.cpp \
src/ATBAPP/support/VendingData.cpp src/ATBAPP/support/VendingData.cpp
DISTFILES += \ OTHER_FILES += \
generate-version.sh plugins/metadata.json
# Define how to create version.h
VERSION_H = $$PWD/include/version.h
version.output = $$PWD/include/version.h
version.commands = $$PWD/generate-version.sh $${ARCH} $${TARGET} $${INTERFACE} $${INTERFACE_DEFINITION} $${VERSION_H}
version.depends = FORCE
version.input = VERSION_H
version.variable_out = HEADERS
QMAKE_EXTRA_COMPILERS += version
QMAKE_CLEAN += $${PWD}/include/version.h

File diff suppressed because it is too large Load Diff

7
plugins/metadata.json Normal file
View File

@ -0,0 +1,7 @@
{
"type" : "hardware",
"name" : "ATBVMCPlugin",
"longname" : "VMC hardware control",
"version" : "1.0.0",
"dependencies" : []
}

View File

@ -7,11 +7,20 @@
#include <QObject> #include <QObject>
#include <QString> #include <QString>
class ATBAPPplugin { class ATBAPPplugin
{
public: public:
explicit ATBAPPplugin() = default;
virtual ~ATBAPPplugin() = default;
virtual const QString & getPluginInfo() = 0; virtual const QString & getPluginInfo() = 0;
virtual void setPluginInfo(QString const &info) = 0;
}; };
Q_DECLARE_INTERFACE(ATBAPPplugin, "eu.atb.ptu.plugin.ATBAPPplugin/0.9") Q_DECLARE_INTERFACE(ATBAPPplugin,
"eu.atb.ptu.plugin.ATBAPPplugin/0.9")
#endif // ATBAPPPLUGIN_H #endif // ATBAPPPLUGIN_H

View File

@ -31,6 +31,13 @@ ATBVMCPlugin::~ATBVMCPlugin() {
} }
} }
QString const &ATBVMCPlugin::getPluginInfo() {
return m_pluginInfo;
}
void ATBVMCPlugin::setPluginInfo(QString const &info) {
m_pluginInfo = info;
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// interface: // interface:
@ -38,7 +45,7 @@ PLUGIN_STATE ATBVMCPlugin::initVMCPlugin(QObject *appControl,
QObject *atbSystem, QObject *atbSystem,
QObject *hmiConfig, QObject *hmiConfig,
QSettings const &settings) { QSettings const &settings) {
if (appControl && atbSystem && hmiConfig) {
m_vmc = new VMC(appControl, &settings); m_vmc = new VMC(appControl, &settings);
// -------------------- connect vmc -------------------------------------------- // -------------------- connect vmc --------------------------------------------
@ -60,23 +67,24 @@ PLUGIN_STATE ATBVMCPlugin::initVMCPlugin(QObject *appControl,
return PLUGIN_STATE::INITIALIZED; return PLUGIN_STATE::INITIALIZED;
} }
// mandantory ATBAPP plugin methods: ------------------------------------------
PLUGIN_STATE ATBVMCPlugin::getState() {
return PLUGIN_STATE::NOT_INITIALIZED; return PLUGIN_STATE::NOT_INITIALIZED;
} }
// mandantory ATBAPP plugin methods: ------------------------------------------
PLUGIN_STATE ATBVMCPlugin::getState() {
return m_pluginState;
}
QString ATBVMCPlugin::getLastError() { QString ATBVMCPlugin::getLastError() {
return ""; return m_errorCode;
} }
QString ATBVMCPlugin::getLastErrorDescription() { QString ATBVMCPlugin::getLastErrorDescription() {
return ""; return m_errorDescription;
} }
QString const &ATBVMCPlugin::getPluginInfo() {
static QString info; #if 0
return info;
}
// helpers e.g. for debug / log // helpers e.g. for debug / log
QString ATBVMCPlugin::getString(RESULT_STATE /*resultState*/) { QString ATBVMCPlugin::getString(RESULT_STATE /*resultState*/) {
@ -114,3 +122,9 @@ void ATBVMCPlugin::reboot() {
void ATBVMCPlugin::reset() { void ATBVMCPlugin::reset() {
} }
#endif
#if QT_VERSION < 0x050000
Q_EXPORT_PLUGIN2(ATBVMCPlugin, ATBVMCPlugin)
#endif

View File

@ -3,26 +3,30 @@
#include <QObject> #include <QObject>
#include <QSettings> #include <QSettings>
#include <QtPlugin>
#include "src/ATBAPP/VMCInterface.h"
#include "src/ATBAPP/ATBAPPplugin.h" #include "src/ATBAPP/ATBAPPplugin.h"
#include "src/ATBAPP/VMCInterface.h"
#include "src/ATBAPP/UnifiedDCVMCInterface.h"
#include "version.h" #include "version.h"
#include "include/interfaces.h"
#include "vmc.h" #include "vmc.h"
class ATBVMCPlugin : public VMCInterface { class ATBVMCPlugin : public VMCInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(ATBAPPplugin)
Q_INTERFACES(UnifiedDCVMCInterface) Q_INTERFACES(VMCInterface)
#if QT_VERSION >= 0x050000 #if QT_VERSION >= 0x050000
Q_PLUGIN_METADATA( IID "ATBVMCPlugin" ) Q_PLUGIN_METADATA(IID "eu.atb.ptu.plugin.ATBVMCPlugin" FILE "plugins/metadata.json")
#endif #endif
public: public:
explicit ATBVMCPlugin(QObject *parent = nullptr); explicit ATBVMCPlugin(QObject *parent = nullptr);
~ATBVMCPlugin(); virtual ~ATBVMCPlugin();
virtual const QString & getPluginInfo() override;
virtual void setPluginInfo(QString const &info) override;
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// interface: // interface:
@ -36,7 +40,7 @@ public:
QString getLastError() override; QString getLastError() override;
QString getLastErrorDescription() override; QString getLastErrorDescription() override;
virtual const QString & getPluginInfo() override; #if 0
// helpers e.g. for debug / log // helpers e.g. for debug / log
virtual QString getString(RESULT_STATE resultState) override; virtual QString getString(RESULT_STATE resultState) override;
@ -52,6 +56,8 @@ public slots:
virtual void reboot() override; virtual void reboot() override;
virtual void reset() override; virtual void reset() override;
#endif
private: private:
QString m_errorCode; QString m_errorCode;
QString m_errorDescription; QString m_errorDescription;

View File

@ -11,13 +11,8 @@
#include "ATBAPPplugin.h" #include "ATBAPPplugin.h"
class ATBHMIconfig;
class AppControl;
class ATBSystem;
class UnifiedDCVMCInterface : public QObject, public ATBAPPplugin { class UnifiedDCVMCInterface : public ATBAPPplugin {
Q_OBJECT
Q_INTERFACES(ATBAPPplugin) Q_INTERFACES(ATBAPPplugin)
public: public:
@ -47,18 +42,26 @@ public:
STOP_RECEIPT, // e.g. Szeged Stop STOP_RECEIPT, // e.g. Szeged Stop
}; };
explicit UnifiedDCVMCInterface(QObject *parent = nullptr) : QObject(parent) {} explicit UnifiedDCVMCInterface() = default;
virtual ~UnifiedDCVMCInterface() {} virtual ~UnifiedDCVMCInterface() = default;
virtual const QString & getPluginInfo() = 0;
// mandantory ATBAPP plugin methods:
virtual PLUGIN_STATE getState() = 0;
virtual QString getLastError() = 0;
virtual QString getLastErrorDescription() = 0;
virtual PLUGIN_STATE initPlugin(QObject *eventReceiver, virtual PLUGIN_STATE initPlugin(QObject *eventReceiver,
QObject *atbSystem, QObject *atbSystem,
QObject *hmiConfig, QObject *hmiConfig,
QSettings const &settings) = 0; QSettings const &settings) = 0;
// mandantory ATBAPP plugin methods: virtual PLUGIN_STATE initVMCPlugin(QObject *eventReceiver,
virtual PLUGIN_STATE getState() = 0; QObject *atbSystem, QObject *hmiConfig,
virtual QString getLastError() = 0; const QSettings & settings) = 0;
virtual QString getLastErrorDescription() = 0;
#if 0
virtual QString getString(RESULT_STATE resultState) = 0; virtual QString getString(RESULT_STATE resultState) = 0;
@ -136,7 +139,7 @@ signals:
/* additional variables? */ /* additional variables? */
const QString & errorCode, const QString & errorCode,
const QString & errorDescription); const QString & errorDescription);
#endif
}; };
Q_DECLARE_INTERFACE(UnifiedDCVMCInterface, Q_DECLARE_INTERFACE(UnifiedDCVMCInterface,

View File

@ -17,26 +17,23 @@ namespace nsVMCInterface {
} }
class VMCInterface : public UnifiedDCVMCInterface { class VMCInterface : public QObject, public UnifiedDCVMCInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(ATBAPPplugin) Q_INTERFACES(ATBAPPplugin UnifiedDCVMCInterface)
Q_INTERFACES(UnifiedDCVMCInterface)
public: public:
explicit VMCInterface(QObject *parent = nullptr) explicit VMCInterface(QObject *parent = nullptr) : QObject(parent) {}
: UnifiedDCVMCInterface(parent) {} virtual ~VMCInterface() = default;
virtual PLUGIN_STATE initPlugin(QObject *eventReceiver, QObject *atbSystem, virtual PLUGIN_STATE initPlugin(QObject *eventReceiver, QObject *atbSystem,
QObject *hmiConfig, QSettings const &settings) override { QObject *hmiConfig, QSettings const &settings) override {
return initVMCPlugin(eventReceiver, atbSystem, hmiConfig, settings); return initVMCPlugin(eventReceiver, atbSystem, hmiConfig, settings);
} }
virtual ~VMCInterface() {}
/** /**
* @brief initDCPlugin * @brief initVMCPlugin
* @param eventReceiver - QObject to receive ATBMachineEvents or HealthEvents * @param eventReceiver - QObject to receive ATBMachineEvents or HealthEvents
* @param settings * @param settings
* @return * @return
@ -44,6 +41,89 @@ public:
virtual PLUGIN_STATE initVMCPlugin(QObject *eventReceiver, virtual PLUGIN_STATE initVMCPlugin(QObject *eventReceiver,
QObject *atbSystem, QObject *hmiConfig, QObject *atbSystem, QObject *hmiConfig,
const QSettings & settings) = 0; const QSettings & settings) = 0;
#if 0
virtual QString getString(RESULT_STATE resultState) = 0;
public slots:
virtual void onChangedProgramModeToSELL() = 0;
virtual void onChangedProgramModeToSERVICE() = 0;
virtual void onChangedProgramModeToIDLE() = 0;
virtual void onChangedProgramModeToOOO() = 0;
virtual void startPhysicalLayer() = 0;
virtual void stopPhysicalLayer() = 0;
virtual void reboot() = 0;
virtual void reset() = 0;
signals:
void printTicketFinished(RESULT_STATE resultState,
const QString & errorCode,
const QString & errorDescription);
void printReceiptFinished(RESULT_STATE resultState,
const QString & errorCode,
const QString & errorDescription);
/**
* emitted on e.g. a coin input
*/
void cashInputEvent(RESULT_STATE resultState,
CASH_STATE cashState,
const QString & newCashValue,
/* additional variables? */
const QString & errorCode,
const QString & errorDescription);
/**
* emitted if cashInput has been stopped, e.g. in result to task requestStopCashInput():
* -> shutter is blocked
* -> no cash input is possible
* -> coins are in cache
*/
void cashInputFinished(RESULT_STATE resultState,
const QString & newCashValue,
/* additional variables? */
const QString & errorCode,
const QString & errorDescription);
/**
* emitted e.g. if service door is opened
*/
void requestModeSERVICE();
/**
* emitted e.g. if doors are closed
*/
void requestModeIDLE();
/**
* emitted e.g. on severe errors
*/
void requestModeOOO();
/**
* emitted e.g. if service door is opened
*/
void requestAccountResponse(const QHash<QString, QVariant> & accountData);
/**
* emitted on error
* depending on errorCode:
* -> interrupt selling process
* -> machine can go to state OOO
* -> send error event to ISMAS
* -> ...
*/
void Error(
/* additional variables? */
const QString & errorCode,
const QString & errorDescription);
#endif
}; };
Q_DECLARE_INTERFACE(VMCInterface,
"eu.atb.ptu.plugin.VMCInterface/1.0")
#endif // VMCINTERFACE_H #endif // VMCINTERFACE_H