diff --git a/DCPlugin.pro b/DCPlugin.pro index 4379416..a2b20aa 100644 --- a/DCPlugin.pro +++ b/DCPlugin.pro @@ -9,7 +9,7 @@ QT += serialport INCLUDEPATH += $${PWD}/plugins INCLUDEPATH += $${PWD}/include -QMAKE_CXXFLAGS += -Wno-deprecated-copy +QMAKE_CXXFLAGS += -Wno-deprecated-copy -O # default ARCH = PTU5 @@ -49,6 +49,8 @@ INTERFACE_DEFINITION = $${PWD}/src/ATBAPP/DeviceControllerInterface.h DEFINES += DEVICECONTROLLERPLUGIN_LIBRARY +DEFINES += USE_DC_VMC_UNIFICATION + # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the @@ -77,6 +79,7 @@ HEADERS += \ src/ATBAPP/ATBMachineEvent.h \ src/ATBAPP/ATBDeviceControllerPlugin.h \ src/ATBAPP/Utils.h \ + src/ATBAPP/UnifiedDCVMCInterface.h \ src/ATBAPP/support/DBusControllerInterface.h \ src/ATBAPP/support/JSON.h \ src/ATBAPP/support/PTUSystem.h diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.cpp b/src/ATBAPP/ATBDeviceControllerPlugin.cpp index 7e9e102..c282a45 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.cpp +++ b/src/ATBAPP/ATBDeviceControllerPlugin.cpp @@ -1045,12 +1045,12 @@ PLUGIN_STATE ATBDeviceControllerPlugin::getState() return this->pluginState; } -QString & ATBDeviceControllerPlugin::getLastError() +QString ATBDeviceControllerPlugin::getLastError() { return this->errorCode; } -const QString & ATBDeviceControllerPlugin::getLastErrorDescription() +QString ATBDeviceControllerPlugin::getLastErrorDescription() { return this->errorDescription; } @@ -1061,7 +1061,7 @@ const QString & ATBDeviceControllerPlugin::getPluginInfo() } -const QString ATBDeviceControllerPlugin::getString(nsDeviceControllerInterface::RESULT_STATE resultState) +QString ATBDeviceControllerPlugin::getString(nsDeviceControllerInterface::RESULT_STATE resultState) { QString str; diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.h b/src/ATBAPP/ATBDeviceControllerPlugin.h index 654613d..eb04dbc 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.h +++ b/src/ATBAPP/ATBDeviceControllerPlugin.h @@ -58,25 +58,25 @@ public: void requestAccount(); // mandantory ATBAPP plugin methods: ------------------------------------------ - nsDeviceControllerInterface::PLUGIN_STATE getState(); - QString & getLastError(); - const QString & getLastErrorDescription(); + nsDeviceControllerInterface::PLUGIN_STATE getState() override; + QString getLastError() override; + QString getLastErrorDescription() override; - const QString & getPluginInfo(); + virtual const QString & getPluginInfo() override; // helpers e.g. for debug / log - const QString getString(nsDeviceControllerInterface::RESULT_STATE resultState);; + virtual QString getString(nsDeviceControllerInterface::RESULT_STATE resultState) override; public slots: - void onChangedProgramModeToSELL(); - void onChangedProgramModeToSERVICE(); - void onChangedProgramModeToIDLE(); - void onChangedProgramModeToOOO(); + virtual void onChangedProgramModeToSELL() override; + virtual void onChangedProgramModeToSERVICE() override; + virtual void onChangedProgramModeToIDLE() override; + virtual void onChangedProgramModeToOOO() override; - void startPhysicalLayer(); - void stopPhysicalLayer(); - void reboot(); - void reset(); + void startPhysicalLayer() override; + void stopPhysicalLayer() override; + void reboot() override; + void reset() override; diff --git a/src/ATBAPP/DeviceControllerInterface.h b/src/ATBAPP/DeviceControllerInterface.h index 24925e6..2b70da8 100644 --- a/src/ATBAPP/DeviceControllerInterface.h +++ b/src/ATBAPP/DeviceControllerInterface.h @@ -7,22 +7,27 @@ #include #include "ATBAPPplugin.h" +#include "UnifiedDCVMCInterface.h" namespace nsDeviceControllerInterface { - enum class PLUGIN_STATE : quint8; - enum class RESULT_STATE : quint8; - enum class CASH_STATE : quint8; - enum class TICKET_VARIANT : quint8; + using PLUGIN_STATE = UnifiedDCVMCInterface::PLUGIN_STATE; + using RESULT_STATE = UnifiedDCVMCInterface::RESULT_STATE; + using CASH_STATE = UnifiedDCVMCInterface::CASH_STATE; + using TICKET_VARIANT = UnifiedDCVMCInterface::TICKET_VARIANT; } - -class DeviceControllerInterface : public QObject - , public ATBAPPplugin +class DeviceControllerInterface : public UnifiedDCVMCInterface { Q_OBJECT Q_INTERFACES(ATBAPPplugin) + Q_INTERFACES(UnifiedDCVMCInterface) public: + + virtual PLUGIN_STATE initPlugin(QObject *eventReceiver, QSettings const &settings) override { + return initDCPlugin(eventReceiver, settings); + } + virtual ~DeviceControllerInterface() {} /** @@ -31,8 +36,7 @@ public: * @param settings * @return */ - virtual nsDeviceControllerInterface::PLUGIN_STATE initDCPlugin(QObject *eventReceiver, - const QSettings & settings) = 0; + virtual PLUGIN_STATE initDCPlugin(QObject *eventReceiver, const QSettings & settings) = 0; // TASKS: Cash handling ------------------------------------------------------- /** @@ -60,140 +64,12 @@ public: // TASKS: printing ------------------------------------------------------------ virtual void requestPrintTicket(const QHash & printingData) = 0; - virtual void requestPrintTicket(nsDeviceControllerInterface::TICKET_VARIANT ticketVariant, const QHash & printingData) = 0; + virtual void requestPrintTicket(TICKET_VARIANT ticketVariant, const QHash & printingData) = 0; virtual void requestPrintReceipt(const QHash & printingData) = 0; virtual void requestPrintReceipt(const QString & printingString) = 0; - - // mandantory ATBAPP plugin methods: - virtual nsDeviceControllerInterface::PLUGIN_STATE getState() = 0; - virtual const QString & getLastError() = 0; - virtual const QString & getLastErrorDescription() = 0; - - // return a plugin description in JSON or XML - // -> ATBAPPplugin::getPluginInfo() - - // helpers e.g. for debug / log - virtual const QString getString(nsDeviceControllerInterface::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(nsDeviceControllerInterface::RESULT_STATE resultState, - const QString & errorCode, - const QString & errorDescription); - void printReceiptFinished(nsDeviceControllerInterface::RESULT_STATE resultState, - const QString & errorCode, - const QString & errorDescription); - - /** - * emitted on e.g. a coin input - */ - void cashInputEvent(nsDeviceControllerInterface::RESULT_STATE resultState, - nsDeviceControllerInterface::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(nsDeviceControllerInterface::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 & 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); - }; - Q_DECLARE_INTERFACE(DeviceControllerInterface, "eu.atb.ptu.plugin.DeviceControllerInterface/1.0") - -namespace nsDeviceControllerInterface { - - enum class PLUGIN_STATE : quint8 { - NOT_INITIALIZED = 0, - INITIALIZED = 1 - }; - - enum class RESULT_STATE : quint8 { - SUCCESS = 1, // operation was successfull - ERROR_BACKEND, // error from backend (e.g. backend replies with error) - ERROR_TIMEOUT, // the operation timed out - ERROR_PROCESS, // internal plugin error, should not occur (this is a bug in implementation) - ERROR_RETRY, // retry operation - INFO // informational (e.g. display a message, log something etc.) - }; - - enum class CASH_STATE : quint8 { - CACHE_EMPTY, // Cache still empty, default state - CACHE_INPUT, // Coins are in Cache - OVERPAYED, - /* t.b.d. */ - }; - - - enum class TICKET_VARIANT : quint8 { - PARKING_TICKET, - RECEIPT, - ERROR_RECEIPT, - START_RECEIPT, // e.g. Szeged Start - STOP_RECEIPT, // e.g. Szeged Stop - }; - -} - #endif // DEVICECONTROLLERINTERFACE_H