Compare commits

...

3 Commits

2 changed files with 124 additions and 115 deletions

View File

@ -119,7 +119,9 @@ DEFINES += QT_DEPRECATED_WARNINGS
# : Improve output of GUI/Console and messages sent to ISMAS. # : Improve output of GUI/Console and messages sent to ISMAS.
# : Fix: do not send the json-files to dc in any case. Bug introduced # : Fix: do not send the json-files to dc in any case. Bug introduced
# when pulling new branch, but branch already existed locally. # when pulling new branch, but branch already existed locally.
VERSION="1.4.6" # 1.4.6 : No exit()-call if loading CA-plugin fails.
# Check m_hw (pointer to CA-(Slave)Plugin) before its use.
VERSION="1.4.7"
# PLANNED TODOS: # PLANNED TODOS:
# 1: Das Repository wird repariert bwz. neu geklont. Unabhaengig vom WAIT. # 1: Das Repository wird repariert bwz. neu geklont. Unabhaengig vom WAIT.
# 2: Wenn der WAIT-Button aktiv ist, dann wird ein Repository repariert (neu # 2: Wenn der WAIT-Button aktiv ist, dann wird ein Repository repariert (neu

View File

@ -52,7 +52,6 @@ hwinf *Update::loadDCPlugin(QDir const &plugInDir, QString const &fname) {
qCritical() << "in directory" << plugInDir.absolutePath(); qCritical() << "in directory" << plugInDir.absolutePath();
qCritical() << "cannot load plugin" << pluginLoader.fileName(); qCritical() << "cannot load plugin" << pluginLoader.fileName();
qCritical() << pluginLoader.errorString(); qCritical() << pluginLoader.errorString();
exit(-1);
} }
qCritical() << "loadDCPlugin() plugin directory:" << plugInDir.absolutePath(); qCritical() << "loadDCPlugin() plugin directory:" << plugInDir.absolutePath();
@ -60,25 +59,20 @@ hwinf *Update::loadDCPlugin(QDir const &plugInDir, QString const &fname) {
if (!pluginLoader.isLoaded()) { if (!pluginLoader.isLoaded()) {
qCritical() << pluginLoader.errorString(); qCritical() << pluginLoader.errorString();
exit(-2);
} }
QObject *plugin = pluginLoader.instance(); QObject *plugin = pluginLoader.instance();
if (!plugin) { if (!plugin) {
qCritical() << "cannot start instance"; qCritical() << "cannot start instance";
exit(-3);
} }
if (! (hw = qobject_cast<hwinf *>(plugin))) { if (! (hw = qobject_cast<hwinf *>(plugin))) {
qCritical() << "cannot cast plugin" << plugin << "to hwinf"; qCritical() << "cannot cast plugin" << plugin << "to hwinf";
exit(-4);
} }
} else { } else {
qCritical() << pluginLibName << "does not exist"; qCritical() << pluginLibName << "does not exist";
exit(-5);
} }
} else { } else {
qCritical() << "plugins directory" << plugInDir.absolutePath() qCritical() << "plugins directory" << plugInDir.absolutePath()
<< "does not exist"; << "does not exist";
exit(-6);
} }
return hw; return hw;
} }
@ -124,7 +118,7 @@ Update::Update(Worker *worker,
, m_sys_areDCdataValid(false) { , m_sys_areDCdataValid(false) {
if (!m_hw) { if (!m_hw) {
qCritical() << "(" << __func__ << ":" << __LINE__ << ") m_hw == nullptr -> ca-slave plugin loaded ???"; qCritical() << "(" << __func__ << ":" << __LINE__ << ") m_hw == nullptr -> ca-slave plugin not loaded";
} else { } else {
int tries = 20; int tries = 20;
while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) { while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) {
@ -191,6 +185,7 @@ void Update::onReportDCDownloadFailure(QString const &errorMsg) {
// br is a index into a table, used for historical reasons. // br is a index into a table, used for historical reasons.
bool Update::openSerial(int br, QString baudrate, QString comPort) const { bool Update::openSerial(int br, QString baudrate, QString comPort) const {
if (m_hw) {
qDebug() << "opening serial" << br << baudrate << comPort << "..."; qDebug() << "opening serial" << br << baudrate << comPort << "...";
if (m_hw->dc_openSerial(br, baudrate, comPort, 1) == true) { // 1 for connect if (m_hw->dc_openSerial(br, baudrate, comPort, 1) == true) { // 1 for connect
Utils::printInfoMsg( Utils::printInfoMsg(
@ -208,16 +203,19 @@ bool Update::openSerial(int br, QString baudrate, QString comPort) const {
Utils::printCriticalErrorMsg( Utils::printCriticalErrorMsg(
QString("OPENING SERIAL %1").arg(br) QString("OPENING SERIAL %1").arg(br)
+ " " + baudrate + " " + comPort + "...FAILED"); + " " + baudrate + " " + comPort + "...FAILED");
}
return false; return false;
} }
void Update::closeSerial() const { void Update::closeSerial() const {
qInfo() << "CLOSED SERIAL" << m_baudrate << m_serialInterface; qInfo() << "CLOSED SERIAL" << m_baudrate << m_serialInterface;
if (m_hw) {
m_hw->dc_closeSerial(); m_hw->dc_closeSerial();
} }
}
bool Update::isSerialOpen() const { bool Update::isSerialOpen() const {
return m_hw->dc_isPortOpen(); return m_hw ? m_hw->dc_isPortOpen() : false;
} }
/* /*
@ -396,6 +394,8 @@ bool Update::downloadJson(enum FileTypeJson type,
int templateIdx, int templateIdx,
QString jsFileToSendToDC) const { QString jsFileToSendToDC) const {
bool ret = false;
if (m_hw) {
m_hw->dc_autoRequest(true); // downloading Json needs the AutoEmission flag m_hw->dc_autoRequest(true); // downloading Json needs the AutoEmission flag
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
@ -417,7 +417,6 @@ bool Update::downloadJson(enum FileTypeJson type,
} }
} }
bool ret = false;
QString msg; QString msg;
lst.clear(); lst.clear();
if (ready) { if (ready) {
@ -509,6 +508,7 @@ bool Update::downloadJson(enum FileTypeJson type,
m_hw->dc_autoRequest(false); m_hw->dc_autoRequest(false);
qDebug() << "SET AUTO-REQUEST=FALSE"; qDebug() << "SET AUTO-REQUEST=FALSE";
QThread::sleep(1); // make sure the auto-request flag is acknowledged QThread::sleep(1); // make sure the auto-request flag is acknowledged
}
return ret; return ret;
} }
@ -564,6 +564,7 @@ void Update::finished(int /*exitCode*/, QProcess::ExitStatus /*exitStatus*/) {
} }
QStringList Update::getDcSoftAndHardWareVersion() { QStringList Update::getDcSoftAndHardWareVersion() {
if (m_hw) {
m_hw->dc_autoRequest(true); m_hw->dc_autoRequest(true);
QThread::sleep(1); // make sure the timer-slots are active QThread::sleep(1); // make sure the timer-slots are active
@ -583,6 +584,7 @@ QStringList Update::getDcSoftAndHardWareVersion() {
if (!hwVersion.isEmpty() && !swVersion.isEmpty()) { if (!hwVersion.isEmpty() && !swVersion.isEmpty()) {
return QStringList() << hwVersion << swVersion; return QStringList() << hwVersion << swVersion;
} }
}
return QStringList() << "DC HW-version not available" return QStringList() << "DC HW-version not available"
<< "DC SW-version not available"; << "DC SW-version not available";
@ -671,6 +673,11 @@ bool Update::checkDownloadedJsonVersions(QStringList const& jsonFileNames) {
} }
bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) { bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
if (!m_hw) {
Utils::printInfoMsg("CA-PLUGIN NOT LOADED");
return false;
}
int tries = 20; int tries = 20;
while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) { while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) {
// must deliver 'true', only then are all data from hwapi valid // must deliver 'true', only then are all data from hwapi valid