#ifndef UPDATE_H_INCLUDED #define UPDATE_H_INCLUDED #include #include #include #include #include #include #include #include #include #ifdef PTU5 #define SERIAL_PORT "ttymxc2" #else #define SERIAL_PORT "ttyUSB0" #endif class Update : public QObject { Q_OBJECT hwinf *m_hw = 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(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(); static QString dcVersion(QString const &dcBinFile); private: DownloadResult sendStatus(int ret) const; DownloadResult sendNextAddress(int bNum) const; DownloadResult sendNextDataBlock(QByteArray const &binary, int bNum) const; bool startBootloader() const; bool stopBootloader() const; QByteArray loadBinaryDCFile(QString const &dcFilename) const; bool resetDeviceController() const; DownloadResult dcDownloadBinary(QByteArray const &b) const; QString m_fileToDownload; /* 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 updateBinary(QString const &fileToSendToDC); QStringList getDcSoftAndHardWareVersion(); QString getFileVersion(QString const& jsonFile); private slots: void readyReadStandardOutput(); void readyReadStandardError(); void finished(int exitCode, QProcess::ExitStatus exitStatus); void onReportDCDownloadStatus(QString const &status); void onReportDCDownloadSuccess(QString const &msg); void onReportDCDownloadFailure(QString const &errorMsg); */ }; #endif // UPDATE_H_INCLUDED