#include "includes.h" SUT_MODEM_AT_MSG sutAtm,sutAtmPro; unsigned char ModemVer[15]; void ModemPinConfig(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Pin = MODEM_RESET_PIN; GPIO_Init(MODEM_RESET_PORT, &GPIO_InitStructure); // GPIO_InitStructure.GPIO_Pin = MODEM_PWRKEY_PIN; // // GPIO_Init(MODEM_PWRKEY_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = MODEM_PWREN_PIN; GPIO_Init(MODEM_PWREN_PORT, &GPIO_InitStructure); //USBorTTL SWITCH GPIO_InitStructure.GPIO_Pin = USBORTTL_PIN; GPIO_Init(USBORTTL_PORT, &GPIO_InitStructure); //MODEM DATE or UPDATE GPIO_InitStructure.GPIO_Pin = MODEM_UPDATE_PIN; GPIO_Init(MODEM_UPDATE_PORT, &GPIO_InitStructure); USBORTTL_HIGH; MODEM_UPDATE_LOW; // USBORTTL_LOW; // MODEM_UPDATE_HIGH; MODEM_RESET_LOW; //MODEM_PWREN_LOW; } void ModemSendAt(char *p){ unsigned short len; len=strlen(p); Uart2Send((unsigned char *)p,len); } /************************************************************************************ * *************************************************************************************/ void ModemSendData(unsigned char *pData,unsigned short datalen) { Uart2Send(pData,datalen); } void ModemVersionGet(char *msg) {//InnerVersion: LLA0029_0016_1.0.57_L0901_EFS2.6 char j,bufTemp[30],version[10],type,countFlag; if(0==ModemStrCmp(msg,"InnerVersion:")){ countFlag=0; for(j=0;j%s", bufTemp,msg); SlwTrace(INF, bufTemp,0); // g_iPocVer=ver; return; }else if(msg[i] >= '0' && msg[i] <= '9') bufTemp[j++]=msg[i]; } } void CheckPocType(void) { hgs_poc_type=POC_OWN;//默认是西安的,然后通过POC版本号来判断是西安的还是自研的POC } void ModemOwnPocSet(void) { if(hgs_poc_type != POC_OWN) return; ModemSendAt("AT+POC=3000000100\r\n");//GBK __nop();__nop(); ModemSendAt("AT+POC=030000\r\n");//启动登陆,POC默认打开的 __nop();__nop(); } void getPocCode(char *msg){ if(msg[14]=='0') sutPocStatus.codeType=0; else sutPocStatus.codeType=1; printf("PocCode:%d\r\n", sutPocStatus.codeType); } //total 成员总数 //一次获取个数最多5个,取决于显示条目个数 //前提是要使用简短模式 char SimpleUserInfoScan(uint8_t firstIn,uint8_t direction) { static char first=1; static unsigned char machine; static unsigned int timer; char buf[40];//30 char ret =0; if(firstIn && first){ sutPocStatus.handleIndex=0;//当前页 machine=0; first=0; ret=0; } switch(machine){ case 0: //ShowMessageBox("请稍候..."); if(sutUIstatus.Status==UIS_MENU_GROUP_SEL){ if(hgs_poc_type==POC_BND) snprintf(buf, sizeof(buf),"AT+POC=groupnum\r\n");//先更新总数 else snprintf(buf, sizeof(buf),"AT+POC=3D0000\r\n");//先更新总数 } else { if(hgs_poc_type==POC_BND)snprintf(buf, sizeof(buf),"AT+POC=membernum,%d\r\n",sutPocStatus.LocalGroup.ID);//先更新总数 else snprintf(buf, sizeof(buf),"AT+POC=3E0000\r\n");//先更新总数 } ModemSendAt(buf); SlwTrace(INF,buf,0); sutPocStatus.ListUpdate=0; sutPocStatus.ListFillIndex=0; uTimerStart(&timer, 500);//500 machine=1; break; case 1: if(sutPocStatus.ListUpdate || uTimerExpired(&timer) ){ if(sutPocStatus.ListCurOnlineNum<=0){ sutPocStatus.ListFillIndex=0; printf("sutPocStatus.ListUpdate==%d,ListCurOnlineNum==%d\r\n",sutPocStatus.ListUpdate,sutPocStatus.ListCurOnlineNum); goto QUIT_FUNCTION; } machine=2; } break; case 2: /* 第一次进来不操作页数 后续判定sutPocStatus.handleIndex 页是否合法 注意处理临界值 5的倍数 */ if(firstIn!=1){ if(direction==1){ sutPocStatus.handleIndex ++; if(sutPocStatus.handleIndex>sutPocStatus.ListCurOnlineNum/LIST_ROW){ sutPocStatus.handleIndex=0; } if(sutPocStatus.ListCurOnlineNum%LIST_ROW==0){ if(sutPocStatus.handleIndex==sutPocStatus.ListCurOnlineNum/LIST_ROW)sutPocStatus.handleIndex=0; } } else { if(sutPocStatus.handleIndex>0)sutPocStatus.handleIndex--; else if(sutPocStatus.handleIndex==0){ if(sutPocStatus.ListCurOnlineNum%LIST_ROW==0)sutPocStatus.handleIndex=(sutPocStatus.ListCurOnlineNum/LIST_ROW)-1; else sutPocStatus.handleIndex=sutPocStatus.ListCurOnlineNum/LIST_ROW; printf("sutPocStatus.ListCurOnlineNum===%d,sutPocStatus.handleIndex==%d\r\n",sutPocStatus.ListCurOnlineNum,sutPocStatus.handleIndex); } } } /* 下面操作只决定 预读值sutPocStatus.ExceptionReadNum */ if((sutPocStatus.handleIndex+1)*LIST_ROW >sutPocStatus.ListCurOnlineNum){ //超过 首页 +1 snprintf(buf, sizeof(buf), "over:%d",sutPocStatus.handleIndex); SlwTrace(INF, buf, 1); if(sutPocStatus.ListCurOnlineNum%LIST_ROW==0)sutPocStatus.ExceptionReadNum=LIST_ROW; else sutPocStatus.ExceptionReadNum=sutPocStatus.ListCurOnlineNum%LIST_ROW; } else{ sutPocStatus.ExceptionReadNum=LIST_ROW; //普通情况 } sutPocStatus.ListFillIndex=0; machine=3; break; case 3: sutPocStatus.ListGetOneFlag=0; //起始 //个数//LIST_ROW if(sutUIstatus.Status==UIS_MENU_GROUP_SEL){ if(hgs_poc_type==POC_BND) snprintf(buf, sizeof(buf),"AT+POC=groups,%d+1,%d\r\n",sutPocStatus.handleIndex*5,LIST_ROW);//先更新总数 else snprintf(buf, sizeof(buf), "AT+POC=1D0000%04x000%d\r\n",sutPocStatus.handleIndex*LIST_ROW,LIST_ROW); } else { if(hgs_poc_type==POC_BND) snprintf(buf, sizeof(buf),"AT+POC=members,%d,%d+1,%d\r\n",sutPocStatus.LocalGroup.ID,sutPocStatus.handleIndex*LIST_ROW,LIST_ROW); else snprintf(buf, sizeof(buf), "AT+POC=1E0000%04x000%d\r\n",sutPocStatus.handleIndex*LIST_ROW,LIST_ROW); } ModemSendAt(buf); SlwTrace(INF, buf,0); uTimerStart(&timer, 200); machine=4; break; case 4: if(sutPocStatus.ListGetOneFlag){//获取成功 machine=5; } if(uTimerExpired(&timer)){ machine=5;//超时了,结束 } break; case 5: //最终成功读了多少个回来,存在sutPocStatus.FillUserIndex中 QUIT_FUNCTION: first=1; GuiClearRect(0, 40, LCD_WIDTH-1, LCD_HEIGHT-32); machine=0;// return 1; break; } return ret; }