From 70b488de666afff56d2bdc2c0313ee64cef1a4ee Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Tue, 12 Mar 2024 14:47:13 +0100 Subject: [PATCH] Diag: send operate (O000) only if State has changed --- src/ATBAPP/DeviceControllerDiag.cpp | 16 +++++++++++++--- src/ATBAPP/DeviceControllerDiag.h | 5 ++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/ATBAPP/DeviceControllerDiag.cpp b/src/ATBAPP/DeviceControllerDiag.cpp index 7ca3742..c7ba972 100644 --- a/src/ATBAPP/DeviceControllerDiag.cpp +++ b/src/ATBAPP/DeviceControllerDiag.cpp @@ -12,6 +12,7 @@ DeviceControllerDiag::DeviceControllerDiag(PersistentData *pData, QObject *paren , eventReceiver(nullptr) , isRequestRunning(false) , flagInterruptDiag(false) + , lastState(DeviceController::State::INITIAL_STATE) , pData(pData) { diagRequestTimeoutTimer = new QTimer(this); @@ -365,7 +366,6 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result) { qCritical() << "DeviceControllerDiag::private_sendDiagEvent() result: " << result; - if (this->eventReceiver == nullptr) { qCritical() << "DeviceControllerDiag: no eventReceiver"; return; @@ -388,6 +388,9 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result) QString parameter; switch (result) { + case DeviceController::State::INITIAL_STATE: + return; + break; case DeviceController::State::A000: // alarm / intrusion eventClass = EVENT_CLASS::ALARM; parameter = "alarm / intrusion"; @@ -473,14 +476,20 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result) case DeviceController::State::E255: // no valid data from DeviceController eventClass = EVENT_CLASS::STATE; parameter = ""; - qCritical() << " ... ignore " << QMetaEnum::fromType().valueToKey(result); + qCritical() << " ... ignore " << QMetaEnum::fromType().valueToKey(result); return; break; case DeviceController::State::O000: // everything is fine this->machineEventSet.clear(); eventClass = EVENT_CLASS::OPERATE; parameter = ""; - qCritical() << " ... everything fine"; + if (this->lastState == DeviceController::State::O000) { + qCritical() << " ... everything fine, no state change -> skip sending"; + return; + } + else { + qCritical() << " ... everything fine"; + } break; case DeviceController::State::W001: // paper low @@ -501,6 +510,7 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result) break; } + this->lastState = result; ATBMachineEvent *machineEvent = new ATBMachineEvent( eventId, diff --git a/src/ATBAPP/DeviceControllerDiag.h b/src/ATBAPP/DeviceControllerDiag.h index 915d886..d87e25d 100644 --- a/src/ATBAPP/DeviceControllerDiag.h +++ b/src/ATBAPP/DeviceControllerDiag.h @@ -52,7 +52,9 @@ namespace DeviceController { W001, W002, W003, - W004 + W004, + + INITIAL_STATE }; Q_ENUM_NS(State) } @@ -91,6 +93,7 @@ private: int lastVoltage; + DeviceController::State lastState; QSet machineEventSet; PersistentData* pData;