SetSystemPara.c 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427
  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. //sutUIstatus.ItemRefresh=1;
  574. sutPocStatus.modemRstFlag=1;
  575. UISetNextStatus(UIS_STANDBY);
  576. }else if(KEY_PANEL_EXIT==key){
  577. UISetNextStatus(UIS_MENU_SYS_SET);
  578. }
  579. }
  580. unsigned char SetTimeIndex;
  581. void SetLCDShow(int update)
  582. {
  583. static unsigned short susCt=0;
  584. char buf[10];
  585. char buf1[6];
  586. int x=4;//4
  587. int i;
  588. if(update==1){
  589. SetTimeIndex=newPara.lcdParaDefaultIndex;
  590. GuiClearAll();
  591. ShowCaption("LCD设置",1);//0
  592. //GuiDrawHLine(0,159,20,1);
  593. GuiShowStr(x,56," 背光时间: ",1,0);
  594. if(SetTimeIndex==4) snprintf(buf, sizeof(buf),"常亮 ");
  595. else snprintf(buf, sizeof(buf),"%3d 秒",newPara.lcdParaList[SetTimeIndex]);
  596. GuiShowStr(x+(16*5),56,buf,1,0);
  597. //GuiReverseRect(x+(16*5),56,32,16);
  598. snprintf(buf1, sizeof(buf1),"%3d",SetTimeIndex);
  599. SlwTrace(INF,buf1,1);
  600. GuiDrawHLine(0,159,110,1);
  601. susCt=0;
  602. //return;
  603. }else if(update == 2){
  604. GuiClearRect(x+(16*5),56,160,16);
  605. if(SetTimeIndex==4) snprintf(buf, sizeof(buf),"常亮 ");
  606. else snprintf(buf, sizeof(buf),"%3d 秒",newPara.lcdParaList[SetTimeIndex]);
  607. GuiShowStr(x+(16*5),56,buf,1,0);
  608. //GuiReverseRect(x+(16*5),56,32,16);
  609. GuiDrawHLine(0,159,110,1);
  610. }
  611. if(susCt==0){
  612. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  613. }else if(susCt==200){
  614. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  615. }
  616. if(++susCt>=400)susCt=0;
  617. }
  618. void SetLCDResponse(void)
  619. {
  620. int FileIndex;
  621. unsigned long key;
  622. char Buf[10];
  623. int x=4;//4
  624. //TimeOut[]
  625. // key=ListBoxResponse(&sutListBox);
  626. switch(g_ulKeyValue){
  627. case KEY_PANEL_UP:
  628. if(++SetTimeIndex>=5)SetTimeIndex=0;
  629. SetLCDShow(2);//0
  630. break;
  631. case KEY_PANEL_DOWN:
  632. if(SetTimeIndex>0)SetTimeIndex--;
  633. else SetTimeIndex=4;
  634. SetLCDShow(2);//0
  635. break;
  636. case KEY_PANEL_MENU:
  637. if(SetTimeIndex != newPara.lcdParaDefaultIndex){
  638. newPara.lcdParaDefaultIndex=SetTimeIndex;
  639. //save sys
  640. ModifyConfigureFile(1);
  641. }
  642. UI_Stack.OK_back=1;
  643. UISetNextStatus(UIS_MENU_SYS_SET);
  644. break;
  645. case KEY_PANEL_EXIT:
  646. UISetNextStatus(UIS_MENU_SYS_SET);
  647. break;
  648. }
  649. }
  650. void GetMododexWithCard(void)
  651. {
  652. char buf[30];
  653. //根据CardType和ModeSetup转换为Mododex值的一个表
  654. //static const unsigned char MododrxTable[3][3]={{11,24,5},{2,8,5},{17,21,5}};
  655. static const unsigned char MododrxTable[3][4]={{11,15,10,5},{2,25,7,5},{17,25,1,5}};
  656. snprintf(buf,sizeof(buf),"AT+MODODREX=%d\r\n",MododrxTable[thisYunYingShang][newPara.netMode]);
  657. ModemSendAt(buf);
  658. }
  659. void SetNetShow(int update)
  660. {
  661. static unsigned short susCt=0;
  662. static const char *Netmode[NET_NUM+1]=
  663. {
  664. "AUTO",
  665. "2G",
  666. "4G",
  667. ""
  668. };
  669. //static
  670. char NetsFeatures[NET_NUM]={0};
  671. if(update){
  672. GuiClearAll();
  673. ShowCaption("网络设置",2);//
  674. NetsFeatures[newPara.netMode/2]=1;
  675. ListBoxInit(&sutListBox,Netmode,0,accIconFileNameAPN,NetsFeatures);
  676. //----------------------------
  677. GuiDrawHLine(0,159,110,1);
  678. }
  679. if(susCt==0){
  680. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  681. }else if(susCt==200){
  682. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  683. }
  684. if(++susCt>=400)susCt=0;
  685. }
  686. void SetNetResponse(void)
  687. {
  688. unsigned long key;
  689. unsigned char buf[15];
  690. key=ListBoxResponse(&sutListBox);
  691. if(KEY_PANEL_MENU==key){
  692. if(sutListBox.handle*2 != newPara.netMode){
  693. newPara.netMode=sutListBox.handle*2;
  694. snprintf(buf,sizeof(buf),"AT+CTEC=%d,%d\r\n",netshowvalue,newPara.netMode);
  695. ModemSendAt(buf);
  696. ModifyConfigureFile(1);
  697. }
  698. UI_Stack.OK_back=1;
  699. UISetNextStatus(UIS_MENU_SYS_SET);
  700. }else if(KEY_PANEL_EXIT==key){
  701. UISetNextStatus(UIS_MENU_SYS_SET);
  702. }
  703. }
  704. unsigned char USBSeletCt=0;
  705. void SetUSBorTTLShow(int update)
  706. {
  707. static unsigned short susCt=0;
  708. static const char *Netmode[3+1]=
  709. {
  710. "TTL",
  711. "USB",
  712. "升级模式",
  713. ""
  714. };
  715. //static
  716. char NetsFeatures[3]={0};
  717. if(update){
  718. GuiClearAll();
  719. ShowCaption("串口切换",2);//
  720. NetsFeatures[USBSeletCt]=1;
  721. ListBoxInit(&sutListBox,Netmode,0,accIconFileNameAPN,NetsFeatures);
  722. //----------------------------
  723. GuiDrawHLine(0,159,110,1);
  724. }
  725. if(susCt==0){
  726. GuiShowStr(0,SUBSCRIPT_LOCATION,"[上]选择 [下]选择",0x01,0);
  727. }else if(susCt==200){
  728. GuiShowStr(0,SUBSCRIPT_LOCATION,"[M]保存 [EXIT]退出",0x01,0);
  729. }
  730. if(++susCt>=400)susCt=0;
  731. }
  732. void SetUSBorTTLResponse(void)
  733. {
  734. unsigned long key;
  735. unsigned char buf[15];
  736. key=ListBoxResponse(&sutListBox);
  737. if(KEY_PANEL_MENU==key){
  738. if(sutListBox.handle != USBSeletCt){
  739. USBSeletCt=sutListBox.handle;
  740. switch(USBSeletCt)
  741. {
  742. case 0://TTL
  743. USBORTTL_HIGH;
  744. MODEM_UPDATE_LOW;
  745. break;
  746. case 1://USB
  747. // ModemSendAt("AT+ROUTE=0,1\r\n");//打开POClog
  748. USBORTTL_LOW;
  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. }