#ifndef VMCINTERFACE_H #define VMCINTERFACE_H #include #include #include #include "ATBAPPplugin.h" #include "UnifiedDCVMCInterface.h" namespace nsVMCInterface { 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 VMCInterface : public QObject, public UnifiedDCVMCInterface { Q_OBJECT Q_INTERFACES(ATBAPPplugin UnifiedDCVMCInterface) public: explicit VMCInterface(QObject *parent = nullptr) : QObject(parent) {} virtual ~VMCInterface() = default; virtual const QString & getPluginInfo() = 0; virtual void setPluginInfo(QString const &info) = 0; virtual PLUGIN_STATE initPlugin(QObject *eventReceiver, QObject *atbSystem, QObject *hmiConfig, QSettings const &settings) override { return initVMCPlugin(eventReceiver, atbSystem, hmiConfig, settings); } /** * @brief initVMCPlugin * @param eventReceiver - QObject to receive ATBMachineEvents or HealthEvents * @param settings * @return */ virtual PLUGIN_STATE initVMCPlugin(QObject *eventReceiver, QObject *atbSystem, QObject *hmiConfig, 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 & 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