| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021 |
- /*****************************************************************************
- SetSystemPara.c
- *****************************************************************************/
- #include "includes.h"
- SUT_MENU sutMenuSysSetup;
- unsigned char Net_temp_flag;
- 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;
- SUT_LCD_PARAM sutLcdParam;
- unsigned short g_UpdatePocCount;
- char showApnTable[2*APN_NUM][31];
- char *APNNAME[APN_NUM+1]=
- {
- "APN1",
- "APN2",
- "APN3",
- "APN4",
- ""
- };
- void SetAPNShow(int update)
- {
- #if 1
- int i;
- static const char *accIconFileName[]={
- "APN.bmp",
- "APN1.bmp",
- ""
- };
- 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[sutProductPara.APNIndex]=1;
- ListBoxInit(&sutListBox,APNNAME,0,accIconFileName,GroupsFeatures);
- //----------------------------
- GuiDrawHLine(0,159,104,1);
- GuiShowStr(0,110,"[OK]切换 [P1]详情",0x01);
- }
- #else
- int i;
- static unsigned short susCt=0;
- static const char *accIconFileName[]={"APN.bmp","APN1.bmp",""};
- unsigned char buf[300];
- static char NullGroup=0;
- static char GroupsFeatures[APN_NUM];
- static char *APNAPN[APN_NUM];
- char NullPtr[]="";
- if(update){
- susCt=0;
- GuiClearAll();
- ShowCaption("设置APN",1);//
- GuiDrawHLine(0,159,20,1);
- ReadFileData(ApnFileIndex,0,sizeof(buf),buf);
- for(i=0;i<3;i++)
- {//读取三组接入点名称
- if(ReadApnData(buf, i, &showApn[i][0], 0,0))
- {
- return;
- }
- }
- //付给用于显示的指针
- APNAPN[0]=&showApn[0][0];
- APNAPN[1]=&showApn[1][0];
- APNAPN[2]=&showApn[2][0];
- APNAPN[3]=NullPtr;
- APNAPN[4]=NullPtr;
- //----------------------------
- for(i=0;i<APN_NUM;i++){
- GroupsFeatures[i]=0;
- }
-
- //设置Features 将决定选择图标
- if(0==strcmp(sutProductPara.APNApn, APNAPN[0])) GroupsFeatures[0]=1;
- else if(0==strcmp(sutProductPara.APNApn, APNAPN[1])) GroupsFeatures[1]=1;
- else if(0==strcmp(sutProductPara.APNApn, APNAPN[2])) GroupsFeatures[2]=1;
- else{
- //如果以上三种都不是,则认为是用户自定义的了
- APNAPN[3]=sutProductPara.APNApn;
- GroupsFeatures[3]=1;
- }
- ListBoxInit(&sutListBox,APNAPN,0,accIconFileName,GroupsFeatures);
- //----------------------------
- GuiDrawHLine(0,159,104,1);
- GuiShowStr(0,110,"[M]切换 ",0x01);
- }
- #endif
- }
-
- 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_UP_INTERCOM_VER);
- break;
- case 5:
- // UISetNextStatus(UIS_UP_INTERCOM_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("即将重启更新...");
- sutProductPara.APNIndex=sutListBox.handle;
- strcpy(sutProductPara.APNName, showApnTable[2*sutProductPara.APNIndex]);
- strcpy(sutProductPara.APNPass, showApnTable[2*sutProductPara.APNIndex+1]);
- SaveProductParaToFlash("MENU_SWAPN");
- os_dly_wait(200);
- modemPwrOffNow=1;
- }else if(KEY_INFO==key) UISetNextStatus(UIS_APN_DETAIL);
- else if(KEY_PANEL_EXIT==key)UISetNextStatus(UIS_MENU_SYS_SET);
- }
- 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(showApnTable[2*showIndex]);
- memcpy(temp, showApnTable[2*showIndex], maxLen);
- temp[maxLen]=0;
- snprintf(buf, sizeof(buf), "Name:%s",temp);
- GuiShowStr(1,y+16*i++,buf,0x01);
- if(len > maxLen)
- {
- strcpy(temp, &showApnTable[2*showIndex][maxLen]);
- snprintf(buf, sizeof(buf), "%s",temp);
- buf[len-maxLen]=0;
- GuiShowStr(1,y+16*i++,buf,0x01);
- }
- len=strlen(showApnTable[2*showIndex+1]);
- memcpy(temp, showApnTable[2*showIndex+1], maxLen);
- temp[maxLen]=0;
- snprintf(buf, sizeof(buf), "Pass:%s",temp);
- GuiShowStr(1,y+16*i++,buf,0x01);
- if(len > maxLen)
- {
- strcpy(temp, &showApnTable[2*showIndex+1][maxLen]);
- 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];
- 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
- 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 = sutProductPara.m_GPS_TimeIndex;
- 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<(sizeof(GPS_TimeTable)-1))
- sutGpsInfo.GPS_TimeIndexBackup++;
- else
- sutGpsInfo.GPS_TimeIndexBackup=0;
- }else{
- if(sutGpsInfo.GPS_TimeIndexBackup==0)
- sutGpsInfo.GPS_TimeIndexBackup=sizeof(GPS_TimeTable)-1;
- else
- sutGpsInfo.GPS_TimeIndexBackup--;
- }
- SetGPSTimeShowDetail(sutGpsInfo.GPS_TimeIndexBackup);
- break;
- case KEY_PANEL_MENU:
- if(sutGpsInfo.GPS_TimeIndexBackup != sutProductPara.m_GPS_TimeIndex)
- {//changed
- sutProductPara.m_GPS_TimeIndex = sutGpsInfo.GPS_TimeIndexBackup;
- GpsTimeUpdate();
- SaveProductParaToFlash("MENU_SWGPS");
- }
-
- UISetNextStatus(UIS_STANDBY);
- break;
- case KEY_PANEL_EXIT: UISetNextStatus(UIS_MENU_SYS_SET);break;
- //case KEY_PANEL_MENU: UISetNextStatus(UIS_MENU_MAIN);break;
- }
- }
- void SetLCDShow(int update)
- {
- static unsigned short susCt=0;
- char buf[10];
- char buf1[6];
- int x=4;//4
- int i;
- if(update==1){
- for(i=0;i<5;i++)sutLcdParam.SetTime[i]=g_ausTimeOut[i];
-
- sutLcdParam.SetTimeIndex=sutLcdParam.OnTimeIndex;
- GuiClearAll();
- ShowCaption("LCD设置",1);//0
- GuiDrawHLine(0,159,20,1);
- GuiShowStr(x,56," 背光时间: ",1);
- if(sutLcdParam.SetTimeIndex==4) snprintf(buf, sizeof(buf),"常亮 ");
- else snprintf(buf, sizeof(buf),"%3d 秒",sutLcdParam.SetTime[sutLcdParam.SetTimeIndex]);
- GuiShowStr(x+(16*5),56,buf,1);
- GuiReverseRect(x+(16*5),56,32,16);
- snprintf(buf1, sizeof(buf1),"%3d",sutLcdParam.SetTimeIndex);
- SlwTrace(INF,buf1,1);
- GuiDrawHLine(0,159,104,1);
- susCt=0;
- //return;
- }else if(update == 2){
- if(sutLcdParam.SetTimeIndex==4) snprintf(buf, sizeof(buf),"常亮 ");
- else snprintf(buf, sizeof(buf),"%3d 秒",sutLcdParam.SetTime[sutLcdParam.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(++sutLcdParam.SetTimeIndex>=5)sutLcdParam.SetTimeIndex=0;
- SetLCDShow(2);//0
- break;
- case KEY_PANEL_DOWN:
- if(sutLcdParam.SetTimeIndex>0)sutLcdParam.SetTimeIndex--;
- else sutLcdParam.SetTimeIndex=4;
- SetLCDShow(2);//0
- break;
- case KEY_PANEL_MENU:
- g_iLCDFlag=1;
- sutLcdParam.OnTime=sutLcdParam.SetTime[sutLcdParam.SetTimeIndex];
- sutLcdParam.OnTimeIndex=sutLcdParam.SetTimeIndex;
- FileIndex=GetFileIndex("LcdParam.ini");
- ModifyFileData(FileIndex,0,sizeof(SUT_LCD_PARAM),(unsigned char *)&sutLcdParam);
- 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;
- }
- void SetUpIntercomVerShow(int update)
- {
- char buf[19];
- if(update){
- GuiClearAll();
- ShowCaption("升级对讲版本",1);//
- GuiDrawHLine(0,159,20,1);
- GuiShowStr(16,56,"升级到最新版本? ",1);
- GuiDrawHLine(0,159,104,1);
- GuiShowStr(0,110,"[M]升级 [EXIT]退出",0x01);
- }
- if(updateStart)
- {
- if(++m_updateTimeout>2000)
- {
- m_updateTimeout=0;
- UpdateStatus(MODEM_STATUS_TIMEOUT);
- }
- }
- if(modemProcessFlash==0) return;
- modemProcessFlash=0;
- switch(m_updStatus)
- {
- case MODEM_STATUS_TRIGGER://正在启动更新
- GuiShowStr(16,22,"正在启动更新...",1);
- TriggerHttpOn(MODE_HTTP_MODEM);
- break;
- case MODEM_STATUS_READY://启动成功,获取最新版本
- GuiShowStr(16,42,"正在获取版本...",1);
- break;
- case MODEM_STATUS_CMD_VER_ERR://指令失败
- GuiShowStr(16,62,"获取失败/版本错误.",1);
- UpdateStatus(MODEM_STATUS_REBOOT);
- break;
- case MODEM_STATUS_NO_NEWVER://没有最新版本
- GuiShowStr(16,62,"没有最新版本...",1);
- UpdateStatus(MODEM_STATUS_REBOOT);
- break;
- case MODEM_STATUS_LOADING://正在下载
- GuiShowStr(16,62,"正在下载",1);
- snprintf(buf, sizeof(buf), ">>%d%%", m_process);
- GuiShowStr(16,82,buf,1);
- break;
- case MODEM_STATUS_SER_ERR://服务器应答出问题:如没有目标谁的
- GuiShowStr(16,102,"没有文件/其它错误",1);
- UpdateStatus(MODEM_STATUS_REBOOT);
- break;
- case MODEM_STATUS_DONE://下载完成
- GuiShowStr(16,102,"下载完成,正在安装",1);
- break;
- case MODEM_STATUS_INSTALLED://安装完成
- GuiShowStr(16,102,"安装完成,升级完成",1);
- UpdateStatus(MODEM_STATUS_REBOOT);
- break;
- case MODEM_STATUS_TIMEOUT:
- GuiShowStr(16,22,"超时无响应...",1);
- UpdateStatus(MODEM_STATUS_REBOOT);
- break;
- case MODEM_STATUS_REBOOT:
- LCD_BL_HIGH;
- os_dly_wait(200);
- modemPwrOffNow=1;
- // while(1)
- // {
- // os_dly_wait(100);
- // IWDG_ReloadCounter();
- // }
- break;
- }
- }
- void SetUpIntercomVerResponse(void)
- {
- if(updateStart) return;
- if(KEY_PANEL_MENU==g_ulKeyValue)
- {
- if(sutGpsStatus.PPPStatus != OPEN)
- {
- ShowMessageBox("无网络");
- os_dly_wait(100);
- UISetNextStatus(UIS_MENU_SYS_SET);
- return;
- }
- updateStart++;
- GuiClearArea(0, 22, LCD_WIDTH-1, LCD_HEIGHT-22);
- UpdateStatus(MODEM_STATUS_TRIGGER);
- }
-
- if(KEY_PANEL_EXIT==g_ulKeyValue) UISetNextStatus(UIS_MENU_SYS_SET);
- }
- 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;i<APN_LEN;i++)
- {
- if(accessPV[i] != ';') apnapn[i]=accessPV[i];
- else{
- apnapn[i]=0;
- break;
- }
- }
- }
- }
- //account name
- if(apnname != 0)
- {
- if(*accountV == ';') apnname[0] = 0;//空数据段
- else{
- for(i=0;i<APN_LEN;i++)
- {
- if(accountV[i] != ';') apnname[i]=accountV[i];
- else{
- apnname[i]=0;
- break;
- }
- }
- }
- }
- //password
- if(apnpass != 0)
- {
- if(*passwV == ';') apnpass[0] = 0;//空数据段
- else{
- for(i=0;i<APN_LEN;i++)
- {
- if(passwV[i] != ';') apnpass[i]=passwV[i];
- else{
- apnpass[i]=0;
- break;
- }
- }
- }
- }
- return 0;
- }
- //读取Para.ini配置文件获取LCD模式
- char GetApnFromSrc(char *src, char index,char *name, char *pass)
- {
- char target[15];
- char finalData[62];
- unsigned char tempLen,i,j;
- j=0;
- index +=1;
- switch(index)
- {
- case 1:case 2:case 3:case 4:
- snprintf(target, sizeof(target), "APN%d", index);
- break;
- default:return 0;
- }
- tempLen=GetParaFromStr(src, target, finalData);
- if(tempLen == 0) return 0;
- for(i=0;i<tempLen;i++)
- {
- if(finalData[i]==',')
- {
- j=i+1;
- finalData[i]=0;
- i=tempLen;
- }
- }
- tempLen=strlen(finalData);
- if(tempLen>30) 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;
- }
- int HgsApnLen;
- unsigned char validApnNum;
- void APNFileInit(void)
- {
- char tempData[400];//3组APN,每组中每参数30个
- char name[APN_LEN+1];
- char pass[APN_LEN+1];
- int tempLen,i;
-
- ApnFileIndex=GetFileIndex("HGS.apn");
- if(ApnFileIndex == -1)
- {
- printf("No HGS.apn file\r\n");
- goto READ_EXIT;
- }
-
- HgsApnLen=GetFileLen(ApnFileIndex);
- if(HgsApnLen==0)
- {
- printf("HGS.apn empty\r\n");
- goto READ_EXIT;
- }
- //读出数据
- if(HgsApnLen > sizeof(tempData))
- {
- printf("Hgs.apn len=%d,should <=%d\r\n",HgsApnLen,sizeof(tempData));
- HgsApnLen=sizeof(tempData);
- }
- tempLen=ReadFileData(ApnFileIndex,0,HgsApnLen,(u8*)tempData);
- //检测是否显示APN
- tempLen=GetParaFromStr(tempData, "APNSHOW", name);
- if(tempLen==0)
- {
- showApn=1;//没有字段,则设置为显示菜单
- printf("No 'APNSHOW'\r\n");
- }else{
- showApn=atoi(name);
- }
- printf("APNSHOW:%d\r\n",showApn);
- READ_EXIT:
- //读取APN参数到table
- if(ApnFileIndex==-1 || HgsApnLen==0)
- {//资源文件错误,则只有一个默认APN
- goto SET_ONLY_ONE;
- }else{
- //读出数据
- for(i=0;i<APN_NUM;i++)
- {
- if(0==GetApnFromSrc(tempData, i, name,pass))
- {//获取APN失败,恢复默认
- goto SET_ONLY_ONE;
- }else{
- strcpy(&showApnTable[2*i][0], name);
- strcpy(&showApnTable[2*i+1][0],pass);
- }
- }
- validApnNum=APN_NUM;
- return;
- }
-
- SET_ONLY_ONE:
- strcpy(showApnTable[0],APN_NAME);
- strcpy(showApnTable[1],APN_PASSWORD);
- validApnNum=1;
- }
- #if 0
- void SetNetResponse(void)
- {
- char buf[30];
- unsigned long key;
- // static char temp=0;
-
-
- key=MenuResponse(&sutMenuSysSetup);
- if(KEY_PANEL_MENU==key){
- if(sutProductPara.g_net==sutMenuSysSetup.handle){
- return;
- }
- switch(sutMenuSysSetup.handle){
-
- case 0:
- sutProductPara.g_net=0;
- GetMododexWithCard();
- break;
- case 1: //移动
- sutProductPara.g_net=1;
- GetMododexWithCard();
- break;
- case 2:
- sutProductPara.g_net=2;
- GetMododexWithCard();
- break;
- case 3:
- break;
- }
-
-
- GuiClearArea(0, 1, LCD_WIDTH-1,18);
- ShowNetCaption(sutProductPara.g_net);
- SaveProductParaToFlash("MENU_SWGPS");
- }else if(KEY_PANEL_EXIT==key){
- UISetNextStatus(UIS_MENU_SYS_SET); //UIS_MENU_SYS_SET
- }
-
- }
- # else
- void SetNetResponse(void)
- {
-
- switch(g_ulKeyValue){
-
- case KEY_PANEL_UP:
- if(++Net_temp_flag>=3)Net_temp_flag=0;
- SetNetShow(2);//0
- break;
- case KEY_PANEL_DOWN:
- if(Net_temp_flag>0)Net_temp_flag--;
- else Net_temp_flag=2;
- SetNetShow(2);//0
- break;
- case KEY_PANEL_MENU:
- sutProductPara.g_net=Net_temp_flag;
- GetMododexWithCard();
- SaveProductParaToFlash("MENU_SWGPS");
- UISetNextStatus(UIS_MENU_SYS_SET);
- break;
- case KEY_PANEL_EXIT:
- UISetNextStatus(UIS_MENU_SYS_SET);
- break;
- }
-
- }
- #endif
-
- #if 0
- void SetNetShow(int update)
- {
- static const char *apcMenuSysSetup[]={
- "网模自动",
- "2G+3G",
- "4G模式",
- ""
- };
- if(update){
- GuiClearAll();
- ShowNetCaption(sutProductPara.g_net);
- GuiDrawHLine(0,159,20,1);
- MenuInit(&sutMenuSysSetup,apcMenuSysSetup);
- return;
- }
- }
- #else
- void SetNetShow(int update)
- {
- //const char *p=GetCaptionByMododex[Mododrex_Net];
- static unsigned short susCt=0;
- char buf[10];
- char buf2[20];
- int x=12;//4
- if(update==1){
- GuiClearAll();
-
- //ShowNetCaption(sutProductPara.g_net); Mododrex_Net
- 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[sutProductPara.g_net]);
- GuiShowStr(x+(16*5),56,buf,1);
- GuiReverseRect(x+(16*5),56,40,16);//5
- GuiDrawHLine(0,159,104,1);
- susCt=0;
-
- }else if(update == 2){
- snprintf(buf, sizeof(buf),"%s",g_ausNetOut[Net_temp_flag]);
- GuiShowStr(x+(16*5),56,buf,1);
- GuiReverseRect(x+(16*5),56,40,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;
- }
- #endif
- 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}};
- snprintf(buf,sizeof(buf),"AT+MODODREX=%d\r\n",MododrxTable[thisYunYingShang][sutProductPara.g_net]);
- 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];
-
- }
-
|