| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- #ifndef RVC_MOD_UPGRADEMGR_COON_H_
- #define RVC_MOD_UPGRADEMGR_COON_H_
- #include "SpSecureClient.h"
- #include "SpFSM.h"
- #define MAX_PACKNAME_LEN 128
- #define MAX_MD5LIST_LEN 32*1024
- namespace UpgradeConnect
- {
- #pragma pack(1)
- // [POLLREQ1]
- struct PollUpgrade_Req1
- {
- char TerminalNo[16];
- char MachineType[16];
- BYTE MachineVersion[4];
- BYTE InstallVersion[8];
- BYTE OSVersion[8];
- char Sites[16];
- };
- // [POLLREQ2] 多条
- struct PollUpgrade_Req2
- {
- char Type[32];
- char Modal[32];
- char Factory[32];
- BYTE Version[8]; // 硬件版本
- };
- // [POLLREQ3] 多条
- struct PollUpgrade_Req3
- {
- char UpgradePack[31];
- char PackState; // 未安装U、正在安装I、安装失败F、已经安装D
- };
- // [POLLREQ4],add by zl 2018.1.29 为了服务端能区分包名长度是否是128
- struct PollUpgrade_Req4
- {
- char TerminalNo[16];
- char MachineType[16];
- BYTE MachineVersion[4];
- BYTE InstallVersion[8];
- BYTE OSVersion[8];
- char Sites[16];
- char Reserve1[256];
- char Reserve2[256];
- };
- // [POLLREQ5] 多条,add by zl 2018.1.25 支持最大128长度包名
- struct PollUpgrade_Req5
- {
- char UpgradePack[MAX_PACKNAME_LEN];
- char PackState; // 未安装U、正在安装I、安装失败F、已经安装D
- };
- // [POLLREQ6] 终端版本文件MD5列表hash值
- struct PollUpgrade_Req6
- {
- char MD5ListHash[32];//MD5列表每次最大上传32k
- };
- // [POLLRET3] 多条
- struct PollUpgrade_Ret3
- {
- char UpgradePack[MAX_PACKNAME_LEN];
- BYTE Level; // 3级优先级
- char TriggerType; // 更新触发方式 I(立即)|T(定时)|C(控制)
- DWORD TriggerTimer; // 触发时间,2000后的秒数
- char PackExecID[18]; // 执行策略
- };
- // [POLLRET4] 紧急取消安装包
- struct PollUpgrade_Ret4
- {
- char CancelPack[MAX_PACKNAME_LEN]; // 取消升级模块名称 字符 128
- };
- // [POLLRET5] 多条,自动生成的升级包
- struct PollUpgrade_Ret5
- {
- char NewUpgradePack[MAX_PACKNAME_LEN]; //自动生成的包名
- char UpgradePack[MAX_PACKNAME_LEN]; //注册的包名
- BYTE Level; // 3级优先级
- char TriggerType; // 更新触发方式 I(立即)|T(定时)|C(控制)
- DWORD TriggerTimer; // 触发时间,2000后的秒数
- char PackExecID[18]; // 执行策略
- };
- // [REPT_REQ]
- struct Report_Req
- {
- char TerminalNo[16];
- char UpgradePack[32];
- BYTE InstallVersion[8];
- DWORD StateTime;
- DWORD FailCode;
- char InstallState;
- };
- // [REP2_REQ]
- struct Report2_Req
- {
- char TerminalNo[16];
- char UpgradePack[32];
- BYTE InstallVersion[8];
- DWORD StateTime;
- DWORD FailCode;
- char InstallState;
- char Comment[256];
- };
- // [REP3_REQ]
- struct Report3_Req
- {
- char TerminalNo[16];
- char UpgradePack[MAX_PACKNAME_LEN];
- BYTE InstallVersion[8];
- DWORD StateTime;
- DWORD FailCode;
- char InstallState;
- char Comment[256];
- char Reserve1[256];
- char Reserve2[256];
- };
- // [CONF_REQ] 切换确认
- struct Confirm_Req
- {
- char PackExecID[18]; // 执行策略
- };
- // [CONF_RET]
- struct Confirm_Ret
- {
- char PackExecID[18]; // 执行策略
- bool HasConfirmed; // 是否已确认
- bool HasCancelled; // 是否已取消
- };
- // [EXEC_REQ] 查询策略是否有效
- struct QueryExec_Req
- {
- char PackExecID[18]; // 执行策略
- };
- // [EXEC_RET]
- struct QueryExec_Ret
- {
- char PackExecID[18]; // 执行策略
- bool HasCancelled; // 是否已取消
- };
- // 系统定制上报
- // [CUSVER_R]
- struct ReportSysCustomVer_Req
- {
- char TerminalNo[16];
- char SysPackName[32];
- char SysCustomVer[16];
- };
- // [CUSVER_R2]
- struct ReportSysCustomVer_Req2
- {
- char TerminalNo[16];
- char SysPackName[32];
- char SysCustomVer[16];
- char FWID[16];
- char SysPatchName[16];
- };
- // [CUSVER_R3]
- struct ReportSysCustomVer_Req3
- {
- char TerminalNo[16];
- char SysPackName[MAX_PACKNAME_LEN];
- char SysCustomVer[16];
- char FWID[16];
- char SysPatchName[16];
- char Reserve1[256];
- char Reserve2[256];
- };
- // [MD5REQ] 终端版本文件MD5列表
- struct MD5List_Req
- {
- char TerminalNo[16];
- BYTE InstallVersion[8];
- char MD5ListHash[32];//MD5列表hash值
- char MD5List[MAX_MD5LIST_LEN];//MD5列表每次最大上传32k
- DWORD BlockId; //当前发送的MD5List块ID
- bool bEnd;//结束标志位
- };
- // [MD5RET]
- struct MD5List_Ret
- {
- DWORD BlockId; //已接收MD5List块ID
- };
- #pragma pack()
- class CUpgradeMgrConn : public SpSecureClient
- {
- public:
- CUpgradeMgrConn(CEntityBase *pEntity, FSMBase *pFSM)
- :SpSecureClient(pEntity), m_pFSM(pFSM),m_BlockId(0)
- {
- }
- ErrorCodeEnum SendPollUpgradeReq(bool IsHashComputed);
- ErrorCodeEnum ReportUpgradeResult(const char* pPackName, CVersion &installVersion, char installState, DWORD stateTime, DWORD dwErrCode, const char *pComment);
- ErrorCodeEnum SendConfirmUpgradeReq(const char* pPackExecID);
- ErrorCodeEnum SendQueryExecInfoReq(const char* pPackExecID);
- ErrorCodeEnum ReportSysCustomVer(const char* pPackName, const char* pSysCustomVer, const char* pFWID, const char* pSysPatchName);
- ErrorCodeEnum SendMD5ListReq(CSimpleStringA strBlockId);
- //ErrorCodeEnum SendMD5ListReq(CSimpleStringA strTerminalNo,CSimpleStringA strBlockId);//test
- private:
- ~CUpgradeMgrConn() {}
- void OnDisconnect();
- void OnPkgAnswer(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandlePollUpgradeRet(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleConfirmUpgradeRet(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleReportRet(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleQueryExecInfoRet(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleReportSysCustomVerRet(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleMD5ListRet(const CSmartPointer<IPackage> &pRecvPkg);
- private:
- FSMBase *m_pFSM;
- int m_BlockId;
- };
- }
- #endif //RVC_MOD_UPGRADEMGR_COON_H_
|