UpgradeMgrConn.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. #ifndef RVC_MOD_UPGRADEMGR_COON_H_
  2. #define RVC_MOD_UPGRADEMGR_COON_H_
  3. #include "SpSecureClient.h"
  4. #include "SpFSM.h"
  5. #define MAX_PACKNAME_LEN 128
  6. #define MAX_MD5LIST_LEN 32*1024
  7. namespace UpgradeConnect
  8. {
  9. #pragma pack(1)
  10. // [POLLREQ1]
  11. struct PollUpgrade_Req1
  12. {
  13. char TerminalNo[16];
  14. char MachineType[16];
  15. BYTE MachineVersion[4];
  16. BYTE InstallVersion[8];
  17. BYTE OSVersion[8];
  18. char Sites[16];
  19. };
  20. // [POLLREQ2] 多条
  21. struct PollUpgrade_Req2
  22. {
  23. char Type[32];
  24. char Modal[32];
  25. char Factory[32];
  26. BYTE Version[8]; // 硬件版本
  27. };
  28. // [POLLREQ3] 多条
  29. struct PollUpgrade_Req3
  30. {
  31. char UpgradePack[31];
  32. char PackState; // 未安装U、正在安装I、安装失败F、已经安装D
  33. };
  34. // [POLLREQ4],add by zl 2018.1.29 为了服务端能区分包名长度是否是128
  35. struct PollUpgrade_Req4
  36. {
  37. char TerminalNo[16];
  38. char MachineType[16];
  39. BYTE MachineVersion[4];
  40. BYTE InstallVersion[8];
  41. BYTE OSVersion[8];
  42. char Sites[16];
  43. char Reserve1[256];
  44. char Reserve2[256];
  45. };
  46. // [POLLREQ5] 多条,add by zl 2018.1.25 支持最大128长度包名
  47. struct PollUpgrade_Req5
  48. {
  49. char UpgradePack[MAX_PACKNAME_LEN];
  50. char PackState; // 未安装U、正在安装I、安装失败F、已经安装D
  51. };
  52. // [POLLREQ6] 终端版本文件MD5列表hash值
  53. struct PollUpgrade_Req6
  54. {
  55. char MD5ListHash[32];//MD5列表每次最大上传32k
  56. };
  57. // [POLLRET3] 多条
  58. struct PollUpgrade_Ret3
  59. {
  60. char UpgradePack[MAX_PACKNAME_LEN];
  61. BYTE Level; // 3级优先级
  62. char TriggerType; // 更新触发方式 I(立即)|T(定时)|C(控制)
  63. DWORD TriggerTimer; // 触发时间,2000后的秒数
  64. char PackExecID[18]; // 执行策略
  65. };
  66. // [POLLRET4] 紧急取消安装包
  67. struct PollUpgrade_Ret4
  68. {
  69. char CancelPack[MAX_PACKNAME_LEN]; // 取消升级模块名称 字符 128
  70. };
  71. // [POLLRET5] 多条,自动生成的升级包
  72. struct PollUpgrade_Ret5
  73. {
  74. char NewUpgradePack[MAX_PACKNAME_LEN]; //自动生成的包名
  75. char UpgradePack[MAX_PACKNAME_LEN]; //注册的包名
  76. BYTE Level; // 3级优先级
  77. char TriggerType; // 更新触发方式 I(立即)|T(定时)|C(控制)
  78. DWORD TriggerTimer; // 触发时间,2000后的秒数
  79. char PackExecID[18]; // 执行策略
  80. };
  81. // [REPT_REQ]
  82. struct Report_Req
  83. {
  84. char TerminalNo[16];
  85. char UpgradePack[32];
  86. BYTE InstallVersion[8];
  87. DWORD StateTime;
  88. DWORD FailCode;
  89. char InstallState;
  90. };
  91. // [REP2_REQ]
  92. struct Report2_Req
  93. {
  94. char TerminalNo[16];
  95. char UpgradePack[32];
  96. BYTE InstallVersion[8];
  97. DWORD StateTime;
  98. DWORD FailCode;
  99. char InstallState;
  100. char Comment[256];
  101. };
  102. // [REP3_REQ]
  103. struct Report3_Req
  104. {
  105. char TerminalNo[16];
  106. char UpgradePack[MAX_PACKNAME_LEN];
  107. BYTE InstallVersion[8];
  108. DWORD StateTime;
  109. DWORD FailCode;
  110. char InstallState;
  111. char Comment[256];
  112. char Reserve1[256];
  113. char Reserve2[256];
  114. };
  115. // [CONF_REQ] 切换确认
  116. struct Confirm_Req
  117. {
  118. char PackExecID[18]; // 执行策略
  119. };
  120. // [CONF_RET]
  121. struct Confirm_Ret
  122. {
  123. char PackExecID[18]; // 执行策略
  124. bool HasConfirmed; // 是否已确认
  125. bool HasCancelled; // 是否已取消
  126. };
  127. // [EXEC_REQ] 查询策略是否有效
  128. struct QueryExec_Req
  129. {
  130. char PackExecID[18]; // 执行策略
  131. };
  132. // [EXEC_RET]
  133. struct QueryExec_Ret
  134. {
  135. char PackExecID[18]; // 执行策略
  136. bool HasCancelled; // 是否已取消
  137. };
  138. // 系统定制上报
  139. // [CUSVER_R]
  140. struct ReportSysCustomVer_Req
  141. {
  142. char TerminalNo[16];
  143. char SysPackName[32];
  144. char SysCustomVer[16];
  145. };
  146. // [CUSVER_R2]
  147. struct ReportSysCustomVer_Req2
  148. {
  149. char TerminalNo[16];
  150. char SysPackName[32];
  151. char SysCustomVer[16];
  152. char FWID[16];
  153. char SysPatchName[16];
  154. };
  155. // [CUSVER_R3]
  156. struct ReportSysCustomVer_Req3
  157. {
  158. char TerminalNo[16];
  159. char SysPackName[MAX_PACKNAME_LEN];
  160. char SysCustomVer[16];
  161. char FWID[16];
  162. char SysPatchName[16];
  163. char Reserve1[256];
  164. char Reserve2[256];
  165. };
  166. // [MD5REQ] 终端版本文件MD5列表
  167. struct MD5List_Req
  168. {
  169. char TerminalNo[16];
  170. BYTE InstallVersion[8];
  171. char MD5ListHash[32];//MD5列表hash值
  172. char MD5List[MAX_MD5LIST_LEN];//MD5列表每次最大上传32k
  173. DWORD BlockId; //当前发送的MD5List块ID
  174. bool bEnd;//结束标志位
  175. };
  176. // [MD5RET]
  177. struct MD5List_Ret
  178. {
  179. DWORD BlockId; //已接收MD5List块ID
  180. };
  181. #pragma pack()
  182. class CUpgradeMgrConn : public SpSecureClient
  183. {
  184. public:
  185. CUpgradeMgrConn(CEntityBase *pEntity, FSMBase *pFSM)
  186. :SpSecureClient(pEntity), m_pFSM(pFSM),m_BlockId(0)
  187. {
  188. }
  189. ErrorCodeEnum SendPollUpgradeReq(bool IsHashComputed);
  190. ErrorCodeEnum ReportUpgradeResult(const char* pPackName, CVersion &installVersion, char installState, DWORD stateTime, DWORD dwErrCode, const char *pComment);
  191. ErrorCodeEnum SendConfirmUpgradeReq(const char* pPackExecID);
  192. ErrorCodeEnum SendQueryExecInfoReq(const char* pPackExecID);
  193. ErrorCodeEnum ReportSysCustomVer(const char* pPackName, const char* pSysCustomVer, const char* pFWID, const char* pSysPatchName);
  194. ErrorCodeEnum SendMD5ListReq(CSimpleStringA strBlockId);
  195. //ErrorCodeEnum SendMD5ListReq(CSimpleStringA strTerminalNo,CSimpleStringA strBlockId);//test
  196. private:
  197. ~CUpgradeMgrConn() {}
  198. void OnDisconnect();
  199. void OnPkgAnswer(const CSmartPointer<IPackage> &pRecvPkg);
  200. ErrorCodeEnum HandlePollUpgradeRet(const CSmartPointer<IPackage> &pRecvPkg);
  201. ErrorCodeEnum HandleConfirmUpgradeRet(const CSmartPointer<IPackage> &pRecvPkg);
  202. ErrorCodeEnum HandleReportRet(const CSmartPointer<IPackage> &pRecvPkg);
  203. ErrorCodeEnum HandleQueryExecInfoRet(const CSmartPointer<IPackage> &pRecvPkg);
  204. ErrorCodeEnum HandleReportSysCustomVerRet(const CSmartPointer<IPackage> &pRecvPkg);
  205. ErrorCodeEnum HandleMD5ListRet(const CSmartPointer<IPackage> &pRecvPkg);
  206. private:
  207. FSMBase *m_pFSM;
  208. int m_BlockId;
  209. };
  210. }
  211. #endif //RVC_MOD_UPGRADEMGR_COON_H_