SetSystemPara.c 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415
  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. "USB",
  710. "升级模式",
  711. ""
  712. };
  713. //static
  714. char NetsFeatures[2]={0};
  715. if(update){
  716. GuiClearAll();
  717. ShowCaption("串口切换",2);//
  718. NetsFeatures[USBSeletCt]=1;
  719. ListBoxInit(&sutListBox,Netmode,0,accIconFileNameAPN,NetsFeatures);
  720. //----------------------------
  721. GuiDrawHLine(0,159,110,1);
  722. }
  723. if(susCt==0){
  724. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  725. }else if(susCt==200){
  726. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  727. }
  728. if(++susCt>=400)susCt=0;
  729. }
  730. void SetUSBorTTLResponse(void)
  731. {
  732. unsigned long key;
  733. unsigned char buf[15];
  734. key=ListBoxResponse(&sutListBox);
  735. if(KEY_PANEL_MENU==key){
  736. if(sutListBox.handle != USBSeletCt){
  737. USBSeletCt=sutListBox.handle;
  738. switch(USBSeletCt)
  739. {
  740. case 0://USB
  741. // ModemSendAt("AT+ROUTE=0,1\r\n");//打开POClog
  742. MODEM_UPDATE_LOW;
  743. break;
  744. case 1://MODEMUPDATE
  745. MODEM_UPDATE_HIGH;
  746. sutPocStatus.modemRstFlag=1;
  747. break;
  748. }
  749. }
  750. UI_Stack.OK_back=1;
  751. UISetNextStatus(UIS_MENU_SYS_SET);
  752. }else if(KEY_PANEL_EXIT==key){
  753. UISetNextStatus(UIS_MENU_SYS_SET);
  754. }
  755. }
  756. void SetPowerModeShow(int update)
  757. {
  758. int i;
  759. static const char *ModeName[]={//这里数量变了记得修改 PWR_MODE_NUM
  760. "低功耗模式",
  761. "超长待机模式",
  762. "常规模式",
  763. ""
  764. };
  765. char GroupsFeatures[PWR_MODE_NUM];
  766. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  767. if(update){
  768. GuiClearAll();
  769. ShowCaption("模式设置",2);//
  770. //GuiDrawHLine(0,159,20,1);
  771. //设置Features 将决定选择图标
  772. GroupsFeatures[newPara.pwrMode]=1;
  773. ListBoxInit(&sutListBox,ModeName,0,accIconFileNameAPN,GroupsFeatures);
  774. //----------------------------
  775. GuiDrawHLine(0,159,110,1);
  776. GuiShowStr(0,SUBSCRIPT_LOCATION,"[OK]切换 [EXIT]退出",0x01,0);
  777. }
  778. }
  779. /***************************场景模式设置******************************/
  780. void SetSoundModeShow(int update)
  781. {
  782. int i;
  783. static const char *ModeName[]={
  784. "室内模式",
  785. "室外模式",
  786. ""
  787. };
  788. char GroupsFeatures[2];
  789. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  790. if(update){
  791. GuiClearAll();
  792. ShowCaption("场景模式",2);//
  793. //GuiDrawHLine(0,159,20,1);
  794. //设置Features 将决定选择图标
  795. memset(GroupsFeatures,0,sizeof(GroupsFeatures));
  796. GroupsFeatures[newPara.SoundMode]=1;
  797. ListBoxInit(&sutListBox,ModeName,0,accIconFileNameAPN,GroupsFeatures);
  798. //----------------------------
  799. GuiDrawHLine(0,159,110,1);
  800. GuiShowStr(0,SUBSCRIPT_LOCATION,"[OK]切换 [EXIT]退出",0x01,0);
  801. //sutUIstatus.ItemRefresh=0;
  802. }
  803. }
  804. void SetSoundModeResponse(void)
  805. {
  806. unsigned long key;
  807. key=ListBoxResponse(&sutListBox);
  808. if(KEY_PANEL_MENU==key)
  809. {
  810. if(newPara.SoundMode!=sutListBox.handle){
  811. newPara.SoundMode=sutListBox.handle;
  812. if(newPara.SoundMode==1)ModemSendAt("at+syscmd=start_pcm volume 7 7\r\n");
  813. else ModemSendAt("at+syscmd=start_pcm volume 7 5\r\n");
  814. ModifyConfigureFile(1);
  815. //sutUIstatus.ItemRefresh=1;
  816. }
  817. UI_Stack.OK_back=1;
  818. UISetNextStatus(UIS_MENU_SYS_SET);
  819. }
  820. else if(KEY_PANEL_EXIT==key)UISetNextStatus(UIS_MENU_SYS_SET);
  821. }
  822. //对讲版本空中升级API
  823. int getNewVersion;
  824. unsigned char fotaPocStatus;
  825. unsigned int fotaTick;
  826. void SetUpIntercomVerShow(int update)
  827. {
  828. char info[40];
  829. if(update){
  830. GuiClearAll();
  831. ShowCaption("升级对讲版本",1);//
  832. //GuiDrawHLine(0,159,20,1);
  833. FunShowMsg("正在检测版本");
  834. GuiDrawHLine(0,159,110,1);
  835. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]升级 [EXIT]退出",0x01,0);
  836. getNewVersion=-1;
  837. fotaPocStatus=0;
  838. ModemSendAt("AT+FOTA?\r\n");//对应用在模块接收消息中添加获取版本代码
  839. uTimerStart(&fotaTick,400);//200
  840. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]确定 [EXIT]退出",0x01,0);
  841. }
  842. switch(fotaPocStatus){
  843. case 0://获取版本信息
  844. if(uTimerExpired(&fotaTick)){
  845. if(getNewVersion ==0){//没有更新版本
  846. fotaPocStatus=1;
  847. FunShowMsg("没有可更新版本");
  848. uTimerStart(&fotaTick,150);
  849. }else if(getNewVersion>0){//有可更新版本
  850. //询问是否更新
  851. sprintf(info, "更新到V%d ?",getNewVersion);
  852. FunShowMsg(info);
  853. fotaPocStatus=2;
  854. }else{//超时未检测到查询版本响应
  855. fotaPocStatus=1;
  856. FunShowMsg("检测超时");
  857. uTimerStart(&fotaTick,150);
  858. }
  859. }
  860. break;
  861. case 1:
  862. if(uTimerExpired(&fotaTick)){//退出显示信息完毕
  863. UISetNextStatus(UIS_STANDBY);
  864. }
  865. break;
  866. }
  867. }
  868. void SetUpIntercomVerResponse(void)
  869. {
  870. switch(fotaPocStatus){
  871. case 2://等待用户确定
  872. if(KEY_PANEL_MENU==g_ulKeyValue){
  873. //确定
  874. fotaPocStatus=3;
  875. ModemSendAt("AT+FOTA=1\r\n");
  876. }else if(KEY_PANEL_EXIT==g_ulKeyValue){
  877. UISetNextStatus(UIS_MENU_SYS_SET);
  878. }
  879. break;
  880. }
  881. }
  882. /*
  883. 针对cat1
  884. AT+FOTA? 查询FOTA状态
  885. +FOTA:1,0 无版本可以升级/当前版本最新
  886. +FOTA:1,2012 有最新的版本可以升级 2012版本
  887. AT+FOTA=1 有版本升级的情况下发,表示启动升级
  888. +FOTA:0 表示升级失败/停止
  889. +FOTA:1 表示正在升级
  890. +FOTA:2 表示升级成功即将重启
  891. */
  892. void FotaStatusProcess(char *pMsg)
  893. {
  894. char info[30];
  895. switch(pMsg[0]){
  896. case '1'://1,0 1,19070702 表示查询POC版本响应
  897. if(strlen(pMsg)>2){
  898. getNewVersion=atoi(pMsg+2);//获取版本结果
  899. }else{
  900. FunShowMsg("正在升级...");
  901. }
  902. break;
  903. case '2'://表示安装完成,正在重启模块
  904. FunShowMsg("正在重启...");
  905. sutPocStatus.modemRstFlag=1;
  906. fotaPocStatus=1;
  907. uTimerStart(&fotaTick,150);
  908. break;
  909. case '0'://退出FOTA升级,原因可能是因为网络不稳定或者文件获取失败
  910. FunShowMsg("失败退出");
  911. fotaPocStatus=1;
  912. uTimerStart(&fotaTick,150);
  913. break;
  914. }
  915. }
  916. void UIShowInformation(int update)
  917. {
  918. u16 x,y;
  919. char temp[11];
  920. char buf[50];
  921. static unsigned char flag=0;
  922. unsigned char LineSpace;//行宽
  923. LineSpace=18;
  924. if(update)
  925. {
  926. flag=0;
  927. GuiClearAll();
  928. ShowCaption("终端信息",1); //0
  929. //GuiDrawHLine(0,159,20,1);
  930. }
  931. x=2,y=STATUS_ITEM_HEIGH+5;//
  932. if(KEY_PANEL_UP==g_ulKeyValue ||
  933. KEY_PANEL_DOWN==g_ulKeyValue ||
  934. update)
  935. {
  936. g_ulKeyValue = 0;
  937. if(flag==0 || flag==2)
  938. {//显示PSN
  939. GuiClearRect(0,y,LCD_WIDTH-1,LCD_HEIGHT-1);
  940. //终端型号
  941. // snprintf(buf, sizeof(buf),"终端型号:%s",sutProductPara.ProductName);
  942. // GuiShowStr(x,y,buf,0x01,0);
  943. // y+=LineSpace;
  944. //终端编码
  945. snprintf(buf, sizeof(buf),"终端编码:%lu",sutProductPara.PSN);
  946. GuiShowStr(x,y,buf,0x01,0);
  947. y+=LineSpace;
  948. //应用版本号
  949. snprintf(buf, sizeof(buf),"应用版本:V%d",sutProductPara.ProductVersion);
  950. GuiShowStr(x,y,buf,0x01,0);
  951. y+=LineSpace;
  952. //内部版本号
  953. snprintf(buf, sizeof(buf),"内部版本:%d",CUSTOMER_CODE);
  954. GuiShowStr(x,y,buf,0x01,0);
  955. // y+=LineSpace;
  956. // //模块版本号
  957. // snprintf(buf, sizeof(buf),"模块版本:L%d",g_iModemVer);
  958. // GuiShowStr(x,y,buf,0x01,0);
  959. flag=1;
  960. }else if(flag==1)
  961. {
  962. GuiClearRect(0,y,LCD_WIDTH-1,LCD_HEIGHT-1);
  963. //对讲版本号
  964. //snprintf(buf, sizeof(buf),"对讲版本:V%d",g_iPocVer);
  965. if(hgs_poc_type==POC_NULL)snprintf(buf, sizeof(buf),"平台:未知");
  966. else if(hgs_poc_type==POC_OWN)snprintf(buf, sizeof(buf),"平台:HGS");
  967. else if(hgs_poc_type==POC_BND)snprintf(buf, sizeof(buf),"平台:BND");
  968. GuiShowStr(x,y,buf,0x01,0);
  969. y+=LineSpace;
  970. //校验码
  971. // GetCheckCodeByPsnMEID(temp,sutProductPara.PSN,DEV_HARDID);
  972. // snprintf(buf, sizeof(buf),"校验码:%s",temp);
  973. snprintf(buf, sizeof(buf),"PocVer:%s",g_iPocVer);
  974. GuiShowStr(x,y,buf,0x01,0);
  975. y+=LineSpace;
  976. temp[0]=0;
  977. //显示MCU主频率
  978. snprintf(buf, sizeof(buf),"MCU主频:%d.%d Mhz",USER_MAIN_SYSCLK/1000000,USER_MAIN_SYSCLK%1000000/100000);
  979. GuiShowStr(x,y,buf,0x01,0);
  980. y+=LineSpace;
  981. //
  982. memset(buf,sizeof(buf),0);
  983. snprintf(buf,sizeof(buf),"模块:%s",ModemVer);
  984. GuiShowStr(x,y,buf,0x01,0);
  985. flag=2;
  986. }
  987. }else if(KEY_UP_DOWN_IP == g_ulKeyValue)
  988. {
  989. g_ulKeyValue=0;
  990. if(flag==1 || flag==2)
  991. {
  992. //显示IP
  993. GuiClearRect(0,y,LCD_WIDTH-1,LCD_HEIGHT-1);
  994. //交换IP
  995. GuiShowStr(x,y,"交换服务器:",0x01,0);
  996. y+= LineSpace;
  997. snprintf(buf, sizeof(buf),"%s",showPIP);
  998. GuiShowStr(x,y,buf,0x01,0);
  999. y+=LineSpace;
  1000. //GPS IP
  1001. GuiShowStr(x,y,"定位服务器:",0x01,0);
  1002. y+= LineSpace;
  1003. snprintf(buf, sizeof(buf),"%s",showGIP);
  1004. GuiShowStr(x,y,buf,0x01,0);
  1005. y+=LineSpace;
  1006. snprintf(buf, sizeof(buf),"PORT:%d",newPara.gpsPort);
  1007. GuiShowStr(x,y,buf,1,0);
  1008. flag=0;
  1009. }
  1010. }
  1011. }
  1012. void UIShowPOCSerPass(int update){
  1013. if(update){
  1014. GuiClearAll();//clear
  1015. ShowCaption("密码验证",1); //0
  1016. //GuiDrawHLine(0,LCD_WIDTH,20,1);
  1017. NumEditInit(&sutNumEdit,(LCD_WIDTH-6*8)/2,(LCD_HEIGHT-16)/2,"000000");
  1018. NumEditShow(&sutNumEdit);
  1019. GuiDrawHLine(0,LCD_WIDTH,104,1);
  1020. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]加值 [下]移动",0x01,0);
  1021. }
  1022. }
  1023. void POCSetSerPassResponse(void){
  1024. unsigned long key;
  1025. NumEditResponse(&sutNumEdit);
  1026. if(KEY_PANEL_MENU==g_ulKeyValue){
  1027. if(memcmp(sutNumEdit.buffer, menu_key, 6)==0) UISetNextStatus(UIS_SET_SERVER);
  1028. else{
  1029. ShowMessageBox("密码错误");
  1030. uTimerHardDly(50);
  1031. UI_Stack.OK_back=1;
  1032. UISetNextStatus(UIS_MENU_SYS_SET);
  1033. }
  1034. }
  1035. if(KEY_PANEL_EXIT==g_ulKeyValue) UISetNextStatus(UIS_MENU_SYS_SET);
  1036. }
  1037. void UIShowPOCSer(int update){
  1038. int i;
  1039. unsigned char tempSer;
  1040. static const char *accIconFileName[]={
  1041. "Ser.bmp",
  1042. "Sersel.bmp",
  1043. ""
  1044. };
  1045. static const char *NameAddr[]={
  1046. "杭州服务器",
  1047. "山东服务器",
  1048. "IP分发服务器",
  1049. "集群服务器",
  1050. "自定义服务器",
  1051. ""
  1052. };
  1053. static char *tempAddr[5];
  1054. static char ItemFeatures[4+1];
  1055. if(update){
  1056. GuiClearAll();
  1057. ShowCaption("服务器列表",2); //0
  1058. //GuiDrawHLine(0,159,20,1);
  1059. GuiDrawHLine(0,159,110,1);
  1060. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]确定 [EXIT]退出",0x01,0);
  1061. tempSer=newPara.serList.defaultuse;
  1062. if(hgs_poc_type != POC_OWN){
  1063. if(tempSer >= 2) tempSer -= 2;
  1064. }
  1065. for(i=0;i<=SER_US;i++){
  1066. if(i==tempSer) ItemFeatures[i]=1;
  1067. else ItemFeatures[i]=0;
  1068. }
  1069. //初始化ListBox控件
  1070. if(hgs_poc_type == POC_OWN)
  1071. ListBoxInit(&sutListBox,NameAddr,0,accIconFileName,ItemFeatures);
  1072. else{
  1073. for(i=0;i<2;i++) tempAddr[i]=(char *)NameAddr[i];
  1074. tempAddr[i++]=(char *)NameAddr[4];
  1075. tempAddr[i++]=(char *)NameAddr[5];
  1076. ListBoxInit(&sutListBox,tempAddr,0,accIconFileName,ItemFeatures);
  1077. }
  1078. return;
  1079. }
  1080. }
  1081. void POCSetSerResponse(void)
  1082. {
  1083. char buf[50],buf1[100];
  1084. unsigned long key;
  1085. char *pip,*domain=NULL;
  1086. unsigned char tempSer;
  1087. key=ListBoxResponse(&sutListBox);
  1088. if(KEY_PANEL_EXIT==key) UISetNextStatus(UIS_MENU_SYS_SET);
  1089. else if(KEY_PANEL_MENU==key){
  1090. tempSer=sutListBox.handle;
  1091. if(hgs_poc_type != POC_OWN){
  1092. if(tempSer >= 2) tempSer += 2;//西安POC没有集群跟IP分发
  1093. }
  1094. if(tempSer != newPara.serList.defaultuse){
  1095. newPara.serList.defaultuse=tempSer;
  1096. ShowMessageBox("配置完成");
  1097. //sys save
  1098. ModifyConfigureFile(0);
  1099. getGIPAddr();//更新GPS参数
  1100. pip=getPIPAddr();
  1101. domain=getDOMAINAddr();
  1102. //西安的POC不支持单段设置,且必须同时配置id与ip,最好不配置domain
  1103. if(hgs_poc_type==POC_OWN)snprintf(buf, sizeof(buf),"ip=%s;domain=%s;", pip, domain);
  1104. else snprintf(buf, sizeof(buf),"id=%ld;ip=%s;", sutProductPara.PSN,pip);
  1105. AscStrToHexStr(buf,buf1);
  1106. ModemSendAt("AT+POC=010000");
  1107. ModemSendAt(buf1);
  1108. ModemSendAt("\r\n");
  1109. IWDG_ReloadCounter();
  1110. uTimerHardDly(20);
  1111. //os_dly_wait(20);
  1112. ModemSendAt("AT+POC=040000\r\n");
  1113. //OsDelayTime(100);
  1114. }
  1115. UISetNextStatus(UIS_STANDBY );
  1116. }
  1117. }
  1118. void SetAPNResponse(void)
  1119. {
  1120. unsigned long key;
  1121. key=ListBoxResponse(&sutListBox);
  1122. if(KEY_PANEL_MENU==key)
  1123. {
  1124. ShowMessageBox("即将重启更新...");
  1125. if(newPara.apnList.defaultuse != sutListBox.handle){
  1126. newPara.apnList.defaultuse = sutListBox.handle;
  1127. //save sys
  1128. ModifyConfigureFile(0);
  1129. //uTimerHardDly(200);
  1130. //modemPwrOffNow=1;
  1131. sutPocStatus.modemRstFlag=1;
  1132. UISetNextStatus(UIS_STANDBY);
  1133. }else UISetNextStatus(UIS_MENU_SYS_SET);
  1134. }else if(KEY_OPTION==key) UISetNextStatus(UIS_APN_DETAIL);
  1135. else if(KEY_PANEL_EXIT==key)UISetNextStatus(UIS_MENU_SYS_SET);
  1136. }
  1137. void SetApnDetailResponse(void)
  1138. {
  1139. if(KEY_PANEL_DOWN==g_ulKeyValue)
  1140. {
  1141. showIndex++;
  1142. if(showIndex >= validApnNum) showIndex=0;
  1143. ShowAPNMessage(showIndex);
  1144. }else if(KEY_PANEL_UP==g_ulKeyValue)
  1145. {
  1146. if(showIndex==0) showIndex=validApnNum;
  1147. if(showIndex > 0) showIndex--;
  1148. ShowAPNMessage(showIndex);
  1149. }
  1150. else if(KEY_PANEL_EXIT==g_ulKeyValue) UISetNextStatus(UIS_SET_APN);
  1151. }
  1152. void SetPowerModeResponse()
  1153. {
  1154. unsigned long key;
  1155. key=ListBoxResponse(&sutListBox);
  1156. if(KEY_PANEL_MENU==key){
  1157. if(sutListBox.handle != newPara.pwrMode){
  1158. newPara.pwrMode=sutListBox.handle;
  1159. ModifyConfigureFile(1);
  1160. }
  1161. UI_Stack.OK_back=1;
  1162. UISetNextStatus(UIS_MENU_SYS_SET);
  1163. }else if(KEY_PANEL_EXIT==key){
  1164. UISetNextStatus(UIS_MENU_SYS_SET);
  1165. }
  1166. }
  1167. unsigned char TempMicLv=0x6c;
  1168. //SUT_MENU sutMenuMain;
  1169. /*********************************************************/
  1170. void SetMicLvSelectShow(int update)
  1171. {
  1172. static unsigned short susCt=0;
  1173. char buf[4];
  1174. if(update==1){
  1175. susCt=0;
  1176. GuiClearAll();
  1177. ShowCaption("麦克风增益",1);//
  1178. GuiDrawHLine(0,159,110,1);
  1179. if(modemInitReady==0){
  1180. ShowMessageBox("模块暂未启动");
  1181. uTimerHardDly(50);
  1182. UISetNextStatus(UIS_MENU_SYS_SET);
  1183. }else{
  1184. TempMicLv=newPara.Miclv;
  1185. snprintf(buf,sizeof(buf),"%03d",TempMicLv);
  1186. FunShowMsg(buf);
  1187. }
  1188. }
  1189. if(susCt==0){
  1190. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  1191. }else if(susCt==200){
  1192. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  1193. }
  1194. if(++susCt>=400)susCt=0;
  1195. }
  1196. void SetMicLvSelectResponse()
  1197. {
  1198. char info[30];
  1199. switch(g_ulKeyValue){
  1200. case KEY_PANEL_UP:
  1201. if(TempMicLv==0x6E) TempMicLv=100;
  1202. else TempMicLv++;
  1203. snprintf(info,sizeof(info),"%03d",TempMicLv);
  1204. FunShowMsg(info);
  1205. break;
  1206. case KEY_PANEL_DOWN:
  1207. if(TempMicLv==100) TempMicLv=0x6E;
  1208. else TempMicLv--;
  1209. snprintf(info,sizeof(info),"%03d",TempMicLv);
  1210. FunShowMsg(info);
  1211. break;
  1212. case KEY_PANEL_MENU:
  1213. uTimerHardDly(50);
  1214. newPara.Miclv=TempMicLv;
  1215. sprintf(info, "AT+CACCP=2,1,6,\"%02x00%02x00\"\r\n", TempMicLv/16,TempMicLv%16);
  1216. ModemSendAt(info);
  1217. printf("%s---%02x----%02x",info,TempMicLv/16,TempMicLv%16);
  1218. ModifyConfigureFile(0);
  1219. break;
  1220. case KEY_PANEL_EXIT:
  1221. UISetNextStatus(UIS_MENU_SYS_SET);
  1222. break;
  1223. }
  1224. }
  1225. void PoweroffWaitShow(int update)
  1226. {
  1227. if(update==1){
  1228. GuiClearAll();
  1229. ShowMessageBox("确认关机?");
  1230. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]确认 [EXIT]退出",0x01,0);
  1231. }
  1232. }
  1233. void PoweroffWaitResponse()
  1234. {
  1235. switch(g_ulKeyValue){
  1236. case KEY_PANEL_MENU:
  1237. GuiShowBmp(0,0,"BYEBYE.bmp");
  1238. uTimerHardDly(50);
  1239. MODEM_PWREN_LOW;
  1240. PWR_EN_LOW;
  1241. MODEM_LED1_LOW;
  1242. while(1);
  1243. break;
  1244. case KEY_PANEL_EXIT:
  1245. UISetNextStatus(UIS_STANDBY);
  1246. break;
  1247. }
  1248. }