Msg.c 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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-V103\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. //IapTrace("GOTO_APP!\r\n");
  46. CopyFileHandle();
  47. IapTrace((char *)IAP_VERSION);
  48. iap_jump_app_s();
  49. break;
  50. }
  51. }
  52. /*********************************************************************
  53. *Tick500Msg
  54. **********************************************************************/
  55. void Tick500Msg(void)
  56. {
  57. if(g_ulTick500Ct<0xffffffff)g_ulTick500Ct++;
  58. switch(g_ucTask){
  59. case TASK_WAIT:
  60. if(g_ulTick500Ct==1)NewTask(TASK_GOTO_APP);
  61. break;
  62. case TASK_DL_APP:
  63. break;
  64. case TASK_DL_FILES:
  65. break;
  66. case TASK_GOTO_APP:
  67. if(g_ulTick500Ct<4)return;
  68. if(g_ulTick500Ct&0x00000001)IapTrace("No App!\r\n");
  69. break;
  70. }
  71. }
  72. /**********************************************************************************
  73. SlwStrCmp
  74. 判断str是否属于msg的字串,且从位置处于str的开头
  75. ***********************************************************************************/
  76. int SlwStrCmp(char *msg,char *str)
  77. {
  78. char *p1=str;
  79. char *p2=msg;
  80. while(*p1!=0){
  81. if(*p1!=*p2)return 1;
  82. p1++;
  83. p2++;
  84. }
  85. return 0;
  86. }
  87. /***********************************************************************************
  88. *Use for PC
  89. ************************************************************************************/
  90. void Uart1Msg(void)
  91. {
  92. int flag;
  93. if(TASK_WAIT==g_ucTask){
  94. if(0==SlwStrCmp((char *)IapRxBuf,"DOWNLOAD_APP")){
  95. NewTask(TASK_DL_APP);
  96. IapTrace("DOWNLOAD_APP\r\n");
  97. }else if(0==SlwStrCmp((char *)IapRxBuf,"DOWNLOAD_RFILES")){
  98. NewTask(TASK_DL_FILES);
  99. IapTrace("DOWNLOAD_RFILES\r\n");
  100. }else{
  101. IapTrace("----\r\n");
  102. }
  103. return;
  104. }
  105. if(TASK_DL_APP!=g_ucTask && TASK_DL_FILES!=g_ucTask)return;
  106. if(IapRxBuf[0]!='P' || IapRxBuf[1]!='C' || IapRxBuf[2]!='T' || IapRxBuf[3]!='A')return;
  107. if(IapRxBuf[4]==UPDATE_PROTOCOL_APP){//-------------
  108. //PCTA--更新应用程序
  109. flag=IapRecvMsgHandle(IapRxBuf,IapRxLen);
  110. if(0==flag){
  111. IapTrace("Completed!");
  112. NewTask(TASK_DL_FILES);//启动更新下载资源文件
  113. return;
  114. }
  115. if(flag<-2 && flag>-6){
  116. IapTrace("IAP Stop!\r\n");
  117. NewTask(TASK_GOTO_APP);
  118. }
  119. // g_iPcTaCt=0;
  120. // g_iPcTaFlag=flag;
  121. }else if(IapRxBuf[4]==UPDATE_PROTOCOL_RFILE){//-------------
  122. //PCTF--更新资源文件
  123. flag=DFRecvMsgHandle(IapRxBuf,IapRxLen);
  124. if(0==flag){
  125. IapTrace("Completed!");
  126. NewTask(TASK_GOTO_APP);
  127. copyFilePara.runFlag =1;
  128. return;
  129. }
  130. if(flag<-2 && flag>-6){
  131. IapTrace("IAP Stop!\r\n");
  132. NewTask(TASK_GOTO_APP);
  133. }
  134. // g_iPcTaCt=0;
  135. // g_iPcTaFlag=flag;
  136. }
  137. }
  138. /***********************************************************************************
  139. *TickMsg
  140. ************************************************************************************/
  141. void TickMsg(void)
  142. {
  143. }
  144. /***********************************************************************************/