#include "src/ATBAPP/ATBDeviceControllerPlugin.h" #include "src/ATBAPP/ATBHealthEvent.h" ATBDeviceControllerPlugin::ATBDeviceControllerPlugin(QObject *parent) : QObject(parent), pluginState(PLUGIN_STATE::NOT_INITIALIZED) { this->pluginInfo = QString::fromUtf8(pluginInfoString.c_str()); this->hw = new hwapi(); connect(dynamic_cast(hw), SIGNAL(hwapi_templatePrintFinished_OK()), this, SLOT(onPrintFinishedOK())); connect(dynamic_cast(hw), SIGNAL(hwapi_templatePrintFinished_Err()), this, SLOT(onPrintFinishedERR())); connect(dynamic_cast(hw), SIGNAL(hwapi_gotNewCoin()), this, SLOT(onGotCoin())); } ATBDeviceControllerPlugin::~ATBDeviceControllerPlugin() {} PLUGIN_STATE ATBDeviceControllerPlugin::initDCPlugin(QObject *healthEventReceiver, const QSettings & settings) { this->healthEventReceiver = healthEventReceiver; // read variables from setting QString serialPort = settings.value("DEVICE_CONTROLLER/serialPort", "ttymxc2").toString(); hw->dc_openSerial(5, "115200", serialPort, 1); this->pluginState = PLUGIN_STATE::INITIALIZED; return pluginState; } // TASKS: Cash handling ------------------------------------------------------- void ATBDeviceControllerPlugin::requestStartCashInput(const QString & amount) { } void ATBDeviceControllerPlugin::requestStopCashInput() { } void ATBDeviceControllerPlugin::cashCollect() { } void ATBDeviceControllerPlugin::cashAbort() { } // TASKS: printing ------------------------------------------------------------ void ATBDeviceControllerPlugin::requestPrintTicket(const QHash & printingData) { struct T_dynDat *dynTicketData = new T_dynDat; strncpy((char*)dynTicketData->licensePlate, printingData["licenseplate"].toByteArray().data(), 7); strncpy((char*)dynTicketData->vendingPrice, printingData["amount"].toByteArray().data(), 7); strncpy((char*)dynTicketData->parkingEnd, printingData["parkingEnd"].toByteArray().data(), 7); strncpy((char*)dynTicketData->currentTime, printingData["currentTime"].toByteArray().data(), 7); strncpy((char*)dynTicketData->currentDate, printingData["currentDate"].toByteArray().data(), 7); // DEBUG qCritical() << "ATBDeviceControllerPlugin::requestPrintTicket()"; if (!this->hw->dc_isPortOpen()) { qCritical() << " ... serial port is not open!"; emit this->onPrintFinishedERR(); } if (!this->hw->prn_printDocument(1, dynTicketData)) { this->errorCode = "hwapi::prn_printDocument"; this->errorDescription = "hwapi method 'hwapi::prn_printDocument' result is false"; qCritical() << "ERROR:"; qCritical() << "ATBDeviceControllerPlugin::requestPrintTicket( " << endl << " licenseplate = " << printingData["licenseplate"] << endl << " amount = " << printingData["amount"] << endl << " parkingEnd = " << printingData["parkingEnd"] << endl << " currentTime = " << printingData["currentTime"] << endl << " currentDate = " << printingData["currentDate"] << endl; emit this->onPrintFinishedERR(); } } /************************************************************************************************ * private slots, interface to low level hwapi * */ void ATBDeviceControllerPlugin::onPrintFinishedOK() { emit this->printTicketFinished(nsDeviceControllerInterface::RESULT_STATE::SUCCESS, "", ""); } void ATBDeviceControllerPlugin::onPrintFinishedERR() { this->errorCode = "PRINTER"; // TODO: get more detailed error code from low level API this->errorDescription = "Printer error"; // TODO: get more detailed error description from low level API emit this->printTicketFinished(nsDeviceControllerInterface::RESULT_STATE::ERROR_BACKEND, this->errorCode, this->errorDescription); } void ATBDeviceControllerPlugin::onGotCoin() { } /************************************************************************************************ * Mandatory plugin methods * */ PLUGIN_STATE ATBDeviceControllerPlugin::getState() { return this->pluginState; } QString & ATBDeviceControllerPlugin::getLastError() { return this->errorCode; } const QString & ATBDeviceControllerPlugin::getLastErrorDescription() { return this->errorDescription; } const QString & ATBDeviceControllerPlugin::getPluginInfo() { return this->pluginInfo; } const QString ATBDeviceControllerPlugin::getString(nsDeviceControllerInterface::RESULT_STATE resultState) { QString str; switch (resultState) { case nsDeviceControllerInterface::RESULT_STATE::SUCCESS: str = QString("RESULT_STATE::SUCCESS"); break; case nsDeviceControllerInterface::RESULT_STATE::ERROR_BACKEND: str = QString("RESULT_STATE::ERROR_BACKEND"); break; case nsDeviceControllerInterface::RESULT_STATE::ERROR_TIMEOUT: str = QString("RESULT_STATE::ERROR_TIMEOUT"); break; case nsDeviceControllerInterface::RESULT_STATE::ERROR_PROCESS: str = QString("RESULT_STATE::ERROR_PROCESS"); break; case nsDeviceControllerInterface::RESULT_STATE::ERROR_RETRY: str = QString("RESULT_STATE::ERROR_RETRY"); break; case nsDeviceControllerInterface::RESULT_STATE::INFO: str = QString("RESULT_STATE::INFO"); break; } return str; } /************************************************************************************************ * ... end */ #if QT_VERSION < 0x050000 Q_EXPORT_PLUGIN2( ATBDeviceControllerPlugin, ATBDeviceControllerPlugin ) #endif