From f75f2c57df5cc3a00366375b557d137fdb262e94 Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Thu, 12 Jun 2025 08:35:58 +0200 Subject: [PATCH] Diag: E255 / W255 / M0254 -> set, send and finish diag This states are rather meta infos about dc condition. Therefore the where created and sent outside of superviseSystem()-method. This commit should ensure that: - this states are sent to ISMAS - this states are inserted in machineEventSet in order to enable a reset in next diagRun --- src/ATBAPP/DeviceControllerDiag.cpp | 35 +++++++++++++++++------------ 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/ATBAPP/DeviceControllerDiag.cpp b/src/ATBAPP/DeviceControllerDiag.cpp index d4bb08e..d09b831 100644 --- a/src/ATBAPP/DeviceControllerDiag.cpp +++ b/src/ATBAPP/DeviceControllerDiag.cpp @@ -111,9 +111,9 @@ void DeviceControllerDiag::private_startDiag() // check for DiagRequestTimeoutTimerTimeout: if (this->flagInterruptDiag) { qCritical() << "DeviceControllerDiag::private_startDiag() interrupted!"; - this->private_setDiagEvent(DeviceController::State::E255); - this->isRequestRunning = false; - this->flagInterruptDiag = false; + DCMachineEvent E255Event = DCMachineEvent(DeviceController::State::E255); + machineEventSet.insert(E255Event); + private_sendDiagEvent(E255Event, DeviceController::Action::SET); if (this->E255counter > 5) { this->restartCArun(); // try it again, until success: @@ -169,9 +169,10 @@ void DeviceControllerDiag::sys_superviseSystem() // check for DiagRequestTimeoutTimerTimeout: if (this->flagInterruptDiag) { qCritical() << "DeviceControllerDiag::sys_superviseSystem() interrupted!"; - this->private_setDiagEvent(DeviceController::State::E255); - this->flagInterruptDiag = false; - this->isRequestRunning = false; + // send + DCMachineEvent E255Event = DCMachineEvent(DeviceController::State::E255); + machineEventSet.insert(E255Event); + private_sendDiagEvent(E255Event, DeviceController::Action::SET); if (this->E255counter > 5) { this->restartCArun(); } else { this->E255counter++; } QTimer::singleShot(400, this, &DeviceControllerDiag::diagRequest); @@ -184,9 +185,11 @@ void DeviceControllerDiag::sys_superviseSystem() // es gibt keinerlei gültige Daten vom DC qCritical() << "DeviceControllerDiag::sys_superviseSystem() no valid data!"; hw->dc_autoRequest(true); - this->private_setDiagEvent(DeviceController::State::M0254); - this->diagRequestTimeoutTimer->stop(); - this->isRequestRunning = false; + + DCMachineEvent E255Event = DCMachineEvent(DeviceController::State::M0254); + machineEventSet.insert(E255Event); + private_sendDiagEvent(E255Event, DeviceController::Action::SET); + if (this->E255counter > 5) { this->restartCArun(); } else { this->E255counter++; } QTimer::singleShot(400, this, &DeviceControllerDiag::diagRequest); @@ -457,9 +460,8 @@ void DeviceControllerDiag::sub_componentAssessment() // send Operate if there is no error if (flag_sendOperate) { - // O000 must not be part of event set - DCMachineEvent O000DCMachineEvent = DCMachineEvent(DeviceController::State::O000, - QUuid::createUuid().toString(QUuid::WithoutBraces).mid(0, 8)); + // O000 must not be part of machineEventSet + DCMachineEvent O000DCMachineEvent = DCMachineEvent(DeviceController::State::O000); this->private_sendDiagEvent(O000DCMachineEvent, DeviceController::Action::SET); } @@ -509,7 +511,7 @@ void DeviceControllerDiag::private_setDiagEvent(DeviceController::State result) return; } - DCMachineEvent newState = DCMachineEvent(result, QUuid::createUuid().toString(QUuid::WithoutBraces).mid(0, 8)); + DCMachineEvent newState = DCMachineEvent(result); // DEBUG qCritical() << "----> setDiagEvent: " << newState.state << " with id: " << newState.eventId; @@ -708,7 +710,12 @@ void DeviceControllerDiag::private_sendDiagEvent(DCMachineEvent result, DeviceCo void DeviceControllerDiag::restartCArun() { this->E255counter = 0; - this->private_setDiagEvent(DeviceController::State::W255); + + + DCMachineEvent W255Event = DCMachineEvent(DeviceController::State::W255); + machineEventSet.insert(W255Event); + private_sendDiagEvent(W255Event, DeviceController::Action::SET); + QProcess::startDetached("/bin/systemctl", {"restart", "carun"}); }