|
|
|
@@ -30,13 +30,31 @@ ATBDeviceControllerPlugin::ATBDeviceControllerPlugin(QObject *parent)
|
|
|
|
|
this->setParent(parent);
|
|
|
|
|
|
|
|
|
|
this->pluginInfo = QString::fromUtf8(pluginInfoString.c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ATBDeviceControllerPlugin::~ATBDeviceControllerPlugin() {}
|
|
|
|
|
|
|
|
|
|
PLUGIN_STATE ATBDeviceControllerPlugin::initDCPlugin(QObject *eventReceiver, const QSettings & settings)
|
|
|
|
|
{
|
|
|
|
|
this->eventReceiver = eventReceiver;
|
|
|
|
|
|
|
|
|
|
// read variables from setting
|
|
|
|
|
this->serialPortName = settings.value("ATBDeviceControllerPlugin/serialPort", "ttymxc2").toString();
|
|
|
|
|
QByteArray printerEncoding = settings.value("ATBDeviceControllerPlugin/printerEncoding", "ISO 8859-2").toString().toLatin1();
|
|
|
|
|
QString printerLocaleString = settings.value("ATBDeviceControllerPlugin/printerLocale", "de_DE").toString().toLatin1();
|
|
|
|
|
this->printerLocale = QLocale(printerLocaleString);
|
|
|
|
|
|
|
|
|
|
if (!this->private_loadCashAgentLib("")) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this->init_sc_dbus();
|
|
|
|
|
|
|
|
|
|
QString persistentDataFile = "/mnt/system_data/dc_persistentData.dat";
|
|
|
|
|
this->persistentData = new PersistentData(persistentDataFile);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// setup libCA:
|
|
|
|
|
if (!this->private_loadCashAgentLib("")) {
|
|
|
|
|
return PLUGIN_STATE::NOT_INITIALIZED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//connect(dynamic_cast<QObject*>(hw), SIGNAL(hwapi_templatePrintFinished_OK()), this, SLOT(onPrintFinishedOK()), Qt::QueuedConnection);
|
|
|
|
|
//connect(dynamic_cast<QObject*>(hw), SIGNAL(hwapi_templatePrintFinished_Err()), this, SLOT(onPrintFinishedERR()), Qt::QueuedConnection);
|
|
|
|
@@ -61,9 +79,6 @@ ATBDeviceControllerPlugin::ATBDeviceControllerPlugin(QObject *parent)
|
|
|
|
|
dynamic_cast<QObject*>(hw)->moveToThread(hwThread);
|
|
|
|
|
hwThread->start();
|
|
|
|
|
|
|
|
|
|
QString persistentDataFile = "/mnt/system_data/dc_persistentData.dat";
|
|
|
|
|
this->persistentData = new PersistentData(persistentDataFile);
|
|
|
|
|
|
|
|
|
|
this->diag = new DeviceControllerDiag(this->persistentData, this);
|
|
|
|
|
connect(this->diag, &DeviceControllerDiag::newVoltage, this, &ATBDeviceControllerPlugin::onNewVoltage);
|
|
|
|
|
|
|
|
|
@@ -75,19 +90,7 @@ ATBDeviceControllerPlugin::ATBDeviceControllerPlugin(QObject *parent)
|
|
|
|
|
this->currentCashState = CASH_STATE::CACHE_EMPTY;
|
|
|
|
|
|
|
|
|
|
this->cashStartAmountInt = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ATBDeviceControllerPlugin::~ATBDeviceControllerPlugin() {}
|
|
|
|
|
|
|
|
|
|
PLUGIN_STATE ATBDeviceControllerPlugin::initDCPlugin(QObject *eventReceiver, const QSettings & settings)
|
|
|
|
|
{
|
|
|
|
|
this->eventReceiver = eventReceiver;
|
|
|
|
|
|
|
|
|
|
// read variables from setting
|
|
|
|
|
this->serialPortName = settings.value("ATBDeviceControllerPlugin/serialPort", "ttymxc2").toString();
|
|
|
|
|
QByteArray printerEncoding = settings.value("ATBDeviceControllerPlugin/printerEncoding", "ISO 8859-2").toString().toLatin1();
|
|
|
|
|
QString printerLocaleString = settings.value("ATBDeviceControllerPlugin/printerLocale", "de_DE").toString().toLatin1();
|
|
|
|
|
this->printerLocale = QLocale(printerLocaleString);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (this->isMaster) {
|
|
|
|
@@ -651,6 +654,7 @@ void ATBDeviceControllerPlugin::requestPrintReceipt(const QString & printingStri
|
|
|
|
|
hw->prn_switchPower(true);
|
|
|
|
|
hw->prn_setFonts(8,12,0,0);
|
|
|
|
|
hw->prn_sendText(&ba);
|
|
|
|
|
this->printResultCheckCounter = 0;
|
|
|
|
|
QTimer::singleShot(4000, this, SLOT(onPrinterWaitForPrintingReceipt()));
|
|
|
|
|
|
|
|
|
|
//QTimer::singleShot(2000, this, [this](){ hw->prn_cut(3); } );
|
|
|
|
@@ -699,7 +703,8 @@ void ATBDeviceControllerPlugin::onPrinterWaitForPrintingReceipt()
|
|
|
|
|
|
|
|
|
|
void ATBDeviceControllerPlugin::requestPrintTicket(const QHash<QString, QVariant> & printingData)
|
|
|
|
|
{
|
|
|
|
|
struct T_dynDat *dynTicketData = new T_dynDat;
|
|
|
|
|
struct T_dynDat dynamicTicketData;
|
|
|
|
|
struct T_dynDat *dynTicketData = &dynamicTicketData;
|
|
|
|
|
memset(dynTicketData, 0, sizeof(*dynTicketData));
|
|
|
|
|
|
|
|
|
|
qCritical() << "ATBDeviceControllerPlugin::requestPrintTicket( " << endl
|
|
|
|
@@ -840,6 +845,7 @@ void ATBDeviceControllerPlugin::onPrinterDataPrepared()
|
|
|
|
|
|
|
|
|
|
// note: calling prn_getPrintResult() immediately may result in wrong answer!
|
|
|
|
|
// We have to wait "about some seconds" until calling this function!
|
|
|
|
|
this->printResultCheckCounter = 0;
|
|
|
|
|
QTimer::singleShot(4000, this, SLOT(onPrinterWaitForPrintingTicket()));
|
|
|
|
|
|
|
|
|
|
// old: use printer templates:
|
|
|
|
@@ -863,8 +869,17 @@ void ATBDeviceControllerPlugin::onPrinterWaitForPrintingTicket()
|
|
|
|
|
this->onPrintFinishedERR();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
// result value is not defined (-> workaround for DC misbehaviour)
|
|
|
|
|
if (this->printResultCheckCounter < 10) {
|
|
|
|
|
this->printResultCheckCounter++;
|
|
|
|
|
qCritical() << "DC print result undefined: " << printerResult;
|
|
|
|
|
QTimer::singleShot(1000, this, SLOT(onPrinterWaitForPrintingTicket()));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
qCritical() << "DC Error: wait for printing";
|
|
|
|
|
this->onPrintFinishedERR();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -892,6 +907,7 @@ void ATBDeviceControllerPlugin::onPrinterPrintNextTemplate()
|
|
|
|
|
|
|
|
|
|
if (this->currentTicket->templateList()->isEmpty()) {
|
|
|
|
|
// all templates are printed
|
|
|
|
|
this->printResultCheckCounter = 0;
|
|
|
|
|
QTimer::singleShot(2000, this, SLOT(onPrinterWaitForPrintingTicket()));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
@@ -943,7 +959,8 @@ void ATBDeviceControllerPlugin::onPrinterPrepareDynTemplateData()
|
|
|
|
|
}
|
|
|
|
|
void ATBDeviceControllerPlugin::prepareDynTemplateData()
|
|
|
|
|
{
|
|
|
|
|
struct T_dynDat *dynTicketData = new T_dynDat;
|
|
|
|
|
struct T_dynDat dynamicTicketData;
|
|
|
|
|
struct T_dynDat *dynTicketData = &dynamicTicketData;
|
|
|
|
|
memset(dynTicketData, 0, sizeof(*dynTicketData));
|
|
|
|
|
|
|
|
|
|
// setup dynTicketData dependent on currentTicket
|
|
|
|
@@ -1501,7 +1518,7 @@ int ATBDeviceControllerPlugin::init_sc_dbus()
|
|
|
|
|
|
|
|
|
|
void ATBDeviceControllerPlugin::onWokeUp(uchar source)
|
|
|
|
|
{
|
|
|
|
|
if (source == 0x01) {
|
|
|
|
|
if (source == 0x01 || source == 0xFE) {
|
|
|
|
|
// woke up from device controller
|
|
|
|
|
this->diag->diagRequest();
|
|
|
|
|
}
|
|
|
|
|