uiBlock.c 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505
  1. #include "includes.h"
  2. /****************************状态栏显示部分开始***********************************/
  3. void RTC_Init(void)
  4. {
  5. My_Clock.year=2000;
  6. My_Clock.month=1;
  7. My_Clock.day=1,
  8. My_Clock.hour=0;
  9. My_Clock.min=0;
  10. My_Clock.sec=0;
  11. }
  12. void RTC_Update(void)
  13. {
  14. if(++My_Clock.sec>=60){
  15. My_Clock.sec=0;
  16. if(++My_Clock.min>=60){
  17. My_Clock.min=0;
  18. if(++My_Clock.hour>=24){
  19. My_Clock.hour=0;
  20. }
  21. }
  22. }
  23. }
  24. unsigned char AscToHex(unsigned char aHex)
  25. {
  26. if((aHex>=0)&&(aHex<=9))
  27. aHex += 0x30;
  28. else if((aHex>=10)&&(aHex<=15))//A-F
  29. //aHex += 0x37;
  30. aHex += 0x57;
  31. else aHex = 0xff;
  32. return aHex;
  33. }
  34. void AscStrTurnHexStr(char *AscStr, char *HexStr)
  35. {
  36. char *pAscStr=AscStr;
  37. unsigned char d,h,l;
  38. while(0!=(d=(unsigned char)*pAscStr++)){
  39. l=d&0x0f;
  40. h=d>>4;
  41. *HexStr++=AscToHex(h);
  42. *HexStr++=AscToHex(l);
  43. }
  44. *HexStr=0;
  45. }
  46. //显示信号强度
  47. static void ShowSingle(int CSQ){
  48. unsigned short x=SIGNAL_ICON_X;
  49. unsigned short y=2;
  50. if(sutApp.pocPpp == 0) guiShowBmp(x,y,"Single.bmp");
  51. else guiShowBmp(x,y,"SingleOK.bmp");
  52. //11 3格
  53. x += 7;
  54. if(CSQ<1 || CSQ==99){
  55. guiClearRect(x,y+1,x+10,y+9,COLOR_STATUS_BAR);
  56. }else if(CSQ<8){
  57. guiDrawVLine(x+2,y+8,x,y,guiGetBackColor());
  58. guiClearRect(x+2,y+1,x+10,y+9,COLOR_STATUS_BAR);
  59. }else if(CSQ<16){
  60. guiDrawVLine(x+2,y+8,x,y,guiGetBackColor());
  61. guiDrawVLine(x,y+8,x+3,y,guiGetBackColor());
  62. guiClearRect(x+6,y+1,x+10,y+9,COLOR_STATUS_BAR);
  63. }else if(CSQ<22){
  64. guiDrawVLine(x+2,y+8,x,y,guiGetBackColor());
  65. guiDrawVLine(x,y+8,x+3,y,guiGetBackColor());
  66. guiDrawVLine(x-2,y+8,x+6,y,guiGetBackColor());
  67. guiClearRect(x+9,y+1,x+10,y+9,COLOR_STATUS_BAR);
  68. }else{
  69. guiDrawVLine(x+2,y+8,x,y,guiGetBackColor());
  70. guiDrawVLine(x,y+8,x+3,y,guiGetBackColor());
  71. guiDrawVLine(x-2,y+8,x+6,y,guiGetBackColor());
  72. guiDrawVLine(x-4,y+8,x+9,y,guiGetBackColor());
  73. }
  74. }
  75. unsigned char netshowvalue=0xff;
  76. unsigned char ctecCurrentSet=0;
  77. //显示网络制式
  78. static void Show_Net(unsigned char s_netshowvalue){
  79. unsigned short y=0;
  80. if(s_netshowvalue==0){
  81. guiShowStr(NET_ICON_X, y+1,"2G", FONT_MODE_12X12, REVERSED_NO,guiGetBackColor(),COLOR_STATUS_BAR);
  82. }else if(s_netshowvalue==4){
  83. guiShowStr(NET_ICON_X, y+1,"4G", FONT_MODE_12X12, REVERSED_NO,guiGetBackColor(),COLOR_STATUS_BAR);
  84. }else guiClearRect(NET_ICON_X,y,NET_ICON_X+NET_ICON_WX,y+11,COLOR_STATUS_BAR);
  85. }
  86. static void gpsIconShow(char flash){
  87. typedef struct{
  88. unsigned char located:1;
  89. unsigned char auth:1;
  90. unsigned char gpsF:1;
  91. }TMP_GPS_DEF;
  92. static TMP_GPS_DEF tmpGps;
  93. unsigned short x=GPS_ICON_X,y=0;
  94. if(tmpGps.located==gpsInfo.gpsLocated && tmpGps.auth==gpsInfo.bbAuth && tmpGps.gpsF==gpsInfo.gpsF && flash==0) return;
  95. guiClearRect(x,y,x+GPS_ICON_WX,y+11,COLOR_STATUS_BAR);
  96. if(gpsInfo.gpsF==0){//GPS未打开时
  97. if(gpsInfo.bbAuth==1) guiShowBmp(x,y,"GPS3.bmp");//已鉴权
  98. }else{//GPS已打开
  99. if(gpsInfo.bbAuth==1) guiShowBmp(x,y,"GPS1.bmp");//已鉴权
  100. else if(gpsInfo.bbAuth==1) guiShowBmp(x,y,"GPSA.bmp");//未鉴权
  101. if(gpsInfo.gpsLocated==1) guiShowBmp(x+10,y,"GPS2.bmp");//已定位
  102. }
  103. tmpGps.located=gpsInfo.gpsLocated;
  104. tmpGps.auth=gpsInfo.bbAuth;
  105. tmpGps.gpsF=gpsInfo.gpsF;
  106. }
  107. static void ShowCardType(char card){
  108. unsigned short x= CARD_ICON_X;
  109. unsigned short y=3;
  110. if(card==0) guiShowBmp(x, y, "SIM1.bmp");
  111. else if(card==1) guiShowBmp(x, y, "SIM2.bmp");
  112. }
  113. //显示电量
  114. static void ShowBatttery(int bat,unsigned int exeInterval){
  115. static unsigned int flashCnt=0;
  116. static unsigned char flag=0;
  117. static unsigned short cnt=0;
  118. unsigned short x=BAT_ICON_X,y=2,h=y+2;
  119. if(bat<WARN_PWR_LEVEL){//请充电
  120. if(++cnt<(800/exeInterval)) return;
  121. cnt=0;
  122. if(sutApp.lowPwrWarn==0){
  123. sutApp.lowPwrWarn=1;
  124. sutApp.lowPwrCnt=WARN_TTS_INTERVAL;
  125. }
  126. if(flag==0){
  127. guiShowBmp(x,y,"VBAT1.bmp");
  128. flag=1;
  129. }else{
  130. flag=0;
  131. guiClearRect(x,y-2,x+21,y-2+1+12,COLOR_STATUS_BAR);
  132. }
  133. return;
  134. }else if(bat<355){//340<x<=355 1格
  135. guiShowBmp(x,y,"VBAT1.bmp");//3
  136. guiDrawVLine(h,h+5,x+16,y+1,guiGetBackColor());
  137. }
  138. else if(bat<375){//355<x<=375 2格
  139. guiShowBmp(x,y,"VBAT1.bmp");
  140. guiDrawVLine(h,h+5,x+12,y+1,guiGetBackColor());
  141. guiDrawVLine(h,h+5,x+16,y+1,guiGetBackColor());//5.12
  142. }
  143. else if(bat<400){//375<x<=400 3格
  144. guiShowBmp(x,y,"VBAT1.bmp");
  145. guiDrawVLine(h,h+5,x+8,y+1,guiGetBackColor());
  146. guiDrawVLine(h,h+5,x+12,y+1,guiGetBackColor());
  147. guiDrawVLine(h,h+5,x+16,y+1,guiGetBackColor());//5.12
  148. }
  149. else{//>=400 4格
  150. guiShowBmp(x,y,"VBAT1.bmp");
  151. guiDrawVLine(h,h+5,x+4,y+1,guiGetBackColor());
  152. guiDrawVLine(h,h+5,x+8,y+1,guiGetBackColor());
  153. guiDrawVLine(h,h+5,x+12,y+1,guiGetBackColor());
  154. guiDrawVLine(h,h+5,x+16,y+1,guiGetBackColor());//5.12
  155. }
  156. sutApp.lowPwrWarn=0;
  157. }
  158. //显示时间
  159. static void ShowTime(char flash,unsigned int exeInterval){
  160. static unsigned short nextExe=0;
  161. static unsigned char flag=0;
  162. char buf[30];
  163. if(nextExe==0 || flash){
  164. //ohpocGetClock(&myclock);
  165. if(flag){
  166. snprintf(buf, sizeof(buf), "%02d:%02d",My_Clock.hour, My_Clock. min);
  167. flag=0;
  168. }else{
  169. snprintf(buf, sizeof(buf), "%02d %02d",My_Clock.hour, My_Clock. min);
  170. flag=1;
  171. }
  172. guiShowStr(TIME_ICON_X, 1,buf, FONT_MODE_12X12, REVERSED_NO,guiGetBackColor(),COLOR_STATUS_BAR);
  173. }
  174. if(++nextExe>=(1000/exeInterval)) nextExe=0;
  175. }
  176. //显示耳机接入状态
  177. static void ShowEarStatus(char flash){
  178. static unsigned char lastStatus=0;
  179. if(lastStatus==sutApp.earLev && flash==0) return;
  180. if(sutApp.earLev!=0) guiShowBmp(EAR_ICON_X, 1, "ear.bmp");
  181. else guiClearRect(EAR_ICON_X, 1, EAR_ICON_X+14,1+12, COLOR_STATUS_BAR);
  182. lastStatus=sutApp.earLev;
  183. }
  184. //显示键盘锁状态
  185. static void ShowKeyLocStatus(char flash){
  186. static unsigned char lastStatus=0;
  187. if(lastStatus==sutApp.keyLock && flash==0) return;
  188. if(sutApp.keyLock!=0) guiShowBmp(LOCK_ICON_X, 1, "lock.bmp");
  189. else guiClearRect(LOCK_ICON_X, 1, LOCK_ICON_X+LOCK_ICON_WX,12, COLOR_STATUS_BAR);
  190. lastStatus=sutApp.keyLock;
  191. }
  192. //显示状态栏
  193. void uiShowStatusBar(char flash,unsigned int exeInterval){
  194. static unsigned char s_netshowvalue=0xff;
  195. static unsigned char lastPPPStatus;
  196. static int siCSQ;
  197. static int siVbat;
  198. static unsigned short batFirstShow=0;
  199. static char lastEnable=0;
  200. static char cardType=0;
  201. char tempFlash=flash;
  202. if(sutApp.enableKey==0) return;
  203. if(lastEnable==0){
  204. lastEnable=1;
  205. tempFlash=1;
  206. guiFillRect(0, 0, GLCD_WIDTH-1, UI_STATUS_BAR_HEIGH-1,COLOR_STATUS_BAR);//清除第一区
  207. }
  208. //显示信号
  209. if(tempFlash || siCSQ!=sutApp.g_iCSQ || lastPPPStatus != sutApp.pocPpp){
  210. lastPPPStatus=sutApp.pocPpp;
  211. siCSQ=sutApp.g_iCSQ;
  212. ShowSingle(sutApp.g_iCSQ);
  213. }
  214. //显示卡选项
  215. if(tempFlash || cardType != sutApp.simSel){
  216. cardType=sutApp.simSel;
  217. ShowCardType(cardType);
  218. }
  219. //显示2G/3G/4G
  220. if(tempFlash || s_netshowvalue!=netshowvalue){
  221. s_netshowvalue=netshowvalue;
  222. Show_Net(s_netshowvalue);
  223. }
  224. //显示GPS是否正常及鉴权情况
  225. //gpsInfo.gpsLocated=1;
  226. //gpsInfo.bbAuth=1;
  227. //gpsInfo.gpsF=1;
  228. gpsIconShow(tempFlash);
  229. //电量显示
  230. if(batFirstShow < (1000/exeInterval)) {//开机前1秒显示一半电量
  231. sutApp.g_iBAT=360;
  232. batFirstShow++;
  233. }else if(tempFlash || siVbat!=sutApp.g_iBAT || sutApp.g_iBAT < WARN_PWR_LEVEL){
  234. siVbat=sutApp.g_iBAT;
  235. ShowBatttery(sutApp.g_iBAT,exeInterval);
  236. //MSG_INFO(1, "----%d", sutApp.g_iBAT);
  237. }
  238. //文本消息显示
  239. //sutSms.haveUnRead=1;
  240. ShowMessageFlag(0);
  241. //GPS显示
  242. //时间显示
  243. ShowTime(tempFlash,exeInterval);
  244. //显示耳机状态
  245. ShowEarStatus(tempFlash);
  246. //显示键盘锁状态
  247. ShowKeyLocStatus(tempFlash);
  248. }
  249. /****************************状态栏显示部分结束***********************************/
  250. /****************************待机界面显示部分开始***********************************/
  251. typedef enum{
  252. ME_NO_LOGIN,
  253. ME_NOBODY_SPEAK,
  254. ME_IAM_SPEAK,
  255. ME_SOMEBODY_SPEAK
  256. }ME_ENUM;
  257. static void uiShowGUName(int update);
  258. static void uiShowGuaDuan(unsigned char danhu);
  259. static void uiShowGroup(const char* info);
  260. static void uiShowUser(const char* info);
  261. static void uiShowHuaQuan(const char* info);
  262. static void uiShowCallUserName(void);
  263. static void uiShowOffLineMessage(void);
  264. static void uiShowCopsInfo(void){
  265. char info[50];
  266. switch(sutApp.copstype){
  267. case 46000:
  268. case 46002:
  269. case 46007:
  270. snprintf(info, sizeof(info), "中国移动");
  271. break;
  272. case 46001:
  273. case 46006:
  274. snprintf(info, sizeof(info), "中国联通");
  275. break;
  276. case 46003:
  277. case 46005:
  278. case 46008:
  279. case 46009:
  280. case 46010:
  281. case 46011:
  282. snprintf(info, sizeof(info), "中国电信");
  283. break;
  284. default:snprintf(info, sizeof(info), "公网集群对讲系统");break;
  285. }
  286. guiFillRect(0, UI_STATUS_ITEM_Y, GLCD_WIDTH-1, UI_CONTENT_SHOW_Y-1, guiGetForeColor());//清除第二区
  287. guiShowCaption(0,info, UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  288. }
  289. void uiShowMainInterface(char status,unsigned int exeInterval){
  290. short Flag=ME_NO_LOGIN;//ME_ENUM
  291. static unsigned char danhu=0;
  292. static short lastFlag=-1;
  293. static unsigned short siCt=0;
  294. char info[20];
  295. static char firstRun=0;
  296. static unsigned short dly=0;
  297. char tmpStatus=status;
  298. static int copsStatus;
  299. /*逻辑处理开始*/
  300. if(tmpStatus){
  301. guiClearAll(guiGetBackColor());
  302. #ifdef AUTH_SKIP
  303. guiShowStr(1, UI_BOTTOM_SHOW_Y,"样机测试版本", FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR, guiGetBackColor());
  304. #else
  305. guiShowStr(1, UI_BOTTOM_SHOW_Y,"菜单", FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR, guiGetBackColor());
  306. #endif
  307. danhu=sutPocStatus.danHuStatus;
  308. uiShowGuaDuan(danhu);
  309. lastFlag=-1;
  310. siCt=0;
  311. //return;
  312. }
  313. if(copsStatus != sutApp.copstype || tmpStatus){
  314. copsStatus=sutApp.copstype;
  315. uiShowCopsInfo();
  316. }
  317. //更新单呼显示与否
  318. if(sutPocStatus.danHuStatus != danhu){
  319. danhu=sutPocStatus.danHuStatus;
  320. uiShowGuaDuan(danhu);
  321. }
  322. //提示解锁
  323. if(sutApp.lockShow!=0){
  324. backLightReset();
  325. guiShowMessageBox("请先解锁!");
  326. LSAPI_OSI_ThreadSleep(500);
  327. guiClearRect(0,GLCD_HEIGHT/2-20,GLCD_WIDTH-1,GLCD_HEIGHT/2+20,guiGetBackColor());
  328. lastFlag=-1;//让以下刷新一下
  329. sutApp.lockShow=0;
  330. }
  331. //以下持续调用,以便动态更新信息
  332. if(0==sutPocStatus.logined) Flag=ME_NO_LOGIN;//未登录
  333. else if(0==sutPocStatus.spk && 0==sutPocStatus.mic){//已登录,无人说话
  334. Flag=ME_NOBODY_SPEAK;
  335. }else if(0!=sutPocStatus.mic) Flag=ME_IAM_SPEAK;//已登录,本机说话
  336. else if(0!=sutPocStatus.spk) Flag=ME_SOMEBODY_SPEAK;//有人说话
  337. switch(Flag){
  338. case ME_NO_LOGIN://未登录
  339. if(Flag != lastFlag){
  340. guiFillRect(0, UI_CONTENT_SHOW_Y, GLCD_WIDTH-1, UI_BOTTOM_SHOW_Y-1,guiGetBackColor());
  341. guiShowBmp(0,UI_CONTENT_SHOW_Y, "logo.bmp");
  342. }
  343. break;
  344. case ME_NOBODY_SPEAK://已登录,无人说话
  345. if(Flag != lastFlag){
  346. if(ME_NO_LOGIN==lastFlag) guiFillRect(0, UI_CONTENT_SHOW_Y, GLCD_WIDTH-1, UI_CONTENT_SHOW_Y+16,guiGetBackColor());//从未登录到登录,'正在登录'那行也刷掉
  347. guiFillRect(0, UI_VOICE_SHOW_Y, GLCD_WIDTH-1, UI_VOICE_SHOW_Y+16,guiGetBackColor());
  348. uiShowHuaQuan("空闲");
  349. sutPocStatus.statusChaned = 1;
  350. }
  351. break;
  352. case ME_IAM_SPEAK://已登录,本机说话
  353. if(Flag != lastFlag){
  354. guiFillRect(0, UI_VOICE_SHOW_Y, GLCD_WIDTH-1, UI_VOICE_SHOW_Y+16,guiGetBackColor());
  355. uiShowHuaQuan("本机在讲话");
  356. }
  357. break;
  358. case ME_SOMEBODY_SPEAK://已登录,有人说话
  359. if(Flag != lastFlag){
  360. guiFillRect(0, UI_VOICE_SHOW_Y, GLCD_WIDTH-1, UI_VOICE_SHOW_Y+16,guiGetBackColor());
  361. sutPocStatus.statusChaned=1;//保证要刷新名字
  362. }
  363. uiShowCallUserName();
  364. break;
  365. }
  366. if(Flag>0){//已登录
  367. if(Flag != lastFlag && (lastFlag==-1 || ME_NO_LOGIN==lastFlag)) uiShowGUName(1);
  368. else uiShowGUName(0);
  369. }else{//未登录
  370. snprintf(info, sizeof(info),"正在登陆.");
  371. switch(siCt){//not finished yet
  372. case 0:
  373. strcat(info, " ");
  374. guiShowStr(1, UI_CONTENT_SHOW_Y,info, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  375. break;
  376. case (1000/APP_SUB_DIV_TIME):
  377. strcat(info, ". ");
  378. guiShowStr(1, UI_CONTENT_SHOW_Y,info, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  379. break;
  380. case (2000/APP_SUB_DIV_TIME):
  381. strcat(info, "..");
  382. guiShowStr(1, UI_CONTENT_SHOW_Y,info, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  383. break;
  384. }
  385. //显示登录状态
  386. uiShowOffLineMessage();
  387. }
  388. if(++siCt>=(3000/APP_SUB_DIV_TIME)) siCt=0;
  389. if(Flag != lastFlag) lastFlag=Flag;
  390. }
  391. static void uiShowGUName(int update){
  392. static char scNameUser[POC_GROUP_USER_NAME_LEN];
  393. static char scNameGroup[POC_GROUP_USER_NAME_LEN];
  394. char name[POC_GROUP_USER_NAME_LEN];
  395. unsigned short len;
  396. unsigned char danHuanBuffer[9]={0xB5,0xA5,0xBA,0xF4,0xC4,0xA3,0xCA,0xBD,0};
  397. char GroupShowUpdate=0;
  398. char UserShowUpdate=0;
  399. if(sutPocStatus.danHuStatus==0){
  400. if(0!=strcmp(sutPocStatus.LocalGroup.name,scNameGroup) || update!=0){
  401. memset(scNameGroup,0,sizeof(scNameGroup));
  402. memcpy(scNameGroup,sutPocStatus.LocalGroup.name,sizeof(scNameGroup));
  403. GroupShowUpdate=1;
  404. }
  405. }else{
  406. if(0!=strcmp((char *)danHuanBuffer,scNameGroup) || update!=0){
  407. memset(scNameGroup,0,sizeof(scNameGroup));
  408. memcpy(scNameGroup, danHuanBuffer,sizeof(danHuanBuffer));
  409. GroupShowUpdate=1;
  410. }
  411. }
  412. if(0!=strcmp(sutPocStatus.LocalUser.name,scNameUser) || update!=0){
  413. memset(scNameUser,0,sizeof(scNameUser));
  414. memcpy(scNameUser,sutPocStatus.LocalUser.name,sizeof(scNameUser));
  415. UserShowUpdate=1;
  416. }
  417. if(GroupShowUpdate){
  418. guiClearRect(0,UI_GROUP_SHOW_Y,GLCD_WIDTH-1,UI_GROUP_SHOW_Y+16+2,guiGetBackColor());//18
  419. //刷新群组栏
  420. if(sutPocStatus.danHuStatus==0) StrIntercept(name, scNameGroup, sizeof(name));
  421. else snprintf(name, sizeof(name), "单呼模式");
  422. uiShowGroup(name);
  423. sutPocStatus.statusChaned=1;
  424. }
  425. if(UserShowUpdate){
  426. guiClearRect(0,UI_USER_SHOW_Y,GLCD_WIDTH-1,UI_GROUP_SHOW_Y+16,guiGetBackColor());//18
  427. //刷新成员栏
  428. StrIntercept(name, scNameUser, sizeof(name));
  429. uiShowUser(name);
  430. }
  431. }
  432. static void uiShowGuaDuan(unsigned char danhu){
  433. if(danhu==0) guiClearArea(GLCD_WIDTH-32, UI_BOTTOM_SHOW_Y, 32, 14, guiGetBackColor());
  434. else guiShowStr(GLCD_WIDTH-32, UI_BOTTOM_SHOW_Y, "挂断", FONT_MODE_12X12, REVERSED_NO, COLOR_STATUS_BAR,guiGetBackColor());
  435. }
  436. static void uiShowGroup(const char* info){
  437. guiShowStr(2, UI_GROUP_SHOW_Y+2,"群组:", FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  438. guiClearRect(2+30, UI_GROUP_SHOW_Y, GLCD_WIDTH-1, UI_GROUP_SHOW_Y+16, guiGetBackColor());
  439. #ifdef USE_12X12_FONT_ONLY
  440. guiShowStr(2+30, UI_GROUP_SHOW_Y+2,info, FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  441. #else
  442. guiShowStr(2+30, UI_GROUP_SHOW_Y,info, FONT_MODE_16X16, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  443. #endif
  444. }
  445. static void uiShowUser(const char* info){
  446. guiShowStr(2, UI_USER_SHOW_Y+2,"成员:", FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  447. guiClearRect(2+30, UI_USER_SHOW_Y, GLCD_WIDTH-1, UI_USER_SHOW_Y+16, guiGetBackColor());
  448. #ifdef USE_12X12_FONT_ONLY
  449. guiShowStr(2+30, UI_USER_SHOW_Y+2,info, FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  450. #else
  451. guiShowStr(2+30, UI_USER_SHOW_Y,info, FONT_MODE_16X16, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  452. #endif
  453. }
  454. static void uiShowHuaQuan(const char* info){
  455. guiShowStr(2, UI_VOICE_SHOW_Y+2,"话权:", FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  456. guiClearRect(2+30, UI_VOICE_SHOW_Y, GLCD_WIDTH-1, UI_VOICE_SHOW_Y+16, guiGetBackColor());
  457. #ifdef USE_12X12_FONT_ONLY
  458. guiShowStr(2+30, UI_VOICE_SHOW_Y+2,info, FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  459. #else
  460. guiShowStr(2+30, UI_VOICE_SHOW_Y,info, FONT_MODE_16X16, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  461. #endif
  462. }
  463. static void uiShowCallUserName(void){
  464. static char scName[POC_GROUP_USER_NAME_LEN];
  465. char name[POC_GROUP_USER_NAME_LEN];
  466. if(0 != strncmp(scName, sutPocStatus.CallName, POC_GROUP_USER_NAME_LEN) ||
  467. sutPocStatus.statusChaned){
  468. //当名字变更或UI切换了,刷新显示
  469. sutPocStatus.statusChaned=0;
  470. memcpy(scName, sutPocStatus.CallName, POC_GROUP_USER_NAME_LEN);
  471. uiShowHuaQuan(scName);
  472. }
  473. }
  474. static void uiShowOffLineMessage(void){
  475. static unsigned char laReason;
  476. char info[50],update=0;
  477. unsigned short y;
  478. if(sutUIstatus.Status != UIS_STANDBY) return;
  479. if(sutPocStatus.PocLineOffReason==laReason && sutUIstatus.ItemRefresh==0) return;
  480. sutUIstatus.ItemRefresh=0;
  481. laReason=sutPocStatus.PocLineOffReason;
  482. if(sutApp.cardStatus==0){
  483. snprintf(info, sizeof(info), "请插卡");
  484. update=1;
  485. }else{
  486. switch(sutPocStatus.PocLineOffReason){
  487. case 1:snprintf(info, sizeof(info), "无网络连接");break;
  488. case 2:snprintf(info, sizeof(info), "无法连接");break;
  489. case 3:snprintf(info, sizeof(info), "没有服务");break;
  490. case 4:snprintf(info, sizeof(info), "账号信息错误");break;
  491. }
  492. if(sutPocStatus.PocLineOffReason!=0) update=1;
  493. }
  494. if(update!=0){
  495. y=UI_CONTENT_SHOW_Y+2+12;
  496. guiClearRect(1,y, GLCD_WIDTH-1, y +12, guiGetBackColor());
  497. guiShowStr(1, y,info, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  498. }
  499. }
  500. /****************************待机界面显示部分结束***********************************/
  501. /****************************主菜单显示部分开始*************************************/
  502. #include "Palace.h"
  503. SUT_PALACE sutPalace;
  504. void uiShowMenuMain(char update){
  505. static const char *apcMenuMain[]={
  506. "群组选择",
  507. "成员选择",
  508. "文本信息",
  509. "系统设置",
  510. "定位设置",
  511. "终端信息",
  512. ""
  513. };
  514. if(update) PalaceInit(&sutPalace,apcMenuMain,"Palace","主菜单");
  515. }
  516. void MenuMainResponse(void){
  517. unsigned short key;
  518. key=PalaceResponse(&sutPalace);
  519. if(MKEY_VALUE_MENU==key){
  520. switch(sutPalace.Index){
  521. case 0:
  522. uISetNextStatus(UIS_MENU_GROUP_SEL);
  523. break;
  524. case 1:
  525. uISetNextStatus(UIS_MENU_USER_SEL);
  526. break;
  527. case 2:
  528. uISetNextStatus(UIS_MENU_MAIL_SEL);
  529. break;
  530. case 3:
  531. uISetNextStatus(UIS_MENU_SYS_SEL);
  532. break;
  533. case 4:
  534. uISetNextStatus(UIS_MENU_LOCATION_SEL);
  535. break;
  536. case 5:
  537. uISetNextStatus(UIS_MENU_INFO_SEL);
  538. break;
  539. }
  540. uiPushStack(sutPalace.Index);
  541. }
  542. else if(MKEY_VALUE_ESC==key){
  543. uISetNextStatus(UIS_STANDBY);
  544. }
  545. }
  546. /****************************主菜单显示部分结束*************************************/
  547. /*****************************群组选择/成员选择部分开始*********************************/
  548. static char GUListBoxInited=0;
  549. static char SelMachine=0;
  550. static void ReFlashItemGU(char type);
  551. static void UserAssistAdd(void);
  552. void numGUFlash(int index, int total){
  553. char info[10];
  554. int x;
  555. snprintf(info, sizeof(info), "%d", total);
  556. x=GLCD_WIDTH-strlen(info)*8;
  557. guiClearRect(GLCD_WIDTH/2, UI_STATUS_ITEM_Y, GLCD_WIDTH-1, UI_STATUS_ITEM_Y+12, guiGetForeColor());
  558. guiShowStr(x, UI_STATUS_ITEM_Y+1, info, FONT_MODE_12X12, REVERSED_NO, guiGetBackColor(), guiGetForeColor());
  559. }
  560. void uiShowGUSel(char StatusUpdate,unsigned int exeInterval,char type){
  561. static char machine;
  562. static unsigned int timer;
  563. unsigned short timeout;
  564. char temp;
  565. if(StatusUpdate) machine=0;
  566. switch(machine){
  567. case 0:
  568. if(sutPocStatus.logined == 0){//not login
  569. guiShowMessageBox(" 请先登录 ");
  570. uTimerStart(&timer, 1000);
  571. machine=1;
  572. }else{
  573. if(type==0) appSleepCtl(ASLEEP_GGROUP, 1);//要获取群组信息,不让休眠,记得超时或获取成功或获取失败后需要释放
  574. else appSleepCtl(ASLEEP_GUSER, 1);
  575. UiassistStart(0);
  576. machine=2;
  577. }
  578. break;
  579. case 1:
  580. if(uTimerExpired(&timer)){
  581. uISetNextStatus(UIS_STANDBY);
  582. }
  583. break;
  584. case 2:
  585. temp=getAssistResult();
  586. if(temp){//??è?íê3é
  587. guiClearAll(guiGetBackColor());
  588. if(type==0){
  589. guiShowCaption(20,"群组选择",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12); //0
  590. uiMenuShowBottomIndacitor("确定", "返回");
  591. }else{
  592. guiShowCaption(20,"用户选择",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12); //0
  593. uiMenuShowBottomIndacitor("单呼", "返回");
  594. }
  595. ReFlashItemGU(type);
  596. uiMenuShowBottomLine();
  597. machine=3;
  598. //获取成功后退出释放休眠
  599. if(type==0) appSleepCtl(ASLEEP_GGROUP, 0);
  600. else appSleepCtl(ASLEEP_GUSER, 0);
  601. }
  602. break;
  603. }
  604. if(machine != 3) return;
  605. UserAssistAdd();
  606. }
  607. void GroupSelResponse(){
  608. unsigned int key;
  609. char buf[50];
  610. int i;
  611. key=getKeyValue();
  612. switch(SelMachine){
  613. case 0:
  614. if(sutListBox.handle==0 && MKEY_VALUE_UP==key){
  615. UiassistStart(1);
  616. SelMachine=1;
  617. }else if(((sutListBox.handle+1) == sutListBox.itemnum) && (MKEY_VALUE_DOWN==key)){
  618. UiassistStart(2);
  619. SelMachine=2;
  620. }
  621. key=ListBoxResponse(&sutListBox);
  622. if(MKEY_VALUE_ESC==key){
  623. uiAssist.status=0;
  624. if(getStackStruct()->FastUiChange)uISetNextStatus(UIS_STANDBY);
  625. else uISetNextStatus(UIS_MENU_MAIN);
  626. appSleepCtl(ASLEEP_GGROUP, 0);//按键退出后释放休眠
  627. GUListBoxInited=0;
  628. }else if(MKEY_VALUE_MENU==key){
  629. if(0 == sutPocStatus.ListCurOnlineNum) break;
  630. ///////////////////////////////////////
  631. UiassistEnd(1);
  632. sutApp.groupTTSEnable=1;
  633. // snprintf(buf, sizeof(buf),"AT+POC=090000%08x\r\n",sutPocStatus.AllGroups[sutListBox.handle].ID);
  634. // msgAtSend(buf);
  635. snprintf(buf, sizeof(buf),"AT+POC=090000%016x\r\n",sutPocStatus.AllGroups[sutListBox.handle].ID);
  636. ModemSendAt(buf);
  637. MSG_INFO(1,buf);
  638. snprintf(buf, sizeof(buf),"进入:%s",sutPocStatus.AllGroups[sutListBox.handle].name);
  639. MSG_INFO(1,buf);
  640. uISetNextStatus(UIS_STANDBY);
  641. SelMachine=0;
  642. }
  643. break;
  644. }
  645. }
  646. void UserSelResponse(){
  647. char buf[50];
  648. unsigned int key;
  649. key=getKeyValue();
  650. switch(SelMachine){
  651. case 0:
  652. if(GUListBoxInited==0) break;//还未初始化listbox时,不执行按键响应
  653. if(sutListBox.handle==0 && MKEY_VALUE_UP==key){
  654. UiassistStart(1);
  655. SelMachine=1;
  656. }else if((sutListBox.handle+1) == sutListBox.itemnum && (MKEY_VALUE_DOWN==key)){
  657. UiassistStart(2);
  658. SelMachine=2;
  659. }
  660. key=ListBoxResponse(&sutListBox);
  661. if(MKEY_VALUE_ESC==key){
  662. uiAssist.status=0;
  663. if(getStackStruct()->FastUiChange)uISetNextStatus(UIS_STANDBY);
  664. else uISetNextStatus(UIS_MENU_MAIN);
  665. appSleepCtl(ASLEEP_GUSER, 0);//按键退出后释放休眠
  666. GUListBoxInited=0;
  667. }else if(MKEY_VALUE_MENU==key){
  668. if(0 == sutPocStatus.ListCurOnlineNum) break;
  669. snprintf(buf, sizeof(buf),"AT+POC=0A0000%08x\r\n",sutPocStatus.AllUsers[sutListBox.handle].ID);
  670. msgAtSend(buf);
  671. MSG_INFO(1, buf);
  672. snprintf(buf, sizeof(buf),"呼叫:%s",sutPocStatus.AllUsers[sutListBox.handle].name);
  673. MSG_INFO(1, buf);
  674. uISetNextStatus(UIS_STANDBY);
  675. SelMachine=0;
  676. }
  677. break;
  678. }
  679. }
  680. static void UserAssistAdd(void){
  681. switch(SelMachine){
  682. case 1:
  683. if(getAssistResult()){
  684. if(sutUIstatus.Status==UIS_MENU_GROUP_SEL)ReFlashItemGU(0);
  685. else ReFlashItemGU(1);
  686. SelMachine=0;
  687. }
  688. break;
  689. case 2:
  690. if(getAssistResult()){
  691. if(sutUIstatus.Status==UIS_MENU_GROUP_SEL)ReFlashItemGU(0);
  692. else ReFlashItemGU(1);
  693. SelMachine=0;
  694. }
  695. break;
  696. }
  697. }
  698. static void ReFlashItemGU(char type){
  699. static unsigned short susCt=0;
  700. static const char *accIconFileName[]={
  701. "Group1.bmp",
  702. "Group2.bmp",
  703. "people1.bmp",
  704. "people2.bmp",
  705. ""
  706. };
  707. static char *icons[3];
  708. int i;
  709. unsigned short timeout;
  710. static const char *NullGU="";
  711. static char *GUName[POC_ALL_GROUPS_NUM+1]; //5
  712. static char GUFeatures[POC_ALL_GROUPS_NUM+1];//5
  713. if(type==0){
  714. icons[0]=accIconFileName[0];
  715. icons[1]=accIconFileName[1];
  716. }else{
  717. icons[0]=accIconFileName[2];
  718. icons[1]=accIconFileName[3];
  719. }
  720. icons[2]=accIconFileName[4];
  721. for(i=0;i<=POC_ALL_GROUPS_NUM;i++){
  722. GUName[i]=NullGU;
  723. GUFeatures[i]=0;
  724. }
  725. for(i=0;i<sutPocStatus.ListFillIndex;i++){
  726. GUFeatures[i]=1;
  727. if(type==0){
  728. if(sutPocStatus.AllGroups[i].ID==sutPocStatus.LocalGroup.ID) GUFeatures[i]=0;
  729. GUName[i]=sutPocStatus.AllGroups[i].name;
  730. }else{
  731. if(sutPocStatus.AllUsers[i].ID==sutPocStatus.LocalUser.ID) GUFeatures[i]=0;
  732. GUName[i]=sutPocStatus.AllUsers[i].name;
  733. }
  734. }
  735. if(sutPocStatus.ListCurOnlineNum==0 || sutPocStatus.ListDetailValid==0){//没有成员总数或没有获取到明细
  736. GUName[0]="空";
  737. GUFeatures[i]=0;
  738. }
  739. //初始化ListBox控件
  740. numGUFlash(0,sutPocStatus.ListCurOnlineNum);
  741. ListBoxInit(&sutListBox,GUName,0,icons,GUFeatures);
  742. GUListBoxInited=1;
  743. }
  744. /*****************************群组选择/成员选择部分结束*********************************/
  745. /*****************************系统设置部分开始*********************************/
  746. void uiShowMenuSysSetup(char flash){
  747. static const char *apcPtr[]={
  748. "1.LCD设置",
  749. "2.网络设置",
  750. "3.SIM选择",
  751. "4.功耗模式设置",
  752. "5.服务器设置",
  753. "6.版本升级",
  754. "7.提示音设置",
  755. ""
  756. };
  757. if(flash){
  758. msgAtSend("AT+RSIM\r\n");//进此菜单前查询一下卡用于后面显示
  759. guiClearAll(guiGetBackColor());
  760. guiShowCaption(0,"系统设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  761. uiMenuShowBottomLine();
  762. uiMenuShowBottomIndacitor("确认", "返回");
  763. uiMenuInit(&sutMenuSysSetup,apcPtr,FONT_MODE_12X12);
  764. }
  765. }
  766. void sysTemSetResponse(void){
  767. unsigned short key;
  768. key=uiMenuResponse(&sutMenuSysSetup);
  769. if(MKEY_VALUE_MENU==key){
  770. switch(sutMenuSysSetup.handle){
  771. case 0://LCD设置
  772. uISetNextStatus(UIS_MENU_SYS_LCD);
  773. break;
  774. case 1://网络设置
  775. uISetNextStatus(UIS_MENU_SYS_NET);
  776. break;
  777. case 2://SIM选择
  778. uISetNextStatus(UIS_MENU_SYS_SIM);
  779. break;
  780. case 3://功耗模式设置
  781. uISetNextStatus(UIS_MENU_SYS_PWR);
  782. break;
  783. case 4://服务器设置
  784. uISetNextStatus(UIS_MENU_SYS_SERVERPASS);
  785. break;
  786. case 5://版本升级
  787. uISetNextStatus(UIS_MENU_SYS_VERSION);
  788. break;
  789. case 6://提示音设置
  790. uISetNextStatus(UIS_MENU_SYS_NOTE);
  791. break;
  792. }
  793. if(sutMenuSysSetup.handle<=6) uiPushStack(sutMenuSysSetup.handle);
  794. }else if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_MAIN);
  795. }
  796. /*****************************系统设置部分结束*********************************/
  797. /*****************************定位设置部分开始*********************************/
  798. unsigned char tempGpsIndex;
  799. static locationTimeFlash(char type);
  800. static locationXYFlash(char flash);
  801. void uiShowMenuLocationSel(char flash){
  802. if(flash){
  803. guiClearAll(guiGetBackColor());
  804. guiShowCaption(0,"定位设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  805. uiMenuShowBottomLine();
  806. if(newPara.gpsEnable==0){
  807. uiMenuShowBottomIndacitor(NULL, "返回");
  808. guiShowMessageBox("版本不支持");
  809. LSAPI_OSI_ThreadSleep(1000);
  810. uISetNextStatus(UIS_MENU_MAIN);
  811. return;
  812. }
  813. uiMenuShowBottomIndacitor("保存", "返回");
  814. locationTimeFlash(0);
  815. }
  816. if(newPara.gpsEnable!=0) locationXYFlash(flash);
  817. }
  818. void loationSetResponse(void){
  819. unsigned short key;
  820. key=getKeyValue();
  821. if(MKEY_VALUE_UP==key) locationTimeFlash(1);
  822. else if(MKEY_VALUE_DOWN==key) locationTimeFlash(2);
  823. else if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_MAIN);
  824. else if(MKEY_VALUE_MENU==key){
  825. if(tempGpsIndex != newPara.gpsTimeIndex){
  826. MSG_INFO(1, "GPS timeIndex update:%d",getGPSTimeValue(tempGpsIndex));
  827. newPara.gpsTimeIndex=tempGpsIndex;
  828. sysIniSave();
  829. gpsCheckInfo();//检测一下
  830. }
  831. uISetNextStatus(UIS_MENU_MAIN);
  832. }
  833. }
  834. static locationTimeFlash(char type){
  835. unsigned short gpsTimeValue;
  836. char buf[50];
  837. unsigned short y=70;
  838. if(type==0){
  839. tempGpsIndex=newPara.gpsTimeIndex;
  840. }else if(type==1){
  841. if(++tempGpsIndex>=GPS_TABLE_NUM) tempGpsIndex=0;
  842. }else if(type==2){
  843. if(tempGpsIndex>0) tempGpsIndex--;
  844. else tempGpsIndex=GPS_TABLE_NUM-1;
  845. }else return;
  846. gpsTimeValue=getGPSTimeValue(tempGpsIndex);
  847. if(gpsTimeValue==0) snprintf(buf, sizeof(buf), "定位上传设置:关闭");
  848. else snprintf(buf, sizeof(buf), "定位上传设置:%d秒",gpsTimeValue);
  849. guiClearRect(0,y,GLCD_WIDTH-1, y+12,guiGetBackColor());
  850. guiShowStr(30,y, buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  851. }
  852. static locationXYFlash(char flash){
  853. char buf[50];
  854. unsigned short y=UI_CONTENT_SHOW_Y+2;
  855. if(gpsInfo.update==0 && flash==0) return;
  856. gpsInfo.update=0;
  857. guiClearRect(0, y,GLCD_WIDTH-1, y+12+5+12,guiGetBackColor());
  858. snprintf(buf, sizeof(buf), "纬度 S:%d.%05d",gpsInfo.Lat/1000000,gpsInfo.Lat%1000000);
  859. guiShowStr(30,y, buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  860. y+=12+5;
  861. snprintf(buf, sizeof(buf), "经度 W:%d.%05d",gpsInfo.Long/1000000,gpsInfo.Long%1000000);
  862. guiShowStr(30,y, buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  863. }
  864. /*****************************定位设置部分结束*********************************/
  865. /*******************************终端信息开始**********************************/
  866. unsigned char sysInfoType;
  867. static void sysInfoFlash(void){
  868. unsigned short x,y;
  869. char buf[50];
  870. unsigned char LineSpace=12+4;
  871. int len;
  872. x=2,y=UI_CONTENT_SHOW_Y+5;
  873. guiClearRect(0,y,GLCD_WIDTH-1,UI_BOTTOM_LINE_Y-1,guiGetBackColor());
  874. if(sysInfoType==0){
  875. //终端编码
  876. snprintf(buf, sizeof(buf),"终端编码:%lu",sutApp.account.psn);
  877. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  878. y+=LineSpace;
  879. //应用版本
  880. snprintf(buf, sizeof(buf),"应用版本:%s",OHPOC_VERSION);
  881. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  882. y+=LineSpace;
  883. //内部版本
  884. snprintf(buf, sizeof(buf),"内部版本:%d",CUSTOMER_CODE);
  885. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  886. }else if(sysInfoType==1){
  887. //对讲平台
  888. snprintf(buf, sizeof(buf),"对讲平台:%s", OHPOC_POC_PLATFORM);
  889. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  890. y+=LineSpace;
  891. //对讲版本号
  892. snprintf(buf, sizeof(buf),"对讲版本:%s",sutApp.pocVersion);
  893. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  894. y+=LineSpace;
  895. //模块
  896. memset(buf,sizeof(buf),0);
  897. snprintf(buf,sizeof(buf),"模块:%s", sutApp.modemVer);
  898. len=strlen(buf);
  899. if(len>20){
  900. y+=LineSpace;
  901. guiShowStr(x+32,y,buf+20,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  902. buf[20]=0;
  903. y-=LineSpace;
  904. }
  905. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  906. }else if(sysInfoType==2){
  907. //显示服务器
  908. //对讲IP
  909. //getPIPAddr();getGIPAddr();
  910. guiShowStr(x,y,"交换服务器:",FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  911. y+= LineSpace;
  912. snprintf(buf, sizeof(buf),"%s",showPIP);
  913. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  914. y+=LineSpace;
  915. //GPS IP
  916. guiShowStr(x,y,"定位服务器:",FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  917. y+= LineSpace;
  918. snprintf(buf, sizeof(buf),"%s",showGIP);
  919. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  920. y+=LineSpace;
  921. snprintf(buf, sizeof(buf),"端口:%d",newPara.gpsPort);
  922. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  923. }
  924. }
  925. void uiShowInformation(char update){
  926. if(update){
  927. sysInfoType=0;
  928. guiClearAll(guiGetBackColor());
  929. guiShowCaption(0,"终端信息",UI_STATUS_BAR_HEIGH,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  930. uiMenuShowBottomLine();
  931. uiMenuShowBottomIndacitor(NULL, "返回");
  932. sysInfoFlash();
  933. }
  934. }
  935. void uiShowInformationResponse(void){
  936. unsigned short key=getKeyValue();
  937. if(MKEY_VALUE_ESC==key) uISetNextStatus(sutUIstatus.LastStatus);
  938. else if(MKEY_VALUE_DOWN==key || MKEY_VALUE_UP==key){
  939. if(sysInfoType==0) sysInfoType=1;
  940. else sysInfoType=0;
  941. sysInfoFlash();
  942. }else if(MKEY_VALUE_CB_IP==key){
  943. sysInfoType=2;
  944. sysInfoFlash();
  945. }
  946. }
  947. /*****************************终端信息结束**********************************/
  948. static const char *commonIcon2[]={
  949. "APN.bmp",
  950. "APN1.bmp",
  951. ""
  952. };
  953. /*****************************LCD设置开始**********************************/
  954. unsigned char lcdTmpIndex;
  955. static void lcdTimeFlash(char type){
  956. char buf[50];
  957. unsigned short x=4,y=56,value;
  958. if(type==0) guiShowStr(x+25, y, "背光时间:", FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  959. else if(type==1){
  960. if(++lcdTmpIndex>=5) lcdTmpIndex=0;
  961. }else if(type==2){
  962. if(lcdTmpIndex>0) lcdTmpIndex--;
  963. else lcdTmpIndex=4;
  964. }
  965. value=newPara.lcdParaList[lcdTmpIndex];
  966. if(value==0) snprintf(buf, sizeof(buf), " 常亮 ");
  967. else snprintf(buf, sizeof(buf), "%3d 秒", value);
  968. guiShowStr(x+85, y, buf, FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  969. }
  970. void uiShowLcdSel(char StatusUpdate){
  971. if(StatusUpdate){
  972. guiClearAll(guiGetBackColor());
  973. guiShowCaption(0,"LCD设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  974. uiMenuShowBottomLine();
  975. lcdTmpIndex=newPara.lcdParaDefaultIndex;
  976. lcdTimeFlash(0);
  977. uiMenuShowBottomIndacitor("保存", "返回");
  978. }
  979. }
  980. void uiShowLcdSelResponse(void){
  981. unsigned short key=getKeyValue();
  982. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  983. else if(MKEY_VALUE_DOWN==key)lcdTimeFlash(1);
  984. else if(MKEY_VALUE_UP==key) lcdTimeFlash(2);
  985. else if(MKEY_VALUE_MENU==key){
  986. getStackStruct()->ok_back=1;
  987. if(lcdTmpIndex != newPara.lcdParaDefaultIndex){
  988. newPara.lcdParaDefaultIndex=lcdTmpIndex;
  989. MSG_INFO(1, "LCD TimeUpdate");
  990. backLightReset();
  991. sysIniSave();
  992. }
  993. uISetNextStatus(UIS_MENU_SYS_SEL);
  994. }
  995. }
  996. /*****************************LCD设置结束**********************************/
  997. /*****************************网络设置开始**********************************/
  998. const unsigned char netModeSetTable[3]={1,2,4};//设置制式:AUTH,2G,4G
  999. /*输入制式源始值,返回索引值对应值*/
  1000. unsigned char getNetModeIndex(unsigned char netModeValue){
  1001. unsigned char i;
  1002. for(i=0;i<sizeof(netModeSetTable);i++){
  1003. if(netModeValue==netModeSetTable[i]) return i;
  1004. }
  1005. return 0xff;//无对应值
  1006. }
  1007. /*输入制式索引值,返回制式源始值*/
  1008. unsigned char getNetModeValue(unsigned char netModeIndex){
  1009. if(netModeIndex>=sizeof(netModeSetTable)) return 0xff;
  1010. else return netModeSetTable[netModeIndex];
  1011. }
  1012. /*输入制式索引值,发送对应该命令给模块*/
  1013. void netModeSetCmd(unsigned char netMode){
  1014. char buf[30];
  1015. snprintf(buf, sizeof(buf), "AT+CTEC=%d,%d\r\n",ctecCurrentSet, netMode);
  1016. msgAtSend(buf);
  1017. }
  1018. #define NET_MODE_NUM 3
  1019. void uiShowNetSel(char StatusUpdate){
  1020. static const char *netMode[NET_MODE_NUM+1]={
  1021. "AUTO",
  1022. "2G",
  1023. "4G",
  1024. ""
  1025. };
  1026. char Features[NET_MODE_NUM];
  1027. unsigned char i;
  1028. if(StatusUpdate){
  1029. guiClearAll(guiGetBackColor());
  1030. guiShowCaption(0,"网络设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1031. uiMenuShowBottomLine();
  1032. for(i=0;i<NET_MODE_NUM;i++){
  1033. if(i==newPara.netMode) Features[i]=1;
  1034. else Features[i]=0;
  1035. }
  1036. ListBoxInit(&sutListBox,netMode,0,commonIcon2,Features);
  1037. uiMenuShowBottomIndacitor("保存", "返回");
  1038. }
  1039. }
  1040. void uiShowNetSelResponse(void){
  1041. unsigned short key=ListBoxResponse(&sutListBox);
  1042. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1043. else if(MKEY_VALUE_MENU==key){
  1044. getStackStruct()->ok_back=1;
  1045. if(sutListBox.handle*2 != newPara.netMode){
  1046. newPara.netMode=sutListBox.handle*2;
  1047. MSG_INFO(1, "netMode update:%d", newPara.netMode);
  1048. sysIniSave();
  1049. netModeSetCmd(newPara.netMode);
  1050. }
  1051. uISetNextStatus(UIS_MENU_SYS_SEL);
  1052. }
  1053. }
  1054. /*****************************网络设置结束**********************************/
  1055. /*****************************卡选择设置开始**********************************/
  1056. #define SIM_MODE_NUM 2
  1057. void uiShowSimSel(char StatusUpdate){
  1058. static const char *simMode[SIM_MODE_NUM+1]={
  1059. "卡1",
  1060. "卡2",
  1061. ""
  1062. };
  1063. char Features[SIM_MODE_NUM];
  1064. unsigned char i;
  1065. if(StatusUpdate){
  1066. guiClearAll(guiGetBackColor());
  1067. guiShowCaption(0,"SIM设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1068. uiMenuShowBottomLine();
  1069. for(i=0;i<SIM_MODE_NUM;i++){
  1070. if(i==sutApp.simSel) Features[i]=1;
  1071. else Features[i]=0;
  1072. }
  1073. ListBoxInit(&sutListBox,simMode,0,commonIcon2,Features);
  1074. uiMenuShowBottomIndacitor("保存", "返回");
  1075. }
  1076. }
  1077. void uiShowSimSelResponse(void){
  1078. char buf[30];
  1079. unsigned short key=ListBoxResponse(&sutListBox);
  1080. if(MKEY_VALUE_ESC==key){
  1081. if(getStackStruct()->FastUiChange)uISetNextStatus(UIS_STANDBY);
  1082. else uISetNextStatus(UIS_MENU_SYS_SEL);
  1083. }else if(MKEY_VALUE_MENU==key){
  1084. getStackStruct()->ok_back=1;
  1085. if(sutListBox.handle != sutApp.simSel){
  1086. snprintf(buf, sizeof(buf), "AT+SIMCROSS=%d\r\n",sutListBox.handle);
  1087. msgAtSend(buf);
  1088. guiShowMessageBox("请重启设备");
  1089. msgAtSend("AT+TRB\r\n");
  1090. LSAPI_OSI_ThreadSleep(1000);
  1091. for(;;){
  1092. MSG_INFO(1, "card changed, wait user reboot");
  1093. CTL_POWER_HOLD(0);
  1094. LSAPI_OSI_ThreadSleep(1000);
  1095. }
  1096. }
  1097. uISetNextStatus(UIS_MENU_SYS_SEL);
  1098. }
  1099. }
  1100. /*****************************卡选择设置结束**********************************/
  1101. /*****************************功耗设置开始**********************************/
  1102. typedef enum{
  1103. PMODE_DEFAULT_LOW,
  1104. PMODE_SUPER_LOW,
  1105. PMODE_NORMAL
  1106. }PWR_ENUMDEF;
  1107. //低功耗模式
  1108. #define MODE_LOW_PWR_NONE_4G 5
  1109. #define MODE_LOW_PWR_IS_4G 25
  1110. //超长待机模式
  1111. #define MODE_LONG_LOW_PWR_NONE_4G 5
  1112. #define MODE_LONG_LOW_PWR_IS_4G 55
  1113. //常规模式
  1114. #define MODE_NORMAL__NONE_4G 5
  1115. #define MODE_NORMAL__IS_4G 5
  1116. //终端放弃设置模式,由服务器决定使用什么
  1117. #define MODE_AUTO____NONE_4G 0
  1118. #define MODE_AUTO____IS_4G 0
  1119. //默认功耗模式
  1120. #define MODE_PWR_DEFAULT_NONE_4G MODE_LOW_PWR_NONE_4G
  1121. #define MODE_PWR_DEFAULT_IS_4G MODE_LOW_PWR_IS_4G
  1122. static void pwrModeSetCmd(unsigned char pwrMode){
  1123. unsigned char seg1,seg2;
  1124. char buf[30];
  1125. if(pwrMode==PMODE_DEFAULT_LOW){
  1126. seg1=MODE_PWR_DEFAULT_NONE_4G;
  1127. seg2=MODE_PWR_DEFAULT_IS_4G;
  1128. }else if(pwrMode==PMODE_SUPER_LOW){
  1129. seg1=MODE_LONG_LOW_PWR_NONE_4G;
  1130. seg2=MODE_LONG_LOW_PWR_IS_4G;
  1131. }else if(pwrMode==PMODE_NORMAL){
  1132. seg1=MODE_NORMAL__NONE_4G;
  1133. seg2=MODE_NORMAL__IS_4G;
  1134. }else return;
  1135. snprintf(buf, sizeof(buf), "AT+UDP=%d,%d\r\n",seg1,seg2);
  1136. msgAtSend(buf);
  1137. }
  1138. void pwrModeAckHandler(unsigned char seg1, unsigned char seg2){
  1139. if(seg1==MODE_PWR_DEFAULT_NONE_4G && seg2==MODE_PWR_DEFAULT_IS_4G && newPara.pwrMode != PMODE_DEFAULT_LOW){
  1140. goto SAVE_PWR_MODE;
  1141. }else if(seg1==MODE_LONG_LOW_PWR_NONE_4G && seg2==MODE_LONG_LOW_PWR_IS_4G && newPara.pwrMode != PMODE_SUPER_LOW){
  1142. goto SAVE_PWR_MODE;
  1143. }else if(seg1==MODE_NORMAL__NONE_4G && seg2==MODE_NORMAL__IS_4G && newPara.pwrMode != PMODE_NORMAL){
  1144. goto SAVE_PWR_MODE;
  1145. }else if(seg2!=MODE_LOW_PWR_IS_4G&&seg2!=MODE_LONG_LOW_PWR_IS_4G&& seg2!=MODE_NORMAL__IS_4G){
  1146. //Seg2 3个模式都不满足则切换为默认模式
  1147. newPara.pwrMode = PMODE_DEFAULT_LOW;
  1148. goto SAVE_PWR_MODE;
  1149. }
  1150. return;
  1151. SAVE_PWR_MODE:
  1152. sysIniSave();
  1153. pwrModeSetCmd(newPara.pwrMode);
  1154. }
  1155. #define PWR_MODE_NUM 3
  1156. void uiShowPwrSel(char StatusUpdate){
  1157. static const char *pwrMode[PWR_MODE_NUM+1]={
  1158. "低功耗模式",
  1159. "超长待机模式",
  1160. "常规模式",
  1161. "",
  1162. };
  1163. char Features[PWR_MODE_NUM];
  1164. unsigned char i;
  1165. if(StatusUpdate){
  1166. guiClearAll(guiGetBackColor());
  1167. guiShowCaption(0,"功耗设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1168. uiMenuShowBottomLine();
  1169. for(i=0;i<PWR_MODE_NUM;i++){
  1170. if(i==newPara.pwrMode) Features[i]=1;
  1171. else Features[i]=0;
  1172. }
  1173. ListBoxInit(&sutListBox,pwrMode,0,commonIcon2,Features);
  1174. uiMenuShowBottomIndacitor("保存", "返回");
  1175. }
  1176. }
  1177. void uiShowPwrSelResponse(void){
  1178. unsigned short key=ListBoxResponse(&sutListBox);
  1179. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1180. else if(MKEY_VALUE_MENU==key){
  1181. getStackStruct()->ok_back=1;
  1182. if(sutListBox.handle != newPara.pwrMode){
  1183. newPara.pwrMode=sutListBox.handle;
  1184. MSG_INFO(1, "pwrMode update:%d", newPara.pwrMode);
  1185. sysIniSave();
  1186. pwrModeSetCmd(newPara.pwrMode);
  1187. }
  1188. uISetNextStatus(UIS_MENU_SYS_SEL);
  1189. }
  1190. }
  1191. /*****************************功耗设置结束**********************************/
  1192. /*****************************服务器设置输入密码开始**********************************/
  1193. void uiShowServerPassSel(char StatusUpdate){
  1194. if(StatusUpdate){
  1195. guiClearAll(guiGetBackColor());
  1196. guiShowCaption(0,"密码验证",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1197. uiMenuShowBottomLine();
  1198. NumEditInit(&sutNumEdit,(GLCD_WIDTH-6*8)/2,(GLCD_HEIGHT-16)/2,"000000");
  1199. NumEditShow(&sutNumEdit);
  1200. uiMenuShowBottomIndacitor("[上]加值", "[下]移动");
  1201. }
  1202. }
  1203. void uiShowServerSelPassResponse(void){
  1204. unsigned short key=getKeyValue();
  1205. NumEditResponse(&sutNumEdit);
  1206. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1207. else if(MKEY_VALUE_MENU==key){
  1208. if(memcmp(sutNumEdit.buffer, getMenuKey(), 6)==0) uISetNextStatus(UIS_MENU_SYS_SERVER);
  1209. else{
  1210. guiShowMessageBox("密码错误");
  1211. LSAPI_OSI_ThreadSleep(1000);
  1212. getStackStruct()->ok_back=1;
  1213. uISetNextStatus(UIS_MENU_SYS_SEL);
  1214. }
  1215. }
  1216. }
  1217. /*****************************服务器设置输入密码结束**********************************/
  1218. /*****************************服务器设置开始**********************************/
  1219. void uiShowServerSel(char StatusUpdate){
  1220. static const char *serIcons[]={
  1221. "Ser.bmp",
  1222. "Sersel.bmp",
  1223. ""
  1224. };
  1225. static const char *serName[]={
  1226. "杭州服务器",
  1227. "山东服务器",
  1228. "IP分发服务器",
  1229. "集群服务器",
  1230. "自定义服务器",
  1231. "",
  1232. };
  1233. char Features[5];
  1234. unsigned char tempSer,i;
  1235. if(StatusUpdate){
  1236. guiClearAll(guiGetBackColor());
  1237. guiShowCaption(0,"服务器列表",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1238. uiMenuShowBottomLine();
  1239. uiMenuShowBottomIndacitor("确认", "返回");
  1240. tempSer=newPara.serList.defaultuse;
  1241. for(i=0;i<=SERVER_UR;i++){
  1242. if(i==tempSer) Features[i]=1;
  1243. else Features[i]=0;
  1244. }
  1245. ListBoxInit(&sutListBox,serName,0,serIcons,Features);
  1246. }
  1247. }
  1248. void uiShowServerSelResponse(void){
  1249. unsigned char tempSer;
  1250. char buf[50],buf1[100];
  1251. unsigned short key=ListBoxResponse(&sutListBox);
  1252. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1253. else if(MKEY_VALUE_MENU==key){
  1254. tempSer=sutListBox.handle;
  1255. if(tempSer != newPara.serList.defaultuse){
  1256. newPara.serList.defaultuse=tempSer;
  1257. sysIniSave();
  1258. getGIPAddr();
  1259. snprintf(buf, sizeof(buf), "ip=%s;domain=%s;",getPIPAddr(),getDOMAINAddr());
  1260. AscStrTurnHexStr(buf,buf1);
  1261. msgAtSend("AT+POC=010000");
  1262. msgAtSend(buf1);
  1263. msgAtSend("\r\n");
  1264. LSAPI_OSI_ThreadSleep(100);
  1265. msgAtSend("AT+POC=040000\r\n");
  1266. }
  1267. uISetNextStatus(UIS_STANDBY );
  1268. }
  1269. }
  1270. /*****************************服务器设置结束**********************************/
  1271. /*****************************版本设置开始**********************************/
  1272. unsigned char fotaStep;
  1273. unsigned int fotaTick;
  1274. void fotaStepSet(unsigned char newStep){
  1275. fotaStep=newStep;
  1276. }
  1277. void fotaMsgShow(char *msg){
  1278. #ifdef USE_12X12_FONT_ONLY
  1279. int len=guiGetStrXLen((char *)msg,FONT_MODE_12X12);
  1280. #else
  1281. int len=guiGetStrXLen((char *)msg,FONT_MODE_16X16);
  1282. #endif
  1283. guiClearRect(0, 60, GLCD_WIDTH-1, 60+16,guiGetBackColor());
  1284. #ifdef USE_12X12_FONT_ONLY
  1285. guiShowStr((GLCD_WIDTH-len)/2,60+2, msg,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1286. #else
  1287. guiShowStr((GLCD_WIDTH-len)/2,60, msg,FONT_MODE_16X16, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1288. #endif
  1289. }
  1290. char loadMsg=0;
  1291. void showLoading(void){
  1292. loadMsg=1;
  1293. }
  1294. void uiShowVersionSel(char StatusUpdate){
  1295. char buf[50];
  1296. if(StatusUpdate){
  1297. sutApp.fotaVersion[0]=0;
  1298. guiClearAll(guiGetBackColor());
  1299. guiShowCaption(0,"版本更新",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1300. msgAtSend("AT+FOTA?\r\n");
  1301. fotaStep=0;
  1302. loadMsg=0;
  1303. fotaMsgShow("正在检测版本");
  1304. uiMenuShowBottomLine();
  1305. uiMenuShowBottomIndacitor("确定", "返回");
  1306. uTimerStart(&fotaTick, 5000);
  1307. }
  1308. switch(fotaStep){
  1309. case 0:
  1310. if(uTimerExpired(&fotaTick)){
  1311. fotaMsgShow("检测超时");
  1312. fotaStep=4;
  1313. }
  1314. break;
  1315. case 1://等待用户确定
  1316. break;
  1317. case 2://用户确定后等待结果
  1318. if(uTimerExpired(&fotaTick)){
  1319. fotaMsgShow("超时退出");
  1320. fotaStep=4;
  1321. }
  1322. if(loadMsg!=0){
  1323. fotaMsgShow("正在下载");
  1324. loadMsg=0;
  1325. }
  1326. break;
  1327. case 3://升级成功,等待重启
  1328. msgAtSend("AT+POC=050000\r\n");//停止POC后复位
  1329. MSG_INFO(1, "Stop poc");
  1330. LSAPI_OSI_ThreadSleep(2000);
  1331. msgAtSend("AT+TRB\r\n");
  1332. MSG_INFO(1, "Reset system!!!");
  1333. while(1){LSAPI_OSI_ThreadSleep(1000);}
  1334. break;
  1335. case 4://延时显示2秒后退出
  1336. uTimerStart(&fotaTick, 2000);
  1337. fotaStep=5;
  1338. break;
  1339. case 5://退出升级流程
  1340. if(uTimerExpired(&fotaTick)) uISetNextStatus(UIS_MENU_SYS_SEL);
  1341. break;
  1342. case 6://无更新版本
  1343. fotaMsgShow("无更新版本");
  1344. fotaStep=4;
  1345. break;
  1346. case 7://升级失败
  1347. fotaMsgShow("升级失败");
  1348. fotaStep=4;
  1349. break;
  1350. case 8://下载成功
  1351. fotaMsgShow("下载成功,重启更新");
  1352. fotaStep=3;
  1353. break;
  1354. case 9://
  1355. snprintf(buf, sizeof(buf), "是否更新到:%s",sutApp.fotaVersion);
  1356. fotaMsgShow(buf);
  1357. fotaStep=1;
  1358. break;
  1359. }
  1360. }
  1361. void uiShowVersionSelResponse(void){
  1362. unsigned char key=getKeyValue();
  1363. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1364. else if(MKEY_VALUE_MENU==key){
  1365. if(fotaStep==1){
  1366. fotaMsgShow("请勿断电!");
  1367. fotaStep=2;
  1368. msgAtSend("AT+FOTA=1\r\n");
  1369. uTimerStart(&fotaTick, 1000);
  1370. }
  1371. }
  1372. }
  1373. /*****************************版本设置结束**********************************/
  1374. /*****************************提示音设置开始********************************/
  1375. unsigned char noteSetTmp;
  1376. static void switchFlash(void){
  1377. char info[30];
  1378. unsigned short x,y,len;
  1379. if(noteSetTmp==0) snprintf(info, sizeof(info), "关闭");
  1380. else snprintf(info, sizeof(info), "打开");
  1381. len=guiGetStrXLen((char *)info, FONT_MODE_12X12);
  1382. x=(GLCD_WIDTH-len)/2;
  1383. y=UI_CONTENT_SHOW_Y+(GLCD_HEIGHT-UI_CONTENT_SHOW_Y)/2-12;
  1384. guiShowStr(x,y,info, FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1385. }
  1386. void uiShowNoteSel(char StatusUpdate){
  1387. if(StatusUpdate){
  1388. guiClearAll(guiGetBackColor());
  1389. guiShowCaption(0,"提示音设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1390. uiMenuShowBottomLine();
  1391. noteSetTmp=newPara.KeySound;
  1392. switchFlash();
  1393. uiMenuShowBottomIndacitor("保存", "返回");
  1394. }
  1395. }
  1396. void uiShowNoteSelResponse(void){
  1397. unsigned short key=getKeyValue();
  1398. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1399. else if(MKEY_VALUE_MENU==key){
  1400. getStackStruct()->ok_back=1;
  1401. if(newPara.KeySound != noteSetTmp){
  1402. newPara.KeySound=noteSetTmp;
  1403. #ifndef ENABLE_PWM_BEEP
  1404. if(noteSetTmp==0) msgAtSend("AT+TONES=0\r\n");
  1405. else msgAtSend("AT+TONES=1\r\n");
  1406. #endif
  1407. sysIniSave();
  1408. }
  1409. uISetNextStatus(UIS_MENU_SYS_SEL);
  1410. }else if(MKEY_VALUE_DOWN || MKEY_VALUE_UP){
  1411. if(noteSetTmp==0) noteSetTmp=1;
  1412. else noteSetTmp=0;
  1413. switchFlash();
  1414. }
  1415. }
  1416. /*****************************提示音设置结束********************************/