#ifndef ATBDEVICECONTROLLERPLUGIN_H #define ATBDEVICECONTROLLERPLUGIN_H #include #include "src/ATBAPP/DeviceControllerInterface.h" #include "src/ATBAPP/ATBAPPplugin.h" #include "version.h" #include "interfaces.h" #include #include #include #include class QTextCodec; using namespace nsDeviceControllerInterface; class QSettings; class ATBDeviceControllerPlugin : public QObject, public DeviceControllerInterface { Q_OBJECT Q_INTERFACES(ATBAPPplugin) Q_INTERFACES(DeviceControllerInterface) #if QT_VERSION >= 0x050000 Q_PLUGIN_METADATA( IID "ATBDeviceControllerPlugin" ) #endif public: explicit ATBDeviceControllerPlugin(QObject *parent = nullptr); ~ATBDeviceControllerPlugin(); // ---------------------------------------------------------------------------- // interface: PLUGIN_STATE initDCPlugin(QObject *healthEventReceiver, const QSettings & settings); // TASKS: Cash handling ------------------------------------------------------- void requestStartCashInput(const QString & amount); void requestStopCashInput(); void cashCollect(); void cashAbort(); // TASKS: printing ------------------------------------------------------------ void requestPrintTicket(const QHash & printingData); // TASKS: Account ------------------------------------------------------------- void requestAccount(); // mandantory ATBAPP plugin methods: ------------------------------------------ nsDeviceControllerInterface::PLUGIN_STATE getState(); QString & getLastError(); const QString & getLastErrorDescription(); const QString & getPluginInfo(); // helpers e.g. for debug / log const QString getString(nsDeviceControllerInterface::RESULT_STATE resultState);; public slots: void onChangedProgramModeToSELL(); void onChangedProgramModeToSERVICE(); void onChangedProgramModeToIDLE(); void onChangedProgramModeToOOO(); signals: void printTicketFinished(nsDeviceControllerInterface::RESULT_STATE resultState, const QString & errorCode, const QString & errorDescription); void cashInputEvent(nsDeviceControllerInterface::RESULT_STATE resultState, nsDeviceControllerInterface::CASH_STATE cashState, const QString & newCashValue, const QString & errorCode, const QString & errorDescription); void cashInputFinished(nsDeviceControllerInterface::RESULT_STATE resultState, const QString & newCashValue, const QString & errorCode, const QString & errorDescription); void requestModeSERVICE(); void requestModeIDLE(); void requestModeOOO(); void requestAccountResponse(const QHash & accountData); void Error( const QString & errorCode, const QString & errorDescription); private: QString errorCode; QString errorDescription; QString pluginInfo; int currentTemplate; bool useDebug; PLUGIN_STATE pluginState; QObject* healthEventReceiver; hwinf* hw; QTextCodec *codec; bool private_loadCashAgentLib(QString pluginName); quint8 currentSelectedTicketType; private slots: // printer void onPrinterDataPrepared(); void onPrinterPrintNextTemplate(); void onPrintFinishedOK(); void onPrintFinishedERR(); // cash payment void onCashGotCoin(); void onCashPayStoped(); void onCashPayStopByMax(); void onCashPayStopByEscrow(); void onCashPayStopByError(); void onCashPayStopByTimeout(); // doors and hardware contacts void onServiceDoorOpened(); void onVaultDoorOpened(); void onCoinBoxRemoved(); void onCoinBoxInserted(); void onAllDoorsClosed(); }; #endif // ATBDEVICECONTROLLERPLUGIN_H