#ifndef DOWNLOAD_THREAD_H_INCLUDED #define DOWNLOAD_THREAD_H_INCLUDED #include #include #include class hwinf; class DownloadThread : public QThread { Q_OBJECT public: enum class DownloadResult {OK, ERROR, TIMEOUT, NOP}; DownloadThread(hwinf *hw); ~DownloadThread(); protected: // download thread does not have a running event queue, and therefore // no slots. signals work the usual way. void run() override; 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 dcFileName) const; bool resetDeviceController() const; DownloadResult dcDownloadBinary(QByteArray const &b) const; hwinf *m_hw; QString m_fileToDownload; }; #endif // DOWNLOAD_THREAD_H_INCLUDED