/***************************************************************************** SetSystemPara.c *****************************************************************************/ #include "includes.h" CODEC_PARAM codec_param; SUT_MENU sutMenuSysSetup; unsigned char Net_temp_flag; unsigned char QuickGroupSet; unsigned char QuickGrouPIndex; unsigned char QuickGroupSelect; SUT_LCDGPS_SEND_DATA sutLcdGpsSendData; //char ReadApnData(unsigned char *source,unsigned char witchone,char *apnapn,char *apnname,char *apnpass); const static unsigned short g_ausTimeOut[5]={10,30,60,300,0}; static const char*g_ausNetOut[]={"Auto"," 2G "," 3G "," 4G "}; int ApnFileIndex; /*************************************************************************/ unsigned int g_uiGpsStat = 1; unsigned int g_iLCDFlag=0; unsigned short LcdOnTimeCt; unsigned short g_UpdatePocCount; char *APNNAME[APN_NUM+1]= { "APN1", "APN2", "APN3", "APN4", "" }; static const char *accIconFileNameAPN[]={ "APN.bmp", "APN1.bmp", "" }; void SetAPNShow(int update) { int i; static char GroupsFeatures[APN_NUM]; if(update){ if(showApn!=1) { ShowMessageBox("禁止修改"); os_dly_wait(200); UISetNextStatus(UIS_MENU_SYS_SET); return; } if(validApnNum==1) { ShowMessageBox("配置文件无APN"); os_dly_wait(200); UISetNextStatus(UIS_MENU_SYS_SET); return; } GuiClearAll(); ShowCaption("设置APN",2);// GuiDrawHLine(0,159,20,1); //设置Features 将决定选择图标 GroupsFeatures[newPara.apnList.defaultuse]=1; ListBoxInit(&sutListBox,APNNAME,0,accIconFileNameAPN,GroupsFeatures); //---------------------------- GuiDrawHLine(0,159,104,1); GuiShowStr(0,110,"[OK]切换 [P1]详情",0x01); } } void SetSYSResponse(void) { unsigned long key; key=MenuResponse(&sutMenuSysSetup); if(KEY_PANEL_MENU==key){ switch(sutMenuSysSetup.handle){ case 0: UISetNextStatus(UIS_SET_APN); break; case 1: UISetNextStatus(UIS_SET_GPS); break; case 2: UISetNextStatus(UIS_SET_LCD); break; case 3: UISetNextStatus(UIS_SET_NET); break; case 4: UISetNextStatus(UIS_SET_SERVER_PASS); break; case 5: UISetNextStatus(UIS_SET_KEYSound); break; case 6: UISetNextStatus(UIS_SET_SOUNDMODE); break; case 7: UISetNextStatus(UIS_SET_CODETYPE); break; case 8: UISetNextStatus(UIS_SET_PWRMODE); break; case 9: UISetNextStatus(UIS_SET_QUICK_GROUP); break; case 10: UISetNextStatus(UIS_SET_POC_FOTA); break; case 11: UISetNextStatus(UIS_UP_APPRICATION_VER); break; } } // else if(KEY_PANEL_MENU==key){ // UISetNextStatus(UIS_MENU_MAIN); // } else if(KEY_PANEL_EXIT==key){ UISetNextStatus(UIS_MENU_MAIN); //UIS_MENU_SYS_SET } } /*************************************** 注意:CDMA的APN形式跟WCDMA大不相同 W机子是不需要改来改去的 "IP","UNIM2M.NJM2MAPN","0.0.0.0" ****************************************/ void SetAPNResponse(void) { unsigned long key; key=ListBoxResponse(&sutListBox); if(KEY_PANEL_MENU==key) { ShowMessageBox("即将重启更新..."); if(newPara.apnList.defaultuse != sutListBox.handle){ newPara.apnList.defaultuse = sutListBox.handle; //save sys ModifyConfigureFile(0); os_dly_wait(200); modemPwrOffNow=1; }else UISetNextStatus(UIS_MENU_SYS_SET); }else if(KEY_INFO==key) UISetNextStatus(UIS_APN_DETAIL); else if(KEY_PANEL_EXIT==key)UISetNextStatus(UIS_MENU_SYS_SET); } void UIShowPOCSerPass(int update){ if(update){ GuiClearAll();//clear ShowCaption("密码验证",1); //0 GuiDrawHLine(0,LCD_WIDTH,20,1); NumEditInit(&sutNumEdit,(LCD_WIDTH-6*8)/2,(LCD_HEIGHT-16)/2,"000000"); NumEditShow(&sutNumEdit); GuiDrawHLine(0,LCD_WIDTH,104,1); GuiShowStr(0,110,"[上]加值 [下]移动",0x01); } } void POCSetSerPassResponse(void){ unsigned long key; NumEditResponse(&sutNumEdit); if(KEY_PANEL_MENU==g_ulKeyValue){ if(memcmp(sutNumEdit.buffer, menu_key, 6)==0) UISetNextStatus(UIS_SET_SERVER); else{ ShowMessageBox("密码错误"); OsDelayTime(100); UISetNextStatus(UIS_MENU_SYS_SET); } } if(KEY_PANEL_EXIT==g_ulKeyValue) UISetNextStatus(UIS_MENU_SYS_SET); } void UIShowPOCSer(int update){ int i; unsigned char tempSer; static const char *accIconFileName[]={ "Ser.bmp", "Sersel.bmp", "" }; static const char *NameAddr[]={ "杭州服务器", "山东服务器", "IP分发服务器", "集群服务器", "自定义服务器", "" }; static char *tempAddr[5]; static char ItemFeatures[4+1]; if(update){ GuiClearAll(); ShowCaption("服务器列表",2); //0 GuiDrawHLine(0,159,20,1); GuiDrawHLine(0,159,104,1); GuiShowStr(0,110,"[M]确定 [EXIT]退出",0x01); tempSer=newPara.serList.defaultuse; if(hgs_poc_type != POC_OWN){ if(tempSer >= 2) tempSer -= 2; } for(i=0;i<=SER_US;i++){ if(i==tempSer) ItemFeatures[i]=1; else ItemFeatures[i]=0; } //初始化ListBox控件 if(hgs_poc_type == POC_OWN) ListBoxInit(&sutListBox,NameAddr,0,accIconFileName,ItemFeatures); else{ for(i=0;i<2;i++) tempAddr[i]=(char *)NameAddr[i]; tempAddr[i++]=(char *)NameAddr[4]; tempAddr[i++]=(char *)NameAddr[5]; ListBoxInit(&sutListBox,tempAddr,0,accIconFileName,ItemFeatures); } return; } } void POCSetSerResponse(void) { char buf[50],buf1[100]; unsigned long key; char *pip,*domain=NULL; unsigned char tempSer; key=ListBoxResponse(&sutListBox); if(KEY_PANEL_EXIT==key) UISetNextStatus(UIS_MENU_SYS_SET); else if(KEY_PANEL_MENU==key){ tempSer=sutListBox.handle; if(hgs_poc_type != POC_OWN){ if(tempSer >= 2) tempSer += 2;//西安POC没有集群跟IP分发 } if(tempSer != newPara.serList.defaultuse){ newPara.serList.defaultuse=tempSer; ShowMessageBox("配置完成"); //sys save ModifyConfigureFile(0); getGIPAddr();//更新GPS参数 pip=getPIPAddr(); domain=getDOMAINAddr(); CloseGPSSocket(); //西安的POC不支持单段设置,且必须同时配置id与ip,最好不配置domain if(hgs_poc_type==POC_OWN)snprintf(buf, sizeof(buf),"ip=%s;domain=%s;", pip, domain); else snprintf(buf, sizeof(buf),"id=%ld;ip=%s;", sutProductPara.PSN,pip); AscStrToHexStr(buf,buf1); ModemSendAT("AT+POC=010000"); ModemSendAT(buf1); ModemSendAT("\r\n"); IWDG_ReloadCounter(); os_dly_wait(20); ModemSendAT("AT+POC=040000\r\n"); OsDelayTime(100); } UISetNextStatus(UIS_STANDBY ); } } char showIndex; void ShowAPNMessage(char index) { char buf[40]; char temp[40]; unsigned char len; unsigned char i,y,maxLen; i=0; y=22; maxLen=14; GuiClearRect(0, y, LCD_WIDTH-1,LCD_HEIGHT-25); snprintf(buf, sizeof(buf), "%s:",APNNAME[showIndex]); GuiShowStr(1,y+16*i++,buf,0x01); len=strlen(newPara.apnList.apnList[showIndex].account); memcpy(temp, newPara.apnList.apnList[showIndex].account, maxLen); temp[maxLen]=0; snprintf(buf, sizeof(buf), "Name:%s",temp); GuiShowStr(1,y+16*i++,buf,0x01); if(len > maxLen) { memcpy(temp, newPara.apnList.apnList[showIndex].account, maxLen);temp[maxLen]=0; snprintf(buf, sizeof(buf), "%s",temp); buf[len-maxLen]=0; GuiShowStr(1,y+16*i++,buf,0x01); } len=strlen(newPara.apnList.apnList[showIndex].pass); memcpy(temp, newPara.apnList.apnList[showIndex].pass, maxLen); temp[maxLen]=0; snprintf(buf, sizeof(buf), "Pass:%s",temp); GuiShowStr(1,y+16*i++,buf,0x01); if(len > maxLen) { memcpy(temp, newPara.apnList.apnList[showIndex].pass, maxLen);temp[maxLen]=0; snprintf(buf, sizeof(buf), "%s",temp); buf[len-maxLen]=0; GuiShowStr(1,y+16*i++,buf,0x01); } } void SetApnDetailShow(int update) { char buf[40]; if(update) { GuiClearAll(); ShowCaption("APN详情",2);// GuiDrawHLine(0,159,20,1); showIndex=0; ShowAPNMessage(showIndex); //---------------------------- GuiDrawHLine(0,159,104,1); GuiShowStr(0,110,"[EXIT]返回 ",0x01); } } void SetApnDetailResponse(void) { if(KEY_PANEL_DOWN==g_ulKeyValue) { showIndex++; if(showIndex >= validApnNum) showIndex=0; ShowAPNMessage(showIndex); }else if(KEY_PANEL_UP==g_ulKeyValue) { if(showIndex==0) showIndex=validApnNum; if(showIndex > 0) showIndex--; ShowAPNMessage(showIndex); } else if(KEY_PANEL_EXIT==g_ulKeyValue) UISetNextStatus(UIS_SET_APN); } void MakeGpsSendData(void) { unsigned char *data=(unsigned char *)&sutLcdGpsSendData; memset(data, 0, sizeof(SUT_LCDGPS_SEND_DATA)); data[0] = (sutGpsInfo.latitue>>24)&0xFF; data[1] = (sutGpsInfo.latitue>>16)&0xFF; data[2] = (sutGpsInfo.latitue>>8)&0xFF; data[3] = (sutGpsInfo.latitue)&0xFF; data[4] = (sutGpsInfo.longitue>>24)&0xFF; data[5] = (sutGpsInfo.longitue>>16)&0xFF; data[6] = (sutGpsInfo.longitue>>8)&0xFF; data[7] = (sutGpsInfo.longitue)&0xFF; } /***************************************************** 深圳北纬22.33 东经114.07 经过试验数据比较准确,但是东西南北不知道 ******************************************************/ void GetCoordinates(unsigned char type) { //type 0 UI时调用 // 1 上传时调用 char buf[30]; //char buf0[15]={0}; char buf1[8]; char buf2[4]={0}; char temp[3]; char temp1[3]; char temp2[5]; char temp3[5]; int i,num,num1,w,j; double Jnum1,Jnum2,Jnum3;//有小数位 8位有效 double Wnum1,Wnum2,Wnum3;//有小数位 8位有效 // char* g_cGetlongitude; // char* g_cGetlatitude; MakeGpsSendData(); AscStrTurnHexStr((char *)sutLcdGpsSendData.JJJJ,buf1); memset(temp, 0, sizeof(temp)); for(i=0;i<3;i++){ temp[i]=buf1[i]; } j=atoi(temp); memset(temp2, 0, sizeof(temp2)); for(i=0;i<6;i++){ temp2[i]=buf1[i+3]; } num=atoi(temp2); Jnum1=num/1000; Jnum1 /=60; Jnum2 = (num%1000)*60; Jnum2 /=3600000; Jnum3=Jnum1+Jnum2; //sutLcdGpsSendData.j=j*1000000+Jnum3*1000000; // sutLcdGpsSendData.j = (j+Jnum3)*1000000; //Getlongitude; //Getlatitude; sutGpsInfo.testJD = j*1000000+Jnum3*1000000;//上传时使用 // if(type == 0){//UI时要显示 // sprintf(buf,"经度 %s: %d.%05d","W",j,(unsigned int)(Jnum3*100000)); // GuiShowStr(0,40,buf,0x01); // } AscStrTurnHexStr((char *)sutLcdGpsSendData.WWWW,buf2); for(i=0;i<3;i++){ temp1[i]=buf2[i]; } w=atoi(temp1); for(i=0;i<6;i++){//5 temp3[i]=buf2[i+3]; } num1=atoi(temp3); Wnum1=num1/1000; Wnum1 /=60; Wnum2 = (num1%1000)*60; Wnum2 /=3600000; Wnum3=Wnum1+Wnum2; sutGpsInfo.testWD = w*1000000+Wnum3*1000000; if(type == 0){//UI时要显示 snprintf(buf, sizeof(buf)," 纬度 %s: %.3d.%05d","S",w,(unsigned int)(Wnum3*100000)); GuiShowStr(0,24,buf,0x01); snprintf(buf, sizeof(buf)," 经度 %s: %d.%05d","W",j,(unsigned int)(Jnum3*100000)); GuiShowStr(0,40,buf,0x01); } } void SetGPSTimeShowDetail(unsigned char timeIndex) { unsigned short tempTime; char buf[10]; tempTime = GPS_TimeTable[timeIndex]; GuiClearRect(100,56,LCD_WIDTH-1, 56+16); if(tempTime==0) { GuiShowStr(100,56," 关闭 ",0x01);//130 GuiReverseRect(108,56,16*2,16); }else { snprintf(buf, sizeof(buf)," %02d 秒",tempTime); GuiShowStr(100,56,buf,0x01);//130 if(tempTime > 99) GuiReverseRect(108,56,24,16); else GuiReverseRect(108,56,16,16); } } /*********************************************************/ void SetGPSShow(int update) { static unsigned short susCt=0; if(update){ GuiClearAll(); ShowCaption("北斗设置",1);// GuiShowStr(0,56,"北斗上传设置: 秒",0x01); //sutGpsInfo.SendTime GuiDrawHLine(0,159,20,1); GetCoordinates(0); sutGpsInfo.GPS_TimeIndexBackup = newPara.gpsTimeIndex; SetGPSTimeShowDetail(sutGpsInfo.GPS_TimeIndexBackup); GuiDrawHLine(0,159,104,1); susCt=0; } if(susCt==0){ GuiShowStr(0,110,"[上]选择 [下]选择 ",0x01); }else if(susCt==200){ GuiShowStr(0,110,"[M]保存 [EXIT]退出",0x01); } if(++susCt>=400)susCt=0; } void SetGPSResponse(void) { switch(g_ulKeyValue) { case KEY_PANEL_UP: case KEY_PANEL_DOWN: if(g_ulKeyValue==KEY_PANEL_UP) { if(sutGpsInfo.GPS_TimeIndexBackup<(GPS_TABLE_NUM-1)) sutGpsInfo.GPS_TimeIndexBackup++; else sutGpsInfo.GPS_TimeIndexBackup=0; }else{ if(sutGpsInfo.GPS_TimeIndexBackup==0) sutGpsInfo.GPS_TimeIndexBackup=GPS_TABLE_NUM-1; else sutGpsInfo.GPS_TimeIndexBackup--; } SetGPSTimeShowDetail(sutGpsInfo.GPS_TimeIndexBackup); break; case KEY_PANEL_MENU: if(sutGpsInfo.GPS_TimeIndexBackup != newPara.gpsTimeIndex) {//changed newPara.gpsTimeIndex = sutGpsInfo.GPS_TimeIndexBackup; GpsTimeUpdate(); //save sys ModifyConfigureFile(1); } UISetNextStatus(UIS_STANDBY); break; case KEY_PANEL_EXIT: UISetNextStatus(UIS_MENU_SYS_SET);break; //case KEY_PANEL_MENU: UISetNextStatus(UIS_MENU_MAIN);break; } } unsigned char SetTimeIndex; void SetLCDShow(int update) { static unsigned short susCt=0; char buf[10]; char buf1[6]; int x=4;//4 int i; if(update==1){ SetTimeIndex=newPara.lcdParaDefaultIndex; GuiClearAll(); ShowCaption("LCD设置",1);//0 GuiDrawHLine(0,159,20,1); GuiShowStr(x,56," 背光时间: ",1); if(SetTimeIndex==4) snprintf(buf, sizeof(buf),"常亮 "); else snprintf(buf, sizeof(buf),"%3d 秒",newPara.lcdParaList[SetTimeIndex]); GuiShowStr(x+(16*5),56,buf,1); GuiReverseRect(x+(16*5),56,32,16); snprintf(buf1, sizeof(buf1),"%3d",SetTimeIndex); SlwTrace(INF,buf1,1); GuiDrawHLine(0,159,104,1); susCt=0; //return; }else if(update == 2){ if(SetTimeIndex==4) snprintf(buf, sizeof(buf),"常亮 "); else snprintf(buf, sizeof(buf),"%3d 秒",newPara.lcdParaList[SetTimeIndex]); GuiShowStr(x+(16*5),56,buf,1); GuiReverseRect(x+(16*5),56,32,16); GuiDrawHLine(0,159,104,1); } if(susCt==0){ GuiShowStr(0,110,"[上]选择 [下]选择 ",0x01); }else if(susCt==200){ GuiShowStr(0,110,"[M]保存 [EXIT]退出",0x01); } if(++susCt>=400)susCt=0; } void SetLCDResponse(void) { int FileIndex; unsigned long key; char Buf[10]; int x=4;//4 //TimeOut[] // key=ListBoxResponse(&sutListBox); switch(g_ulKeyValue){ case KEY_PANEL_UP: if(++SetTimeIndex>=5)SetTimeIndex=0; SetLCDShow(2);//0 break; case KEY_PANEL_DOWN: if(SetTimeIndex>0)SetTimeIndex--; else SetTimeIndex=4; SetLCDShow(2);//0 break; case KEY_PANEL_MENU: g_iLCDFlag=1; if(SetTimeIndex != newPara.lcdParaDefaultIndex){ newPara.lcdParaDefaultIndex=SetTimeIndex; //save sys ModifyConfigureFile(1); } UISetNextStatus(UIS_MENU_SYS_SET); break; case KEY_PANEL_EXIT: UISetNextStatus(UIS_MENU_SYS_SET); break; // case KEY_PANEL_MENU: // UISetNextStatus(UIS_MENU_MAIN); // break; } // //-- // if(KEY_PANEL_UP==key){ // Index++; // if(Index==5)Index=0; // GuiClearArea(32, 56, 170, 24); // sprintf(Buf,"LCD定时:%d秒",TimeOut[Index]); // GuiShowStr(32,56,Buf,1); // } // //-- // if(KEY_PANEL_DOWN==key){ // if(Index==0)Index=5; // Index--; // GuiClearArea(32, 56, 170, 24); // sprintf(Buf,"LCD定时:%d秒",TimeOut[Index]); // GuiShowStr(32,56,Buf,1); // } // //-- // if(KEY_PANEL_OK==key){ // g_LCDFlag=1; // g_LCDTimeCt = TimeOut[Index]+5; // g_LCDTemp=TimeOut[Index]+5; // } // if(KEY_PANEL_EXIT==key)UISetNextStatus(UIS_STANDBY); // else if(KEY_PANEL_MENU==key)UISetNextStatus(UIS_MENU_MAIN); } unsigned char modemProcessFlash=0; MODEM_UPDATE_DEF m_updStatus; unsigned char m_process=0; int m_updateTimeout=0; char updateStart=0; void UpdateStatus(MODEM_UPDATE_DEF status) { modemProcessFlash=1; m_updStatus=status; m_updateTimeout=0; } char GetApnPara(unsigned char *source, unsigned char whitchOne,unsigned short *accessP, unsigned short *account,unsigned short *passw) { unsigned char *ptr=source; unsigned char getFlag=0; unsigned short i,noteAddress[9];//总共3组,共9个;号 if(whitchOne >=3) return 1;//只有3组值 i=0; while(*ptr != 0) { if(*ptr == ';') { if(getFlag < 9) { noteAddress[getFlag++]=i; }else{ //收够了 break; } } i++; ptr++; } if(getFlag != 9) return 2;//资源文件内容有错误 switch(whitchOne) { case 0:*accessP=0;*account=noteAddress[0]+1;*passw=noteAddress[1]+1;break; case 1:*accessP=noteAddress[2]+1;*account=noteAddress[3]+1;*passw=noteAddress[4]+1;break; case 2:*accessP=noteAddress[5]+1;*account=noteAddress[6]+1;*passw=noteAddress[7]+1;break; } return 0; } //char ReadApnData(unsigned char *source,unsigned char witchone,char *apnapn,char *apnname,char *apnpass) //{//从缓存中获取数据段,一次一组 // unsigned char *accessPV,*accountV,*passwV; // unsigned short accessP,account,passw; // unsigned short i; // char buf[30]; // if(GetApnPara(source, witchone, &accessP, &account, &passw)) // { // SlwTrace(INF, "HGS.apn dataErr",1);//如果初始化失败,则直接使用内存中的了 // return 1; // } // accessPV=source+accessP; // accountV=source+account; // passwV=source+passw; // //accesspoint // if(apnapn != 0) // { // if(*accessPV == ';') apnapn[0] = 0;//空数据段 // else{ // for(i=0;i30) tempLen=30; memcpy(name, finalData, tempLen); name[tempLen]=0; tempLen=strlen(finalData+j); if(tempLen>30) tempLen=30; memcpy(pass, finalData+j, tempLen); pass[tempLen]=0; return 1; } unsigned char validApnNum; void SetNetResponse(void) { switch(g_ulKeyValue){ case KEY_PANEL_UP: if(++Net_temp_flag>=NET_MODE_NUM_MAX)Net_temp_flag=0; //3 SetNetShow(2);//0 break; case KEY_PANEL_DOWN: if(Net_temp_flag>0)Net_temp_flag--; else Net_temp_flag=NET_MODE_NUM_MAX-1; //2 SetNetShow(2);//0 break; case KEY_PANEL_MENU: newPara.netMode=Net_temp_flag; //save sys ModifyConfigureFile(1); GetMododexWithCard(); UISetNextStatus(UIS_MENU_SYS_SET); break; case KEY_PANEL_EXIT: UISetNextStatus(UIS_MENU_SYS_SET); break; } } void SetNetShow(int update) { static unsigned short susCt=0; char buf[10]; unsigned char len=0; char buf2[20]; int x=12;//4 if(update==1){ GuiClearAll(); ShowCaption("网络设置",1); GuiDrawHLine(0,159,20,1); GuiShowStr(x,56," 网络选择: ",1); snprintf(buf2,sizeof(buf2),"MODE:%s",GetCaptionByMododex(Mododrex_Net)); //GuiShowStr(x,86,buf2,1); ShowCaption(buf2,86); snprintf(buf, sizeof(buf),"%s",g_ausNetOut[newPara.netMode]); len=strlen(buf); GuiShowStr(x+(16*5),56,buf,1); GuiReverseRect(x+(16*5),56,8*len,16);//5 GuiDrawHLine(0,159,104,1); susCt=0; }else if(update == 2){ memset(buf,0,sizeof(buf)); snprintf(buf, sizeof(buf),"%s",g_ausNetOut[Net_temp_flag]); len=strlen(buf); GuiShowStr(x+(16*5),56,buf,1); GuiReverseRect(x+(16*5),56,8*len,16);//5 GuiDrawHLine(0,159,104,1); } if(susCt==0){ GuiShowStr(0,110,"[上]选择 [下]选择 ",0x01); }else if(susCt==200){ GuiShowStr(0,110,"[M]保存 [EXIT]退出",0x01); } if(++susCt>=400)susCt=0; } void ShowNetCaption(unsigned char g_net) { switch(g_net) { case 0: ShowCaption("当前(Auto)",1); // break; case 1: ShowCaption("当前(2G+3G)",1); // break; case 2: ShowCaption("当前(4g模式)",1); // break; default: break; } } void GetMododexWithCard(void) { char buf[30]; //根据CardType和ModeSetup转换为Mododex值的一个表 //static const unsigned char MododrxTable[3][3]={{11,24,5},{2,8,5},{17,21,5}}; static const unsigned char MododrxTable[3][4]={{11,15,10,5},{2,25,7,5},{17,25,1,5}};// 自动 2-4 snprintf(buf,sizeof(buf),"AT+MODODREX=%d\r\n",MododrxTable[thisYunYingShang][newPara.netMode]); SlwTrace(INF,buf,1); ModemSendAT(buf); } const char *GetCaptionByMododex(unsigned int mododex) { static const char *CaptionTable[]={ "", "UMTS ONLY",//1 "AUTO(LTE)", "CDMA AND GSM", "AUTO(TDS)", "LTE ONLY", "TDS ONLY", "TDS WCDMA", "TDS GSM WCDMA", "TDS WCDMA LTE", "HDR ONLY", "AUTO (TELECOM)", "AUTO(HDR)", "CDMA HDR LTE", "CDMA HDR", "CDMA ONLY", "AUTO(TDS,LTE)", "AUTO(LTE,WCDMA)", "AUTO(WCDMA,GSM)", "AUTO(WCDMA,LTE)", "LTE WCDMA ONLY", "WCDMA GSM ONLY", "LTE AND TDS", "LTE GSM ONLY", "CDMA HDR WCDMA GSM", "GSM ONLY", }; return CaptionTable[mododex]; } /***************************场景模式设置******************************/ void SetSoundModeShow(int update) { int i; const char*ModeName[]={ "室内模式", "室外模式", "" }; char GroupsFeatures[2]; memset(GroupsFeatures,0,sizeof(GroupsFeatures)); if(update){ GuiClearAll(); ShowCaption("场景模式",2);// GuiDrawHLine(0,159,20,1); //设置Features 将决定选择图标 GroupsFeatures[newPara.SoundMode]=1; ListBoxInit(&sutListBox,ModeName,0,accIconFileNameAPN,GroupsFeatures); //---------------------------- GuiDrawHLine(0,159,104,1); GuiShowStr(0,110,"[OK]切换 [EXIT]退出",0x01); } } void SetSoundModeResponse(void) { unsigned long key; unsigned char buf[30]; snprintf(buf,sizeof(buf),"AT+LVL=4,%d\r\n",newPara.lvl); key=ListBoxResponse(&sutListBox); if(KEY_PANEL_MENU==key) { if(newPara.SoundMode!=sutListBox.handle){ newPara.SoundMode=sutListBox.handle; // if(newPara.SoundMode==1){ // ModemSendAT("at+syscmd=start_pcm volume 7 7\r\n"); // } // else ModemSendAT(buf);// ModemSendAT("at+syscmd=start_pcm volume 7 5\r\n"); snprintf(buf,sizeof(buf),"AT+LVL=4,%d\r\n",newPara.SoundMode<1?newPara.lvl:newPara.OutDoorLvl); ModemSendAT(buf); ModifyConfigureFile(1); } UISetNextStatus(UIS_MENU_SYS_SET); } else if(KEY_PANEL_EXIT==key)UISetNextStatus(UIS_MENU_SYS_SET); } /***************************提示音设置******************************/ unsigned char tempKeySound; void keySoundFlash(void) { char info[20]; int x=12,len; if(tempKeySound==0) sprintf(info, "关闭"); else sprintf(info, "打开"); len=strlen(info); GuiShowStr(x+(16*4),56,info,1); GuiReverseRect(x+(16*4),56,8*len,16);//5 } void SetKeySoundShow(int update) { static unsigned short susCt=0; int x=12;//4 if(update==1){ GuiClearAll(); ShowCaption("PTT提示音设置",1); GuiDrawHLine(0,159,20,1); GuiShowStr(x,56," 开关:",1); tempKeySound=newPara.KeySound; keySoundFlash(); GuiDrawHLine(0,159,104,1); susCt=0; } if(susCt==0) GuiShowStr(0,110,"[上]选择 [下]选择",0x01); else if(susCt==200) GuiShowStr(0,110,"[M]保存 [EXIT]退出",0x01); if(++susCt>=400)susCt=0; } void SetKeysoundResponse(void) { switch(g_ulKeyValue){ case KEY_PANEL_UP: case KEY_PANEL_DOWN: if(tempKeySound==0) tempKeySound=1; else tempKeySound=0; keySoundFlash(); break; case KEY_PANEL_MENU: if(tempKeySound != newPara.KeySound){ newPara.KeySound=tempKeySound; //save sys ModifyConfigureFile(1); } UISetNextStatus(UIS_MENU_SYS_SET); break; case KEY_PANEL_EXIT: UISetNextStatus(UIS_MENU_SYS_SET); break; } } typedef enum{ PMODE_NORMAL, PMODE_DEFAULT_LOW, PMODE_SUPER_LOW, PMODE_WCDMA_LOW }PWR_ENUMDEF; void SetPowerModeShow(int update) { int i; const char*ModeName[]={//这里数量变了记得修改 PWR_MODE_NUM "常规模式", "低功耗模式", "超低功耗模式", //"WCDMA模式", "" }; char GroupsFeatures[PWR_MODE_NUM]; memset(GroupsFeatures,0,sizeof(GroupsFeatures)); if(update){ GuiClearAll(); ShowCaption("模式设置",2);// GuiDrawHLine(0,159,20,1); //设置Features 将决定选择图标 GroupsFeatures[newPara.pwrMode]=1; ListBoxInit(&sutListBox,ModeName,0,accIconFileNameAPN,GroupsFeatures); //---------------------------- GuiDrawHLine(0,159,104,1); GuiShowStr(0,110,"[OK]切换 [EXIT]退出",0x01); } } //超长功耗 #define MODE_LONG_LOW_PWR_NONE_4G 5 #define MODE_LONG_LOW_PWR_IS_4G 55 //默认为低功耗模式 #define MODE_LOW_PWR_NONE_4G 5 #define MODE_LOW_PWR_IS_4G 25 //使用常规非低功耗模式 #define MODE_NORMAL__NONE_4G 5 #define MODE_NORMAL__IS_4G 5 //WCDMA模式 #define MODE_WCDMA__NONE_4G 5 #define MODE_WCDMA__PWR_IS_4G 15 //终端放弃设置模式,由服务器决定使用什么情况 #define MODE_AUTO____NONE_4G 0 #define MODE_AUTO____IS_4G 0 void ModemSetPwrMode(unsigned char mode) { char info[30]; unsigned char seg1,seg2; switch(mode){ case PMODE_DEFAULT_LOW: seg1=MODE_LOW_PWR_NONE_4G;seg2=MODE_LOW_PWR_IS_4G;break;//默认为低功耗模式 case PMODE_SUPER_LOW: seg1=MODE_LONG_LOW_PWR_NONE_4G;seg2=MODE_LONG_LOW_PWR_IS_4G;break;//超长功耗 case PMODE_NORMAL: seg1=MODE_NORMAL__NONE_4G;seg2=MODE_NORMAL__IS_4G;break;//使用常规非低功耗模式 //case PMODE_WCDMA_LOW: seg1=MODE_WCDMA__NONE_4G; seg2=MODE_WCDMA__PWR_IS_4G;break;//使用WCDMA 功耗模式 default:return; } snprintf(info, sizeof(info), "AT+UDP=%d,%d\r\n",seg1,seg2); ModemSendAT(info); SlwTrace(INF, info,0); } void SetPowerModeResponse() { unsigned long key; key=ListBoxResponse(&sutListBox); if(KEY_PANEL_MENU==key){ if(sutListBox.handle != newPara.pwrMode){ newPara.pwrMode=sutListBox.handle; ModemSetPwrMode(newPara.pwrMode); ModifyConfigureFile(1); } UISetNextStatus(UIS_MENU_SYS_SET); }else if(KEY_PANEL_EXIT==key){ UISetNextStatus(UIS_MENU_SYS_SET); } } void GetPwrMode(char *msg) {//0,5,30 //1,30,30 int seg1,seg2; short i; char buf[10]; if(msg[0]=='0') return; for(i=2;i30) tempLen=30; memcpy(name, finalData, tempLen); name[tempLen]=0; sprintf(buf,"===%s",name); SlwTrace(INF,buf,0); // tempLen=strlen(finalData+j); if(tempLen>30) tempLen=30; memcpy(pass, finalData+j, tempLen); pass[tempLen]=0; sprintf(buf,"===%s",pass); SlwTrace(INF,buf,1); return 1; } int CodecFileInit(void) { int len; char tempData[40]; char name[10]; char pass[10]; char buf[40]; char CodecFileIndex=0; int tempLen,i; char ret=0; CodecFileIndex=GetFileIndex("codec.ini"); if(CodecFileIndex == -1) { printf("No codec.ini file\r\n"); codec_param.CodecNum=0; return -1; } len=GetFileLen(CodecFileIndex); if(len==0) { printf("codec.ini empty\r\n"); return-2; } // //读出数据 // if(HgsApnLen > sizeof(tempData)) // { // printf("codec.ini len=%d,should <=%d\r\n",HgsApnLen,sizeof(tempData)); // HgsApnLen=sizeof(tempData); // } //REG_NUM=005; tempLen=ReadFileData(CodecFileIndex,0,14,(u8*)tempData); //文件,start地址,长度 ,返回数据 tempLen=GetParaFromStr(tempData, "REG_NUM", name); if(tempLen==0) { printf("No 'REG_NUM'\r\n"); return -2; }else{ codec_param.CodecNum=atoi(name); if(codec_param.CodecNum>CODEC_NUM){ printf("REG_NUM OVER:%d\r\n", codec_param.CodecNum); codec_param.CodecNum=0; return -3; } } printf("REG_NUM:%d\r\n", codec_param.CodecNum); //读出数据 for(i=0;i=400)susCt=0; //400 } void SetQuickGroupResponse(void) { unsigned long key; key=ListBoxResponse(&sutListBox); if(KEY_PANEL_MENU==key ) { if(sutListBox.handle==0)QuickGroupSet=!QuickGroupSet; else { QuickGroupSelect=1; QuickGrouPIndex=sutListBox.handle-1; UISetNextStatus(UIS_MENU_GROUP_SEL); } } else if(KEY_PANEL_EXIT==key){ if(QuickGroupSet==1){ QuickGroupSet=0; }else{ QuickGroupSet=0; QuickGroupSelect=0; ModifyConfigureFile(0); UISetNextStatus(UIS_MENU_SYS_SET); } } }