Compare commits

...

14 Commits

Author SHA1 Message Date
24f2ba7c44 Move rsyncing the customer-repository after filesToUpdate(), as
the repository is pulled in filesToUpdate().
2024-04-09 14:56:25 +02:00
2ed6768953 Minor: remove ismasTriggerValue-(debug)-message, as it was too confusing. 2024-04-09 14:55:45 +02:00
a1327388bc execute(): Enhance debug output. 2024-04-09 14:53:50 +02:00
8d18ae10fe downLoadJson(): add more debug-output (visible in ISMAS as well)
to see what actuelly went wrong when downloading json-Files.
2024-04-09 14:51:54 +02:00
31bc2d0fa2 Minor: update comment 2024-04-09 14:49:42 +02:00
175b8fd3a1 If the update-trigger (aka WAIT-button) is empty and we have an automatic
update (i.e. time is 0:00 - 4:00 am), then do not inform ISMAS with an U0003
error signal, but send an U0002 (setting the trigger-value to "OK").
2024-03-19 12:41:42 +01:00
a57fa6c31e Add path to global device-controller library 2024-03-19 09:30:20 +01:00
c22c924e38 Add path to global device-controller library 2024-03-19 09:29:51 +01:00
bdc64920a2 Minor: remove superfluous include 2024-03-19 09:29:17 +01:00
7bc9fa0c04 Minor: fix typo 2024-03-19 09:28:37 +01:00
334da1fe4a Merge branch 'master' of https://git.mimbach49.de/GerhardHoffmann/ATBUpdateTool 2024-03-19 09:23:54 +01:00
5c152c9dc2 Minor: remove plugins/interfaces.h 2024-03-19 09:13:27 +01:00
367ffaa3a1 Minor: adapt header-include 2024-03-19 09:12:46 +01:00
2fd004f249 Add PATH for device-controller-library as well. 2024-03-19 09:12:07 +01:00
8 changed files with 132 additions and 35 deletions

View File

@@ -34,6 +34,11 @@ contains( CONFIG, PTU5 ) {
lessThan(QT_MAJOR_VERSION, 5): PKGCONFIG += qextserialport lessThan(QT_MAJOR_VERSION, 5): PKGCONFIG += qextserialport
QMAKE_CXXFLAGS += -O2 -std=c++17 # for GCC >= 4.7 QMAKE_CXXFLAGS += -O2 -std=c++17 # for GCC >= 4.7
# QMAKE_CXXFLAGS += -Wno-deprecated-copy # QMAKE_CXXFLAGS += -Wno-deprecated-copy
PTU5BASEPATH = /opt/devel/ptu5
INCLUDEPATH += $$PTU5BASEPATH/qt/libs/devicecontroller/include
LIBS += -L$$PTU5BASEPATH/qt/libs/devicecontroller/library
ARCH = PTU5 ARCH = PTU5
DEFINES+=PTU5 DEFINES+=PTU5
} }

View File

@@ -39,6 +39,12 @@ contains( CONFIG, PTU5 ) {
lessThan(QT_MAJOR_VERSION, 5): PKGCONFIG += qextserialport lessThan(QT_MAJOR_VERSION, 5): PKGCONFIG += qextserialport
QMAKE_CXXFLAGS += -O2 -std=c++17 # for GCC >= 4.7 QMAKE_CXXFLAGS += -O2 -std=c++17 # for GCC >= 4.7
# QMAKE_CXXFLAGS += -Wno-deprecated-copy # QMAKE_CXXFLAGS += -Wno-deprecated-copy
PTU5BASEPATH = /opt/devel/ptu5
INCLUDEPATH += $$PTU5BASEPATH/qt/libs/devicecontroller/include
LIBS += -L$$PTU5BASEPATH/qt/libs/devicecontroller/library
ARCH = PTU5 ARCH = PTU5
DEFINES+=PTU5 DEFINES+=PTU5
} }
@@ -72,7 +78,6 @@ SOURCES += \
HEADERS += \ HEADERS += \
message_handler.h \ message_handler.h \
plugins/interfaces.h \
process/command.h process/command.h
OTHER_FILES += \ OTHER_FILES += \

View File

@@ -4,7 +4,7 @@
#include <QByteArray> #include <QByteArray>
#include "message_handler.h" #include "message_handler.h"
#include "plugins/interfaces.h" #include <DeviceController/interfaces.h>
//#include <unistd.h> //#include <unistd.h>

View File

