From 3b32d04bac921189ad501701dfad60ac37b1b2ca Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Tue, 21 Nov 2023 11:21:28 +0100 Subject: [PATCH] Use libCAslave --- src/ATBAPP/ATBDeviceControllerPlugin.cpp | 27 ++++++++++++++++++------ src/ATBAPP/ATBDeviceControllerPlugin.h | 2 ++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.cpp b/src/ATBAPP/ATBDeviceControllerPlugin.cpp index 7e9e102..e4fd9f7 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.cpp +++ b/src/ATBAPP/ATBDeviceControllerPlugin.cpp @@ -22,7 +22,8 @@ ATBDeviceControllerPlugin::ATBDeviceControllerPlugin(QObject *parent) - : pluginState(PLUGIN_STATE::NOT_INITIALIZED) + : isMaster(false) + , pluginState(PLUGIN_STATE::NOT_INITIALIZED) , eventReceiver(nullptr) { this->setParent(parent); @@ -76,10 +77,11 @@ PLUGIN_STATE ATBDeviceControllerPlugin::initDCPlugin(QObject *eventReceiver, con this->serialPortName = settings.value("DEVICE_CONTROLLER/serialPort", "ttymxc2").toString(); QByteArray printerEncoding = settings.value("DEVICE_CONTROLLER/printerEnconding", "ISO 8859-2").toString().toLatin1(); - // open serial port - hw->dc_openSerial(5, "115200", this->serialPortName, 1); - - hw->dc_autoRequest(true); + if (this->isMaster) { + // open serial port + hw->dc_openSerial(5, "115200", this->serialPortName, 1); + hw->dc_autoRequest(true); + } hw->dc_setNewCustomerNumber(PTUSystem::readCustomerNumber()); hw->dc_setNewMachineNumber(PTUSystem::readMachineNumber()); @@ -105,6 +107,8 @@ PLUGIN_STATE ATBDeviceControllerPlugin::initDCPlugin(QObject *eventReceiver, con void ATBDeviceControllerPlugin::startPhysicalLayer() { + if (!this->isMaster) return; + if (this->pluginState == PLUGIN_STATE::NOT_INITIALIZED) { qCritical() << "ATBDeviceControllerPlugin::startPhysicalLayer(): plugin is not initialized"; @@ -119,6 +123,8 @@ void ATBDeviceControllerPlugin::startPhysicalLayer() void ATBDeviceControllerPlugin::stopPhysicalLayer() { + if (!this->isMaster) return; + if (this->pluginState == PLUGIN_STATE::NOT_INITIALIZED) { qCritical() << "ATBDeviceControllerPlugin::startPhysicalLayer(): plugin is not initialized"; @@ -927,7 +933,8 @@ bool ATBDeviceControllerPlugin::private_loadCashAgentLib(QString pluginName) // search list for plugin (.so) file: QStringList pluginNameList; - pluginNameList << "/usr/lib/libCAmaster.so" + pluginNameList << "/usr/lib/libCAslave.so" + << "/usr/lib/libCAmaster.so" << "/usr/lib/libCashAgentLib.so"; // using C++11 range based loop: for (const auto& filename : pluginNameList) { @@ -953,6 +960,14 @@ bool ATBDeviceControllerPlugin::private_loadCashAgentLib(QString pluginName) return false; } + if (pluginName.contains("slave", Qt::CaseInsensitive)) { + this->isMaster = false; + } + else + if (pluginName.contains("master", Qt::CaseInsensitive)) { + this->isMaster = true; + } + QPluginLoader* pluginLoader = new QPluginLoader(); pluginLoader->setFileName(pluginName); diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.h b/src/ATBAPP/ATBDeviceControllerPlugin.h index 654613d..73f00e6 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.h +++ b/src/ATBAPP/ATBDeviceControllerPlugin.h @@ -95,6 +95,8 @@ private: bool useDebug; + bool isMaster; + PLUGIN_STATE pluginState; QObject* eventReceiver;