Msg.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /**********************************************************************************
  2. * File Name: Msg.c
  3. * Function Describe:
  4. * Relate Module:
  5. * Explain:
  6. * Writer: ShiLiangWen
  7. * Date: 2015.2.10
  8. **********************************************************************************/
  9. #include "includes.h"
  10. SUT_MSG sutMsg;
  11. unsigned char g_ucTask;
  12. unsigned char g_ucLastTask;
  13. unsigned long g_ulTickCt=0;
  14. unsigned long g_ulTick500Ct=0;
  15. int g_iPcTaCt=0;
  16. int g_iPcTaFlag=0;
  17. /***********************************************************************************
  18. *NewTask
  19. ************************************************************************************/
  20. void NewTask(unsigned char Task)
  21. {
  22. g_ucLastTask=g_ucTask;
  23. g_ucTask=Task;
  24. sutMsg.TaskStart=1;
  25. }
  26. /***********************************************************************************
  27. *StartMsg
  28. ************************************************************************************/
  29. const unsigned char IAP_VERSION[]="HS-IAP-V107\r\n";
  30. void StartMsg(void)
  31. {
  32. g_ulTick500Ct=0;
  33. g_ulTickCt=0;
  34. switch(g_ucTask){
  35. case TASK_WAIT:
  36. //NewTask(TASK_DL_APP);
  37. break;
  38. case TASK_DL_APP:
  39. IapGetUpdateVersion(PCTA_MAGIC);//启动应用程序下载
  40. break;
  41. case TASK_DL_FILES://启动资源文件下载
  42. DFGetFileList();
  43. break;
  44. case TASK_GOTO_APP://运行APP
  45. //CopyFileHandle();
  46. IapTrace((char *)IAP_VERSION);
  47. iap_jump_app_s();
  48. break;
  49. }
  50. }
  51. /*********************************************************************
  52. *Tick500Msg
  53. **********************************************************************/
  54. void Tick500Msg(void)
  55. {
  56. if(g_ulTick500Ct<0xffffffff)g_ulTick500Ct++;
  57. switch(g_ucTask){
  58. case TASK_WAIT:
  59. if(g_ulTick500Ct==1)NewTask(TASK_GOTO_APP);
  60. break;
  61. case TASK_DL_APP:
  62. break;
  63. case TASK_DL_FILES:
  64. break;
  65. case TASK_GOTO_APP:
  66. if(g_ulTick500Ct<4)return;
  67. if(g_ulTick500Ct&0x00000001)IapTrace("No App!\r\n");
  68. break;
  69. }
  70. }
  71. /**********************************************************************************
  72. SlwStrCmp
  73. 判断str是否属于msg的字串,且从位置处于str的开头
  74. ***********************************************************************************/
  75. int SlwStrCmp(char *msg,char *str)
  76. {
  77. char *p1=str;
  78. char *p2=msg;
  79. while(*p1!=0){
  80. if(*p1!=*p2)return 1;
  81. p1++;
  82. p2++;
  83. }
  84. return 0;
  85. }
  86. /***********************************************************************************
  87. *Use for PC
  88. ************************************************************************************/
  89. void Uart1Msg(void)
  90. {
  91. int flag;
  92. if(TASK_WAIT==g_ucTask){
  93. if(0==SlwStrCmp((char *)IapRxBuf,"DOWNLOAD_APP")){
  94. NewTask(TASK_DL_APP);
  95. IapTrace("DOWNLOAD_APP\r\n");
  96. }else if(0==SlwStrCmp((char *)IapRxBuf,"DOWNLOAD_RFILES")){
  97. NewTask(TASK_DL_FILES);
  98. IapTrace("DOWNLOAD_RFILES\r\n");
  99. }else{
  100. IapTrace("----\r\n");
  101. }
  102. return;
  103. }
  104. if(TASK_DL_APP!=g_ucTask && TASK_DL_FILES!=g_ucTask)return;
  105. if(IapRxBuf[0]!='P' || IapRxBuf[1]!='C' || IapRxBuf[2]!='T' || IapRxBuf[3]!='A')return;
  106. if(IapRxBuf[4]==UPDATE_PROTOCOL_APP){//-------------
  107. //PCTA--更新应用程序
  108. flag=IapRecvMsgHandle(IapRxBuf,IapRxLen);
  109. if(0==flag){
  110. IapTrace("Completed!");
  111. NewTask(TASK_DL_FILES);//启动更新下载资源文件
  112. return;
  113. }
  114. if(flag<-2 && flag>-6){
  115. IapTrace("IAP Stop!\r\n");
  116. NewTask(TASK_GOTO_APP);
  117. }
  118. }else if(IapRxBuf[4]==UPDATE_PROTOCOL_RFILE){//-------------
  119. //PCTF--更新资源文件
  120. flag=DFRecvMsgHandle(IapRxBuf,IapRxLen);
  121. if(0==flag){
  122. MakeTheEndFileIndicator();
  123. CopyConfiToBckupFile();//每次更新完成都初始化一下备份区
  124. IapTrace("Completed!");
  125. NewTask(TASK_GOTO_APP);
  126. copyFilePara.runFlag =1;
  127. return;
  128. }
  129. if(flag<-2 && flag>-6){
  130. IapTrace("IAP Stop!\r\n");
  131. NewTask(TASK_GOTO_APP);
  132. }
  133. // g_iPcTaCt=0;
  134. // g_iPcTaFlag=flag;
  135. }
  136. }
  137. /***********************************************************************************
  138. *TickMsg
  139. ************************************************************************************/
  140. void TickMsg(void)
  141. {
  142. }
  143. /***********************************************************************************/