@@ -316,6 +316,31 @@ std::optional<QString> GitClient::gitPull() {
// 6ed893f..5d9882c zg1/zone2 -> origin/zg1/zone2 // 6ed893f..5d9882c zg1/zone2 -> origin/zg1/zone2
// 4384d17..77045d8 zg1/zone3 -> origin/zg1/zone3 // 4384d17..77045d8 zg1/zone3 -> origin/zg1/zone3
// 89d2812..36a0d74 zg1/zone5 -> origin/zg1/zone5 // 89d2812..36a0d74 zg1/zone5 -> origin/zg1/zone5
//
// More exactly:
// remote: Counting objects: 382, done.
// remote: Compressing objects: 100% (203/203), done.
// remote: Total 278 (delta 177), reused 103 (delta 59)
// Receiving objects: 100% (278/278), 4.89 MiB | 539 KiB/s, done.
// Resolving deltas: 100% (177/177), completed with 40 local objects.
// From ssh://longair@pacific.mpi-cbg.de/srv/git/fiji
// 3036acc..9eb5e40 debian-release-20081030 -> origin/debian-release-20081030
// * [new branch] debian-release-20081112 -> origin/debian-release-20081112
// * [new branch] debian-release-20081112.1 -> origin/debian-release-20081112.1
// 3d619e7..6260626 master -> origin/master
//
// The most important bits here are the lines like these:
//
// 3036acc..9eb5e40 debian-release-20081030 -> origin/debian-release-20081030
// * [new branch] debian-release-20081112 -> origin/debian-release-20081112
//
// The first line of these two shows that your remote-tracking branch
// origin/debian-release-20081030 has been advanced from the commit 3036acc to 9eb5e40.
// The bit before the arrow is the name of the branch in the remote repository.
// The second line similarly show that since we last did this, a new remote tracking
// branch has been created. (git fetch may also fetch new tags if they have appeared
// in the remote repository.)
bool found = false; bool found = false;
for (int i=0; i < lines.size(); ++i) { for (int i=0; i < lines.size(); ++i) {
if (lines.at(i).contains(m_branchName)) { if (lines.at(i).contains(m_branchName)) {

View File

@@ -400,17 +400,26 @@ bool Update::downloadJson(enum FileTypeJson type,
qDebug() << "SET AUTO-REQUEST=TRUE"; qDebug() << "SET AUTO-REQUEST=TRUE";
QThread::sleep(1); // make sure the auto-request flag is acknowledged QThread::sleep(1); // make sure the auto-request flag is acknowledged
QStringList lst;
bool ready = false; bool ready = false;
int nTry = 25; int nTry = 25;
while ((ready = m_hw->sys_ready4sending()) == false) { while ((ready = m_hw->sys_ready4sending()) == false) {
QThread::msleep(200); QThread::msleep(200);
if (--nTry <= 0) { if (--nTry <= 0) {
Utils::printCriticalErrorMsg("SYS NOT READY FOR SENDING AFTER 5 SECONDS"); QString msg("SYS NOT READY FOR SENDING AFTER 5 SECONDS");
Utils::printCriticalErrorMsg(msg);
lst << msg;
if (m_worker) {
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst) << Worker::UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE));
}
break; break;
} }
} }
bool ret = false; bool ret = false;
QString msg;
lst.clear();
if (ready) { if (ready) {
QFile file(jsFileToSendToDC); QFile file(jsFileToSendToDC);
QFileInfo fi(jsFileToSendToDC); // max. size of template file is 800 bytes QFileInfo fi(jsFileToSendToDC); // max. size of template file is 800 bytes
@@ -452,20 +461,48 @@ bool Update::downloadJson(enum FileTypeJson type,
qCritical() << length << "MACHINE ID =" << ba.toHex(':'); qCritical() << length << "MACHINE ID =" << ba.toHex(':');
*/ */
if (m_worker) {
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst) << Worker::UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE));
}
ret = true; ret = true;
} else {
msg = QString("ERROR SEND JSON-FILE %1 TO DC").arg(file.fileName());
Utils::printCriticalErrorMsg(msg);
lst << msg;
if (m_worker) {
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst)
<< Worker::UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE));
}
} }
} else { } else {
Utils::printCriticalErrorMsg( msg = QString("SIZE OF %1 TOO BIG (%2 BYTES)").arg(jsFileToSendToDC).arg(fi.size());
QString("SIZE OF %1 TOO BIG (%2 BYTES)") Utils::printCriticalErrorMsg(msg);
.arg(jsFileToSendToDC).arg(fi.size())); lst << msg;
if (m_worker) {
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst)
<< Worker::UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE));
}
} }
} else { } else {
Utils::printCriticalErrorMsg( msg = QString("CAN NOT OPEN ") + jsFileToSendToDC + " FOR READING";
QString("CAN NOT OPEN ") + jsFileToSendToDC + " FOR READING"); Utils::printCriticalErrorMsg(msg);
lst << msg;
if (m_worker) {
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst)
<< Worker::UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE));
}
} }
} else { } else {
Utils::printCriticalErrorMsg( msg = QString(jsFileToSendToDC) + " DOES NOT EXIST";
QString(jsFileToSendToDC) + " DOES NOT EXIST"); Utils::printCriticalErrorMsg(msg);
lst << msg;
if (m_worker) {
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst)
<< Worker::UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE));
}
} }
} }

