Compare commits
21 Commits
v1.3.22
...
979afa37d3
Author | SHA1 | Date | |
---|---|---|---|
979afa37d3 | |||
1e1820724d | |||
d90954c6eb | |||
cf77d0ff76 | |||
73d02d214a | |||
6a67d8e9b0 | |||
30d8cc3684 | |||
bc9ebb7d68 | |||
e6f6d43bf2 | |||
686e113c3a | |||
6ddfbbfd9e | |||
7bfbdc0f07 | |||
dd591fdd23 | |||
18c7b656c3 | |||
5e9b05e887 | |||
37aae73f21 | |||
0b4eed9dc0 | |||
12f48ad1bb | |||
5d7d1a2870 | |||
5d7f13a254 | |||
d332a990d5 |
@@ -14,5 +14,5 @@ dry-run=false
|
|||||||
extended-version=false
|
extended-version=false
|
||||||
yocto-version=false
|
yocto-version=false
|
||||||
yocto-install=false
|
yocto-install=false
|
||||||
always-download-config=false
|
always-download-config=true
|
||||||
always-download-dc=false
|
always-download-dc=false
|
||||||
|
@@ -53,7 +53,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||||||
# local filesystem, json-files will be downloaded to firmware.
|
# local filesystem, json-files will be downloaded to firmware.
|
||||||
# The device-controller firmware will be handled in a later version.
|
# The device-controller firmware will be handled in a later version.
|
||||||
# 1.3.15: Bug fixes found during testing.
|
# 1.3.15: Bug fixes found during testing.
|
||||||
# Don't disable Exit-button during update-process.
|
# Do not disable Exit-button during update-process.
|
||||||
# Removed worker-thread with an own event-loop: only the GUI thread
|
# Removed worker-thread with an own event-loop: only the GUI thread
|
||||||
# has an event loop. Tested JSON-downloads several times successfully
|
# has an event loop. Tested JSON-downloads several times successfully
|
||||||
# (using the slave lib where the CA helper tool was active as master).
|
# (using the slave lib where the CA helper tool was active as master).
|
||||||
@@ -77,7 +77,25 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||||||
# an activated ISMAS trigger (button). The tariff-files are rsynced to
|
# an activated ISMAS trigger (button). The tariff-files are rsynced to
|
||||||
# the local filesystem for such clone.
|
# the local filesystem for such clone.
|
||||||
# Set new filename for device controller: dc2c.bin.
|
# Set new filename for device controller: dc2c.bin.
|
||||||
VERSION="1.3.22"
|
# 1.3.22: Bug fixes found during testing:
|
||||||
|
# Fix the path-names of the json-files and the device-controller.
|
||||||
|
# Set automatic download of json-file in ATBUpdateTool.ini file for
|
||||||
|
# a fresh clone of the repository.
|
||||||
|
# 1.3.23: Added a 'break' to prevent a possible endless loop when checking if
|
||||||
|
# the device is alive.
|
||||||
|
#
|
||||||
|
# NOTE: The versioning info has to be shifted up by one version, i.e. what
|
||||||
|
# happened for 1.3.23 was actually done in 1.3.24.
|
||||||
|
# 1.3.24
|
||||||
|
#
|
||||||
|
# 1.3._24_: Special version for szeged using a old dc-controller (4.42):
|
||||||
|
# Changes:
|
||||||
|
# (1) the ini-File now uses the libCAmaster.so.
|
||||||
|
# 1.3._25_: Again special version for szeged, using interface.h, version 4.4.
|
||||||
|
# 1.4.0 : Start with version at 1.4.0 (mainly to see a difference with Szeged)
|
||||||
|
# Set hash-value in EVENT-objects. Set location (project), version
|
||||||
|
# and info in send-last-version.
|
||||||
|
VERSION="1.4.0"
|
||||||
|
|
||||||
# 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.
|
||||||
@@ -111,6 +129,32 @@ VERSION="1.3.22"
|
|||||||
# 10: Bei einer Neuinstallation (Neuhauser) immer JSON files runterladen,
|
# 10: Bei einer Neuinstallation (Neuhauser) immer JSON files runterladen,
|
||||||
# Tariff-Files syncen (d.h. nur wenn noch kein Repo vorhanden ist), und
|
# Tariff-Files syncen (d.h. nur wenn noch kein Repo vorhanden ist), und
|
||||||
# zwar auch ohne WAIT-Button.
|
# zwar auch ohne WAIT-Button.
|
||||||
|
# 11: Das Edit-Fenster teilen um die Anzeige zu verbessern.
|
||||||
|
# 12: Bei einem Update muss immer ersichtlich sein, warum es ueberhaupt
|
||||||
|
# angestossen wurde. Steht kein "WAIT" im ISMAS-Trigger, dann kann man
|
||||||
|
# davon ausgehen, dass es sich um ein automatisches Update handelt.
|
||||||
|
# In jedem Fall wird bei einem automatischen Update, bei dem der WAIT-
|
||||||
|
# Button nicht gesetzt war, ein "OK" gesendet, falls sonst nichts weiter
|
||||||
|
# zu tun ist. Beachte aber: wir haben auch noch den Fall, dass eine SD-
|
||||||
|
# Karte gesteckt wird. In diesem Fall wird ein komplettes Update gefahren,
|
||||||
|
# und zwar explizit auch ohne WAIT-Button.
|
||||||
|
# Am Ende eines Updates steht im ISMAS entweder ein "OK" oder ein "FAIL".
|
||||||
|
# 13: SendLastVersion: fuer jedes erfolgreich installierte Paket eine
|
||||||
|
# Send-Last-Version-Nachricht an ISMAS. Dadurch entsteht im ISMAS eine
|
||||||
|
# History (Christian darueber informieren).
|
||||||
|
# 14: Installiert werden nur Dateien, die neu sind oder geaendert wurden.
|
||||||
|
# Nicht etwas Dateien, die geloescht wurden: sicherstellen, dass man hier
|
||||||
|
# immer direkt im repository arbeitet, nicht auf dem Filesystem.
|
||||||
|
# Ferner: der DeviceController heisst dc2c.bin, auch fuer die Jsons
|
||||||
|
# sind Dtandard-Namen vergeben. Alternativ: alle vorhandenen Jsons
|
||||||
|
# werden runtergeladen: Thomas ist eh fuer deren Inhalte verantworlich.
|
||||||
|
# WICHTIG: immer ueberpruefen, ob die Dateien im Customer-Repository
|
||||||
|
# wirklich die richtigen Dateien sind.
|
||||||
|
# 15: Der WAIT-Button laesst sich auf WAIT zuruecksetzen (etwa wenn git
|
||||||
|
# selber Probleme hatte).
|
||||||
|
# 16: Der Download-Thread sollte sowohl die auto-Variable auf false setzen
|
||||||
|
# als auch den cycle-Timer stoppen, damit sichergestellt ist, dass der
|
||||||
|
# Download des DC nicht gestoert wird.
|
||||||
|
|
||||||
|
|
||||||
win32 {
|
win32 {
|
||||||
@@ -138,7 +182,7 @@ DEFINES+=APP_EXTENDED_VERSION=\\\"$$EXTENDED_VERSION\\\"
|
|||||||
# keep comments, as /* fall through */
|
# keep comments, as /* fall through */
|
||||||
QMAKE_CXXFLAGS += -C
|
QMAKE_CXXFLAGS += -C
|
||||||
QMAKE_CXXFLAGS += -g
|
QMAKE_CXXFLAGS += -g
|
||||||
QMAKE_CXXFLAGS += -Wno-deprecated-copy
|
QMAKE_CXXFLAGS += -Wno-deprecated-copy -O
|
||||||
|
|
||||||
contains( CONFIG, PTU5 ) {
|
contains( CONFIG, PTU5 ) {
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += serialport
|
greaterThan(QT_MAJOR_VERSION, 4): QT += serialport
|
||||||
|
BIN
doc/ATBUpdateTool4.pdf
Normal file
BIN
doc/ATBUpdateTool4.pdf
Normal file
Binary file not shown.
@@ -793,6 +793,152 @@ QString IsmasClient::updateOfPSASendVersion(PSAInstalled const &psa) {
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// prepare
|
||||||
|
QString IsmasClient::sendLastVersion(UPDATE_COMPONENT updateComponent,
|
||||||
|
PSAInstalled const &psa) {
|
||||||
|
static char buf[4096*2];
|
||||||
|
memset(buf, 0, sizeof(buf));
|
||||||
|
|
||||||
|
switch (updateComponent) {
|
||||||
|
case UPDATE_COMPONENT::TARIFF:
|
||||||
|
snprintf(buf, sizeof(buf)-1,
|
||||||
|
"{"
|
||||||
|
"\"VERSION_INFO\" : {"
|
||||||
|
"\"UPDATE_REASON\":\"%s\","
|
||||||
|
"\"CREATED\":\"%s\","
|
||||||
|
"\"GIT_COMMIT\":\"%s\""
|
||||||
|
"},"
|
||||||
|
"\"TARIFF\" : {"
|
||||||
|
"\"VERSION\" : \"%s\","
|
||||||
|
"\"PROJECT\" : \"%s\","
|
||||||
|
"\"ZONE\" : %d,"
|
||||||
|
"\"INFO\" : \"%s\","
|
||||||
|
"\"SIZE\" : %d\""
|
||||||
|
"},"
|
||||||
|
"}",
|
||||||
|
psa.tariff.versionInfo.reason.toStdString().c_str(),
|
||||||
|
psa.tariff.versionInfo.created.toStdString().c_str(),
|
||||||
|
psa.tariff.versionInfo.lastCommit.toStdString().c_str(),
|
||||||
|
|
||||||
|
psa.tariff.version.toStdString().c_str(),
|
||||||
|
psa.tariff.project.toStdString().c_str(),
|
||||||
|
psa.tariff.zone,
|
||||||
|
psa.tariff.info.toStdString().c_str(),
|
||||||
|
psa.tariff.size);
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::SOFTWARE_ATBQT:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::SOFTWARE_APISM:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::SOFTWARE_ATB_UPDATE_TOOL:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::CONFIG_PTU5_CPU_SERIAL:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::CONFIG_DEVICE_CONTROLLER:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::CONFIG_PRINTER:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::CONFIG_BNA:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::PLUGIN_ATB_DEVICE_CONTROLLER:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::PLUGIN_INGENICO_CC:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::PLUGIN_MOBILISIS_CALC_PRICE:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::PLUGIN_MOBILISIS_CALC_PRICE_UI:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::PLUGIN_PRM_CALC_PRICE:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::PLUGIN_PRM_CALC_PRICE_UI:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::PLUGIN_TCP_ZVT_CC:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::OPKG_COMMANDS:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::HARDWARE_DEVICES:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::OS:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_CASH_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_CONF_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_DEVICE_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT01_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT02_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT03_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT04_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT05_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT06_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT07_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT08_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT09_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT10_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT11_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT12_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT13_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT14_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT15_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT16_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT17_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT18_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT19_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT20_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT21_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT22_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT23_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT24_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT25_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT26_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT27_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT28_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT29_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT30_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT31_JSON:
|
||||||
|
break;
|
||||||
|
case UPDATE_COMPONENT::DC2C_PRINT32_JSON:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
qInfo() << buf;
|
||||||
|
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
QString IsmasClient::updateOfPSAContinues(QString currentStage,
|
QString IsmasClient::updateOfPSAContinues(QString currentStage,
|
||||||
QString currentStageInfo,
|
QString currentStageInfo,
|
||||||
QString const &version) {
|
QString const &version) {
|
||||||
|
@@ -14,6 +14,7 @@ struct PSAInstalled {
|
|||||||
} versionInfo;
|
} versionInfo;
|
||||||
|
|
||||||
struct Tariff {
|
struct Tariff {
|
||||||
|
// VersionInfo versionInfo;
|
||||||
QString name;
|
QString name;
|
||||||
QString version;
|
QString version;
|
||||||
QString project;
|
QString project;
|
||||||
@@ -31,6 +32,7 @@ struct PSAInstalled {
|
|||||||
} hw;
|
} hw;
|
||||||
|
|
||||||
struct Opkg {
|
struct Opkg {
|
||||||
|
// VersionInfo versionInfo;
|
||||||
int size;
|
int size;
|
||||||
QString blob;
|
QString blob;
|
||||||
QString lastCommit;
|
QString lastCommit;
|
||||||
@@ -38,6 +40,7 @@ struct PSAInstalled {
|
|||||||
} opkg;
|
} opkg;
|
||||||
|
|
||||||
struct DC {
|
struct DC {
|
||||||
|
// VersionInfo versionInfo;
|
||||||
QString versionHW;
|
QString versionHW;
|
||||||
QString versionSW;
|
QString versionSW;
|
||||||
QString gitBlob;
|
QString gitBlob;
|
||||||
@@ -62,6 +65,7 @@ struct PSAInstalled {
|
|||||||
} pluginVersion;
|
} pluginVersion;
|
||||||
|
|
||||||
struct DC2C {
|
struct DC2C {
|
||||||
|
// VersionInfo versionInfo;
|
||||||
QString name;
|
QString name;
|
||||||
QString blob;
|
QString blob;
|
||||||
int size;
|
int size;
|
||||||
@@ -194,8 +198,68 @@ public:
|
|||||||
QString jsonParseFailed(int resultCode, QString reason, QString const &version = QString());
|
QString jsonParseFailed(int resultCode, QString reason, QString const &version = QString());
|
||||||
std::optional<QString> finalResult(int resultCode, QString reason, QString const &version = QString());
|
std::optional<QString> finalResult(int resultCode, QString reason, QString const &version = QString());
|
||||||
|
|
||||||
|
// legacy
|
||||||
QString updateOfPSASendVersion(PSAInstalled const &psa);
|
QString updateOfPSASendVersion(PSAInstalled const &psa);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
enum class UPDATE_COMPONENT {
|
||||||
|
TARIFF,
|
||||||
|
SOFTWARE_ATBQT,
|
||||||
|
SOFTWARE_APISM,
|
||||||
|
SOFTWARE_ATB_UPDATE_TOOL,
|
||||||
|
CONFIG_PTU5_CPU_SERIAL,
|
||||||
|
CONFIG_DEVICE_CONTROLLER,
|
||||||
|
CONFIG_PRINTER,
|
||||||
|
CONFIG_BNA,
|
||||||
|
PLUGIN_ATB_DEVICE_CONTROLLER,
|
||||||
|
PLUGIN_INGENICO_CC,
|
||||||
|
PLUGIN_MOBILISIS_CALC_PRICE,
|
||||||
|
PLUGIN_MOBILISIS_CALC_PRICE_UI,
|
||||||
|
PLUGIN_PRM_CALC_PRICE,
|
||||||
|
PLUGIN_PRM_CALC_PRICE_UI,
|
||||||
|
PLUGIN_TCP_ZVT_CC,
|
||||||
|
OPKG_COMMANDS,
|
||||||
|
HARDWARE_DEVICES,
|
||||||
|
OS,
|
||||||
|
DC2C_CASH_JSON,
|
||||||
|
DC2C_CONF_JSON,
|
||||||
|
DC2C_DEVICE_JSON,
|
||||||
|
DC2C_PRINT01_JSON,
|
||||||
|
DC2C_PRINT02_JSON,
|
||||||
|
DC2C_PRINT03_JSON,
|
||||||
|
DC2C_PRINT04_JSON,
|
||||||
|
DC2C_PRINT05_JSON,
|
||||||
|
DC2C_PRINT06_JSON,
|
||||||
|
DC2C_PRINT07_JSON,
|
||||||
|
DC2C_PRINT08_JSON,
|
||||||
|
DC2C_PRINT09_JSON,
|
||||||
|
DC2C_PRINT10_JSON,
|
||||||
|
DC2C_PRINT11_JSON,
|
||||||
|
DC2C_PRINT12_JSON,
|
||||||
|
DC2C_PRINT13_JSON,
|
||||||
|
DC2C_PRINT14_JSON,
|
||||||
|
DC2C_PRINT15_JSON,
|
||||||
|
DC2C_PRINT16_JSON,
|
||||||
|
DC2C_PRINT17_JSON,
|
||||||
|
DC2C_PRINT18_JSON,
|
||||||
|
DC2C_PRINT19_JSON,
|
||||||
|
DC2C_PRINT20_JSON,
|
||||||
|
DC2C_PRINT21_JSON,
|
||||||
|
DC2C_PRINT22_JSON,
|
||||||
|
DC2C_PRINT23_JSON,
|
||||||
|
DC2C_PRINT24_JSON,
|
||||||
|
DC2C_PRINT25_JSON,
|
||||||
|
DC2C_PRINT26_JSON,
|
||||||
|
DC2C_PRINT27_JSON,
|
||||||
|
DC2C_PRINT28_JSON,
|
||||||
|
DC2C_PRINT29_JSON,
|
||||||
|
DC2C_PRINT30_JSON,
|
||||||
|
DC2C_PRINT31_JSON,
|
||||||
|
DC2C_PRINT32_JSON,
|
||||||
|
};
|
||||||
|
QString sendLastVersion(UPDATE_COMPONENT comp, PSAInstalled const &psa);
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void printDebugMessage(int port, QString const &clientIP, int clientPort,
|
static void printDebugMessage(int port, QString const &clientIP, int clientPort,
|
||||||
QString const &message);
|
QString const &message);
|
||||||
|
209
update.cpp
209
update.cpp
@@ -123,6 +123,7 @@ Update::Update(Worker *worker,
|
|||||||
// must deliver 'true', only then are all data from hwapi valid
|
// must deliver 'true', only then are all data from hwapi valid
|
||||||
if (--tries < 0) {
|
if (--tries < 0) {
|
||||||
qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";
|
qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
m_hw->dc_autoRequest(true);
|
m_hw->dc_autoRequest(true);
|
||||||
QThread::msleep(500);
|
QThread::msleep(500);
|
||||||
@@ -376,24 +377,32 @@ bool Update::downloadJson(enum FileTypeJson type,
|
|||||||
templateIdx,
|
templateIdx,
|
||||||
(uint8_t *)ba.data())) {
|
(uint8_t *)ba.data())) {
|
||||||
|
|
||||||
m_hw->dc_autoRequest(true);
|
/*
|
||||||
QThread::msleep(500);
|
* Note: the machine id is contained in DC2C_conf.json.
|
||||||
|
* The idea was to use this to check if the download of
|
||||||
|
* the json-file was correct. It did not work, as the
|
||||||
|
* update of the PSA (to reflect a change in the
|
||||||
|
* machine id) did not happen immediately.
|
||||||
|
*
|
||||||
|
m_hw->dc_autoRequest(true);
|
||||||
|
QThread::msleep(500);
|
||||||
|
|
||||||
// testing
|
// testing
|
||||||
m_hw->request_ReadbackMachineID();
|
m_hw->request_ReadbackMachineID();
|
||||||
QThread::msleep(500);
|
QThread::msleep(500);
|
||||||
|
|
||||||
uint8_t data[64];
|
uint8_t data[64];
|
||||||
memset(data, 0x00, sizeof(data));
|
memset(data, 0x00, sizeof(data));
|
||||||
uint8_t length = 0;
|
uint8_t length = 0;
|
||||||
|
|
||||||
m_hw->readback_machineIDdata(&length, data);
|
m_hw->readback_machineIDdata(&length, data);
|
||||||
|
|
||||||
QThread::msleep(500);
|
QThread::msleep(500);
|
||||||
|
|
||||||
QByteArray ba((const char*)data, length);
|
QByteArray ba((const char*)data, length);
|
||||||
|
|
||||||
qCritical() << length << "MACHINE ID =" << ba.toHex(':');
|
qCritical() << length << "MACHINE ID =" << ba.toHex(':');
|
||||||
|
*/
|
||||||
|
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
@@ -494,6 +503,86 @@ QStringList Update::getDcSoftAndHardWareVersion() {
|
|||||||
<< "DC SW-version not available";
|
<< "DC SW-version not available";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Update::getFileVersion(QString const& jsonFileName) {
|
||||||
|
// "version":"15.10.2023 14:55 02.00.06",
|
||||||
|
static const QRegularExpression re("^.*(\\\"version\\\":)(.*)$");
|
||||||
|
|
||||||
|
QString fileVersion;
|
||||||
|
QFile inputFile(jsonFileName);
|
||||||
|
if (inputFile.open(QIODevice::ReadOnly)) {
|
||||||
|
QTextStream in(&inputFile);
|
||||||
|
while (!in.atEnd()) {
|
||||||
|
QString line = in.readLine();
|
||||||
|
|
||||||
|
QRegularExpressionMatch match;
|
||||||
|
int idx = line.indexOf(re, 0, &match);
|
||||||
|
if (idx != -1) {
|
||||||
|
fileVersion = match.captured(match.lastCapturedIndex());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inputFile.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
return fileVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Update::checkDownloadedJsonVersions(QStringList const& jsonFileNames) {
|
||||||
|
|
||||||
|
for (QStringList::size_type i=0; i < jsonFileNames.size(); ++i) {
|
||||||
|
|
||||||
|
uint8_t jsonNr = 0;
|
||||||
|
QFileInfo fInfo(jsonFileNames[i]);
|
||||||
|
|
||||||
|
if (fInfo.fileName().endsWith("conf.json")) {
|
||||||
|
jsonNr = 1;
|
||||||
|
} else
|
||||||
|
if (fInfo.fileName().endsWith("device.json")) {
|
||||||
|
jsonNr = 2;
|
||||||
|
} else
|
||||||
|
if (fInfo.fileName().endsWith("cash.json")) {
|
||||||
|
jsonNr = 3;
|
||||||
|
} else {
|
||||||
|
QRegularExpressionMatch match;
|
||||||
|
static const QRegularExpression re("^(.*print)([0-3][0-9])\\.json\\s*$");
|
||||||
|
int idx = fInfo.fileName().indexOf(re, 0, &match);
|
||||||
|
if (idx != -1) {
|
||||||
|
QString captured = match.captured(match.lastCapturedIndex());
|
||||||
|
bool ok = false;
|
||||||
|
int n = captured.toInt(&ok);
|
||||||
|
if (ok) {
|
||||||
|
jsonNr = n + 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsonNr != 0) {
|
||||||
|
|
||||||
|
m_hw->sys_requestJsonVersions(jsonNr);
|
||||||
|
QThread::msleep(500);
|
||||||
|
|
||||||
|
char buf[64];
|
||||||
|
memset(buf, 0x00, sizeof(buf));
|
||||||
|
m_hw->sys_getJsonVersions(jsonNr, buf);
|
||||||
|
buf[sizeof(buf)-1] = '\0';
|
||||||
|
|
||||||
|
QString const installedVersion(buf);
|
||||||
|
QString const fileVersion = getFileVersion(jsonFileNames[i]);
|
||||||
|
|
||||||
|
qCritical() << "installed version:" << installedVersion;
|
||||||
|
qCritical() << " file version:" << fileVersion;
|
||||||
|
|
||||||
|
if (installedVersion == fileVersion) {
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
qCritical() << "CANNOT FIND JSON-NR FOR" << jsonFileNames[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
|
bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
|
||||||
if (m_sys_areDCdataValid == false) {
|
if (m_sys_areDCdataValid == false) {
|
||||||
qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";
|
qCritical() << "ERROR!!! DC DATA NOT VALID -> CA-MASTER-PLUGIN NOT CONNECTED";
|
||||||
@@ -504,7 +593,9 @@ bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
|
|||||||
QList<QString>::const_iterator it;
|
QList<QString>::const_iterator it;
|
||||||
for (it = filesToWorkOn.cbegin(); it != filesToWorkOn.cend(); ++it) {
|
for (it = filesToWorkOn.cbegin(); it != filesToWorkOn.cend(); ++it) {
|
||||||
m_worker->startProgressLoop();
|
m_worker->startProgressLoop();
|
||||||
|
|
||||||
QString const &fToWorkOn = QDir::cleanPath(m_customerRepository + QDir::separator() + it->trimmed());
|
QString const &fToWorkOn = QDir::cleanPath(m_customerRepository + QDir::separator() + it->trimmed());
|
||||||
|
|
||||||
if (fToWorkOn.contains("dc2c.bin")) {
|
if (fToWorkOn.contains("dc2c.bin")) {
|
||||||
bool updateBinaryRes = true;
|
bool updateBinaryRes = true;
|
||||||
|
|
||||||
@@ -541,59 +632,61 @@ bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
|
|||||||
|
|
||||||
res = updateBinaryRes;
|
res = updateBinaryRes;
|
||||||
|
|
||||||
} else if (fToWorkOn.contains("DC2C_print", Qt::CaseInsensitive)
|
} else {
|
||||||
|
if (fToWorkOn.contains("DC2C_print", Qt::CaseInsensitive)
|
||||||
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
|
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
|
||||||
res = true;
|
res = true;
|
||||||
int i = fToWorkOn.indexOf("DC2C_print", Qt::CaseInsensitive);
|
int i = fToWorkOn.indexOf("DC2C_print", Qt::CaseInsensitive);
|
||||||
int const templateIdx = fToWorkOn.mid(i).midRef(10, 2).toInt();
|
int const templateIdx = fToWorkOn.mid(i).midRef(10, 2).toInt();
|
||||||
if ((templateIdx < 1) || (templateIdx > 32)) {
|
if ((templateIdx < 1) || (templateIdx > 32)) {
|
||||||
qCritical() << "WRONG TEMPLATE INDEX" << templateIdx;
|
qCritical() << "WRONG TEMPLATE INDEX" << templateIdx;
|
||||||
res = false;
|
res = false;
|
||||||
} else {
|
} else {
|
||||||
if ((res = updatePrinterTemplate(templateIdx, fToWorkOn))) {
|
if ((res = updatePrinterTemplate(templateIdx, fToWorkOn))) {
|
||||||
Utils::printInfoMsg(
|
Utils::printInfoMsg(
|
||||||
QString("DOWNLOADED PRINTER TEMPLATE %1 WITH INDEX=%2")
|
QString("DOWNLOADED PRINTER TEMPLATE %1 WITH INDEX=%2")
|
||||||
.arg(fToWorkOn)
|
.arg(fToWorkOn)
|
||||||
.arg(templateIdx));
|
.arg(templateIdx));
|
||||||
|
++displayIndex;
|
||||||
|
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
|
||||||
|
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
|
||||||
|
Worker::UPDATE_STEP_DONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (fToWorkOn.contains("DC2C_cash", Qt::CaseInsensitive)
|
||||||
|
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
|
||||||
|
res = true;
|
||||||
|
if ((res = updateCashConf(fToWorkOn))) {
|
||||||
|
Utils::printInfoMsg(QString("DOWNLOADED CASH TEMPLATE %1").arg(fToWorkOn));
|
||||||
++displayIndex;
|
++displayIndex;
|
||||||
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
|
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
|
||||||
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
|
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
|
||||||
Worker::UPDATE_STEP_DONE);
|
Worker::UPDATE_STEP_DONE);
|
||||||
}
|
}
|
||||||
|
} else if (fToWorkOn.contains("DC2C_conf", Qt::CaseInsensitive)
|
||||||
|
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
|
||||||
|
res = true;
|
||||||
|
if ((res= updateConfig(fToWorkOn))) {
|
||||||
|
Utils::printInfoMsg(QString("DOWNLOADED CONFIG TEMPLATE %1").arg(fToWorkOn));
|
||||||
|
++displayIndex;
|
||||||
|
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
|
||||||
|
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
|
||||||
|
Worker::UPDATE_STEP_DONE);
|
||||||
|
}
|
||||||
|
} else if (fToWorkOn.contains("DC2C_device", Qt::CaseInsensitive)
|
||||||
|
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
|
||||||
|
res = true;
|
||||||
|
if ((res = updateDeviceConf(fToWorkOn))) {
|
||||||
|
Utils::printInfoMsg(QString("DOWNLOADED DEVICE TEMPLATE %1").arg(fToWorkOn));
|
||||||
|
++displayIndex;
|
||||||
|
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
|
||||||
|
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
|
||||||
|
Worker::UPDATE_STEP_DONE);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
qCritical() << "UNKNOWN JSON FILE NAME" << fToWorkOn;
|
||||||
|
res = false;
|
||||||
}
|
}
|
||||||
} else if (fToWorkOn.contains("DC2C_cash", Qt::CaseInsensitive)
|
|
||||||
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
|
|
||||||
res = true;
|
|
||||||
if ((res = updateCashConf(fToWorkOn))) {
|
|
||||||
Utils::printInfoMsg(QString("DOWNLOADED CASH TEMPLATE %1").arg(fToWorkOn));
|
|
||||||
++displayIndex;
|
|
||||||
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
|
|
||||||
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
|
|
||||||
Worker::UPDATE_STEP_DONE);
|
|
||||||
}
|
|
||||||
} else if (fToWorkOn.contains("DC2C_conf", Qt::CaseInsensitive)
|
|
||||||
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
|
|
||||||
res = true;
|
|
||||||
if ((res= updateConfig(fToWorkOn))) {
|
|
||||||
Utils::printInfoMsg(QString("DOWNLOADED CONFIG TEMPLATE %1").arg(fToWorkOn));
|
|
||||||
++displayIndex;
|
|
||||||
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
|
|
||||||
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
|
|
||||||
Worker::UPDATE_STEP_DONE);
|
|
||||||
}
|
|
||||||
} else if (fToWorkOn.contains("DC2C_device", Qt::CaseInsensitive)
|
|
||||||
&& fToWorkOn.endsWith(".json", Qt::CaseInsensitive)) {
|
|
||||||
res = true;
|
|
||||||
if ((res = updateDeviceConf(fToWorkOn))) {
|
|
||||||
Utils::printInfoMsg(QString("DOWNLOADED DEVICE TEMPLATE %1").arg(fToWorkOn));
|
|
||||||
++displayIndex;
|
|
||||||
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(3, ' ') + QString(")")
|
|
||||||
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
|
|
||||||
Worker::UPDATE_STEP_DONE);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
qCritical() << "UNKNOWN JSON FILE NAME" << fToWorkOn;
|
|
||||||
res = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res == false) {
|
if (res == false) {
|
||||||
|
2
update.h
2
update.h
@@ -58,6 +58,7 @@ public:
|
|||||||
char const *baudrate = "115200");
|
char const *baudrate = "115200");
|
||||||
virtual ~Update() override;
|
virtual ~Update() override;
|
||||||
bool doUpdate(int &displayIndex, QStringList const &linesToWorkOn);
|
bool doUpdate(int &displayIndex, QStringList const &linesToWorkOn);
|
||||||
|
bool checkDownloadedJsonVersions(QStringList const& jsonFileNames);
|
||||||
|
|
||||||
hwinf *hw() { return m_hw; }
|
hwinf *hw() { return m_hw; }
|
||||||
hwinf const *hw() const { return m_hw; }
|
hwinf const *hw() const { return m_hw; }
|
||||||
@@ -87,6 +88,7 @@ private:
|
|||||||
bool downloadJson(enum FileTypeJson type, int templateIdx,
|
bool downloadJson(enum FileTypeJson type, int templateIdx,
|
||||||
QString jsFileToSendToDC) const;
|
QString jsFileToSendToDC) const;
|
||||||
QStringList getDcSoftAndHardWareVersion();
|
QStringList getDcSoftAndHardWareVersion();
|
||||||
|
QString getFileVersion(QString const& jsonFile);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void readyReadStandardOutput();
|
void readyReadStandardOutput();
|
||||||
|
76
utils.cpp
76
utils.cpp
@@ -30,6 +30,82 @@ int Utils::read1stLineOfFile(QString fileName) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Utils::getLocation(QString fileName) {
|
||||||
|
QString location("N/A");
|
||||||
|
QFile f(fileName);
|
||||||
|
if (f.exists()) {
|
||||||
|
if (f.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
|
QTextStream in(&f);
|
||||||
|
in.setCodec("UTF-8");
|
||||||
|
while(!in.atEnd()) {
|
||||||
|
QString const &line = in.readLine();
|
||||||
|
if (line.indexOf("Project", Qt::CaseInsensitive) != -1) {
|
||||||
|
int const c = line.indexOf(":");
|
||||||
|
if (c != -1) {
|
||||||
|
location = line.mid(c+1);
|
||||||
|
if (!location.isEmpty()) {
|
||||||
|
return location.replace(QChar('"'), QString("")).trimmed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Utils::getTariffVersion(QString fileName) {
|
||||||
|
QString version("N/A");
|
||||||
|
QFile f(fileName);
|
||||||
|
if (f.exists()) {
|
||||||
|
if (f.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
|
QTextStream in(&f);
|
||||||
|
in.setCodec("UTF-8");
|
||||||
|
while(!in.atEnd()) {
|
||||||
|
QString const &line = in.readLine();
|
||||||
|
if (line.indexOf("Version", Qt::CaseInsensitive) != -1) {
|
||||||
|
int const c = line.indexOf(":");
|
||||||
|
if (c != -1) {
|
||||||
|
version = line.mid(c+1);
|
||||||
|
if (!version.isEmpty()) {
|
||||||
|
return version.replace(QChar('"'), QString("")).trimmed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Utils::getTariffInfo(QString fileName) {
|
||||||
|
QString info("N/A");
|
||||||
|
QFile f(fileName);
|
||||||
|
if (f.exists()) {
|
||||||
|
if (f.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
|
QTextStream in(&f);
|
||||||
|
in.setCodec("UTF-8");
|
||||||
|
while(!in.atEnd()) {
|
||||||
|
QString const &line = in.readLine();
|
||||||
|
if (line.indexOf("Info", Qt::CaseInsensitive) != -1) {
|
||||||
|
int const c = line.indexOf(":");
|
||||||
|
if (c != -1) {
|
||||||
|
info = line.mid(c+1);
|
||||||
|
if (!info.isEmpty()) {
|
||||||
|
return info.replace(QChar('"'), QString("")).trimmed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return info;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
QString Utils::zoneName(quint8 i) {
|
QString Utils::zoneName(quint8 i) {
|
||||||
static constexpr char const *zName[] = {
|
static constexpr char const *zName[] = {
|
||||||
"",
|
"",
|
||||||
|
3
utils.h
3
utils.h
@@ -12,6 +12,9 @@
|
|||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
int read1stLineOfFile(QString fileName);
|
int read1stLineOfFile(QString fileName);
|
||||||
|
QString getLocation(QString fileName);
|
||||||
|
QString getTariffVersion(QString fileName);
|
||||||
|
QString getTariffInfo(QString fileName);
|
||||||
QString zoneName(quint8 i);
|
QString zoneName(quint8 i);
|
||||||
void printCriticalErrorMsg(QString const &errorMsg, bool upper=false, bool lower=false);
|
void printCriticalErrorMsg(QString const &errorMsg, bool upper=false, bool lower=false);
|
||||||
void printCriticalErrorMsg(QStringList const &errorMsg);
|
void printCriticalErrorMsg(QStringList const &errorMsg);
|
||||||
|
47
worker.cpp
47
worker.cpp
@@ -140,6 +140,7 @@ Worker::Worker(int customerNr,
|
|||||||
, m_serialInterface(serialInterface)
|
, m_serialInterface(serialInterface)
|
||||||
, m_baudrate(baudrate)
|
, m_baudrate(baudrate)
|
||||||
, m_gc(m_customerNrStr, m_customerRepository, m_workingDirectory, m_branchName, this)
|
, m_gc(m_customerNrStr, m_customerRepository, m_workingDirectory, m_branchName, this)
|
||||||
|
, m_versionInfo(QStringList())
|
||||||
, m_osVersion(getOsVersion())
|
, m_osVersion(getOsVersion())
|
||||||
, m_atbqtVersion(getATBQTVersion())
|
, m_atbqtVersion(getATBQTVersion())
|
||||||
, m_atbUpdateToolVersion(getATBUpdateToolVersion())
|
, m_atbUpdateToolVersion(getATBUpdateToolVersion())
|
||||||
@@ -301,6 +302,9 @@ void Worker::privateUpdate() {
|
|||||||
setProgress(i); // and switch to branch
|
setProgress(i); // and switch to branch
|
||||||
if (m_gc.gitCloneAndCheckoutBranch()) {
|
if (m_gc.gitCloneAndCheckoutBranch()) {
|
||||||
if (!isRepositoryCorrupted()) {
|
if (!isRepositoryCorrupted()) {
|
||||||
|
if (m_versionInfo.size() == 0) {
|
||||||
|
m_versionInfo = m_gc.gitShowReason(m_branchName);
|
||||||
|
}
|
||||||
GUI() << (ISMAS() << (CONSOLE() << UPDATE_STEP::CLONE_REPOSITORY_SUCCESS));
|
GUI() << (ISMAS() << (CONSOLE() << UPDATE_STEP::CLONE_REPOSITORY_SUCCESS));
|
||||||
continueUpdate = true;
|
continueUpdate = true;
|
||||||
m_clone = true;
|
m_clone = true;
|
||||||
@@ -330,6 +334,11 @@ void Worker::privateUpdate() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_versionInfo.size() == 0) {
|
||||||
|
m_versionInfo = m_gc.gitShowReason(m_branchName);
|
||||||
|
}
|
||||||
|
|
||||||
CONSOLE() << UPDATE_STEP::CHECK_REPOSITORY_SUCCESS;
|
CONSOLE() << UPDATE_STEP::CHECK_REPOSITORY_SUCCESS;
|
||||||
setProgress(_CHECKOUT_REPOSITORY_SUCCESS);
|
setProgress(_CHECKOUT_REPOSITORY_SUCCESS);
|
||||||
|
|
||||||
@@ -666,7 +675,9 @@ bool Worker::filesToUpdate() {
|
|||||||
if (dir.exists()) {
|
if (dir.exists()) {
|
||||||
QStringList jsons = dir.entryList(QStringList() << "DC2C*.json", QDir::Files);
|
QStringList jsons = dir.entryList(QStringList() << "DC2C*.json", QDir::Files);
|
||||||
if (!jsons.isEmpty()) {
|
if (!jsons.isEmpty()) {
|
||||||
m_filesToUpdate << jsons;
|
for (QStringList::size_type i=0; i<jsons.size(); ++i) {
|
||||||
|
m_filesToUpdate << QDir::cleanPath(QString("etc/psa_config/") + jsons.at(i));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -679,7 +690,7 @@ bool Worker::filesToUpdate() {
|
|||||||
QStringList dc = dir.entryList(QStringList() << "dc2c.bin", QDir::Files,
|
QStringList dc = dir.entryList(QStringList() << "dc2c.bin", QDir::Files,
|
||||||
QDir::SortFlag::Time | QDir::SortFlag::Reversed);
|
QDir::SortFlag::Time | QDir::SortFlag::Reversed);
|
||||||
if (!dc.isEmpty()) {
|
if (!dc.isEmpty()) {
|
||||||
m_filesToUpdate << dc.first();
|
m_filesToUpdate << QDir::cleanPath(QString("etc/dc/") + dc.first());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -836,7 +847,16 @@ bool Worker::downloadFilesToPSAHardware() {
|
|||||||
m_pluginName,
|
m_pluginName,
|
||||||
m_workingDirectory);
|
m_workingDirectory);
|
||||||
|
|
||||||
return update.doUpdate(m_displayIndex, m_filesToDownload);
|
if (update.doUpdate(m_displayIndex, m_filesToDownload)) {
|
||||||
|
// prepared for use: at the moment, the dc-library does not work
|
||||||
|
// as expected.
|
||||||
|
|
||||||
|
// static const QRegularExpression re("^.*\\.json$");
|
||||||
|
// return update.checkDownloadedJsonVersions(m_filesToDownload.filter(re));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
} else {
|
} else {
|
||||||
CONSOLE(QStringList("NO FILES TO DOWNLOAD TO PSA-HW")) << UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE;
|
CONSOLE(QStringList("NO FILES TO DOWNLOAD TO PSA-HW")) << UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE;
|
||||||
setProgress(_DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE);
|
setProgress(_DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE);
|
||||||
@@ -1107,15 +1127,14 @@ PSAInstalled Worker::getPSAInstalled() {
|
|||||||
QString absPathName;
|
QString absPathName;
|
||||||
QString absPathNameRepository;
|
QString absPathNameRepository;
|
||||||
|
|
||||||
psaInstalled.versionInfo.lastCommit = "";
|
psaInstalled.versionInfo.lastCommit = "N/A";
|
||||||
psaInstalled.versionInfo.reason = "";
|
psaInstalled.versionInfo.reason = "N/A";
|
||||||
psaInstalled.versionInfo.created = "";
|
psaInstalled.versionInfo.created = "N/A";
|
||||||
|
|
||||||
QStringList versionInfo = m_gc.gitShowReason(m_branchName);
|
if (m_versionInfo.size() == 3) {
|
||||||
if (versionInfo.size() == 3) {
|
psaInstalled.versionInfo.lastCommit = m_versionInfo.at(0);
|
||||||
psaInstalled.versionInfo.lastCommit = versionInfo.at(0);
|
psaInstalled.versionInfo.reason = m_versionInfo.at(1);
|
||||||
psaInstalled.versionInfo.reason = versionInfo.at(1);
|
psaInstalled.versionInfo.created = m_versionInfo.at(2);
|
||||||
psaInstalled.versionInfo.created = versionInfo.at(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_zoneNr != 0) {
|
if (m_zoneNr != 0) {
|
||||||
@@ -1128,10 +1147,10 @@ PSAInstalled Worker::getPSAInstalled() {
|
|||||||
psaInstalled.tariff.size = getFileSize(absPathName);
|
psaInstalled.tariff.size = getFileSize(absPathName);
|
||||||
psaInstalled.tariff.zone = m_zoneNr;
|
psaInstalled.tariff.zone = m_zoneNr;
|
||||||
psaInstalled.tariff.loadTime = Utils::getTariffLoadTime(absPathName);
|
psaInstalled.tariff.loadTime = Utils::getTariffLoadTime(absPathName);
|
||||||
|
psaInstalled.tariff.project = Utils::getLocation(absPathName);
|
||||||
|
psaInstalled.tariff.version = Utils::getTariffVersion(absPathName);
|
||||||
|
psaInstalled.tariff.info = Utils::getTariffInfo(absPathName);
|
||||||
}
|
}
|
||||||
psaInstalled.tariff.project = "Szeged";
|
|
||||||
psaInstalled.tariff.info = "N/A";
|
|
||||||
psaInstalled.tariff.version = "N/A";
|
|
||||||
|
|
||||||
psaInstalled.hw.linuxVersion = getOsVersion();
|
psaInstalled.hw.linuxVersion = getOsVersion();
|
||||||
psaInstalled.hw.cpuSerial = m_cpuSerial;
|
psaInstalled.hw.cpuSerial = m_cpuSerial;
|
||||||
|
39
worker.h
39
worker.h
@@ -132,6 +132,7 @@ class Worker : public QThread{
|
|||||||
QString const m_baudrate;
|
QString const m_baudrate;
|
||||||
IsmasClient m_ismasClient;
|
IsmasClient m_ismasClient;
|
||||||
GitClient m_gc;
|
GitClient m_gc;
|
||||||
|
QStringList m_versionInfo;
|
||||||
QString const m_osVersion;
|
QString const m_osVersion;
|
||||||
QString const m_atbqtVersion;
|
QString const m_atbqtVersion;
|
||||||
QString const m_atbUpdateToolVersion;
|
QString const m_atbUpdateToolVersion;
|
||||||
@@ -652,8 +653,10 @@ private:
|
|||||||
ismasClient.setProgressInPercent(_CHECK_REPOSITORY);
|
ismasClient.setProgressInPercent(_CHECK_REPOSITORY);
|
||||||
break;
|
break;
|
||||||
case UPDATE_STEP::CHECK_REPOSITORY_SUCCESS:
|
case UPDATE_STEP::CHECK_REPOSITORY_SUCCESS:
|
||||||
|
ismasClient.setProgressInPercent(_CHECK_REPOSITORY_SUCCESS);
|
||||||
break;
|
break;
|
||||||
case UPDATE_STEP::CHECK_REPOSITORY_FAILURE:
|
case UPDATE_STEP::CHECK_REPOSITORY_FAILURE:
|
||||||
|
ismasClient.setProgressInPercent(_CHECK_REPOSITORY_FAILURE);
|
||||||
break;
|
break;
|
||||||
case UPDATE_STEP::CHECK_SANITY:
|
case UPDATE_STEP::CHECK_SANITY:
|
||||||
ismasClient.setProgressInPercent(_CHECK_SANITY);
|
ismasClient.setProgressInPercent(_CHECK_SANITY);
|
||||||
@@ -665,8 +668,10 @@ private:
|
|||||||
ismasClient.setProgressInPercent(_CHECK_SANITY_FAILURE);
|
ismasClient.setProgressInPercent(_CHECK_SANITY_FAILURE);
|
||||||
break;
|
break;
|
||||||
case UPDATE_STEP::REPOSITORY_RECOVERED_SUCCESS:
|
case UPDATE_STEP::REPOSITORY_RECOVERED_SUCCESS:
|
||||||
|
ismasClient.setProgressInPercent(_REPOSITORY_RECOVERED_SUCCESS);
|
||||||
break;
|
break;
|
||||||
case UPDATE_STEP::REPOSITORY_RECOVERED_FAILURE:
|
case UPDATE_STEP::REPOSITORY_RECOVERED_FAILURE:
|
||||||
|
ismasClient.setProgressInPercent(_REPOSITORY_RECOVERED_FAILURE);
|
||||||
break;
|
break;
|
||||||
case UPDATE_STEP::CLONE_REPOSITORY:
|
case UPDATE_STEP::CLONE_REPOSITORY:
|
||||||
ismasClient.setProgressInPercent(_CLONE_REPOSITORY);
|
ismasClient.setProgressInPercent(_CLONE_REPOSITORY);
|
||||||
@@ -683,7 +688,7 @@ private:
|
|||||||
QString("CLONED REPOSITORY %1 AND CHECKED OUT BRANCH %2")
|
QString("CLONED REPOSITORY %1 AND CHECKED OUT BRANCH %2")
|
||||||
.arg(instance->m_customerRepository)
|
.arg(instance->m_customerRepository)
|
||||||
.arg(instance->m_gc.branchName()).toStdString().c_str(),
|
.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,
|
ismasClient.sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
|
||||||
ismasUpdateNews);
|
ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -699,7 +704,7 @@ private:
|
|||||||
QString("CLONING REPOSITORY %1 OR CHECKING OUT BRANCH %2 FAILED")
|
QString("CLONING REPOSITORY %1 OR CHECKING OUT BRANCH %2 FAILED")
|
||||||
.arg(instance->m_customerRepository)
|
.arg(instance->m_customerRepository)
|
||||||
.arg(instance->m_gc.branchName()).toStdString().c_str(),
|
.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.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -713,7 +718,8 @@ private:
|
|||||||
ismasClient.cloneAndCheckoutCustomerRepository(
|
ismasClient.cloneAndCheckoutCustomerRepository(
|
||||||
QString("CHECKED OUT REPOSITORY %1 AND CHECKED OUT BRANCH %2")
|
QString("CHECKED OUT REPOSITORY %1 AND CHECKED OUT BRANCH %2")
|
||||||
.arg(instance->m_customerRepository)
|
.arg(instance->m_customerRepository)
|
||||||
.arg(instance->m_gc.branchName())));
|
.arg(instance->m_gc.branchName()),
|
||||||
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A"));
|
||||||
break;
|
break;
|
||||||
case UPDATE_STEP::CHECKOUT_REPOSITORY_FAILURE:
|
case UPDATE_STEP::CHECKOUT_REPOSITORY_FAILURE:
|
||||||
ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY_FAILURE);
|
ismasClient.setProgressInPercent(_CHECKOUT_REPOSITORY_FAILURE);
|
||||||
@@ -725,7 +731,8 @@ private:
|
|||||||
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_SUCCESS);
|
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_SUCCESS);
|
||||||
ismasClient.sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
|
ismasClient.sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT,
|
||||||
QString("#M=APISM#C=CMD_EVENT#J=") +
|
QString("#M=APISM#C=CMD_EVENT#J=") +
|
||||||
ismasClient.updateTriggerSet("ISMAS TRIGGER SET", ""));
|
ismasClient.updateTriggerSet("ISMAS TRIGGER SET",
|
||||||
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A"));
|
||||||
break;
|
break;
|
||||||
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE:
|
case UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE:
|
||||||
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_WRONG_VALUE);
|
ismasClient.setProgressInPercent(_CHECK_ISMAS_TRIGGER_WRONG_VALUE);
|
||||||
@@ -740,7 +747,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -763,7 +770,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::SUCCESS,
|
IsmasClient::RESULT_CODE::SUCCESS,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -777,7 +784,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -911,7 +918,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::SUCCESS,
|
IsmasClient::RESULT_CODE::SUCCESS,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -928,7 +935,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -954,7 +961,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::SUCCESS,
|
IsmasClient::RESULT_CODE::SUCCESS,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -971,7 +978,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::SUCCESS,
|
IsmasClient::RESULT_CODE::SUCCESS,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -991,7 +998,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::SUCCESS,
|
IsmasClient::RESULT_CODE::SUCCESS,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -1011,7 +1018,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::SUCCESS,
|
IsmasClient::RESULT_CODE::SUCCESS,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -1034,7 +1041,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::SUCCESS,
|
IsmasClient::RESULT_CODE::SUCCESS,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -1048,7 +1055,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::SUCCESS,
|
IsmasClient::RESULT_CODE::SUCCESS,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
@@ -1062,7 +1069,7 @@ private:
|
|||||||
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
IsmasClient::RESULT_CODE::INSTALL_ERROR,
|
||||||
smap[step],
|
smap[step],
|
||||||
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
instance->m_ismasMsg.join(' ').toStdString().c_str(),
|
||||||
"");
|
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
|
||||||
ismasClient.sendRequestReceiveResponse(
|
ismasClient.sendRequestReceiveResponse(
|
||||||
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
|
||||||
} break;
|
} break;
|
||||||
|
Reference in New Issue
Block a user