2024-02-29 15:01:40 +01:00
|
|
|
QT += core gui
|
|
|
|
QT += widgets serialport network
|
|
|
|
|
|
|
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
|
|
|
|
|
|
|
TARGET = ATBUpdateTool
|
|
|
|
|
|
|
|
# The following define makes your compiler emit warnings if you use
|
|
|
|
# any Qt feature that has been marked deprecated (the exact warnings
|
|
|
|
# depend on your compiler). Please consult the documentation of the
|
|
|
|
# deprecated API in order to know how to port your code away from it.
|
|
|
|
DEFINES += QT_DEPRECATED_WARNINGS
|
|
|
|
|
|
|
|
# You can also make your code fail to compile if it uses deprecated APIs.
|
|
|
|
# In order to do so, uncomment the following line.
|
|
|
|
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
|
|
|
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
|
|
|
|
|
|
|
# 1.3.6 : Do not update device-controller/json files, but have the library
|
|
|
|
# (in a later step) do that.
|
|
|
|
# Fixed sending messages to ISMAS.
|
|
|
|
# Always execute contents of opkg_commands-file (even if there are no
|
|
|
|
# changes).
|
|
|
|
# 1.3.7 : Wait forever for git-commands to finish in QProcess executing such
|
|
|
|
# a command.
|
|
|
|
# 1.3.8 : Remove accessing opkg_commands under file-system-path /etc/psa_update.
|
|
|
|
# Activate download of json-configuration files.
|
|
|
|
# 1.3.9 : Fix sendLastVersion: use configured branch and not master branch in
|
|
|
|
# git show origin/master -s --format="c=%h m=%s d=%cI" ==>
|
|
|
|
# git show origin/zg1/zone1 -s --format="c=%h m=%s d=%cI"
|
|
|
|
# Use dynamic values for os-release and apism-version when sending
|
|
|
|
# last version info.
|
|
|
|
# 1.3.10: Fix premature killing opkg-commands: detected timeout of 100s was
|
|
|
|
# too small when updating apism.
|
|
|
|
# Fix display of UPDATE_SUCCESS when opkg_command fails. Detected when
|
|
|
|
# updating apsim failed.
|
|
|
|
# 1.3.11: Integrate version of ATBUpdateTool in SendLastVersion-ISMAS-message.
|
|
|
|
# 1.3.12: Add command parameters for output of yocto-infos about ATBUpdateTool.
|
|
|
|
# Use 'git pull' instead of 'git fetch'.
|
|
|
|
# Use 'git clone --filter=blob:none' instead of 'git clone' to speed
|
|
|
|
# up cloning of customer repository.
|
|
|
|
# 1.3.13: Fix: if the customer repository is corrupted, remove it and re-clone
|
|
|
|
# the repository (without checking the ISMAS-trigger (WAIT-)button.
|
|
|
|
# 1.3.14: Add additional check for sanity of customer repository using
|
|
|
|
# "git fsck".
|
|
|
|
# Stream-lined code of update process: massive refactoring.
|
|
|
|
# Added functionality: If WAIT button is not active, then an existing
|
|
|
|
# customer repository will be repaired, or a not existing repository
|
|
|
|
# will be cloned. The process stops then.
|
|
|
|
# However, if the WAIT button is active, the at least the commands in
|
|
|
|
# opkg_commands will be executed. Changed files in the customer
|
|
|
|
# repository will be worked on: tariff-files will be synced with the
|
|
|
|
# local filesystem, json-files will be downloaded to firmware.
|
|
|
|
# The device-controller firmware will be handled in a later version.
|
|
|
|
# 1.3.15: Bug fixes found during testing.
|
|
|
|
# Do not disable Exit-button during update-process.
|
|
|
|
# Removed worker-thread with an own event-loop: only the GUI thread
|
|
|
|
# has an event loop. Tested JSON-downloads several times successfully
|
|
|
|
# (using the slave lib where the CA helper tool was active as master).
|
|
|
|
# Turned previous worker-object into its own thread, but without any
|
|
|
|
# own event-loop (so it cannot block anything inside the CA-plugin).
|
|
|
|
# 1.3.16: Bug fixes found during testing.
|
|
|
|
# 1.3.17: Add ATBUpdateTool.ini and custom command line parser. Settings
|
|
|
|
# given in ATBUpdateTool.ini can be overwritten on the command-line.
|
|
|
|
# 1.3.18: Bug fixes found during testing.
|
|
|
|
# 1.3.19: Bug fixes found during testing.
|
|
|
|
# 1.3.20: Bug fixes found during testing.
|
|
|
|
# 1.3.21: Bug fixes found during testing:
|
|
|
|
# Fix directory of ATBUpdateTool.ini to be the working directory of
|
|
|
|
# the application rather than just ".".
|
|
|
|
# Check existance of etc-directory inside customer repository.
|
|
|
|
# Check for valid ISMAS trigger (button) 15x (=90s).
|
|
|
|
# NOTE: if the customer repository is cloned (or repaired and cloned
|
|
|
|
# again), and if the settings always-download-config=true and
|
|
|
|
# always-download-dc=true in the ATBUpdateTool.ini file, the download
|
|
|
|
# the printer-json files and the device controller file, even without
|
|
|
|
# an activated ISMAS trigger (button). The tariff-files are rsynced to
|
|
|
|
# the local filesystem for such clone.
|
|
|
|
# Set new filename for device controller: dc2c.bin.
|
|
|
|
# 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.
|
|
|
|
# If the customer repository does not exist, then do not check the
|
|
|
|
# ISMAS trigger, but proceed with the update procedure. Otherwise,
|
|
|
|
# check the ISMAS update-trigger as first step.
|
|
|
|
# If the current time is between 0.00 - 4.00 o'clock, then a wrong
|
|
|
|
# trigger-value will result in an UPDATE_STEP_NOT_NECESSARY.
|
|
|
|
# Move final processing to subclass UpdateProcessRunning.
|
|
|
|
# Disable EXIT-button for the whole update-process, except for the
|
|
|
|
# checking of the ISMAS-trigger-button (aka WAIT-button).
|
|
|
|
# 1.4.1 : Sync files in the customer repository (under ./etc) as the very
|
|
|
|
# first step
|
2024-03-08 08:47:54 +01:00
|
|
|
# 1.4.2 : Do not check if <repo_dir>/etc/psa_tariff and /etc/psa_tariff are
|
|
|
|
# the same after an rsync. They might be noy after a change of the
|
|
|
|
# customer-number.
|
2024-03-19 09:20:31 +01:00
|
|
|
# 1.4.3 : Use global directory for device-controller interfaces.h-file.
|
2024-04-09 15:02:59 +02:00
|
|
|
# 1.4.4 : Add additional debug messages when downloading json-files.
|
|
|
|
# Move rsyncing of the customer-repository after the actual fetching
|
|
|
|
# of the repository. Otherwise, the update of, for instance
|
|
|
|
# tariff-files, would always be a step behind.
|
2024-04-11 16:31:44 +02:00
|
|
|
# 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.
|
2024-04-26 12:53:30 +02:00
|
|
|
# : Improve output of GUI/Console and messages sent to ISMAS.
|
2024-04-29 15:05:10 +02:00
|
|
|
# : Fix: do not send the json-files to dc in any case. Bug introduced
|
|
|
|
# when pulling new branch, but branch already existed locally.
|
2024-05-03 13:14:57 +02:00
|
|
|
# 1.4.6 : No exit()-call if loading CA-plugin fails.
|
|
|
|
# Check m_hw (pointer to CA-(Slave)Plugin) before its use.
|
2024-05-03 13:35:33 +02:00
|
|
|
# Only exit() if firmware is configured to be possibly updated, but
|
|
|
|
# loading the CA-plugin failed.
|
2024-05-08 16:20:54 +02:00
|
|
|
# 1.4.7 : Read Json-file versions of Json-files actually loaded into DC.
|
2024-05-15 15:06:54 +02:00
|
|
|
# 1.4.8 : Improve reading Json-file versions of Json-files actually loaded
|
|
|
|
# in DC. If available, show version info instead of blob-info of
|
|
|
|
# Json file.
|
2024-05-17 12:32:53 +02:00
|
|
|
# 1.4.9 : Improve ISMAS output: add messages for JSON downloads.
|
|
|
|
# Do not send CHECK_ISMAS_TRIGGER_SUCCESS to ISMAS for an automatic
|
|
|
|
# update.
|
|
|
|
# In case there is an automatic update (00:00-04:00) use M0100 instead
|
|
|
|
# of U0002.
|
2024-06-26 13:26:55 +02:00
|
|
|
# 1.4.10 : Fix: for the time being, never set the autoRequest-flag to false.
|
2024-06-28 10:06:35 +02:00
|
|
|
# 1.4.11 : Fix: remove hard-coded path to git-repos of gitea in mimbach. Read
|
|
|
|
# from ATBUpdateTool.ini the url for the gitrepositories.
|
|
|
|
VERSION="1.4.11"
|
2024-02-29 15:01:40 +01:00
|
|
|
# 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
|
|
|
|
# geklont), aber zusaetzlich werden alle verfuegbaren Dateien als neu
|
|
|
|
# angesehen und die entsprechenden Aktionen durchgefuehrt: tariff-files
|
|
|
|
# spiegeln, json-files laden und dc laden. Also VORSICHT: das repository
|
|
|
|
# muss in diesem fall wirklich in ordnung sein.
|
|
|
|
# 3: Wurde keine Datei geaendert, kein initiales Clone und der WAIT-button
|
|
|
|
# nicht aktiv, so (passiert natuerlich nichts) kann man davon ausgehen,
|
|
|
|
# dass es sich um ein automatisches Update handelt. Dann koennte man im
|
|
|
|
# ISMAS eine entsprechende Meldung anzeigen als Teil von SEND-LAST-VERSION.
|
|
|
|
# Wenn der WAIT-button aktiv ist, dann werden zumindest die opkg-commands
|
|
|
|
# ausgefuehrt.
|
|
|
|
# 5: Falls das Tool mal abstuerzt, dann einen Signal-Handler (fuer TERM)
|
|
|
|
# installieren, sodass zumnidest SEND-LAST-VERSION mit rausgeht.
|
|
|
|
# 6: rsync: explizites Binary, nicht das in busybox enthaltene.
|
|
|
|
# 7: Versionen der Json-Files lassen sich auslesen.
|
|
|
|
# Problem: Einstellungen in den Json-Files lassen sich auch mittels
|
|
|
|
# Funktionen in der CD-Library ueberschreiben. Damit ist dann wieder nicht
|
|
|
|
# mehr so klar, was jetzt eigentlich aktiv ist.
|
|
|
|
# 8: m_alwaysDownloadConfig und m_alwaysDownloadDC: vorbereitet: man koennte
|
|
|
|
# es so arrangieren, dass der DC plus die Json-files im Repository immer
|
|
|
|
# runtergeladen werden, obwohl sich im Repository gar nicts veraendert
|
|
|
|
# hat. Eeventuell nuetzlich beim initialen Setuo eines PSA.
|
|
|
|
# 9: Das Kunden-Repository sollte immer gezogen werden, unabhaengig von der
|
|
|
|
# Stellung des WAIT-Button. Grund: es koennte sein, dass andernfalls ein
|
|
|
|
# PSA weit hiter anderen steht, und dann ploetzlich einmal alle vorher-
|
|
|
|
# gehenden Aenderungen anzieht, die gar nicht fuer ihn gemeint waren.
|
|
|
|
# 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 {
|
|
|
|
BUILD_DATE=$$system("date /t")
|
|
|
|
BUILD_TIME=$$system("time /t")
|
|
|
|
} else {
|
|
|
|
BUILD_DATE=$$system("date +%d-%m-%y")
|
|
|
|
BUILD_TIME=$$system("date +%H:%M:%S")
|
|
|
|
}
|
|
|
|
|
|
|
|
GIT_COMMIT=$$system("git log -1 --format=oneline | cut -d' ' -f1")
|
|
|
|
|
|
|
|
EXTENDED_VERSION="$${VERSION}-$${GIT_COMMIT}"
|
|
|
|
|
|
|
|
INCLUDEPATH += plugins
|
|
|
|
|
|
|
|
CONFIG += c++17
|
|
|
|
# CONFIG -= app_bundle
|
|
|
|
|
|
|
|
DEFINES+=APP_VERSION=\\\"$$VERSION\\\"
|
|
|
|
DEFINES+=APP_BUILD_DATE=\\\"$$BUILD_DATE\\\"
|
|
|
|
DEFINES+=APP_BUILD_TIME=\\\"$$BUILD_TIME\\\"
|
|
|
|
DEFINES+=APP_EXTENDED_VERSION=\\\"$$EXTENDED_VERSION\\\"
|
|
|
|
|
|
|
|
# keep comments, as /* fall through */
|
|
|
|
QMAKE_CXXFLAGS += -C
|
|
|
|
QMAKE_CXXFLAGS += -g
|
|
|
|
QMAKE_CXXFLAGS += -Wno-deprecated-copy -O
|
|
|
|
|
|
|
|
contains( CONFIG, PTU5 ) {
|
|
|
|
greaterThan(QT_MAJOR_VERSION, 4): QT += serialport
|
|
|
|
CONFIG += link_pkgconfig
|
|
|
|
lessThan(QT_MAJOR_VERSION, 5): PKGCONFIG += qextserialport
|
|
|
|
QMAKE_CXXFLAGS += -O2 -std=c++17 # for GCC >= 4.7
|
2024-03-15 12:05:50 +01:00
|
|
|
|
|
|
|
PTU5BASEPATH = /opt/devel/ptu5
|
|
|
|
|
|
|
|
INCLUDEPATH += $$PTU5BASEPATH/qt/libs/devicecontroller/include
|
|
|
|
LIBS += -L$$PTU5BASEPATH/qt/libs/devicecontroller/library
|
|
|
|
|
2024-02-29 15:01:40 +01:00
|
|
|
# QMAKE_CXXFLAGS += -Wno-deprecated-copy
|
|
|
|
ARCH = PTU5
|
|
|
|
DEFINES+=PTU5
|
|
|
|
}
|
|
|
|
contains( CONFIG, PTU5_YOCTO ) {
|
|
|
|
greaterThan(QT_MAJOR_VERSION, 4): QT += serialport
|
|
|
|
QMAKE_CXXFLAGS += -std=c++17 # for GCC >= 4.7
|
|
|
|
# QMAKE_CXXFLAGS += -Wno-deprecated-copy
|
|
|
|
PTU5BASEPATH = /opt/devel/ptu5
|
|
|
|
ARCH = PTU5
|
|
|
|
DEFINES+=PTU5
|
|
|
|
|
2024-03-15 12:05:50 +01:00
|
|
|
LIBS += -lCAslave
|
|
|
|
LIBS += -lCAmaster
|
2024-02-29 15:01:40 +01:00
|
|
|
}
|
|
|
|
contains( CONFIG, DesktopLinux ) {
|
|
|
|
greaterThan(QT_MAJOR_VERSION, 4): QT += serialport
|
|
|
|
lessThan(QT_MAJOR_VERSION, 5): CONFIG += extserialport
|
|
|
|
# QMAKE_CC = ccache $$QMAKE_CC
|
|
|
|
# QMAKE_CXX = ccache $$QMAKE_CXX
|
|
|
|
QMAKE_CXXFLAGS += -std=c++17
|
|
|
|
# QMAKE_CXXFLAGS += -Wno-deprecated-copy
|
|
|
|
linux-clang { QMAKE_CXXFLAGS += -Qunused-arguments }
|
|
|
|
ARCH = DesktopLinux
|
|
|
|
DEFINES+=DesktopLinux
|
|
|
|
}
|
|
|
|
|
|
|
|
SOURCES += \
|
|
|
|
main.cpp \
|
|
|
|
progress_event.cpp \
|
|
|
|
update_dc_event.cpp \
|
|
|
|
mainwindow.cpp \
|
|
|
|
utils.cpp \
|
|
|
|
update.cpp \
|
|
|
|
git/git_client.cpp \
|
|
|
|
ismas/ismas_client.cpp \
|
|
|
|
process/command.cpp \
|
|
|
|
message_handler.cpp \
|
|
|
|
worker.cpp \
|
|
|
|
commandline_parser.cpp
|
|
|
|
|
|
|
|
HEADERS += \
|
|
|
|
update.h \
|
|
|
|
progress_event.h \
|
|
|
|
update_dc_event.h \
|
|
|
|
utils.h \
|
|
|
|
mainwindow.h \
|
|
|
|
git/git_client.h \
|
|
|
|
apism/ismas_data.h \
|
|
|
|
ismas/ismas_client.h \
|
|
|
|
process/command.h \
|
|
|
|
message_handler.h \
|
|
|
|
worker.h \
|
2024-03-15 12:05:50 +01:00
|
|
|
commandline_parser.h
|
2024-02-29 15:01:40 +01:00
|
|
|
|
|
|
|
OTHER_FILES += \
|
|
|
|
ATBUpdateTool.ini
|
|
|
|
|
|
|
|
FORMS += \
|
|
|
|
mainwindow.ui
|
|
|
|
|
|
|
|
|
|
|
|
##########################################################################################
|
|
|
|
# for running program on target through QtCreator
|
|
|
|
contains( CONFIG, PTU5 ) {
|
|
|
|
qnx: target.path = /tmp/$${TARGET}/bin
|
|
|
|
else: unix:!android: target.path = /opt/app/tools/atbupdate/
|
|
|
|
!isEmpty(target.path): INSTALLS += target
|
|
|
|
}
|