SetSystemPara.c 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423
  1. #include "includes.h"
  2. typedef enum{
  3. PMODE_DEFAULT_LOW,
  4. PMODE_SUPER_LOW,
  5. PMODE_NORMAL
  6. }PWR_ENUMDEF;
  7. unsigned short LcdOnTimeCt;
  8. unsigned int g_uiGpsStat = 1;
  9. SUT_MENU sutMenuSysSetup;
  10. unsigned char Net_temp_flag;
  11. //超长功耗
  12. #define MODE_LONG_LOW_PWR_NONE_4G 5
  13. #define MODE_LONG_LOW_PWR_IS_4G 55
  14. //默认为低功耗模式
  15. #define MODE_LOW_PWR_NONE_4G 5
  16. #define MODE_LOW_PWR_IS_4G 25
  17. //使用常规非低功耗模式
  18. #define MODE_NORMAL__NONE_4G 5
  19. #define MODE_NORMAL__IS_4G 5
  20. //终端放弃设置模式,由服务器决定使用什么情况
  21. #define MODE_AUTO____NONE_4G 0
  22. #define MODE_AUTO____IS_4G 0
  23. static const char*g_ausNetOut[]={"Auto"," 2G "," 3G "," 4G "};
  24. void ModemSetPwrMode(unsigned char mode)
  25. {
  26. char info[30];
  27. unsigned char seg1,seg2;
  28. switch(mode){
  29. case PMODE_DEFAULT_LOW: seg1=MODE_LOW_PWR_NONE_4G;seg2=MODE_LOW_PWR_IS_4G;break;//默认为低功耗模式
  30. case PMODE_SUPER_LOW: seg1=MODE_LONG_LOW_PWR_NONE_4G;seg2=MODE_LONG_LOW_PWR_IS_4G;break;//超长功耗
  31. case PMODE_NORMAL: seg1=MODE_NORMAL__NONE_4G;seg2=MODE_NORMAL__IS_4G;break;//使用常规非低功耗模式
  32. default:return;
  33. }
  34. snprintf(info, sizeof(info), "AT+UDP=%d,%d\r\n",seg1,seg2);
  35. ModemSendAt(info);
  36. SlwTrace(INF, info,0);
  37. }
  38. void GetPwrMode(char *msg)
  39. {//0,5,30
  40. //1,30,30
  41. int seg1,seg2;
  42. short i;
  43. char buf[15];
  44. //if(msg[0]=='0') return;
  45. for(i=2;i<strlen(msg);i++){
  46. if(msg[i]==','){
  47. seg1=atoi(msg+2);
  48. seg2=atoi(msg+i+1);
  49. if(seg1==MODE_LOW_PWR_NONE_4G && seg2==MODE_LOW_PWR_IS_4G && newPara.pwrMode != PMODE_DEFAULT_LOW){
  50. goto SAVE_PWR_MODE;
  51. }else if(seg1==MODE_LONG_LOW_PWR_NONE_4G && seg2==MODE_LONG_LOW_PWR_IS_4G && newPara.pwrMode != PMODE_SUPER_LOW){
  52. goto SAVE_PWR_MODE;
  53. }else if(seg1==MODE_NORMAL__NONE_4G && seg2==MODE_NORMAL__IS_4G && newPara.pwrMode != PMODE_NORMAL){
  54. goto SAVE_PWR_MODE;
  55. }else if(seg2!=MODE_LOW_PWR_IS_4G&&seg2!=MODE_LONG_LOW_PWR_IS_4G&& seg2!=MODE_NORMAL__IS_4G){
  56. //Seg2 3个模式都不满足切换为常规模式
  57. // seg1=MODE_NORMAL__NONE_4G;
  58. // seg2=MODE_NORMAL__IS_4G;
  59. // newPara.pwrMode = PMODE_NORMAL;
  60. goto SAVE_PWR_MODE;
  61. }
  62. }
  63. }
  64. return;
  65. SAVE_PWR_MODE:
  66. // snprintf(buf, sizeof(buf), "AT+UDP=%d,%d\r\n",seg1,seg2);
  67. // ModemSendAt(buf);
  68. // SlwTrace(INF,buf,1);
  69. ModemSetPwrMode(newPara.pwrMode);
  70. ModifyConfigureFile(0);
  71. }
  72. /*****************************************************
  73. 深圳北纬22.33 东经114.07
  74. 经过试验数据比较准确,但是东西南北不知道
  75. ******************************************************/
  76. void GetCoordinates(unsigned char type)
  77. {
  78. //type 0 UI时调用
  79. // 1 上传时调用
  80. char buf[30];
  81. char buf1[8];
  82. char buf2[4]={0};
  83. char temp[3];
  84. char temp1[3];
  85. char temp2[5];
  86. char temp3[5];
  87. int i,num,num1,w,j;
  88. double Jnum1,Jnum2,Jnum3;//有小数位 8位有效
  89. double Wnum1,Wnum2,Wnum3;//有小数位 8位有效
  90. unsigned char laTemp[4],loTemp[4];
  91. laTemp[0] = (sutGpsInfo.latitue>>24);
  92. laTemp[1] = (sutGpsInfo.latitue>>16);
  93. laTemp[2] = (sutGpsInfo.latitue>>8);
  94. laTemp[3] = (sutGpsInfo.latitue);
  95. loTemp[0] = (sutGpsInfo.longitue>>24);
  96. loTemp[1] = (sutGpsInfo.longitue>>16);
  97. loTemp[2] = (sutGpsInfo.longitue>>8);
  98. loTemp[3] = (sutGpsInfo.longitue);
  99. AscStrTurnHexStr((char *)loTemp,buf1);
  100. memset(temp, 0, sizeof(temp));
  101. for(i=0;i<3;i++) temp[i]=buf1[i];
  102. j=atoi(temp);
  103. memset(temp2, 0, sizeof(temp2));
  104. for(i=0;i<6;i++) temp2[i]=buf1[i+3];
  105. num=atoi(temp2);
  106. Jnum1=num/1000;
  107. Jnum1 /=60;
  108. Jnum2 = (num%1000)*60;
  109. Jnum2 /=3600000;
  110. Jnum3=Jnum1+Jnum2;
  111. sutGpsInfo.testJD = j*1000000+Jnum3*1000000;//上传时使用
  112. AscStrTurnHexStr((char *)laTemp,buf2);
  113. for(i=0;i<3;i++) temp1[i]=buf2[i];
  114. w=atoi(temp1);
  115. for(i=0;i<6;i++) temp3[i]=buf2[i+3];
  116. num1=atoi(temp3);
  117. Wnum1=num1/1000;
  118. Wnum1 /=60;
  119. Wnum2 = (num1%1000)*60;
  120. Wnum2 /=3600000;
  121. Wnum3=Wnum1+Wnum2;
  122. sutGpsInfo.testWD = w*1000000+Wnum3*1000000;
  123. if(type == 0){//UI时要显示
  124. snprintf(buf, sizeof(buf)," 纬度 %s: %.3d.%05d","S",w,(unsigned int)(Wnum3*100000));
  125. GuiShowStr(0,STATUS_ITEM_HEIGH,buf,0x01,0);
  126. snprintf(buf, sizeof(buf)," 经度 %s: %d.%05d","W",j,(unsigned int)(Jnum3*100000));
  127. GuiShowStr(0,STATUS_ITEM_HEIGH+16,buf,0x01,0);
  128. }
  129. }
  130. unsigned char validApnNum;
  131. char *APNNAME[APN_NUM+1]=
  132. {
  133. "APN1",
  134. "APN2",
  135. "APN3",
  136. "APN4",
  137. ""
  138. };
  139. static const char *accIconFileNameAPN[]={
  140. "APN.bmp",
  141. "APN1.bmp",
  142. ""
  143. };
  144. void SetAPNShow(int update)
  145. {
  146. int i;
  147. static char GroupsFeatures[APN_NUM];
  148. if(update){
  149. if(showApn!=1)
  150. {
  151. ShowMessageBox("禁止修改");
  152. uTimerHardDly(200);
  153. UISetNextStatus(UIS_MENU_SYS_SET);
  154. return;
  155. }
  156. if(validApnNum==1)
  157. {
  158. ShowMessageBox("配置文件无APN");
  159. uTimerHardDly(200);
  160. UISetNextStatus(UIS_MENU_SYS_SET);
  161. return;
  162. }
  163. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  164. GuiClearAll();
  165. ShowCaption("设置APN",2);//
  166. //GuiDrawHLine(0,159,20,1);
  167. //设置Features 将决定选择图标
  168. GroupsFeatures[newPara.apnList.defaultuse]=1;
  169. ListBoxInit(&sutListBox,APNNAME,0,accIconFileNameAPN,GroupsFeatures);
  170. //----------------------------
  171. GuiDrawHLine(0,159,110,1);
  172. GuiShowStr(0,SUBSCRIPT_LOCATION,"[OK]切换 [S]详情",0x01,0);
  173. }
  174. }
  175. char *LCDNAME[LCD_NUM+1]=
  176. {
  177. "5",
  178. "4",
  179. "3",
  180. "2",
  181. "1",
  182. ""
  183. };
  184. void SetLcdBrightShow(int update)
  185. {
  186. static char GroupsFeatures[LCD_NUM];
  187. if(update){
  188. GuiClearAll();
  189. ShowCaption("背光调节",2);
  190. //设置Features 将决定选择图标
  191. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  192. GroupsFeatures[newPara.LcdPulse]=1;
  193. ListBoxInit(&sutListBox,LCDNAME,0,accIconFileNameAPN,GroupsFeatures);
  194. //----------------------------
  195. GuiDrawHLine(0,159,110,1);
  196. GuiShowStr(0,SUBSCRIPT_LOCATION,"[OK]切换 [EXIT]退出",0x01,0);
  197. //sutUIstatus.ItemRefresh=0;
  198. }
  199. }
  200. void SetLcdBrightResponse(void)
  201. {
  202. unsigned long key;
  203. key=ListBoxResponse(&sutListBox);
  204. if(KEY_PANEL_MENU==key){
  205. if(sutListBox.handle != newPara.LcdPulse){
  206. // if(sutListBox.handle==0)Test_EnableSpk=0;
  207. // else Test_EnableSpk=1;
  208. newPara.LcdPulse=sutListBox.handle;
  209. ModifyConfigureFile(1);
  210. }
  211. //sutUIstatus.ItemRefresh=1;
  212. UI_Stack.OK_back=1;
  213. UISetNextStatus(UIS_MENU_SYS_SET);
  214. }else if(KEY_PANEL_EXIT==key){
  215. UISetNextStatus(UIS_MENU_SYS_SET);
  216. }
  217. }
  218. void SetSYSResponse(void)
  219. {
  220. unsigned long key;
  221. key=MenuResponse(&sutMenuSysSetup);
  222. if(KEY_PANEL_MENU==key){
  223. switch(sutMenuSysSetup.handle){
  224. case 0:
  225. UISetNextStatus(UIS_SET_LCD);
  226. break;
  227. case 1:
  228. UISetNextStatus(UIS_SET_LCDBRIGHT);
  229. break;
  230. case 2:
  231. UISetNextStatus(UIS_SET_NET);
  232. break;
  233. case 3:
  234. UISetNextStatus(UIS_SET_KEYSound);
  235. break;
  236. case 4:
  237. UISetNextStatus(UIS_SET_SIMCARD);
  238. break;
  239. // case 5:
  240. // UISetNextStatus(UIS_SET_MICLV);
  241. // break;
  242. case 5:
  243. UISetNextStatus(UIS_SET_USBTTL);
  244. break;
  245. case 6:
  246. UISetNextStatus(UIS_SET_PWRMODE);
  247. break;
  248. case 7:
  249. UISetNextStatus(UIS_SET_SERVER_PASS);
  250. break;
  251. case 8:
  252. UISetNextStatus(UIS_SET_POC_FOTA);
  253. break;
  254. }
  255. if(sutMenuSysSetup.handle<=8)PushUiStack(&UI_Stack,sutMenuSysSetup.handle);
  256. }
  257. // else if(KEY_PANEL_MENU==key){
  258. // UISetNextStatus(UIS_MENU_MAIN);
  259. // }
  260. else if(KEY_PANEL_EXIT==key){
  261. UISetNextStatus(UIS_MENU_MAIN); //UIS_MENU_SYS_SET
  262. }
  263. }
  264. char showIndex;
  265. void ShowAPNMessage(char index)
  266. {
  267. char buf[40];
  268. char temp[40];
  269. unsigned char len;
  270. unsigned char i,y,maxLen;
  271. i=0;
  272. y=STATUS_ITEM_HEIGH;
  273. maxLen=14;
  274. GuiClearRect(0, y, LCD_WIDTH-1,LCD_HEIGHT-25);
  275. snprintf(buf, sizeof(buf), "%s:",APNNAME[showIndex]);
  276. GuiShowStr(1,y+16*i++,buf,0x01,0);
  277. len=strlen(newPara.apnList.apnList[showIndex].account);
  278. memcpy(temp, newPara.apnList.apnList[showIndex].account, maxLen);
  279. temp[maxLen]=0;
  280. snprintf(buf, sizeof(buf), "Name:%s",temp);
  281. GuiShowStr(1,y+16*i++,buf,0x01,0);
  282. if(len > maxLen)
  283. {
  284. // memcpy(temp, newPara.apnList.apnList[showIndex].account, maxLen);temp[maxLen]=0;
  285. // snprintf(buf, sizeof(buf), "%s",temp);
  286. // buf[len-maxLen]=0;
  287. strcpy(buf,&(newPara.apnList.apnList[showIndex].account[maxLen]));
  288. GuiShowStr(1,y+16*i++,buf,0x01,0);
  289. }
  290. len=strlen(newPara.apnList.apnList[showIndex].pass);
  291. memcpy(temp, newPara.apnList.apnList[showIndex].pass, maxLen);
  292. temp[maxLen]=0;
  293. snprintf(buf, sizeof(buf), "Pass:%s",temp);
  294. GuiShowStr(1,y+16*i++,buf,0x01,0);
  295. if(len > maxLen)
  296. {
  297. // memcpy(temp, newPara.apnList.apnList[showIndex].pass, maxLen);temp[maxLen]=0;
  298. // snprintf(buf, sizeof(buf), "%s",temp);
  299. // buf[len-maxLen]=0;
  300. strcpy(buf,&(newPara.apnList.apnList[showIndex].pass[maxLen]));
  301. GuiShowStr(1,y+16*i++,buf,0x01,0);
  302. }
  303. }
  304. void SetApnDetailShow(int update)
  305. {
  306. char buf[40];
  307. if(update)
  308. {
  309. GuiClearAll();
  310. ShowCaption("APN详情",2);//
  311. //GuiDrawHLine(0,159,20,1);
  312. showIndex=0;
  313. ShowAPNMessage(showIndex);
  314. //----------------------------
  315. GuiDrawHLine(0,159,110,1);
  316. GuiShowStr(0,SUBSCRIPT_LOCATION," [EXIT]返回",0x01,0);
  317. }
  318. }
  319. //居中显示信息
  320. void FunShowMsg(char *info)
  321. {
  322. int x,y;
  323. SlwTrace(INF, info,1);
  324. x=(LCD_WIDTH-strlen(info)*8)/2;
  325. y=LCD_HEIGHT/2;
  326. GuiClearArea(0,y,LCD_WIDTH, 16);
  327. GuiShowStr(x,y,info,1,0);
  328. }
  329. //配置编码器菜单
  330. unsigned char tempCodetype;
  331. void CodeTypeUpdateShow(void)
  332. {
  333. char info[20];
  334. switch(tempCodetype){
  335. case 0:sprintf(info, "EVRC_HALF");break;
  336. case 1:sprintf(info, "EVRC_FULL");break;
  337. case 2:sprintf(info, "AMRNB-122");break;
  338. default:return;
  339. }
  340. FunShowMsg(info);
  341. }
  342. void SetCodeTypeShow(int update)
  343. {
  344. static unsigned short susCt=0;
  345. int x=4;//4
  346. int i;
  347. if(update==1){
  348. susCt=0;
  349. GuiClearAll();
  350. ShowCaption("编码器设置",1);//0
  351. //GuiDrawHLine(0,159,20,1);
  352. GuiDrawHLine(0,159,110,1);
  353. if(modemInitReady==0){
  354. ShowMessageBox("模块暂未启动");
  355. uTimerHardDly(50);
  356. UISetNextStatus(UIS_MENU_SYS_SET);
  357. }else{
  358. tempCodetype=sutPocStatus.codeType;
  359. CodeTypeUpdateShow();
  360. }
  361. }
  362. if(susCt==0){
  363. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  364. }else if(susCt==200){
  365. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  366. }
  367. if(++susCt>=400)susCt=0;
  368. }
  369. void SetCodeTypeResponse(void)
  370. {
  371. char info[30];
  372. switch(g_ulKeyValue){
  373. case KEY_PANEL_UP:
  374. if(tempCodetype==0) tempCodetype=1;
  375. else tempCodetype--;
  376. CodeTypeUpdateShow();
  377. break;
  378. case KEY_PANEL_DOWN:
  379. if(tempCodetype==1) tempCodetype=0;
  380. else tempCodetype++;
  381. CodeTypeUpdateShow();
  382. break;
  383. case KEY_PANEL_MENU:
  384. if(tempCodetype != sutPocStatus.codeType){
  385. sutPocStatus.codeType=tempCodetype;
  386. sprintf(info, "AT+POC=40000001%02x\r\n", tempCodetype);
  387. ModemSendAt(info);
  388. SlwTrace(INF, "Update codetype",1);
  389. }
  390. UISetNextStatus(UIS_STANDBY);
  391. break;
  392. case KEY_PANEL_EXIT:
  393. UISetNextStatus(UIS_MENU_SYS_SET);
  394. break;
  395. }
  396. }
  397. void SetGPSTimeShowDetail(unsigned char timeIndex)
  398. {
  399. unsigned short tempTime;
  400. char buf[10];
  401. tempTime = GPS_TimeTable[timeIndex];
  402. GuiClearRect(100,STATUS_ITEM_HEIGH+16+16,LCD_WIDTH-1, STATUS_ITEM_HEIGH+16+16+16);
  403. if(tempTime==0)
  404. {
  405. GuiShowStr(100,STATUS_ITEM_HEIGH+16+16," 关闭 ",0x01,0);//130
  406. //GuiReverseRect(108,56,16*2,16);
  407. }else
  408. {
  409. snprintf(buf, sizeof(buf)," %02d 秒",tempTime);
  410. GuiShowStr(100,STATUS_ITEM_HEIGH+16+16,buf,0x01,0);//130
  411. // if(tempTime > 99) GuiReverseRect(108,56,24,16);
  412. // else GuiReverseRect(108,56,16,16);
  413. }
  414. }
  415. /*********************************************************/
  416. void SetGPSShow(int update)
  417. {
  418. static unsigned short susCt=0;
  419. if(update){
  420. GuiClearAll();
  421. ShowCaption("定位设置",1);//
  422. GuiShowStr(0,STATUS_ITEM_HEIGH+16+16,"定位上传设置: 秒",0x01,0); //sutGpsInfo.SendTime
  423. //GuiDrawHLine(0,159,20,1);
  424. GetCoordinates(0);
  425. sutGpsInfo.GPS_TimeIndexBackup = newPara.gpsTimeIndex;
  426. SetGPSTimeShowDetail(sutGpsInfo.GPS_TimeIndexBackup);
  427. GuiDrawHLine(0,159,110,1);
  428. susCt=0;
  429. }
  430. if(susCt==0){
  431. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  432. }else if(susCt==200){
  433. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  434. }
  435. if(++susCt>=400)susCt=0;
  436. }
  437. void SetGPSResponse(void)
  438. {
  439. switch(g_ulKeyValue)
  440. {
  441. case KEY_PANEL_UP:
  442. case KEY_PANEL_DOWN:
  443. if(hgs_poc_type!=POC_OWN)break;
  444. if(g_ulKeyValue==KEY_PANEL_UP)
  445. {
  446. if(sutGpsInfo.GPS_TimeIndexBackup<(GPS_TABLE_NUM-1))
  447. sutGpsInfo.GPS_TimeIndexBackup++;
  448. else
  449. sutGpsInfo.GPS_TimeIndexBackup=0;
  450. }else{
  451. if(sutGpsInfo.GPS_TimeIndexBackup==0)
  452. sutGpsInfo.GPS_TimeIndexBackup=GPS_TABLE_NUM-1;
  453. else
  454. sutGpsInfo.GPS_TimeIndexBackup--;
  455. }
  456. SetGPSTimeShowDetail(sutGpsInfo.GPS_TimeIndexBackup);
  457. break;
  458. case KEY_PANEL_MENU:
  459. if(hgs_poc_type!=POC_OWN)break;
  460. if(sutGpsInfo.GPS_TimeIndexBackup != newPara.gpsTimeIndex)
  461. {//changed
  462. newPara.gpsTimeIndex = sutGpsInfo.GPS_TimeIndexBackup;
  463. GpsTimeUpdate();
  464. //save sys
  465. ModifyConfigureFile(1);
  466. }
  467. UI_Stack.OK_back=1;
  468. UISetNextStatus(UIS_MENU_MAIN);
  469. break;
  470. case KEY_PANEL_EXIT: UISetNextStatus(UIS_MENU_MAIN);break;
  471. //case KEY_PANEL_MENU: UISetNextStatus(UIS_MENU_MAIN);break;
  472. }
  473. }
  474. /***************************提示音设置******************************/
  475. unsigned char tempKeySound;
  476. char *KeySoundNAME[5]=
  477. {
  478. "关闭提示音",
  479. "按键+收发音",
  480. "仅收发音",
  481. ""
  482. };
  483. void SetKeySoundShow(int update)
  484. {
  485. static unsigned short susCt=0;
  486. static char GroupsFeatures[4];
  487. if(update){
  488. GuiClearAll();
  489. ShowCaption("提示音设置",1);
  490. //设置Features 将决定选择图标
  491. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  492. GroupsFeatures[newPara.KeySound]=1;
  493. ListBoxInit(&sutListBox,KeySoundNAME,0,accIconFileNameAPN,GroupsFeatures);
  494. //----------------------------
  495. GuiDrawHLine(0,159,110,1);
  496. }
  497. if(susCt==20){
  498. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  499. }else if(susCt==200){
  500. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  501. }
  502. if(++susCt>=400)susCt=0;
  503. }
  504. void SetKeysoundResponse(void)
  505. {
  506. unsigned long key;
  507. char buf[20];
  508. key=ListBoxResponse(&sutListBox);
  509. if(KEY_PANEL_MENU==key){
  510. if(sutListBox.handle != newPara.KeySound){
  511. //AT+TONES=1
  512. //ModemSendAt
  513. newPara.KeySound=sutListBox.handle;
  514. if(newPara.KeySound){
  515. if(hgs_poc_type==POC_OWN)ModemSendAt("AT+TONES=1\r\n");
  516. else if(hgs_poc_type==POC_BND){
  517. snprintf(buf,sizeof(buf),"AT+POC=tonevol=%d\r\n",newPara.VolumLv);
  518. ModemSendAt(buf);
  519. }
  520. }else{
  521. //AT+POC=ttsvol=6
  522. if(hgs_poc_type==POC_OWN)ModemSendAt("AT+TONES=0\r\n");
  523. else ModemSendAt("AT+POC=tonevol=0\r\n");
  524. }
  525. ModifyConfigureFile(1);
  526. }
  527. //sutUIstatus.ItemRefresh=1;
  528. UI_Stack.OK_back=1;
  529. UISetNextStatus(UIS_MENU_SYS_SET);
  530. }else if(KEY_PANEL_EXIT==key){
  531. UISetNextStatus(UIS_MENU_SYS_SET);
  532. }
  533. }
  534. // char CardUseShow[3][11];
  535. char *CardUseShow[3]=
  536. {
  537. "卡1",
  538. "卡2",
  539. ""
  540. };
  541. void SetCardShow(int update)
  542. {
  543. static unsigned short susCt=0;
  544. char i=0;
  545. char GroupsFeatures[2];
  546. if(update){
  547. GuiClearAll();
  548. ShowCaption("SIM卡选择",1);
  549. //设置Features 将决定选择图标
  550. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  551. //CardStatue
  552. GroupsFeatures[SIMSelect]=1;
  553. ListBoxInit(&sutListBox,CardUseShow,0,accIconFileNameAPN,GroupsFeatures);
  554. //----------------------------
  555. GuiDrawHLine(0,159,110,1);
  556. }
  557. if(susCt==20){
  558. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  559. }else if(susCt==200){
  560. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  561. }
  562. if(++susCt>=400)susCt=0;
  563. }
  564. void SetCardResponse(void)
  565. {
  566. unsigned long key;
  567. char buf[20];
  568. key=ListBoxResponse(&sutListBox);
  569. if(KEY_PANEL_MENU==key){
  570. snprintf(buf,sizeof(buf),"AT+SIMCROSS=%d\r\n",sutListBox.handle);
  571. ModemSendAt(buf);
  572. SIMSelect=sutListBox.handle;
  573. sutPocStatus.modemRstFlag=1;
  574. UISetNextStatus(UIS_STANDBY);
  575. }else if(KEY_PANEL_EXIT==key){
  576. UISetNextStatus(UIS_MENU_SYS_SET);
  577. }
  578. }
  579. unsigned char SetTimeIndex;
  580. void SetLCDShow(int update)
  581. {
  582. static unsigned short susCt=0;
  583. char buf[10];
  584. char buf1[6];
  585. int x=4;//4
  586. int i;
  587. if(update==1){
  588. SetTimeIndex=newPara.lcdParaDefaultIndex;
  589. GuiClearAll();
  590. ShowCaption("LCD设置",1);//0
  591. //GuiDrawHLine(0,159,20,1);
  592. GuiShowStr(x,56," 背光时间: ",1,0);
  593. if(SetTimeIndex==4) snprintf(buf, sizeof(buf),"常亮 ");
  594. else snprintf(buf, sizeof(buf),"%3d 秒",newPara.lcdParaList[SetTimeIndex]);
  595. GuiShowStr(x+(16*5),56,buf,1,0);
  596. //GuiReverseRect(x+(16*5),56,32,16);
  597. snprintf(buf1, sizeof(buf1),"%3d",SetTimeIndex);
  598. SlwTrace(INF,buf1,1);
  599. GuiDrawHLine(0,159,110,1);
  600. susCt=0;
  601. //return;
  602. }else if(update == 2){
  603. GuiClearRect(x+(16*5),56,160,16);
  604. if(SetTimeIndex==4) snprintf(buf, sizeof(buf),"常亮 ");
  605. else snprintf(buf, sizeof(buf),"%3d 秒",newPara.lcdParaList[SetTimeIndex]);
  606. GuiShowStr(x+(16*5),56,buf,1,0);
  607. //GuiReverseRect(x+(16*5),56,32,16);
  608. GuiDrawHLine(0,159,110,1);
  609. }
  610. if(susCt==0){
  611. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  612. }else if(susCt==200){
  613. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  614. }
  615. if(++susCt>=400)susCt=0;
  616. }
  617. void SetLCDResponse(void)
  618. {
  619. int FileIndex;
  620. unsigned long key;
  621. char Buf[10];
  622. int x=4;//4
  623. //TimeOut[]
  624. // key=ListBoxResponse(&sutListBox);
  625. switch(g_ulKeyValue){
  626. case KEY_PANEL_UP:
  627. if(++SetTimeIndex>=5)SetTimeIndex=0;
  628. SetLCDShow(2);//0
  629. break;
  630. case KEY_PANEL_DOWN:
  631. if(SetTimeIndex>0)SetTimeIndex--;
  632. else SetTimeIndex=4;
  633. SetLCDShow(2);//0
  634. break;
  635. case KEY_PANEL_MENU:
  636. if(SetTimeIndex != newPara.lcdParaDefaultIndex){
  637. newPara.lcdParaDefaultIndex=SetTimeIndex;
  638. //save sys
  639. ModifyConfigureFile(1);
  640. }
  641. UI_Stack.OK_back=1;
  642. UISetNextStatus(UIS_MENU_SYS_SET);
  643. break;
  644. case KEY_PANEL_EXIT:
  645. UISetNextStatus(UIS_MENU_SYS_SET);
  646. break;
  647. }
  648. }
  649. void GetMododexWithCard(void)
  650. {
  651. char buf[30];
  652. //根据CardType和ModeSetup转换为Mododex值的一个表
  653. //static const unsigned char MododrxTable[3][3]={{11,24,5},{2,8,5},{17,21,5}};
  654. static const unsigned char MododrxTable[3][4]={{11,15,10,5},{2,25,7,5},{17,25,1,5}};
  655. snprintf(buf,sizeof(buf),"AT+MODODREX=%d\r\n",MododrxTable[thisYunYingShang][newPara.netMode]);
  656. ModemSendAt(buf);
  657. }
  658. void SetNetShow(int update)
  659. {
  660. static unsigned short susCt=0;
  661. static const char *Netmode[NET_NUM+1]=
  662. {
  663. "AUTO",
  664. "2G",
  665. "4G",
  666. ""
  667. };
  668. //static
  669. char NetsFeatures[NET_NUM]={0};
  670. if(update){
  671. GuiClearAll();
  672. ShowCaption("网络设置",2);//
  673. NetsFeatures[newPara.netMode/2]=1;
  674. ListBoxInit(&sutListBox,Netmode,0,accIconFileNameAPN,NetsFeatures);
  675. //----------------------------
  676. GuiDrawHLine(0,159,110,1);
  677. }
  678. if(susCt==0){
  679. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  680. }else if(susCt==200){
  681. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  682. }
  683. if(++susCt>=400)susCt=0;
  684. }
  685. void SetNetResponse(void)
  686. {
  687. unsigned long key;
  688. unsigned char buf[15];
  689. key=ListBoxResponse(&sutListBox);
  690. if(KEY_PANEL_MENU==key){
  691. if(sutListBox.handle*2 != newPara.netMode){
  692. newPara.netMode=sutListBox.handle*2;
  693. snprintf(buf,sizeof(buf),"AT+CTEC=%d,%d\r\n",netshowvalue,newPara.netMode);
  694. ModemSendAt(buf);
  695. ModifyConfigureFile(1);
  696. }
  697. UI_Stack.OK_back=1;
  698. UISetNextStatus(UIS_MENU_SYS_SET);
  699. }else if(KEY_PANEL_EXIT==key){
  700. UISetNextStatus(UIS_MENU_SYS_SET);
  701. }
  702. }
  703. unsigned char USBSeletCt=0;
  704. void SetUSBorTTLShow(int update)
  705. {
  706. static unsigned short susCt=0;
  707. static const char *Netmode[3+1]=
  708. {
  709. "TTL",
  710. "USB",
  711. "升级模式",
  712. ""
  713. };
  714. //static
  715. char NetsFeatures[2]={0};
  716. if(update){
  717. GuiClearAll();
  718. ShowCaption("串口切换",2);//
  719. NetsFeatures[USBSeletCt]=1;
  720. ListBoxInit(&sutListBox,Netmode,0,accIconFileNameAPN,NetsFeatures);
  721. //----------------------------
  722. GuiDrawHLine(0,159,110,1);
  723. }
  724. if(susCt==0){
  725. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  726. }else if(susCt==200){
  727. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  728. }
  729. if(++susCt>=400)susCt=0;
  730. }
  731. void SetUSBorTTLResponse(void)
  732. {
  733. unsigned long key;
  734. unsigned char buf[15];
  735. key=ListBoxResponse(&sutListBox);
  736. if(KEY_PANEL_MENU==key){
  737. if(sutListBox.handle != USBSeletCt){
  738. USBSeletCt=sutListBox.handle;
  739. switch(USBSeletCt)
  740. {
  741. case 0://TTL
  742. // ModemSendAt("AT+ROUTE=0,1\r\n");//打开POClog
  743. USBORTTL_HIGH;
  744. MODEM_UPDATE_LOW;
  745. break;
  746. case 1://USB
  747. USBORTTL_LOW;
  748. // ModemSendAt("AT+ROUTE=0,1\r\n");//打开POClog
  749. MODEM_UPDATE_LOW;
  750. break;
  751. case 2://MODEMUPDATE
  752. USBORTTL_LOW;
  753. MODEM_UPDATE_HIGH;
  754. sutPocStatus.modemRstFlag=1;
  755. break;
  756. }
  757. }
  758. UI_Stack.OK_back=1;
  759. UISetNextStatus(UIS_MENU_SYS_SET);
  760. }else if(KEY_PANEL_EXIT==key){
  761. UISetNextStatus(UIS_MENU_SYS_SET);
  762. }
  763. }
  764. void SetPowerModeShow(int update)
  765. {
  766. int i;
  767. static const char *ModeName[]={//这里数量变了记得修改 PWR_MODE_NUM
  768. "低功耗模式",
  769. "超长待机模式",
  770. "常规模式",
  771. ""
  772. };
  773. char GroupsFeatures[PWR_MODE_NUM];
  774. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  775. if(update){
  776. GuiClearAll();
  777. ShowCaption("模式设置",2);//
  778. //GuiDrawHLine(0,159,20,1);
  779. //设置Features 将决定选择图标
  780. GroupsFeatures[newPara.pwrMode]=1;
  781. ListBoxInit(&sutListBox,ModeName,0,accIconFileNameAPN,GroupsFeatures);
  782. //----------------------------
  783. GuiDrawHLine(0,159,110,1);
  784. GuiShowStr(0,SUBSCRIPT_LOCATION,"[OK]切换 [EXIT]退出",0x01,0);
  785. }
  786. }
  787. /***************************场景模式设置******************************/
  788. void SetSoundModeShow(int update)
  789. {
  790. int i;
  791. static const char *ModeName[]={
  792. "室内模式",
  793. "室外模式",
  794. ""
  795. };
  796. char GroupsFeatures[2];
  797. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  798. if(update){
  799. GuiClearAll();
  800. ShowCaption("场景模式",2);//
  801. //GuiDrawHLine(0,159,20,1);
  802. //设置Features 将决定选择图标
  803. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  804. GroupsFeatures[newPara.SoundMode]=1;
  805. ListBoxInit(&sutListBox,ModeName,0,accIconFileNameAPN,GroupsFeatures);
  806. //----------------------------
  807. GuiDrawHLine(0,159,110,1);
  808. GuiShowStr(0,SUBSCRIPT_LOCATION,"[OK]切换 [EXIT]退出",0x01,0);
  809. //sutUIstatus.ItemRefresh=0;
  810. }
  811. }
  812. void SetSoundModeResponse(void)
  813. {
  814. unsigned long key;
  815. key=ListBoxResponse(&sutListBox);
  816. if(KEY_PANEL_MENU==key)
  817. {
  818. if(newPara.SoundMode!=sutListBox.handle){
  819. newPara.SoundMode=sutListBox.handle;
  820. if(newPara.SoundMode==1)ModemSendAt("at+syscmd=start_pcm volume 7 7\r\n");
  821. else ModemSendAt("at+syscmd=start_pcm volume 7 5\r\n");
  822. ModifyConfigureFile(1);
  823. //sutUIstatus.ItemRefresh=1;
  824. }
  825. UI_Stack.OK_back=1;
  826. UISetNextStatus(UIS_MENU_SYS_SET);
  827. }
  828. else if(KEY_PANEL_EXIT==key)UISetNextStatus(UIS_MENU_SYS_SET);
  829. }
  830. //对讲版本空中升级API
  831. int getNewVersion;
  832. unsigned char fotaPocStatus;
  833. unsigned int fotaTick;
  834. void SetUpIntercomVerShow(int update)
  835. {
  836. char info[40];
  837. if(update){
  838. GuiClearAll();
  839. ShowCaption("升级对讲版本",1);//
  840. //GuiDrawHLine(0,159,20,1);
  841. FunShowMsg("正在检测版本");
  842. GuiDrawHLine(0,159,110,1);
  843. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]升级 [EXIT]退出",0x01,0);
  844. getNewVersion=-1;
  845. fotaPocStatus=0;
  846. ModemSendAt("AT+FOTA?\r\n");//对应用在模块接收消息中添加获取版本代码
  847. uTimerStart(&fotaTick,400);//200
  848. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]确定 [EXIT]退出",0x01,0);
  849. }
  850. switch(fotaPocStatus){
  851. case 0://获取版本信息
  852. if(uTimerExpired(&fotaTick)){
  853. if(getNewVersion ==0){//没有更新版本
  854. fotaPocStatus=1;
  855. FunShowMsg("没有可更新版本");
  856. uTimerStart(&fotaTick,150);
  857. }else if(getNewVersion>0){//有可更新版本
  858. //询问是否更新
  859. sprintf(info, "更新到V%d ?",getNewVersion);
  860. FunShowMsg(info);
  861. fotaPocStatus=2;
  862. }else{//超时未检测到查询版本响应
  863. fotaPocStatus=1;
  864. FunShowMsg("检测超时");
  865. uTimerStart(&fotaTick,150);
  866. }
  867. }
  868. break;
  869. case 1:
  870. if(uTimerExpired(&fotaTick)){//退出显示信息完毕
  871. UISetNextStatus(UIS_STANDBY);
  872. }
  873. break;
  874. }
  875. }
  876. void SetUpIntercomVerResponse(void)
  877. {
  878. switch(fotaPocStatus){
  879. case 2://等待用户确定
  880. if(KEY_PANEL_MENU==g_ulKeyValue){
  881. //确定
  882. fotaPocStatus=3;
  883. ModemSendAt("AT+FOTA=1\r\n");
  884. }else if(KEY_PANEL_EXIT==g_ulKeyValue){
  885. UISetNextStatus(UIS_MENU_SYS_SET);
  886. }
  887. break;
  888. }
  889. }
  890. /*
  891. 针对cat1
  892. AT+FOTA? 查询FOTA状态
  893. +FOTA:1,0 无版本可以升级/当前版本最新
  894. +FOTA:1,2012 有最新的版本可以升级 2012版本
  895. AT+FOTA=1 有版本升级的情况下发,表示启动升级
  896. +FOTA:0 表示升级失败/停止
  897. +FOTA:1 表示正在升级
  898. +FOTA:2 表示升级成功即将重启
  899. */
  900. void FotaStatusProcess(char *pMsg)
  901. {
  902. char info[30];
  903. switch(pMsg[0]){
  904. case '1'://1,0 1,19070702 表示查询POC版本响应
  905. if(strlen(pMsg)>2){
  906. getNewVersion=atoi(pMsg+2);//获取版本结果
  907. }else{
  908. FunShowMsg("正在升级...");
  909. }
  910. break;
  911. case '2'://表示安装完成,正在重启模块
  912. FunShowMsg("正在重启...");
  913. sutPocStatus.modemRstFlag=1;
  914. fotaPocStatus=1;
  915. uTimerStart(&fotaTick,150);
  916. break;
  917. case '0'://退出FOTA升级,原因可能是因为网络不稳定或者文件获取失败
  918. FunShowMsg("失败退出");
  919. fotaPocStatus=1;
  920. uTimerStart(&fotaTick,150);
  921. break;
  922. }
  923. }
  924. void UIShowInformation(int update)
  925. {
  926. u16 x,y;
  927. char temp[11];
  928. char buf[50];
  929. static unsigned char flag=0;
  930. unsigned char LineSpace;//行宽
  931. LineSpace=18;
  932. if(update)
  933. {
  934. flag=0;
  935. GuiClearAll();
  936. ShowCaption("终端信息",1); //0
  937. //GuiDrawHLine(0,159,20,1);
  938. }
  939. x=2,y=STATUS_ITEM_HEIGH+5;//
  940. if(KEY_PANEL_UP==g_ulKeyValue ||
  941. KEY_PANEL_DOWN==g_ulKeyValue ||
  942. update)
  943. {
  944. g_ulKeyValue = 0;
  945. if(flag==0 || flag==2)
  946. {//显示PSN
  947. GuiClearRect(0,y,LCD_WIDTH-1,LCD_HEIGHT-1);
  948. //终端型号
  949. // snprintf(buf, sizeof(buf),"终端型号:%s",sutProductPara.ProductName);
  950. // GuiShowStr(x,y,buf,0x01,0);
  951. // y+=LineSpace;
  952. //终端编码
  953. snprintf(buf, sizeof(buf),"终端编码:%lu",sutProductPara.PSN);
  954. GuiShowStr(x,y,buf,0x01,0);
  955. y+=LineSpace;
  956. //应用版本号
  957. snprintf(buf, sizeof(buf),"应用版本:V%d",sutProductPara.ProductVersion);
  958. GuiShowStr(x,y,buf,0x01,0);
  959. y+=LineSpace;
  960. //内部版本号
  961. snprintf(buf, sizeof(buf),"内部版本:%d",CUSTOMER_CODE);
  962. GuiShowStr(x,y,buf,0x01,0);
  963. // y+=LineSpace;
  964. // //模块版本号
  965. // snprintf(buf, sizeof(buf),"模块版本:L%d",g_iModemVer);
  966. // GuiShowStr(x,y,buf,0x01,0);
  967. flag=1;
  968. }else if(flag==1)
  969. {
  970. GuiClearRect(0,y,LCD_WIDTH-1,LCD_HEIGHT-1);
  971. //对讲版本号
  972. //snprintf(buf, sizeof(buf),"对讲版本:V%d",g_iPocVer);
  973. if(hgs_poc_type==POC_NULL)snprintf(buf, sizeof(buf),"平台:未知");
  974. else if(hgs_poc_type==POC_OWN)snprintf(buf, sizeof(buf),"平台:HGS");
  975. else if(hgs_poc_type==POC_BND)snprintf(buf, sizeof(buf),"平台:BND");
  976. GuiShowStr(x,y,buf,0x01,0);
  977. y+=LineSpace;
  978. //校验码
  979. // GetCheckCodeByPsnMEID(temp,sutProductPara.PSN,DEV_HARDID);
  980. // snprintf(buf, sizeof(buf),"校验码:%s",temp);
  981. snprintf(buf, sizeof(buf),"PocVer:%s",g_iPocVer);
  982. GuiShowStr(x,y,buf,0x01,0);
  983. y+=LineSpace;
  984. temp[0]=0;
  985. //显示MCU主频率
  986. snprintf(buf, sizeof(buf),"MCU主频:%d.%d Mhz",USER_MAIN_SYSCLK/1000000,USER_MAIN_SYSCLK%1000000/100000);
  987. GuiShowStr(x,y,buf,0x01,0);
  988. y+=LineSpace;
  989. //
  990. memset(buf,sizeof(buf),0);
  991. snprintf(buf,sizeof(buf),"模块:%s",ModemVer);
  992. GuiShowStr(x,y,buf,0x01,0);
  993. flag=2;
  994. }
  995. }else if(KEY_UP_DOWN_IP == g_ulKeyValue)
  996. {
  997. g_ulKeyValue=0;
  998. if(flag==1 || flag==2)
  999. {
  1000. //显示IP
  1001. GuiClearRect(0,y,LCD_WIDTH-1,LCD_HEIGHT-1);
  1002. //交换IP
  1003. GuiShowStr(x,y,"交换服务器:",0x01,0);
  1004. y+= LineSpace;
  1005. snprintf(buf, sizeof(buf),"%s",showPIP);
  1006. GuiShowStr(x,y,buf,0x01,0);
  1007. y+=LineSpace;
  1008. //GPS IP
  1009. GuiShowStr(x,y,"定位服务器:",0x01,0);
  1010. y+= LineSpace;
  1011. snprintf(buf, sizeof(buf),"%s",showGIP);
  1012. GuiShowStr(x,y,buf,0x01,0);
  1013. y+=LineSpace;
  1014. snprintf(buf, sizeof(buf),"PORT:%d",newPara.gpsPort);
  1015. GuiShowStr(x,y,buf,1,0);
  1016. flag=0;
  1017. }
  1018. }
  1019. }
  1020. void UIShowPOCSerPass(int update){
  1021. if(update){
  1022. GuiClearAll();//clear
  1023. ShowCaption("密码验证",1); //0
  1024. //GuiDrawHLine(0,LCD_WIDTH,20,1);
  1025. NumEditInit(&sutNumEdit,(LCD_WIDTH-6*8)/2,(LCD_HEIGHT-16)/2,"000000");
  1026. NumEditShow(&sutNumEdit);
  1027. GuiDrawHLine(0,LCD_WIDTH,104,1);
  1028. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]加值 [下]移动",0x01,0);
  1029. }
  1030. }
  1031. void POCSetSerPassResponse(void){
  1032. unsigned long key;
  1033. NumEditResponse(&sutNumEdit);
  1034. if(KEY_PANEL_MENU==g_ulKeyValue){
  1035. if(memcmp(sutNumEdit.buffer, menu_key, 6)==0) UISetNextStatus(UIS_SET_SERVER);
  1036. else{
  1037. ShowMessageBox("密码错误");
  1038. uTimerHardDly(50);
  1039. UI_Stack.OK_back=1;
  1040. UISetNextStatus(UIS_MENU_SYS_SET);
  1041. }
  1042. }
  1043. if(KEY_PANEL_EXIT==g_ulKeyValue) UISetNextStatus(UIS_MENU_SYS_SET);
  1044. }
  1045. void UIShowPOCSer(int update){
  1046. int i;
  1047. unsigned char tempSer;
  1048. static const char *accIconFileName[]={
  1049. "Ser.bmp",
  1050. "Sersel.bmp",
  1051. ""
  1052. };
  1053. static const char *NameAddr[]={
  1054. "杭州服务器",
  1055. "山东服务器",
  1056. "IP分发服务器",
  1057. "集群服务器",
  1058. "自定义服务器",
  1059. ""
  1060. };
  1061. static char *tempAddr[5];
  1062. static char ItemFeatures[4+1];
  1063. if(update){
  1064. GuiClearAll();
  1065. ShowCaption("服务器列表",2); //0
  1066. //GuiDrawHLine(0,159,20,1);
  1067. GuiDrawHLine(0,159,110,1);
  1068. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]确定 [EXIT]退出",0x01,0);
  1069. tempSer=newPara.serList.defaultuse;
  1070. if(hgs_poc_type != POC_OWN){
  1071. if(tempSer >= 2) tempSer -= 2;
  1072. }
  1073. for(i=0;i<=SER_US;i++){
  1074. if(i==tempSer) ItemFeatures[i]=1;
  1075. else ItemFeatures[i]=0;
  1076. }
  1077. //初始化ListBox控件
  1078. if(hgs_poc_type == POC_OWN)
  1079. ListBoxInit(&sutListBox,NameAddr,0,accIconFileName,ItemFeatures);
  1080. else{
  1081. for(i=0;i<2;i++) tempAddr[i]=(char *)NameAddr[i];
  1082. tempAddr[i++]=(char *)NameAddr[4];
  1083. tempAddr[i++]=(char *)NameAddr[5];
  1084. ListBoxInit(&sutListBox,tempAddr,0,accIconFileName,ItemFeatures);
  1085. }
  1086. return;
  1087. }
  1088. }
  1089. void POCSetSerResponse(void)
  1090. {
  1091. char buf[50],buf1[100];
  1092. unsigned long key;
  1093. char *pip,*domain=NULL;
  1094. unsigned char tempSer;
  1095. key=ListBoxResponse(&sutListBox);
  1096. if(KEY_PANEL_EXIT==key) UISetNextStatus(UIS_MENU_SYS_SET);
  1097. else if(KEY_PANEL_MENU==key){
  1098. tempSer=sutListBox.handle;
  1099. if(hgs_poc_type != POC_OWN){
  1100. if(tempSer >= 2) tempSer += 2;//西安POC没有集群跟IP分发
  1101. }
  1102. if(tempSer != newPara.serList.defaultuse){
  1103. newPara.serList.defaultuse=tempSer;
  1104. ShowMessageBox("配置完成");
  1105. //sys save
  1106. ModifyConfigureFile(0);
  1107. getGIPAddr();//更新GPS参数
  1108. pip=getPIPAddr();
  1109. domain=getDOMAINAddr();
  1110. //西安的POC不支持单段设置,且必须同时配置id与ip,最好不配置domain
  1111. if(hgs_poc_type==POC_OWN)snprintf(buf, sizeof(buf),"ip=%s;domain=%s;", pip, domain);
  1112. else snprintf(buf, sizeof(buf),"id=%ld;ip=%s;", sutProductPara.PSN,pip);
  1113. AscStrToHexStr(buf,buf1);
  1114. ModemSendAt("AT+POC=010000");
  1115. ModemSendAt(buf1);
  1116. ModemSendAt("\r\n");
  1117. IWDG_ReloadCounter();
  1118. uTimerHardDly(20);
  1119. //os_dly_wait(20);
  1120. ModemSendAt("AT+POC=040000\r\n");
  1121. //OsDelayTime(100);
  1122. }
  1123. UISetNextStatus(UIS_STANDBY );
  1124. }
  1125. }
  1126. void SetAPNResponse(void)
  1127. {
  1128. unsigned long key;
  1129. key=ListBoxResponse(&sutListBox);
  1130. if(KEY_PANEL_MENU==key)
  1131. {
  1132. ShowMessageBox("即将重启更新...");
  1133. if(newPara.apnList.defaultuse != sutListBox.handle){
  1134. newPara.apnList.defaultuse = sutListBox.handle;
  1135. //save sys
  1136. ModifyConfigureFile(0);
  1137. //uTimerHardDly(200);
  1138. //modemPwrOffNow=1;
  1139. sutPocStatus.modemRstFlag=1;
  1140. UISetNextStatus(UIS_STANDBY);
  1141. }else UISetNextStatus(UIS_MENU_SYS_SET);
  1142. }else if(KEY_OPTION==key) UISetNextStatus(UIS_APN_DETAIL);
  1143. else if(KEY_PANEL_EXIT==key)UISetNextStatus(UIS_MENU_SYS_SET);
  1144. }
  1145. void SetApnDetailResponse(void)
  1146. {
  1147. if(KEY_PANEL_DOWN==g_ulKeyValue)
  1148. {
  1149. showIndex++;
  1150. if(showIndex >= validApnNum) showIndex=0;
  1151. ShowAPNMessage(showIndex);
  1152. }else if(KEY_PANEL_UP==g_ulKeyValue)
  1153. {
  1154. if(showIndex==0) showIndex=validApnNum;
  1155. if(showIndex > 0) showIndex--;
  1156. ShowAPNMessage(showIndex);
  1157. }
  1158. else if(KEY_PANEL_EXIT==g_ulKeyValue) UISetNextStatus(UIS_SET_APN);
  1159. }
  1160. void SetPowerModeResponse()
  1161. {
  1162. unsigned long key;
  1163. key=ListBoxResponse(&sutListBox);
  1164. if(KEY_PANEL_MENU==key){
  1165. if(sutListBox.handle != newPara.pwrMode){
  1166. newPara.pwrMode=sutListBox.handle;
  1167. ModifyConfigureFile(1);
  1168. }
  1169. UI_Stack.OK_back=1;
  1170. UISetNextStatus(UIS_MENU_SYS_SET);
  1171. }else if(KEY_PANEL_EXIT==key){
  1172. UISetNextStatus(UIS_MENU_SYS_SET);
  1173. }
  1174. }
  1175. unsigned char TempMicLv=0x6c;
  1176. //SUT_MENU sutMenuMain;
  1177. /*********************************************************/
  1178. void SetMicLvSelectShow(int update)
  1179. {
  1180. static unsigned short susCt=0;
  1181. char buf[4];
  1182. if(update==1){
  1183. susCt=0;
  1184. GuiClearAll();
  1185. ShowCaption("麦克风增益",1);//
  1186. GuiDrawHLine(0,159,110,1);
  1187. if(modemInitReady==0){
  1188. ShowMessageBox("模块暂未启动");
  1189. uTimerHardDly(50);
  1190. UISetNextStatus(UIS_MENU_SYS_SET);
  1191. }else{
  1192. TempMicLv=newPara.Miclv;
  1193. snprintf(buf,sizeof(buf),"%03d",TempMicLv);
  1194. FunShowMsg(buf);
  1195. }
  1196. }
  1197. if(susCt==0){
  1198. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  1199. }else if(susCt==200){
  1200. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  1201. }
  1202. if(++susCt>=400)susCt=0;
  1203. }
  1204. void SetMicLvSelectResponse()
  1205. {
  1206. char info[30];
  1207. switch(g_ulKeyValue){
  1208. case KEY_PANEL_UP:
  1209. if(TempMicLv==0x6E) TempMicLv=100;
  1210. else TempMicLv++;
  1211. snprintf(info,sizeof(info),"%03d",TempMicLv);
  1212. FunShowMsg(info);
  1213. break;
  1214. case KEY_PANEL_DOWN:
  1215. if(TempMicLv==100) TempMicLv=0x6E;
  1216. else TempMicLv--;
  1217. snprintf(info,sizeof(info),"%03d",TempMicLv);
  1218. FunShowMsg(info);
  1219. break;
  1220. case KEY_PANEL_MENU:
  1221. uTimerHardDly(50);
  1222. newPara.Miclv=TempMicLv;
  1223. sprintf(info, "AT+CACCP=2,1,6,\"%02x00%02x00\"\r\n", TempMicLv/16,TempMicLv%16);
  1224. ModemSendAt(info);
  1225. printf("%s---%02x----%02x",info,TempMicLv/16,TempMicLv%16);
  1226. ModifyConfigureFile(0);
  1227. break;
  1228. case KEY_PANEL_EXIT:
  1229. UISetNextStatus(UIS_MENU_SYS_SET);
  1230. break;
  1231. }
  1232. }
  1233. void PoweroffWaitShow(int update)
  1234. {
  1235. if(update==1){
  1236. GuiClearAll();
  1237. ShowMessageBox("确认关机?");
  1238. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]确认 [EXIT]退出",0x01,0);
  1239. }
  1240. }
  1241. void PoweroffWaitResponse()
  1242. {
  1243. switch(g_ulKeyValue){
  1244. case KEY_PANEL_MENU:
  1245. GuiShowBmp(0,0,"BYEBYE.bmp");
  1246. uTimerHardDly(50);
  1247. MODEM_PWREN_LOW;
  1248. PWR_EN_LOW;
  1249. MODEM_LED1_LOW;
  1250. while(1);
  1251. break;
  1252. case KEY_PANEL_EXIT:
  1253. UISetNextStatus(UIS_STANDBY);
  1254. break;
  1255. }
  1256. }