From 379a5d4e3eb0f935ef0441d24625014878c838c4 Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Tue, 19 Mar 2024 13:43:01 +0100 Subject: [PATCH] Diag: track ErrorState --- src/ATBAPP/DeviceControllerDiag.cpp | 34 +++++++++++++++++++++++++++++ src/ATBAPP/DeviceControllerDiag.h | 8 +++++++ 2 files changed, 42 insertions(+) diff --git a/src/ATBAPP/DeviceControllerDiag.cpp b/src/ATBAPP/DeviceControllerDiag.cpp index bc7c16c..b367afa 100644 --- a/src/ATBAPP/DeviceControllerDiag.cpp +++ b/src/ATBAPP/DeviceControllerDiag.cpp @@ -13,6 +13,7 @@ DeviceControllerDiag::DeviceControllerDiag(PersistentData *pData, QObject *paren , isRequestRunning(false) , flagInterruptDiag(false) , lastState(DeviceController::State::INITIAL_STATE) + , _isErrorState(false) , pData(pData) { diagRequestTimeoutTimer = new QTimer(this); @@ -63,6 +64,24 @@ void DeviceControllerDiag::onDiagRequestTimeoutTimerTimeout() this->flagInterruptDiag = true; } + +bool DeviceControllerDiag::isErrorState() +{ + return this->_isErrorState; +} + +bool DeviceControllerDiag::isOperatingState() +{ + return !this->_isErrorState; +} + +QSet DeviceControllerDiag::getCurrentMachineState() +{ + return this->machineEventSet; +} + + + void DeviceControllerDiag::private_startDiag() { // check for DiagRequestTimeoutTimerTimeout: @@ -393,58 +412,72 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result) case DeviceController::State::A000: // alarm / intrusion eventClass = EVENT_CLASS::ALARM; parameter = "alarm / intrusion"; + this->_isErrorState = true; break; case DeviceController::State::E002: // real time clock error eventClass = EVENT_CLASS::ERROR; parameter = "real time clock error"; + this->_isErrorState = true; break; case DeviceController::State::E003: // voltage error eventClass = EVENT_CLASS::ERROR; parameter = "voltage error"; + this->_isErrorState = true; break; case DeviceController::State::E004: // temperature error eventClass = EVENT_CLASS::ERROR; parameter = "temperature error"; + this->_isErrorState = true; break; case DeviceController::State::E007: // coin safe full eventClass = EVENT_CLASS::ERROR; parameter = "coin safe full"; + this->_isErrorState = true; break; case DeviceController::State::E008: // bill acceptor full eventClass = EVENT_CLASS::ERROR; parameter = "bill acceptor full"; + this->_isErrorState = true; break; case DeviceController::State::E009: // no cash box eventClass = EVENT_CLASS::ERROR; parameter = "no cash box"; + this->_isErrorState = true; break; case DeviceController::State::E010: // coin escrow eventClass = EVENT_CLASS::ERROR; parameter = "coin escrow"; + this->_isErrorState = true; break; case DeviceController::State::E011: // mem error int.ee. eventClass = EVENT_CLASS::ERROR; parameter = "mem error int.ee."; + this->_isErrorState = true; break; case DeviceController::State::E018: // no paper eventClass = EVENT_CLASS::ERROR; parameter = "no paper"; + this->_isErrorState = true; break; case DeviceController::State::E020: // printer error eventClass = EVENT_CLASS::ERROR; parameter = "printer error"; + this->_isErrorState = true; break; case DeviceController::State::E025: // coin blocker eventClass = EVENT_CLASS::ERROR; parameter = "coin blocker"; + this->_isErrorState = true; break; case DeviceController::State::E026: // error coin validator eventClass = EVENT_CLASS::ERROR; parameter = "error coin validator"; + this->_isErrorState = true; break; case DeviceController::State::E034: // mdb error eventClass = EVENT_CLASS::ERROR; parameter = "mdb error"; + this->_isErrorState = true; break; case DeviceController::State::E071: // cash box change is ongoing @@ -480,6 +513,7 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result) break; case DeviceController::State::O000: // everything is fine this->machineEventSet.clear(); + this->_isErrorState = false; eventClass = EVENT_CLASS::OPERATE; parameter = ""; if (this->lastState == DeviceController::State::O000) { diff --git a/src/ATBAPP/DeviceControllerDiag.h b/src/ATBAPP/DeviceControllerDiag.h index d87e25d..04c716d 100644 --- a/src/ATBAPP/DeviceControllerDiag.h +++ b/src/ATBAPP/DeviceControllerDiag.h @@ -72,6 +72,13 @@ public: nsDeviceControllerInterface::COIN_PROCESSOR coinProcessorType; nsDeviceControllerInterface::BILL_ACCEPTOR billAcceptor; + /** + * return true, if machineEventSet contains an error + */ + bool isErrorState(); + bool isOperatingState(); + QSet getCurrentMachineState(); + public slots: void diagRequest(); @@ -95,6 +102,7 @@ private: DeviceController::State lastState; QSet machineEventSet; + bool _isErrorState; PersistentData* pData;