Compare commits
No commits in common. "da102b5ed0a3658704c999edf81ab292358f8f5a" and "0933274c8236b32aa5b1905dfcaed4c7a0db3fe5" have entirely different histories.
da102b5ed0
...
0933274c82
@ -116,8 +116,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
||||
# 1.4.5 : In case a new branch has been created in a remote
|
||||
# customer-repository (e.g. origin/zg1/zone101), then fetch/pull
|
||||
# this branch before switching to this now locally existen branch.
|
||||
# : Improve output of GUI/Console and messages sent to ISMAS.
|
||||
VERSION="1.4.6"
|
||||
VERSION="1.4.5"
|
||||
# PLANNED TODOS:
|
||||
# 1: Das Repository wird repariert bwz. neu geklont. Unabhaengig vom WAIT.
|
||||
# 2: Wenn der WAIT-Button aktiv ist, dann wird ein Repository repariert (neu
|
||||
|
@ -384,7 +384,7 @@ QString IsmasClient::errorBackendNotConnected(QString const &info,
|
||||
QString const &version) {
|
||||
return updateNewsToIsmas("U0003",
|
||||
m_progressInPercent,
|
||||
RESULT_CODE::ISMAS_NO_CONNECTION_ERROR,
|
||||
RESULT_CODE::INSTALL_ERROR,
|
||||
"CHECK BACKEND CONNECTIVITY",
|
||||
info.toStdString().c_str(),
|
||||
version.toStdString().c_str());
|
||||
@ -394,7 +394,7 @@ QString IsmasClient::errorGitClone(QString const &info,
|
||||
QString const &version) {
|
||||
return updateNewsToIsmas("U0003",
|
||||
m_progressInPercent,
|
||||
RESULT_CODE::GIT_CLONE_ERROR,
|
||||
RESULT_CODE::INSTALL_ERROR,
|
||||
"CLONE CUSTOMER REPOSITORY FAILED",
|
||||
info.toStdString().c_str(),
|
||||
version.toStdString().c_str());
|
||||
@ -442,7 +442,7 @@ QString IsmasClient::updateTriggerSet(QString const &info, QString const &versio
|
||||
QString IsmasClient::errorUpdateTrigger(QString const &info, QString const &version) {
|
||||
return updateNewsToIsmas("U0003",
|
||||
m_progressInPercent,
|
||||
RESULT_CODE::ISMAS_TRIGGER_ERROR,
|
||||
RESULT_CODE::INSTALL_ERROR,
|
||||
"CHECK UPDATE TRIGGER",
|
||||
info.toStdString().c_str(),
|
||||
version.toStdString().c_str());
|
||||
|
@ -145,47 +145,13 @@ public:
|
||||
DIRECT_PORT = 7778
|
||||
};
|
||||
|
||||
|
||||
enum RESULT_CODE {
|
||||
SUCCESS=0,
|
||||
// if between 00:00 - 04:00 Wait-button state not WAIT, then we assume
|
||||
// that's an automatic nightly (not-necessary) update
|
||||
NO_UPDATE_NECESSARY=1,
|
||||
// if APISM reports the ISMAS is not available (15x, 6s delay each)
|
||||
ISMAS_NO_CONNECTION_ERROR=2,
|
||||
// if not within 00:00-04:00 and WAIT-button was not in state WAIT
|
||||
ISMAS_TRIGGER_ERROR=3,
|
||||
// cloning git repo. not possible
|
||||
GIT_CLONE_ERROR=4,
|
||||
// pulling from remote git server not possible
|
||||
GIT_PULL_ERROR=5,
|
||||
// fetching from remote git server not possible
|
||||
GIT_FETCH_ERROR=6,
|
||||
// merging fetched data not possible
|
||||
GIT_MERGE_ERROR=7,
|
||||
// check sanity of local customer-repository failed
|
||||
GIT_CHECK_REPOSITORY_ERROR=8,
|
||||
// switch/checkout of branch (i.e. zone) on error
|
||||
GIT_SWITCH_BRANCH_ERROR=9,
|
||||
// fetch/pull of new branch failed. the new branch was not available
|
||||
// when installing via SD-card followed by intial clone during the
|
||||
// update process.
|
||||
GIT_FETCH_NEW_BRANCH_ERROR=10,
|
||||
// error computing git-blob hash-value
|
||||
GIT_HASH_ERROR=11,
|
||||
// update for general json files failed.
|
||||
JSON_FILES_UPDATE_ERROR=12,
|
||||
// error downloading config-json-files to device controller
|
||||
JSON_FILES_DOWNLOAD_ERROR=13,
|
||||
// error downloading device-controller
|
||||
DC_DOWNLOAD_ERROR=14,
|
||||
// error rsyncing json/ini-files to local filesystem
|
||||
RSYN_ERROR=15,
|
||||
// HASH_VALUE_ERROR=14,
|
||||
// HW_COMPATIBILITY_ERROR=15,
|
||||
OPKG_COMMANDS_ERROR=16,
|
||||
// CLEANUP_ERROR=18,
|
||||
UPDATE_IN_ERROR_STATE=99
|
||||
};
|
||||
BACKUP_FAILED=2,
|
||||
WRONG_PACKAGE=3,
|
||||
INSTALL_ERROR=4};
|
||||
|
||||
enum REASON {
|
||||
TIME_TRIGGERED = 0,
|
||||
|
@ -26,21 +26,11 @@
|
||||
#define SERIAL_PORT "ttyUSB0"
|
||||
#endif
|
||||
|
||||
/*
|
||||
Note:
|
||||
! After U0002 immer ein CMD_SENDVERSION
|
||||
! Only U0002 and U0003 finish the Update process.
|
||||
! U0001: Update finished but not activated
|
||||
! U0002: Update finished and activated
|
||||
! U0003: Update finished but FAILed.
|
||||
*/
|
||||
|
||||
#define _ISMAS_DONE "U0001" // 100%, Check: Resultcode: 0
|
||||
#define _ISMAS_SET_WAIT_OK "U0002" // empty WAIT-button (""), ResultCode: 0
|
||||
#define _ISMAS_DONE "U0001" // 100%
|
||||
#define _ISMAS_SET_WAIT_OK "U0002" // empty WAIT-button ("")
|
||||
#define _ISMAS_FAILURE "U0003" // FAIL
|
||||
#define _ISMAS_CONTINUE "U0010" // %-values: Update laeuft, Resultcodes entsprechend laufender Schritt
|
||||
#define _ISMAS_CONTINUE "U0010" // %-values
|
||||
#define _ISMAS_RESET_WAIT "ISMAS" // reset WAIT-button to "WAIT"
|
||||
#define _ISMAS_TEST_TRIGGER "U0099" // check the WAIT-button
|
||||
|
||||
#define _STARTED (1)
|
||||
#define _CHECK_ISMAS_TRIGGER (2)
|
||||
@ -749,7 +739,7 @@ private:
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
"U0010",
|
||||
_CHECKOUT_REPOSITORY_SUCCESS,
|
||||
IsmasClient::RESULT_CODE::SUCCESS,
|
||||
smap[UPDATE_STEP::CHECK_REPOSITORY],
|
||||
@ -765,9 +755,9 @@ private:
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
"U0010",
|
||||
_CHECKOUT_REPOSITORY_FAILURE,
|
||||
IsmasClient::RESULT_CODE::GIT_SWITCH_BRANCH_ERROR,
|
||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||
smap[UPDATE_STEP::CHECKOUT_REPOSITORY],
|
||||
QString("REPOSITORY %1 and BRANCH %2 ***NOT OK***")
|
||||
.arg(instance->m_customerRepository)
|
||||
@ -784,7 +774,7 @@ private:
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
"U0010",
|
||||
_CHECK_SANITY_SUCCESS,
|
||||
IsmasClient::RESULT_CODE::SUCCESS,
|
||||
smap[UPDATE_STEP::CHECK_SANITY],
|
||||
@ -800,9 +790,9 @@ private:
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
"U0010",
|
||||
_CHECK_SANITY_FAILURE,
|
||||
IsmasClient::RESULT_CODE::GIT_CHECK_REPOSITORY_ERROR,
|
||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||
smap[UPDATE_STEP::CHECK_SANITY],
|
||||
QString("SANITY OF %1 and BRANCH %2 ***NOT*** OK")
|
||||
.arg(instance->m_customerRepository)
|
||||
@ -811,21 +801,21 @@ private:
|
||||
ismasClient.sendRequestReceiveResponse(
|
||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||
} break;
|
||||
case UPDATE_STEP::REPOSITORY_RECOVERED_SUCCESS: {
|
||||
case UPDATE_STEP::REPOSITORY_RECOVERED_SUCCESS:
|
||||
ismasClient.setProgressInPercent(_REPOSITORY_RECOVERED_SUCCESS);
|
||||
} break;
|
||||
case UPDATE_STEP::REPOSITORY_RECOVERED_FAILURE: {
|
||||
break;
|
||||
case UPDATE_STEP::REPOSITORY_RECOVERED_FAILURE:
|
||||
ismasClient.setProgressInPercent(_REPOSITORY_RECOVERED_FAILURE);
|
||||
} break;
|
||||
case UPDATE_STEP::CLONE_REPOSITORY: {
|
||||
break;
|
||||
case UPDATE_STEP::CLONE_REPOSITORY:
|
||||
ismasClient.setProgressInPercent(_CLONE_REPOSITORY);
|
||||
} break;
|
||||
break;
|
||||
case UPDATE_STEP::CLONE_REPOSITORY_SUCCESS: {
|
||||
ismasClient.setProgressInPercent(_CLONE_REPOSITORY_SUCCESS);
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
"U0010",
|
||||
_CLONE_REPOSITORY_SUCCESS,
|
||||
IsmasClient::RESULT_CODE::SUCCESS,
|
||||
smap[UPDATE_STEP::CLONE_REPOSITORY],
|
||||
@ -841,9 +831,9 @@ private:
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010 -> even on error: U0002/3 are sent only once
|
||||
"U0003",
|
||||
_CLONE_REPOSITORY_FAILURE,
|
||||
IsmasClient::RESULT_CODE::GIT_CLONE_ERROR,
|
||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||
smap[UPDATE_STEP::CHECKOUT_REPOSITORY],
|
||||
QString("CLONING REPOSITORY %1 OR CHECKING OUT BRANCH %2 FAILED")
|
||||
.arg(instance->m_customerRepository)
|
||||
@ -855,7 +845,7 @@ private:
|
||||
case UPDATE_STEP::CHECKOUT_REPOSITORY:
|
||||
ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY);
|
||||
break;
|
||||
case UPDATE_STEP::CHECKOUT_REPOSITORY_SUCCESS: {
|
||||
case UPDATE_STEP::CHECKOUT_REPOSITORY_SUCCESS:
|
||||
ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY_SUCCESS);
|
||||
ismasClient.sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
@ -864,95 +854,49 @@ private:
|
||||
.arg(instance->m_customerRepository)
|
||||
.arg(instance->m_gc.branchName()),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A"));
|
||||
} break;
|
||||
case UPDATE_STEP::CHECKOUT_REPOSITORY_FAILURE: {
|
||||
break;
|
||||
case UPDATE_STEP::CHECKOUT_REPOSITORY_FAILURE:
|
||||
ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY_FAILURE);
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010 -> even on error: U0002/3 are sent only once
|
||||
_CHECKOUT_REPOSITORY_FAILURE,
|
||||
IsmasClient::RESULT_CODE::GIT_SWITCH_BRANCH_ERROR,
|
||||
smap[UPDATE_STEP::CHECKOUT_REPOSITORY],
|
||||
QString("%1: CHECKING OUT BRANCH %2 FAILED")
|
||||
.arg(instance->m_customerRepository)
|
||||
.arg(instance->m_gc.branchName()).toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
ismasClient.sendRequestReceiveResponse(
|
||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||
} break;
|
||||
case UPDATE_STEP::CHECK_ISMAS_TRIGGER: {
|
||||
break;
|
||||
case UPDATE_STEP::CHECK_ISMAS_TRIGGER:
|
||||
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER);
|
||||
} break;
|
||||
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_SUCCESS: {
|
||||
break;
|
||||
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_SUCCESS:
|
||||
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_SUCCESS);
|
||||
ismasClient.sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateTriggerSet("ISMAS TRIGGER SET",
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A"));
|
||||
} break;
|
||||
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE: {
|
||||
break;
|
||||
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE:
|
||||
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_WRONG_VALUE);
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_TEST_TRIGGER, // U0099
|
||||
_CHECK_ISMAS_TRIGGER_WRONG_VALUE,
|
||||
IsmasClient::RESULT_CODE::ISMAS_TRIGGER_ERROR,
|
||||
smap[UPDATE_STEP::CHECK_ISMAS_TRIGGER],
|
||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
ismasClient.sendRequestReceiveResponse(
|
||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||
} break;
|
||||
break;
|
||||
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE: {
|
||||
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_FAILURE);
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_TEST_TRIGGER, // U0099
|
||||
"U0003",
|
||||
_CHECK_ISMAS_TRIGGER_FAILURE,
|
||||
IsmasClient::RESULT_CODE::ISMAS_TRIGGER_ERROR,
|
||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||
smap[UPDATE_STEP::CHECK_ISMAS_TRIGGER],
|
||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
ismasClient.sendRequestReceiveResponse(
|
||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||
} break;
|
||||
case UPDATE_STEP::INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER: {
|
||||
case UPDATE_STEP::INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER:
|
||||
ismasClient.setProgressInPercent(_INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER);
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
_INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER,
|
||||
IsmasClient::RESULT_CODE::SUCCESS,
|
||||
smap[UPDATE_STEP::INITIAL_CLONE_WITHOUT_ACTIVE_ISMAS_TRIGGER],
|
||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
ismasClient.sendRequestReceiveResponse(
|
||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||
} break;
|
||||
case UPDATE_STEP::INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER: {
|
||||
break;
|
||||
case UPDATE_STEP::INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER:
|
||||
ismasClient.setProgressInPercent(_INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER);
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
_INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER,
|
||||
IsmasClient::RESULT_CODE::SUCCESS,
|
||||
smap[UPDATE_STEP::INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER],
|
||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
ismasClient.sendRequestReceiveResponse(
|
||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||
} break;
|
||||
break;
|
||||
case UPDATE_STEP::PULL_NEW_BRANCH: {
|
||||
ismasClient.setProgressInPercent(_PULL_NEW_BRANCH);
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
"U0010",
|
||||
_PULL_NEW_BRANCH,
|
||||
IsmasClient::RESULT_CODE::SUCCESS,
|
||||
smap[UPDATE_STEP::CHECKOUT_BRANCH],
|
||||
@ -967,9 +911,9 @@ private:
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010 -> even on error: U0002/3 are sent only once
|
||||
"U0003",
|
||||
_PULL_NEW_BRANCH_FAILURE,
|
||||
IsmasClient::RESULT_CODE::GIT_PULL_ERROR,
|
||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||
smap[UPDATE_STEP::CHECKOUT_BRANCH],
|
||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
@ -982,7 +926,7 @@ private:
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_CONTINUE, // U0010
|
||||
"U0010",
|
||||
_PULL_NEW_BRANCH_SUCCESS,
|
||||
IsmasClient::RESULT_CODE::SUCCESS,
|
||||
smap[UPDATE_STEP::CHECKOUT_BRANCH],
|
||||
@ -1025,9 +969,9 @@ private:
|
||||
QString const &ismasUpdateNews =
|
||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_FAILURE, // U0003
|
||||
"U0003",
|
||||
_CHECKOUT_BRANCH_FAILURE,
|
||||
IsmasClient::RESULT_CODE::GIT_SWITCH_BRANCH_ERROR,
|
||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||
smap[UPDATE_STEP::CHECKOUT_BRANCH],
|
||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
@ -1189,7 +1133,7 @@ private:
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_FAILURE,
|
||||
ismasClient.getProgressInPercent(),
|
||||
IsmasClient::RESULT_CODE::OPKG_COMMANDS_ERROR,
|
||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||
smap[step],
|
||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
@ -1337,7 +1281,7 @@ private:
|
||||
ismasClient.updateNewsToIsmas(
|
||||
_ISMAS_FAILURE,
|
||||
ismasClient.getProgressInPercent(),
|
||||
IsmasClient::RESULT_CODE::UPDATE_IN_ERROR_STATE,
|
||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||
smap[UPDATE_STEP::UPDATE_FINALIZE],
|
||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||
|
Loading…
x
Reference in New Issue
Block a user