#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 &pRecvPkg); ErrorCodeEnum HandlePollUpgradeRet(const CSmartPointer &pRecvPkg); ErrorCodeEnum HandleConfirmUpgradeRet(const CSmartPointer &pRecvPkg); ErrorCodeEnum HandleReportRet(const CSmartPointer &pRecvPkg); ErrorCodeEnum HandleQueryExecInfoRet(const CSmartPointer &pRecvPkg); ErrorCodeEnum HandleReportSysCustomVerRet(const CSmartPointer &pRecvPkg); ErrorCodeEnum HandleMD5ListRet(const CSmartPointer &pRecvPkg); private: FSMBase *m_pFSM; int m_BlockId; }; } #endif //RVC_MOD_UPGRADEMGR_COON_H_