#ifndef THREADUPGRADEAPK_H
#define THREADUPGRADEAPK_H
#include <QThread>
#include <QFile>
#include <QTcpSocket>
#include <QJsonValue>
#include <QJsonObject>
#include <QJsonDocument>
#include <QAbstractSocket>
#include <QSemaphore>
#include <QDataStream>
#include <communication/hpptclient.h>
#include <QTimer>
const quint16 PORT = 3333;
const qint64 LOADBYTES = 4 * 1024; // 4 kilo-byte
const int DATA_STREAM_VERSION = QDataStream::Qt_4_8;
class ThreadUpgradeApk:public QThread
{
    Q_OBJECT
public:
    ThreadUpgradeApk(QString strApkPathAndName,QString url="",int iPort=3333);
    ~ThreadUpgradeApk();
    void run();
protected slots:
    void slotUploadProgress(qint64 A,qint64 B);
    void slotUploadFinished();
    void slotUploadFpgaFinished();
    void slotTimerOutUnlock();
    void OnUpgradeSuccess();
    void OnUpgradeFail();
signals:
    void sigSetLableText(QString);

    void sigSetProgressValue(int);
    void sigSetProgressMax(int);
    void sigFinished();
    void sigFpgaFinished();
    void sigTimerOut();
private:
    bool bSendCloseFlag=true;
    QString m_strApkName;
    QString m_strUrl;
    int m_reSendCount=0;
    QTimer *m_pGetAskTimer=nullptr;
    int m_iType=0;
    void UpLoadForm(QString Path,QMap<QString,QString> params,QString fileFormName,QFile *uploadFile,QString newFileName,int iType);
//    void UpLoadForm(QString strUrl,QString strFilePathName);

};

#endif // THREADSENDPRO_H