#ifndef UPDATE_H_INCLUDED #define UPDATE_H_INCLUDED #include #include #include #include #include #include #include #include "plugins/interfaces.h" #ifdef PTU5 #define SERIAL_PORT "ttymxc2" #else #define SERIAL_PORT "ttyUSB0" #endif class Worker; class Update : public QObject { Q_OBJECT hwinf *m_hw = nullptr; Worker *m_worker = nullptr; char const *m_serialInterface; char const *m_baudrate; QString m_customerRepository; QString m_customerNrStr; QString m_branchName; QString m_pluginName; QString m_workingDir; bool m_maintenanceMode; bool m_dryRun; bool m_sys_areDCdataValid; static QPluginLoader pluginLoader; public: enum class DownloadResult {OK, ERROR, TIMEOUT, NOP}; enum class FileTypeJson {CONFIG=1, DEVICE=2, CASH=3, SERIAL=4, TIME=5, PRINTER=6}; static hwinf *loadDCPlugin(QDir const &plugInDir, QString const &fn); static bool unloadDCPlugin(); static QStringList split(QString line, QChar sep = ','); explicit Update(Worker *worker, QString customerRepository, QString customerNrStr, QString branchName, QString plugInDir, QString pluginName, QString workingDir, bool dryRun = false, QObject *parent = nullptr, char const *serialInterface = SERIAL_PORT, char const *baudrate = "115200"); virtual ~Update() override; bool doUpdate(int &displayIndex, QStringList const &linesToWorkOn); bool checkDownloadedJsonVersions(QStringList const& jsonFileNames); hwinf *hw() { return m_hw; } hwinf const *hw() const { return m_hw; } //QString customerId() { return m_customerId; } //QString const customerId() const { return m_customerId; } QString branchName() { return m_branchName; } QString const branchName() const { return m_branchName; } //QString repositoryPath() { return m_repositoryPath; } //QString const repositoryPath() const { return m_repositoryPath; } private: static QString jsonType(enum FileTypeJson type); bool openSerial(int br, QString baudrate, QString comPort) const; void closeSerial() const; bool isSerialOpen() const; bool resetDeviceController() const; QByteArray loadBinaryDCFile(QString filename) const; bool downloadBinaryToDC(QString const &bFile) const; bool updatePrinterTemplate(int templateIdx, QString fname) const; bool updateBinary(QString const &fileToSendToDC); bool updateConfig(QString jsFileToSendToDC); bool updateCashConf(QString jsFileToSendToDC); bool updateDeviceConf(QString jsFileToSendToDC); bool downloadJson(enum FileTypeJson type, int templateIdx, QString jsFileToSendToDC) const; QStringList getDcSoftAndHardWareVersion(); QString getFileVersion(QString const& jsonFile); private slots: void readyReadStandardOutput(); void readyReadStandardError(); void finished(int exitCode, QProcess::ExitStatus exitStatus); }; #endif // UPDATE_H_INCLUDED