#ifndef OAMUPGRADE_H #define OAMUPGRADE_H #include #include "pspublic.h" #define OAM_UPGRADE_SWITCH_SOFT_WORK_MODE 0x0601 // 切换软件工作模式 #define OAM_UPGRADE_NOTICE_UPGRADE_FILE_INFO 0x0602 // 通知升级文件信息 #define OAM_UPGRADE_SEND_UPGRADE_FILE 0x0603 // 发送升级升级文件 #define OAM_UPGRADE_NOTICE_UPGRADE_OVER 0x0604 // 升级结束 //升级管理结构 typedef struct{ quint8 upgradeStatus;//1:升级中,2:升级成功,3:升级失败,4:超时 quint32 fileSize;//升级文件大小 quint32 totalTimes;//发送总次数 quint32 sendingTimes;//当前发送次数 quint16 remainderLen;//最后一次数据长度 quint8 *pData;//升级文件 }OAM_UPGRADE_T; //通知文件信息 typedef struct{ quint32 fileSize;//文件大小 quint32 totalTimes;//发送次数 }OAM_UPGRAD_NOTICE_FILE_INFO_T; //升级帧 typedef struct{ quint32 sendTimes;//当前发送次数 quint8 abyData[PS_MCP_B_DATA_LEN];//发送文件 }OAM_UPGRADE_DATA_PAYLOAD_T; class MainDlg; namespace Ui { class OamUpgrade; } class OamUpgrade : public QDialog { Q_OBJECT public: explicit OamUpgrade(QWidget *parent = nullptr); ~OamUpgrade(); private: Ui::OamUpgrade *ui; MainDlg *m_pMainDlg; QString m_strFilePaht; OAM_UPGRADE_T m_stUpgrade; LTV_B_T m_stLtvB; void configSignalSlot(); void selectUpgradeFile(); void startUpgrade(); void switchSoftWorkMode(); void noticeUpgradeFileInfo(); void sendUpgradeFile(); void noticeUpgradeOver(); void deinitUpgrade();//反向初始化 void slotNoticeUpgradeOk(quint16 wTag); void slotNoticeUpgradeFail(); void slotNoticeUpgradeTimeout(); void upgradeSuccess(); signals: void SignalSendUpgradeMsg(quint8 *pbyData,quint8 byCmdType, quint16 dataLen); void SignalSendRestartMsg();//重启设备信号 }; #endif // OAMUPGRADE_H