View File

@@ -277,21 +277,24 @@ bool Utils::sameFilesInDirs(QDir const &dir1, QDir const &dir2,
fileNameLst2 << i2.next().fileName(); fileNameLst2 << i2.next().fileName();
} }
QString dirPath1 = dir1.absolutePath();
QString dirPath2 = dir2.absolutePath();
if (fileNameLst1.isEmpty()) { if (fileNameLst1.isEmpty()) {
qCritical() << "DIR1" << dir1.dirName() << " DOES NOT CONTAIN EXPECTED FILES"; qCritical() << "DIR1" << dirPath1 << " DOES NOT CONTAIN EXPECTED FILES";
return false; return false;
} }
if (fileNameLst2.isEmpty()) { if (fileNameLst2.isEmpty()) {
qCritical() << "DIR1" << dir2.dirName() << " DOES NOT CONTAIN EXPECTED FILES"; qCritical() << "DIR1" << dirPath2 << " DOES NOT CONTAIN EXPECTED FILES";
return false; return false;
} }
if (fileNameLst1 != fileNameLst2) { if (fileNameLst1 != fileNameLst2) {
printCriticalErrorMsg(dir1.dirName() + " AND " + dir2.dirName() printCriticalErrorMsg(dirPath1 + " AND " + dirPath2
+ " DIFFER: [" + fileNameLst1.join(',') + "],[" + " DIFFER: [" + fileNameLst1.join(',') + "],["
+ fileNameLst2.join(',') + "]"); + fileNameLst2.join(',') + "]");
return false; return false;
} else { } else {
printInfoMsg(dir1.dirName() + " AND " + dir2.dirName() printInfoMsg(dirPath1 + " AND " + dirPath2
+ " ARE EQUAL: [" + fileNameLst1.join(',') + "]"); + " ARE EQUAL: [" + fileNameLst1.join(',') + "]");
} }
@@ -307,21 +310,21 @@ bool Utils::sameFilesInDirs(QDir const &dir1, QDir const &dir2,
} }
if (gitBlobLst1.isEmpty()) { if (gitBlobLst1.isEmpty()) {
qCritical() << "DIR1" << dir1.dirName() << " DOES NOT CONTAIN EXPECTED FILES"; qCritical() << "DIR1" << dirPath1 << " DOES NOT CONTAIN EXPECTED FILES";
return false; return false;
} }
if (gitBlobLst2.isEmpty()) { if (gitBlobLst2.isEmpty()) {
qCritical() << "DIR1" << dir2.dirName() << " DOES NOT CONTAIN EXPECTED FILES"; qCritical() << "DIR1" << dirPath2 << " DOES NOT CONTAIN EXPECTED FILES";
return false; return false;
} }
if (gitBlobLst1 != gitBlobLst2) { if (gitBlobLst1 != gitBlobLst2) {
printCriticalErrorMsg(dir1.dirName() + " AND " + dir2.dirName() printCriticalErrorMsg(dirPath1 + " AND " + dirPath2
+ " DIFFER: [" + gitBlobLst1.join(',') + "],[" + " DIFFER: [" + gitBlobLst1.join(',') + "],["
+ gitBlobLst2.join(',') + "]"); + gitBlobLst2.join(',') + "]");
return false; return false;
} else { } else {
printInfoMsg(dir1.dirName() + " AND " + dir2.dirName() printInfoMsg(dirPath1 + " AND " + dirPath2
+ " CONTAIN SAME GIT-BLOBS FOR FILES: [" + fileNameLst1.join(',') + "]"); + " CONTAIN SAME GIT-BLOBS FOR FILES: [" + fileNameLst1.join(',') + "]");
} }

View File

