Gerhard Hoffmann
088d7c8aa0
Added struct UpdateStatus for printing debug messages. Added member variables used for sending SENDCMD to ISMAS.A Added helper functions getATBQTVersion(), getCPUSerial(), getRaucVersion(), getOpkgVersion(), getPluginVersion(), getDCVersion(), getFileSize().
174 lines
4.9 KiB
C++
174 lines
4.9 KiB
C++
#ifndef WORKER_H_INCLUDED
|
|
#define WORKER_H_INCLUDED
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QStringList>
|
|
#include <QTimer>
|
|
#include <QFile>
|
|
#include <QJsonObject>
|
|
#include <QHash>
|
|
|
|
#include "worker_thread.h"
|
|
#include "update.h"
|
|
#include "git/git_client.h"
|
|
#include "ismas/ismas_client.h"
|
|
#include "apism/apism_client.h"
|
|
|
|
#ifdef PTU5
|
|
#define SERIAL_PORT "ttymxc2"
|
|
#else
|
|
#define SERIAL_PORT "ttyUSB0"
|
|
#endif
|
|
|
|
|
|
enum class UPDATE_STATUS : quint8 {
|
|
ISMAS_EMULATE_DATA_AVAILABLE,
|
|
ISMAS_UPDATE_REQUEST_PENDING,
|
|
ISMAS_UPDATE_REQUEST_FAILURE,
|
|
ISMAS_UPDATE_REQUEST_TIMEOUT,
|
|
ISMAS_UPDATE_REQUEST_SUCCESS,
|
|
ISMAS_RESPONSE_RECEIVED,
|
|
GIT_CHECKOUT_BRANCH_REQUEST,
|
|
GIT_CHECKOUT_BRANCH_REQUEST_FAILURE,
|
|
GIT_CHECKOUT_BRANCH_NOT_EXISTS,
|
|
GIT_CHECKOUT_BRANCH_CHECKOUT_ERROR,
|
|
GIT_FETCH_UPDATES_REQUEST,
|
|
GIT_FETCH_UPDATES_REQUEST_FAILURE,
|
|
GIT_FETCH_UPDATES_REQUEST_SUCCESS,
|
|
GIT_PULL_UPDATES_SUCCESS,
|
|
GIT_PULL_UPDATES_FAILURE,
|
|
EXEC_OPKG_COMMANDS,
|
|
EXEC_OPKG_COMMAND_FAILURE,
|
|
EXEC_OPKG_COMMAND_SUCCESS,
|
|
EXEC_OPKG_COMMANDS_SUCCESS,
|
|
RSYNC_UPDATES,
|
|
RSYNC_UPDATES_FAILURE,
|
|
RSYNC_UPDATES_SUCESS,
|
|
DEVICE_CONTROLLER_UPDATE,
|
|
DEVICE_CONTROLLER_UPDATE_FAILURE,
|
|
DEVICE_CONTROLLER_UPDATE_SUCCESS,
|
|
JSON_UPDATE,
|
|
JSON_UPDATE_FAILURE,
|
|
JSON_UPDATE_SUCCESS,
|
|
ISMAS_UPDATE_INFO_CONFIRM,
|
|
ISMAS_UPDATE_INFO_CONFIRM_FAILURE,
|
|
ISMAS_UPDATE_INFO_CONFIRM_SUCCESS,
|
|
ISMAS_CURRENT_PSA_STATUS_CONFIRM,
|
|
ISMAS_CURRENT_PSA_STATUS_CONFIRM_FAILURE,
|
|
ISMAS_CURRENT_PSA_STATUS_CONFIRM_SUCCESS
|
|
};
|
|
|
|
struct UpdateStatus {
|
|
UPDATE_STATUS m_updateStatus;
|
|
QString m_statusDescription;
|
|
|
|
explicit UpdateStatus(UPDATE_STATUS s, QString const &d)
|
|
: m_updateStatus(s), m_statusDescription(d) {}
|
|
};
|
|
|
|
QDebug operator<<(QDebug debug, UpdateStatus status);
|
|
QString& operator<<(QString &str, UpdateStatus status);
|
|
|
|
#define ISMAS_UPDATE_REQUESTS (10)
|
|
|
|
class hwinf;
|
|
class Worker : public QObject {
|
|
Q_OBJECT
|
|
|
|
hwinf *m_hw;
|
|
WorkerThread m_workerThread;
|
|
QTimer m_startUpdateProcess;
|
|
QTimer m_emergencyTimer;
|
|
Update *m_update;
|
|
ApismClient m_apismClient;
|
|
int const m_customerNr;
|
|
QString const m_customerNrStr;
|
|
int const m_machineNr;
|
|
int const m_zoneNr;
|
|
QString const m_workingDirectory;
|
|
QString const m_branchName;
|
|
QString const m_customerRepositoryPath;
|
|
QString const m_customerRepository;
|
|
GitClient m_gc;
|
|
bool m_maintenanceMode;
|
|
QString const m_osVersion;
|
|
QString const m_atbqtVersion;
|
|
QString const m_cpuSerial;
|
|
QString const m_raucVersion;
|
|
QString const m_opkgVersion;
|
|
QString const m_pluginVersionATBDeciceController;
|
|
QString const m_pluginVersionIngenicoISelf;
|
|
QString const m_pluginVersionMobilisisCalc;
|
|
QString const m_pluginVersionMobilisisCalcConfig;
|
|
QString const m_pluginVersionPrmCalc;
|
|
QString const m_pluginVersionPrmCalcConfig;
|
|
QString const m_pluginVersionTcpZvt;
|
|
|
|
int m_ismasUpdateRequests;
|
|
QTimer m_waitForNewUpdates;
|
|
IsmasClient m_ismasClient;
|
|
|
|
UPDATE_STATUS m_updateStatus;
|
|
QString m_statusDescription;
|
|
|
|
void executeOpkgCommand(QString opkgCommand);
|
|
QString getOsVersion() const;
|
|
QString getATBQTVersion() const;
|
|
QString getCPUSerial() const;
|
|
QString getRaucVersion() const;
|
|
QString getOpkgVersion() const;
|
|
QString getPluginVersion(QString const &pluginFileName) const;
|
|
QStringList getDCVersion() const;
|
|
|
|
qint64 getFileSize(QString const &fileName) const;
|
|
|
|
public:
|
|
explicit Worker(hwinf *hw,
|
|
int customerNr, // 281
|
|
int machineNr,
|
|
int zoneNr,
|
|
QString branchName,
|
|
QString workingDir = ".",
|
|
bool maintenanceMode = false,
|
|
bool dryRun = false,
|
|
QObject *parent = nullptr,
|
|
char const *serialInterface = SERIAL_PORT,
|
|
char const *baudrate = "115200");
|
|
~Worker();
|
|
void quit() { return m_workerThread.quit(); }
|
|
|
|
static int read1stLineOfFile(QString fileName);
|
|
|
|
//friend QDebug operator<<(QDebug debug, Worker const &w) {
|
|
// Q_UNUSED(w);
|
|
// return debug;
|
|
//}
|
|
//friend QString& operator<<(QString &str, Worker const &w) {
|
|
// Q_UNUSED(w);
|
|
// return str;
|
|
//}
|
|
|
|
signals:
|
|
void handleChangedFiles(QStringList);
|
|
void summarizeUpload(QStringList);
|
|
void summarizeRepositoryStatus();
|
|
void sendCmdSendVersionToIsmas();
|
|
void finishUpdateProcess(bool changes);
|
|
void terminateUpdateProcess();
|
|
|
|
public slots:
|
|
void onIsmasResponseReceived(QJsonObject ismasResponse);
|
|
|
|
private slots:
|
|
void askIsmasForNewData();
|
|
void onSendCmdSendVersionToIsmas();
|
|
void onSummarizeRepositoryStatus();
|
|
void onFinishUpdateProcess(bool changes);
|
|
void onTerminateUpdateProcess();
|
|
void onSummarizeUpload(QStringList);
|
|
void onHandleChangedFiles(QStringList);
|
|
};
|
|
|
|
#endif // WORKER_H_INCLUDED
|