/********************************************************************************** * File Name: Msg.c * Function Describe: * Relate Module: * Explain: * Writer: ShiLiangWen * Date: 2015.2.10 **********************************************************************************/ #include "includes.h" SUT_MSG sutMsg; unsigned char g_ucTask; unsigned char g_ucLastTask; unsigned long g_ulTickCt=0; unsigned long g_ulTick500Ct=0; int g_iPcTaCt=0; int g_iPcTaFlag=0; /*********************************************************************************** *NewTask ************************************************************************************/ void NewTask(unsigned char Task) { g_ucLastTask=g_ucTask; g_ucTask=Task; sutMsg.TaskStart=1; } /*********************************************************************************** *StartMsg ************************************************************************************/ const unsigned char IAP_VERSION[]="HS-IAP-V107\r\n"; void StartMsg(void) { g_ulTick500Ct=0; g_ulTickCt=0; switch(g_ucTask){ case TASK_WAIT: //NewTask(TASK_DL_APP); break; case TASK_DL_APP: IapGetUpdateVersion(PCTA_MAGIC);//启动应用程序下载 break; case TASK_DL_FILES://启动资源文件下载 DFGetFileList(); break; case TASK_GOTO_APP://运行APP //CopyFileHandle(); IapTrace((char *)IAP_VERSION); iap_jump_app_s(); break; } } /********************************************************************* *Tick500Msg **********************************************************************/ void Tick500Msg(void) { if(g_ulTick500Ct<0xffffffff)g_ulTick500Ct++; switch(g_ucTask){ case TASK_WAIT: if(g_ulTick500Ct==1)NewTask(TASK_GOTO_APP); break; case TASK_DL_APP: break; case TASK_DL_FILES: break; case TASK_GOTO_APP: if(g_ulTick500Ct<4)return; if(g_ulTick500Ct&0x00000001)IapTrace("No App!\r\n"); break; } } /********************************************************************************** SlwStrCmp 判断str是否属于msg的字串,且从位置处于str的开头 ***********************************************************************************/ int SlwStrCmp(char *msg,char *str) { char *p1=str; char *p2=msg; while(*p1!=0){ if(*p1!=*p2)return 1; p1++; p2++; } return 0; } /*********************************************************************************** *Use for PC ************************************************************************************/ void Uart1Msg(void) { int flag; if(TASK_WAIT==g_ucTask){ if(0==SlwStrCmp((char *)IapRxBuf,"DOWNLOAD_APP")){ NewTask(TASK_DL_APP); IapTrace("DOWNLOAD_APP\r\n"); }else if(0==SlwStrCmp((char *)IapRxBuf,"DOWNLOAD_RFILES")){ NewTask(TASK_DL_FILES); IapTrace("DOWNLOAD_RFILES\r\n"); }else{ IapTrace("----\r\n"); } return; } if(TASK_DL_APP!=g_ucTask && TASK_DL_FILES!=g_ucTask)return; if(IapRxBuf[0]!='P' || IapRxBuf[1]!='C' || IapRxBuf[2]!='T' || IapRxBuf[3]!='A')return; if(IapRxBuf[4]==UPDATE_PROTOCOL_APP){//------------- //PCTA--更新应用程序 flag=IapRecvMsgHandle(IapRxBuf,IapRxLen); if(0==flag){ IapTrace("Completed!"); NewTask(TASK_DL_FILES);//启动更新下载资源文件 return; } if(flag<-2 && flag>-6){ IapTrace("IAP Stop!\r\n"); NewTask(TASK_GOTO_APP); } }else if(IapRxBuf[4]==UPDATE_PROTOCOL_RFILE){//------------- //PCTF--更新资源文件 flag=DFRecvMsgHandle(IapRxBuf,IapRxLen); if(0==flag){ MakeTheEndFileIndicator(); CopyConfiToBckupFile();//每次更新完成都初始化一下备份区 IapTrace("Completed!"); NewTask(TASK_GOTO_APP); copyFilePara.runFlag =1; return; } if(flag<-2 && flag>-6){ IapTrace("IAP Stop!\r\n"); NewTask(TASK_GOTO_APP); } // g_iPcTaCt=0; // g_iPcTaFlag=flag; } } /*********************************************************************************** *TickMsg ************************************************************************************/ void TickMsg(void) { } /***********************************************************************************/