@@ -439,17 +439,6 @@ void Worker::privateUpdate() {
ISMAS(lst) << (CONSOLE(lst) << UPDATE_STEP::CHECKOUT_BRANCH); ISMAS(lst) << (CONSOLE(lst) << UPDATE_STEP::CHECKOUT_BRANCH);
setProgress(_CHECKOUT_BRANCH_SUCCESS); setProgress(_CHECKOUT_BRANCH_SUCCESS);
////////////////////////////////////////////////////////////////////////////
//
// (R)SYNC THE REPOSITORY WITH THE LOCAL FILEYSTEM
//
////////////////////////////////////////////////////////////////////////////
if ((continueUpdate = syncCustomerRepositoryAndFS()) == false) {
return;
}
lst = QStringList(QString(smap[UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS]));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS));
setProgress(_SYNC_CUSTOMER_REPOSITORY_SUCCESS);
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// //
@@ -464,6 +453,18 @@ void Worker::privateUpdate() {
ISMAS() << (GUI() << (CONSOLE() << UPDATE_STEP::UPDATE_REPOSITORY)); ISMAS() << (GUI() << (CONSOLE() << UPDATE_STEP::UPDATE_REPOSITORY));
setProgress(_UPDATE_REPOSITORY_SUCCESS); setProgress(_UPDATE_REPOSITORY_SUCCESS);
////////////////////////////////////////////////////////////////////////////
//
// (R)SYNC THE REPOSITORY WITH THE LOCAL FILEYSTEM
//
////////////////////////////////////////////////////////////////////////////
if ((continueUpdate = syncCustomerRepositoryAndFS()) == false) {
return;
}
lst = QStringList(QString(smap[UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS]));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS));
setProgress(_SYNC_CUSTOMER_REPOSITORY_SUCCESS);
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// //
@@ -518,6 +519,8 @@ bool Worker::updateTriggerSet() {
GUI() << (CONSOLE() << UPDATE_STEP::CHECK_ISMAS_TRIGGER); GUI() << (CONSOLE() << UPDATE_STEP::CHECK_ISMAS_TRIGGER);
bool const automaticUpdate = (QDateTime::currentDateTime().time().hour() < 4);
QString triggerValue("NOT CHECKED YET"); QString triggerValue("NOT CHECKED YET");
static constexpr int const repeats = 15; static constexpr int const repeats = 15;
for (int repeat = 1; repeat <= repeats; ++repeat) { for (int repeat = 1; repeat <= repeats; ++repeat) {
@@ -639,9 +642,17 @@ bool Worker::updateTriggerSet() {
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE))); ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE)));
// if the customer repository has just been cloned // if the customer repository has just been cloned
return false; // it is OK the ISMAS trigger might not be 'WAIT' return false; // it is OK the ISMAS trigger might not be 'WAIT'
} else {
CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE);
} }
// not a clone and empty update-trigger
if (automaticUpdate) {
// do not inform ISMAS in case of automatic update, because the
// update is not necessary as the trigger-button is not set to WAIT.
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE));
return false;
}
CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE);
QThread::sleep(6); QThread::sleep(6);
continue; continue;
} else { } else {
@@ -649,11 +660,21 @@ bool Worker::updateTriggerSet() {
if (m_clone) { if (m_clone) {
m_ismasTriggerStatusMessage = QStringList(QString("TRIGGER-VALUE='%1' != 'WAIT'").arg(triggerValue)); m_ismasTriggerStatusMessage = QStringList(QString("TRIGGER-VALUE='%1' != 'WAIT'").arg(triggerValue));
QStringList lst = m_ismasTriggerStatusMessage; QStringList lst = m_ismasTriggerStatusMessage;
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE))); if (automaticUpdate) {
// do not inform ISMAS in case of automatic update
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE));
} else {
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE)));
}
} else { } else {
m_ismasTriggerStatusMessage = QStringList(QString("TRIGGER-VALUE='%1' != 'WAIT'").arg(triggerValue)); m_ismasTriggerStatusMessage = QStringList(QString("TRIGGER-VALUE='%1' != 'WAIT'").arg(triggerValue));
QStringList lst = m_ismasTriggerStatusMessage; QStringList lst = m_ismasTriggerStatusMessage;
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE))); if (automaticUpdate) {
// do not inform ISMAS in case of automatic update
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE));
} else {
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
}
} }
return false; return false;
} }
@@ -908,7 +929,7 @@ bool Worker::downloadFilesToPSAHardware() {
return true; return true;
} }
CONSOLE(QStringList("NO FILES TO DOWNLOAD TO PSA-HW")) << (m_lastFailedUpdateStep = UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE); CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE);
setProgress(_DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE); setProgress(_DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE);
return false; return false;

View File

@@ -225,7 +225,8 @@ class Worker : public QThread{
m_worker->setProgress(_FINISHED); m_worker->setProgress(_FINISHED);
} }
} else { } else {
QStringList lst = m_worker->m_ismasTriggerStatusMessage; // QStringList lst = m_worker->m_ismasTriggerStatusMessage;
QStringList lst;
UPDATE_STEP last = m_worker->m_lastFailedUpdateStep; UPDATE_STEP last = m_worker->m_lastFailedUpdateStep;
if (m_worker->smap.contains(last)) { if (m_worker->smap.contains(last)) {
lst << QString(" (last failed step: %1)").arg(m_worker->smap[last]); lst << QString(" (last failed step: %1)").arg(m_worker->smap[last]);