Check m_hw before its use

This commit is contained in:
Gerhard Hoffmann 2024-05-03 13:11:33 +02:00
parent d64b029a2d
commit 4477647acf

View File

@ -118,7 +118,7 @@ Update::Update(Worker *worker,
, m_sys_areDCdataValid(false) {
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 {
int tries = 20;
while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) {
@ -185,6 +185,7 @@ void Update::onReportDCDownloadFailure(QString const &errorMsg) {
// br is a index into a table, used for historical reasons.
bool Update::openSerial(int br, QString baudrate, QString comPort) const {
if (m_hw) {
qDebug() << "opening serial" << br << baudrate << comPort << "...";
if (m_hw->dc_openSerial(br, baudrate, comPort, 1) == true) { // 1 for connect
Utils::printInfoMsg(
@ -202,16 +203,19 @@ bool Update::openSerial(int br, QString baudrate, QString comPort) const {
Utils::printCriticalErrorMsg(
QString("OPENING SERIAL %1").arg(br)
+ " " + baudrate + " " + comPort + "...FAILED");
}
return false;
}
void Update::closeSerial() const {
qInfo() << "CLOSED SERIAL" << m_baudrate << m_serialInterface;
if (m_hw) {
m_hw->dc_closeSerial();
}
}
bool Update::isSerialOpen() const {
return m_hw->dc_isPortOpen();
return m_hw ? m_hw->dc_isPortOpen() : false;
}
/*
@ -390,6 +394,8 @@ bool Update::downloadJson(enum FileTypeJson type,
int templateIdx,
QString jsFileToSendToDC) const {
bool ret = false;
if (m_hw) {
m_hw->dc_autoRequest(true); // downloading Json needs the AutoEmission flag
qDebug() << "SET AUTO-REQUEST=TRUE";
QThread::sleep(1); // make sure the auto-request flag is acknowledged
@ -411,7 +417,6 @@ bool Update::downloadJson(enum FileTypeJson type,
}
}
bool ret = false;
QString msg;
lst.clear();
if (ready) {
@ -503,6 +508,7 @@ bool Update::downloadJson(enum FileTypeJson type,
m_hw->dc_autoRequest(false);
qDebug() << "SET AUTO-REQUEST=FALSE";
QThread::sleep(1); // make sure the auto-request flag is acknowledged
}
return ret;
}
@ -558,6 +564,7 @@ void Update::finished(int /*exitCode*/, QProcess::ExitStatus /*exitStatus*/) {
}
QStringList Update::getDcSoftAndHardWareVersion() {
if (m_hw) {
m_hw->dc_autoRequest(true);
QThread::sleep(1); // make sure the timer-slots are active
@ -577,6 +584,7 @@ QStringList Update::getDcSoftAndHardWareVersion() {
if (!hwVersion.isEmpty() && !swVersion.isEmpty()) {
return QStringList() << hwVersion << swVersion;
}
}
return QStringList() << "DC HW-version not available"
<< "DC SW-version not available";
@ -665,6 +673,11 @@ bool Update::checkDownloadedJsonVersions(QStringList const& jsonFileNames) {
}
bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
if (!m_hw) {
Utils::printInfoMsg("CA-PLUGIN NOT LOADED");
return false;
}
int tries = 20;
while ((m_sys_areDCdataValid = m_hw->sys_areDCdataValid()) == false) {
// must deliver 'true', only then are all data from hwapi valid