uiBlock.c 59 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048
  1. #include "includes.h"
  2. /****************************状态栏显示部分开始***********************************/
  3. //#ifndef USE_HPOC_POC
  4. //
  5. //unsigned char AscToHex(unsigned char aHex)
  6. //{
  7. // if((aHex>=0)&&(aHex<=9))
  8. // aHex += 0x30;
  9. // else if((aHex>=10)&&(aHex<=15))//A-F
  10. // aHex += 0x37;
  11. // aHex += 0x57;
  12. // else aHex = 0xff;
  13. // return aHex;
  14. //}
  15. //
  16. //
  17. //void AscStrTurnHexStr(char *AscStr, char *HexStr)
  18. //{
  19. // char *pAscStr=AscStr;
  20. // unsigned char d,h,l;
  21. // while(0!=(d=(unsigned char)*pAscStr++)){
  22. // l=d&0x0f;
  23. // h=d>>4;
  24. // *HexStr++=AscToHex(h);
  25. // *HexStr++=AscToHex(l);
  26. // }
  27. // *HexStr=0;
  28. //}
  29. //#endif
  30. //显示信号强度
  31. static void ShowSingle(int CSQ){
  32. unsigned short x=SIGNAL_ICON_X;
  33. unsigned short y=2;
  34. if(sutApp.pocPpp == 0) guiShowBmp(x,y,"Single.bmp");
  35. else guiShowBmp(x,y,"SingleOK.bmp");
  36. //11 3格
  37. x += 7;
  38. if(CSQ<1 || CSQ==99){
  39. guiClearRect(x,y+1,x+10,y+9,COLOR_STATUS_BAR);
  40. }else if(CSQ<8){
  41. guiDrawVLine(x+2,y+8,x,y,guiGetBackColor());
  42. guiClearRect(x+2,y+1,x+10,y+9,COLOR_STATUS_BAR);
  43. }else if(CSQ<16){
  44. guiDrawVLine(x+2,y+8,x,y,guiGetBackColor());
  45. guiDrawVLine(x,y+8,x+3,y,guiGetBackColor());
  46. guiClearRect(x+6,y+1,x+10,y+9,COLOR_STATUS_BAR);
  47. }else if(CSQ<22){
  48. guiDrawVLine(x+2,y+8,x,y,guiGetBackColor());
  49. guiDrawVLine(x,y+8,x+3,y,guiGetBackColor());
  50. guiDrawVLine(x-2,y+8,x+6,y,guiGetBackColor());
  51. guiClearRect(x+9,y+1,x+10,y+9,COLOR_STATUS_BAR);
  52. }else{
  53. guiDrawVLine(x+2,y+8,x,y,guiGetBackColor());
  54. guiDrawVLine(x,y+8,x+3,y,guiGetBackColor());
  55. guiDrawVLine(x-2,y+8,x+6,y,guiGetBackColor());
  56. guiDrawVLine(x-4,y+8,x+9,y,guiGetBackColor());
  57. }
  58. #if 0
  59. if(CSQ<1 || CSQ==99){
  60. guiClearRect(7,3,21,11,COLOR_STATUS_BAR);
  61. }else if(CSQ<8){
  62. guiDrawVLine(9,10,7,2,guiGetBackColor());
  63. guiClearRect(9,3,21,11,COLOR_STATUS_BAR);
  64. }else if(CSQ<16){
  65. guiDrawVLine(9,10,7,2,guiGetBackColor());
  66. guiDrawVLine(7,10,10,2,guiGetBackColor());
  67. guiClearRect(13,3,21,11,COLOR_STATUS_BAR);
  68. }else if(CSQ<22){
  69. guiDrawVLine(9,10,7,2,guiGetBackColor());
  70. guiDrawVLine(7,10,10,2,guiGetBackColor());
  71. guiDrawVLine(5,10,13,2,guiGetBackColor());
  72. guiClearRect(16,3,21,11,COLOR_STATUS_BAR);
  73. }else{
  74. guiDrawVLine(9,10,7,2,guiGetBackColor());
  75. guiDrawVLine(7,10,10,2,guiGetBackColor());
  76. guiDrawVLine(5,10,13,2,guiGetBackColor());
  77. guiDrawVLine(3,10,16,2,guiGetBackColor());
  78. }
  79. #endif
  80. }
  81. unsigned char netshowvalue=0xff;
  82. unsigned char ctecCurrentSet=0;
  83. //显示网络制式
  84. static void Show_Net(unsigned char s_netshowvalue){
  85. unsigned short y=0;
  86. if(s_netshowvalue==0){
  87. guiShowStr(NET_ICON_X, y+1,"2G", FONT_MODE_12X12, REVERSED_NO,guiGetBackColor(),COLOR_STATUS_BAR);
  88. }else if(s_netshowvalue==4){
  89. if(sutApp.UserInfo.tnet==5)guiShowStr(NET_ICON_X, y+1,"5G", FONT_MODE_12X12, REVERSED_NO,guiGetBackColor(),COLOR_STATUS_BAR);
  90. else guiShowStr(NET_ICON_X, y+1,"4G", FONT_MODE_12X12, REVERSED_NO,guiGetBackColor(),COLOR_STATUS_BAR);
  91. }else guiClearRect(NET_ICON_X,y,NET_ICON_X+NET_ICON_WX,y+11,COLOR_STATUS_BAR);
  92. }
  93. static void gpsIconShow(char flash){
  94. typedef struct{
  95. unsigned char located:1;
  96. unsigned char gpsF:1;
  97. }TMP_GPS_DEF;
  98. static TMP_GPS_DEF tmpGps;
  99. unsigned short x=GPS_ICON_X,y=0;
  100. if(tmpGps.located==sutGpsInfo.isGpsValid && tmpGps.gpsF==sutGpsInfo.isGpsWork && flash==0) return;
  101. guiClearRect(x,y,x+GPS_ICON_WX,y+11,COLOR_STATUS_BAR);
  102. if(sutGpsInfo.isGpsWork==0){//GPS未打开时
  103. guiClearRect(x,y,x+GPS_ICON_WX,y+11,COLOR_STATUS_BAR);
  104. }else{//GPS已打开
  105. guiShowBmp(x,y,"GPSA.bmp");
  106. if(sutGpsInfo.isGpsValid==1) guiShowBmp(x+10,y,"GPS2.bmp");//已定位
  107. }
  108. tmpGps.located=sutGpsInfo.isGpsValid;
  109. tmpGps.gpsF=sutGpsInfo.isGpsWork;
  110. }
  111. static void ShowCardType(char card){
  112. unsigned short x= CARD_ICON_X;
  113. unsigned short y=3;
  114. if(card==0) guiShowBmp(x, y, "SIM1.bmp");
  115. else if(card==1) guiShowBmp(x, y, "SIM2.bmp");
  116. }
  117. //显示电量
  118. static void ShowBatttery(int bat,unsigned int exeInterval){
  119. static unsigned int flashCnt=0;
  120. static unsigned char flag=0;
  121. static unsigned short cnt=0;
  122. unsigned short x=BAT_ICON_X,y=2,h=y+2;
  123. if(bat<WARN_PWR_LEVEL){//请充电
  124. if(++cnt<(800/exeInterval)) return;
  125. cnt=0;
  126. if(sutApp.lowPwrWarn==0){
  127. sutApp.lowPwrWarn=1;
  128. sutApp.lowPwrCnt=WARN_TTS_INTERVAL;
  129. }
  130. if(flag==0){
  131. guiShowBmp(x,y,"VBAT1.bmp");
  132. flag=1;
  133. }else{
  134. flag=0;
  135. guiClearRect(x,y-2,x+21,y-2+1+12,COLOR_STATUS_BAR);
  136. }
  137. return;
  138. }else if(bat<355){//340<x<=355 1格
  139. guiShowBmp(x,y,"VBAT1.bmp");//3
  140. guiDrawVLine(h,h+5,x+16,y+1,guiGetBackColor());
  141. }
  142. else if(bat<375){//355<x<=375 2格
  143. guiShowBmp(x,y,"VBAT1.bmp");
  144. guiDrawVLine(h,h+5,x+12,y+1,guiGetBackColor());
  145. guiDrawVLine(h,h+5,x+16,y+1,guiGetBackColor());//5.12
  146. }
  147. else if(bat<400){//375<x<=400 3格
  148. guiShowBmp(x,y,"VBAT1.bmp");
  149. guiDrawVLine(h,h+5,x+8,y+1,guiGetBackColor());
  150. guiDrawVLine(h,h+5,x+12,y+1,guiGetBackColor());
  151. guiDrawVLine(h,h+5,x+16,y+1,guiGetBackColor());//5.12
  152. }
  153. else{//>=400 4格
  154. guiShowBmp(x,y,"VBAT1.bmp");
  155. guiDrawVLine(h,h+5,x+4,y+1,guiGetBackColor());
  156. guiDrawVLine(h,h+5,x+8,y+1,guiGetBackColor());
  157. guiDrawVLine(h,h+5,x+12,y+1,guiGetBackColor());
  158. guiDrawVLine(h,h+5,x+16,y+1,guiGetBackColor());//5.12
  159. }
  160. sutApp.lowPwrWarn=0;
  161. }
  162. //显示时间
  163. static void ShowTime(char flash,unsigned int exeInterval){
  164. static unsigned short nextExe=0;
  165. static unsigned char flag=0;
  166. MY_CLOCK myclock;
  167. char buf[30];
  168. //if(sutApp.bndPocDone==0)return;
  169. if(nextExe==0 || flash){
  170. ohpocGetClock(&myclock);
  171. if(flag){
  172. snprintf(buf, sizeof(buf), "%02d:%02d",myclock.hour, myclock. min);
  173. flag=0;
  174. }else{
  175. snprintf(buf, sizeof(buf), "%02d %02d",myclock.hour, myclock. min);
  176. flag=1;
  177. }
  178. guiShowStr(TIME_ICON_X, 1,buf, FONT_MODE_12X12, REVERSED_NO,guiGetBackColor(),COLOR_STATUS_BAR);
  179. }
  180. if(++nextExe>=(1000/exeInterval)) nextExe=0;
  181. }
  182. //显示耳机接入状态
  183. static void ShowEarStatus(char flash){
  184. static unsigned char lastStatus=0;
  185. if(lastStatus==sutApp.earLev && flash==0) return;
  186. if(sutApp.earLev!=0) guiShowBmp(EAR_ICON_X, 1, "ear.bmp");
  187. else guiClearRect(EAR_ICON_X, 1, EAR_ICON_X+14,1+12, COLOR_STATUS_BAR);
  188. lastStatus=sutApp.earLev;
  189. }
  190. //显示键盘锁状态
  191. static void ShowKeyLocStatus(char flash){
  192. static unsigned char lastStatus=0;
  193. if(lastStatus==sutApp.keyLock && flash==0) return;
  194. if(sutApp.keyLock!=0) guiShowBmp(LOCK_ICON_X, 1, "lock.bmp");
  195. else guiClearRect(LOCK_ICON_X, 1, LOCK_ICON_X+LOCK_ICON_WX,12, COLOR_STATUS_BAR);
  196. lastStatus=sutApp.keyLock;
  197. }
  198. //显示状态栏
  199. void uiShowStatusBar(char flash,unsigned int exeInterval){
  200. static unsigned char s_netshowvalue=0xff;
  201. static unsigned char lastPPPStatus;
  202. static int siCSQ;
  203. static int siVbat;
  204. static unsigned short batFirstShow=0;
  205. static char lastEnable=0;
  206. static char cardType=0;
  207. char tempFlash=flash;
  208. // static bnd_time_t tempDate={0};
  209. // char info[30];
  210. if(sutApp.enableKey==0) return;
  211. if(lastEnable==0){
  212. lastEnable=1;
  213. tempFlash=1;
  214. guiFillRect(0, 0, GLCD_WIDTH-1, UI_STATUS_BAR_HEIGH-1,COLOR_STATUS_BAR);//清除第一区
  215. }
  216. //显示信号
  217. if(tempFlash || siCSQ!=sutApp.g_iCSQ || lastPPPStatus != sutApp.pocPpp){
  218. lastPPPStatus=sutApp.pocPpp;
  219. siCSQ=sutApp.g_iCSQ;
  220. ShowSingle(sutApp.g_iCSQ);
  221. }
  222. //显示卡选项
  223. if(tempFlash || cardType != sutApp.simSel){
  224. cardType=sutApp.simSel;
  225. ShowCardType(cardType);
  226. }
  227. //显示2G/3G/4G
  228. if(tempFlash || s_netshowvalue!=netshowvalue){
  229. s_netshowvalue=netshowvalue;
  230. Show_Net(s_netshowvalue);
  231. }
  232. //显示GPS是否正常及鉴权情况
  233. gpsIconShow(tempFlash);
  234. //电量显示
  235. if(batFirstShow < (1000/exeInterval)) {//开机前1秒显示一半电量
  236. sutApp.g_iBAT=360;
  237. batFirstShow++;
  238. }else if(tempFlash || siVbat!=sutApp.g_iBAT || sutApp.g_iBAT < WARN_PWR_LEVEL){
  239. siVbat=sutApp.g_iBAT;
  240. ShowBatttery(sutApp.g_iBAT,exeInterval);
  241. //MSG_INFO(1, "----%d", sutApp.g_iBAT);
  242. }
  243. //文本消息显示
  244. //sutSms.haveUnRead=1;
  245. //ShowMessageFlag(0);
  246. //GPS显示
  247. //时间显示
  248. ShowTime(tempFlash,exeInterval);
  249. //显示耳机状态
  250. //ShowEarStatus(tempFlash);
  251. //显示键盘锁状态
  252. //ShowKeyLocStatus(tempFlash);
  253. }
  254. /****************************状态栏显示部分结束***********************************/
  255. /****************************待机界面显示部分开始***********************************/
  256. typedef enum{
  257. ME_NO_LOGIN,
  258. ME_NOBODY_SPEAK,
  259. ME_IAM_SPEAK,
  260. ME_SOMEBODY_SPEAK
  261. }ME_ENUM;
  262. static void uiShowGUName(int update);
  263. static void uiShowGuaDuan(unsigned char danhu);
  264. static void uiShowGroup(const char* info);
  265. static void uiShowUser(const char* info);
  266. static void uiShowHuaQuan(const char* info,char type);
  267. static void uiShowCallUserName(void);
  268. static void uiShowOffLineMessage(void);
  269. static void uiShowCopsInfo(void){
  270. char info[50];
  271. switch(sutApp.copstype){
  272. case 46000:
  273. case 46002:
  274. case 46007:
  275. snprintf(info, sizeof(info), "中国移动");
  276. break;
  277. case 46001:
  278. case 46006:
  279. snprintf(info, sizeof(info), "中国联通");
  280. break;
  281. case 46003:
  282. case 46005:
  283. case 46008:
  284. case 46009:
  285. case 46010:
  286. case 46011:
  287. snprintf(info, sizeof(info), "中国电信");
  288. break;
  289. default:snprintf(info, sizeof(info), "公网集群对讲系统");break;
  290. }
  291. guiFillRect(0, UI_STATUS_ITEM_Y, GLCD_WIDTH-1, UI_CONTENT_SHOW_Y-1, guiGetForeColor());//清除第二区
  292. guiShowCaption(0,info, UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  293. }
  294. #ifdef USE_LEFT_MOVING
  295. /*
  296. param[in] dlyInterval 间隔
  297. param[in] reset 重刷
  298. param[in] now 使能刷
  299. param[in] voice 话权
  300. */
  301. void movingShowNames(unsigned int dlyInterval,unsigned char reset, unsigned char now,unsigned char voice){
  302. const char *idleptr="空闲";
  303. const char *voiceptr="本机在讲话";
  304. const char *danhuptr="单呼模式";
  305. char *gname=danhuptr;
  306. char *voicePri=idleptr;
  307. char *uname=NULL;
  308. static unsigned int interval=0xffffff;
  309. if(sutPocStatus.logined==0) return;
  310. //if(sutPocStatus.statusChaned!=0){
  311. // sutPocStatus.statusChaned=0;
  312. // reset=1;
  313. //}
  314. if(++interval<500/dlyInterval && reset==0 && now==0) return;//0.5秒刷新一次
  315. interval=0;
  316. if(sutPocStatus.danHuStatus==0){
  317. if(sutPocStatus.LocalGroup.name[0]==0) gname=NULL;
  318. else gname=sutPocStatus.LocalGroup.name;
  319. }
  320. if(voice==0) voicePri=idleptr;
  321. else if(voice==1) voicePri=voiceptr;
  322. else voicePri=sutPocStatus.CallName;
  323. if(sutPocStatus.LocalUser.name[0]!=0) uname=sutPocStatus.LocalUser.name;
  324. mainScreenShowMoving(UI_GROUP_SHOW_Y, reset,gname,uname,voicePri,voice);
  325. }
  326. #endif
  327. void uiShowMainInterface(char status,unsigned int exeInterval){
  328. short Flag=ME_NO_LOGIN;//ME_ENUM
  329. static unsigned char danhu=0;
  330. static short lastFlag=-1;
  331. static unsigned short siCt=0;
  332. char info[20];
  333. static char firstRun=0;
  334. static unsigned short dly=0;
  335. char tmpStatus=status;
  336. static int copsStatus;
  337. unsigned char reset=0;
  338. unsigned char moveFlash=0;
  339. static unsigned char voice=0;
  340. static MY_CLOCK tempDate;
  341. /*逻辑处理开始*/
  342. if(tmpStatus){
  343. guiClearAll(guiGetBackColor());
  344. #ifdef AUTH_SKIP
  345. guiShowStr(1, UI_BOTTOM_SHOW_Y,"测试样机", FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR, guiGetBackColor());
  346. #else
  347. //guiShowStr(1, UI_BOTTOM_SHOW_Y,"菜单", FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR, guiGetBackColor());
  348. //now_time.
  349. #endif
  350. danhu=sutPocStatus.danHuStatus;
  351. uiShowGuaDuan(danhu);
  352. lastFlag=-1;
  353. siCt=0;
  354. //return;
  355. }
  356. #ifndef AUTH_SKIP
  357. if((poc_clock.year>1970)&&(tempDate.year!=poc_clock.year
  358. ||tempDate.month!=poc_clock.month
  359. ||tempDate.day!=poc_clock.day||tmpStatus))
  360. {
  361. tempDate.year=poc_clock.year;
  362. tempDate.month=poc_clock.month;
  363. tempDate.day=poc_clock.day;
  364. snprintf(info, sizeof(info), "%d-%02d-%02d",poc_clock.year,poc_clock.month,poc_clock.day);
  365. MSG_INFO(1,info);
  366. guiShowStr(1, UI_BOTTOM_SHOW_Y-3,info, FONT_MODE_16X16, REVERSED_NO,COLOR_STATUS_BAR, guiGetBackColor()); //4
  367. }
  368. #endif
  369. if(copsStatus != sutApp.copstype || tmpStatus){
  370. copsStatus=sutApp.copstype;
  371. uiShowCopsInfo();
  372. }
  373. //更新单呼显示与否
  374. if(sutPocStatus.danHuStatus != danhu){
  375. danhu=sutPocStatus.danHuStatus;
  376. uiShowGuaDuan(danhu);
  377. }
  378. //提示解锁
  379. if(sutApp.lockShow!=0){
  380. backLightReset();
  381. guiShowMessageBox("请先解锁!");
  382. LSAPI_OSI_ThreadSleep(500);
  383. guiClearRect(0,GLCD_HEIGHT/2-20,GLCD_WIDTH-1,GLCD_HEIGHT/2+20,guiGetBackColor());
  384. lastFlag=-1;//让以下刷新一下
  385. sutApp.lockShow=0;
  386. }
  387. //以下持续调用,以便动态更新信息
  388. if(0==sutPocStatus.logined) Flag=ME_NO_LOGIN;//未登录
  389. else if(0==sutPocStatus.spk && 0==sutPocStatus.mic){//已登录,无人说话
  390. Flag=ME_NOBODY_SPEAK;
  391. }else if(0!=sutPocStatus.mic) Flag=ME_IAM_SPEAK;//已登录,本机说话
  392. else if(0!=sutPocStatus.spk) Flag=ME_SOMEBODY_SPEAK;//有人说话
  393. switch(Flag){
  394. case ME_NO_LOGIN://未登录
  395. if(Flag != lastFlag){
  396. guiFillRect(0, UI_CONTENT_SHOW_Y, GLCD_WIDTH-1, UI_BOTTOM_SHOW_Y-1,guiGetBackColor());
  397. // guiShowBmp(0,UI_CONTENT_SHOW_Y, "logo.bmp");
  398. }
  399. break;
  400. case ME_NOBODY_SPEAK://已登录,无人说话
  401. if(Flag != lastFlag){
  402. if(ME_NO_LOGIN==lastFlag) guiFillRect(0, UI_CONTENT_SHOW_Y, GLCD_WIDTH-1, UI_CONTENT_SHOW_Y+16,guiGetBackColor());//从未登录到登录,'正在登录'那行也刷掉
  403. guiFillRect(0, UI_VOICE_SHOW_Y, GLCD_WIDTH-1, UI_VOICE_SHOW_Y+16,guiGetBackColor());
  404. #ifdef USE_LEFT_MOVING
  405. voice=0;
  406. moveFlash=1;
  407. #else
  408. uiShowHuaQuan("空闲",0);
  409. #endif
  410. sutPocStatus.statusChaned = 1;
  411. }
  412. break;
  413. case ME_IAM_SPEAK://已登录,本机说话
  414. if(Flag != lastFlag){
  415. guiFillRect(0, UI_VOICE_SHOW_Y, GLCD_WIDTH-1, UI_VOICE_SHOW_Y+16,guiGetBackColor());
  416. #ifdef USE_LEFT_MOVING
  417. voice=1;
  418. moveFlash=1;
  419. #else
  420. uiShowHuaQuan("本机在讲话",1);
  421. #endif
  422. }
  423. break;
  424. case ME_SOMEBODY_SPEAK://已登录,有人说话
  425. if(Flag != lastFlag){
  426. guiFillRect(0, UI_VOICE_SHOW_Y, GLCD_WIDTH-1, UI_VOICE_SHOW_Y+16,guiGetBackColor());
  427. sutPocStatus.statusChaned=1;//保证要刷新名字
  428. #ifdef USE_LEFT_MOVING
  429. voice=2;
  430. moveFlash=1;
  431. #endif
  432. }
  433. #ifndef USE_LEFT_MOVING
  434. uiShowCallUserName();
  435. #endif
  436. break;
  437. }
  438. if(Flag>0){//已登录
  439. if(Flag != lastFlag && (lastFlag==-1 || ME_NO_LOGIN==lastFlag))
  440. {
  441. #ifdef USE_LEFT_MOVING
  442. reset=1;
  443. #else
  444. uiShowGUName(1);
  445. #endif
  446. }
  447. #ifndef USE_LEFT_MOVING
  448. else uiShowGUName(0);
  449. #endif
  450. }else{//未登录
  451. snprintf(info, sizeof(info),"正在登陆.");
  452. switch(siCt){//not finished yet
  453. case 0:
  454. strcat(info, " ");
  455. guiShowStr(1, UI_CONTENT_SHOW_Y,info, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  456. break;
  457. case (1000/APP_SUB_DIV_TIME):
  458. strcat(info, ". ");
  459. guiShowStr(1, UI_CONTENT_SHOW_Y,info, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  460. break;
  461. case (2000/APP_SUB_DIV_TIME):
  462. strcat(info, "..");
  463. guiShowStr(1, UI_CONTENT_SHOW_Y,info, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  464. break;
  465. }
  466. //显示登录状态
  467. uiShowOffLineMessage();
  468. }
  469. #ifdef USE_LEFT_MOVING
  470. movingShowNames(APP_SUB_DIV_TIME,reset,moveFlash,voice);
  471. #endif
  472. if(++siCt>=(3000/APP_SUB_DIV_TIME)) siCt=0;
  473. if(Flag != lastFlag) lastFlag=Flag;
  474. }
  475. static void uiShowGUName(int update){
  476. static char scNameUser[POC_GROUP_USER_NAME_LEN];
  477. static char scNameGroup[POC_GROUP_USER_NAME_LEN];
  478. char name[POC_GROUP_USER_NAME_LEN];
  479. unsigned short len;
  480. unsigned char danHuanBuffer[9]={0xB5,0xA5,0xBA,0xF4,0xC4,0xA3,0xCA,0xBD,0};
  481. char GroupShowUpdate=0;
  482. char UserShowUpdate=0;
  483. if(sutPocStatus.danHuStatus==0){
  484. if(0!=strcmp(sutPocStatus.LocalGroup.name,scNameGroup) || update!=0){
  485. memset(scNameGroup,0,sizeof(scNameGroup));
  486. memcpy(scNameGroup,sutPocStatus.LocalGroup.name,sizeof(scNameGroup));
  487. GroupShowUpdate=1;
  488. }
  489. }else{
  490. if(0!=strcmp((char *)danHuanBuffer,scNameGroup) || update!=0){
  491. memset(scNameGroup,0,sizeof(scNameGroup));
  492. memcpy(scNameGroup, danHuanBuffer,sizeof(danHuanBuffer));
  493. GroupShowUpdate=1;
  494. }
  495. }
  496. if(0!=strcmp(sutPocStatus.LocalUser.name,scNameUser) || update!=0){
  497. memset(scNameUser,0,sizeof(scNameUser));
  498. memcpy(scNameUser,sutPocStatus.LocalUser.name,sizeof(scNameUser));
  499. UserShowUpdate=1;
  500. }
  501. if(GroupShowUpdate){
  502. guiClearRect(0,UI_GROUP_SHOW_Y,GLCD_WIDTH-1,UI_GROUP_SHOW_Y+16+2,guiGetBackColor());//18
  503. //刷新群组栏
  504. if(sutPocStatus.danHuStatus==0) StrIntercept(name, scNameGroup, sizeof(name));
  505. else snprintf(name, sizeof(name), "单呼模式");
  506. uiShowGroup(name);
  507. sutPocStatus.statusChaned=1;
  508. }
  509. if(UserShowUpdate){
  510. guiClearRect(0,UI_USER_SHOW_Y,GLCD_WIDTH-1,UI_GROUP_SHOW_Y+16,guiGetBackColor());//18
  511. //刷新成员栏
  512. StrIntercept(name, scNameUser, sizeof(name));
  513. uiShowUser(name);
  514. }
  515. }
  516. static void uiShowGuaDuan(unsigned char danhu){
  517. if(danhu==0) guiClearArea(GLCD_WIDTH-32, UI_BOTTOM_SHOW_Y, 32, 14, guiGetBackColor());
  518. else guiShowStr(GLCD_WIDTH-32, UI_BOTTOM_SHOW_Y, "挂断", FONT_MODE_12X12, REVERSED_NO, COLOR_STATUS_BAR,guiGetBackColor());
  519. }
  520. static void uiShowGroup(const char* info){
  521. unsigned int color=COLOR_BLACK;
  522. if(sutPocStatus.danHuStatus==0) guiShowBmp(2, UI_GROUP_SHOW_Y, "Group2.bmp");
  523. else{
  524. guiShowBmp(2, UI_GROUP_SHOW_Y, "Onecall.bmp");
  525. color=COLOR_RED;
  526. }
  527. //guiShowStr(2, UI_GROUP_SHOW_Y+2,"群组:", FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  528. guiClearRect(2+16+2, UI_GROUP_SHOW_Y, GLCD_WIDTH-1, UI_GROUP_SHOW_Y+16, guiGetBackColor());
  529. #ifdef USE_12X12_FONT_ONLY
  530. guiShowStr(2+16+2, UI_GROUP_SHOW_Y+2,info, FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  531. #else
  532. guiShowStr(2+16+2, UI_GROUP_SHOW_Y,info, FONT_MODE_16X16, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  533. #endif
  534. }
  535. static void uiShowUser(const char* info){
  536. guiClearRect(1, UI_USER_SHOW_Y, GLCD_WIDTH-1, UI_USER_SHOW_Y+16, guiGetBackColor());//2+18
  537. guiShowBmp(2, UI_USER_SHOW_Y, "people2.bmp");
  538. //guiShowStr(2, UI_USER_SHOW_Y+2,"成员:", FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  539. #ifdef USE_12X12_FONT_ONLY
  540. guiShowStr(2+18, UI_USER_SHOW_Y+2,info, FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  541. #else
  542. guiShowStr(2+18, UI_USER_SHOW_Y,info, FONT_MODE_16X16, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  543. #endif
  544. }
  545. static void uiShowHuaQuan(const char* info,char type){
  546. unsigned int color=COLOR_BLACK;
  547. if(type==0) guiShowBmp(2, UI_VOICE_SHOW_Y, "Phone.bmp");
  548. else if(type==1){
  549. color=COLOR_RED;
  550. guiShowBmp(2, UI_VOICE_SHOW_Y, "Csend.bmp");
  551. }else if(type==2){
  552. guiShowBmp(2, UI_VOICE_SHOW_Y, "Creceive.bmp");
  553. color=COLOR_DEEP_GREEN;
  554. }
  555. //guiShowStr(2, UI_VOICE_SHOW_Y+2,"话权:", FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  556. guiClearRect(2+18, UI_VOICE_SHOW_Y, GLCD_WIDTH-1, UI_VOICE_SHOW_Y+16, guiGetBackColor());
  557. #ifdef USE_12X12_FONT_ONLY
  558. guiShowStr(2+18, UI_VOICE_SHOW_Y+2,info, FONT_MODE_12X12, REVERSED_NO,COLOR_BLACK,guiGetBackColor());
  559. #else
  560. guiShowStr(2+18, UI_VOICE_SHOW_Y,info, FONT_MODE_16X16, REVERSED_NO,color,guiGetBackColor());
  561. #endif
  562. }
  563. static void uiShowCallUserName(void){
  564. static char scName[POC_GROUP_USER_NAME_LEN];
  565. char name[POC_GROUP_USER_NAME_LEN];
  566. if(0 != strncmp(scName, sutPocStatus.CallName, POC_GROUP_USER_NAME_LEN) ||
  567. sutPocStatus.statusChaned){
  568. //当名字变更或UI切换了,刷新显示
  569. sutPocStatus.statusChaned=0;
  570. memcpy(scName, sutPocStatus.CallName, POC_GROUP_USER_NAME_LEN);
  571. uiShowHuaQuan(scName,2);
  572. }
  573. }
  574. static void uiShowOffLineMessage(void){
  575. static unsigned char laReason;
  576. char info[50],update=0;
  577. unsigned short y;
  578. if(sutUIstatus.Status != UIS_STANDBY) return;
  579. if(sutPocStatus.PocLineOffReason==laReason && sutUIstatus.ItemRefresh==0) return;
  580. sutUIstatus.ItemRefresh=0;
  581. laReason=sutPocStatus.PocLineOffReason;
  582. if(sutApp.cardStatus==0){
  583. snprintf(info, sizeof(info), "请插卡");
  584. update=1;
  585. }else{
  586. switch(sutPocStatus.PocLineOffReason){
  587. case 1:snprintf(info, sizeof(info), "无网络连接");break;
  588. case 2:snprintf(info, sizeof(info), "无法连接");break;
  589. case 3:snprintf(info, sizeof(info), "没有服务");break;
  590. case 4:snprintf(info, sizeof(info), "账号信息错误");break;
  591. }
  592. if(sutPocStatus.PocLineOffReason!=0) update=1;
  593. }
  594. if(update!=0){
  595. //y=UI_CONTENT_SHOW_Y+2+12;//WJL
  596. y=UI_USER_SHOW_Y;
  597. guiClearRect(1,y, GLCD_WIDTH-1, y +12, guiGetBackColor());
  598. guiShowStr(1, y,info, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  599. }
  600. }
  601. /****************************待机界面显示部分结束***********************************/
  602. /****************************主菜单显示部分开始*************************************/
  603. #include "Palace.h"
  604. SUT_PALACE sutPalace;
  605. void uiShowMenuMain(char update){
  606. static const char *apcMenuMain[]={
  607. "群组选择",
  608. "成员选择",
  609. "文本信息",
  610. "系统设置",
  611. "定位设置",
  612. "终端信息",
  613. ""
  614. };
  615. if(update) PalaceInit(&sutPalace,apcMenuMain,"Palace","主菜单");
  616. }
  617. void MenuMainResponse(void){
  618. unsigned short key;
  619. key=PalaceResponse(&sutPalace);
  620. if(MKEY_VALUE_MENU==key){
  621. switch(sutPalace.Index){
  622. case 0:
  623. uISetNextStatus(UIS_MENU_GROUP_SEL);
  624. break;
  625. case 1:
  626. uISetNextStatus(UIS_MENU_USER_SEL);
  627. break;
  628. case 2:
  629. uISetNextStatus(UIS_MENU_MAIL_SEL);
  630. break;
  631. case 3:
  632. uISetNextStatus(UIS_MENU_SYS_SEL);
  633. break;
  634. case 4:
  635. uISetNextStatus(UIS_MENU_LOCATION_SEL);
  636. break;
  637. case 5:
  638. uISetNextStatus(UIS_MENU_INFO_SEL);
  639. break;
  640. }
  641. uiPushStack(sutPalace.Index);
  642. }
  643. else if(MKEY_VALUE_ESC==key){
  644. uISetNextStatus(UIS_STANDBY);
  645. sutApp.MenuToStandby=1;
  646. }
  647. }
  648. /****************************主菜单显示部分结束*************************************/
  649. /*****************************群组选择/成员选择部分开始*********************************/
  650. static char GUListBoxInited=0;
  651. static char SelMachine=0;
  652. static void ReFlashItemGU(char type);
  653. static void UserAssistAdd(void);
  654. void numGUFlash(int index, int total){
  655. char info[10];
  656. int x;
  657. snprintf(info, sizeof(info), "%d", total);
  658. x=GLCD_WIDTH-strlen(info)*12;
  659. guiClearRect(78, UI_STATUS_ITEM_Y, GLCD_WIDTH-1, UI_STATUS_ITEM_Y+12, guiGetForeColor());
  660. guiShowStr(x, UI_STATUS_ITEM_Y+1, info, FONT_MODE_12X12, REVERSED_NO, guiGetBackColor(), guiGetForeColor());
  661. }
  662. static unsigned int thisShowNum;
  663. bool setHandleToZero=true;
  664. void uiShowGUSel(char StatusUpdate,unsigned int exeInterval,char type){
  665. static unsigned int timer;
  666. char info[50];
  667. if(StatusUpdate){
  668. if(sutPocStatus.logined==0){
  669. guiShowMessageBox("请先登录");
  670. uTimerStart(&timer, 1000);
  671. SelMachine=0;
  672. }else SelMachine=1;
  673. }
  674. switch(SelMachine){
  675. case 0://延时后退出
  676. if(uTimerExpired(&timer)){
  677. uISetNextStatus(UIS_STANDBY);
  678. }
  679. break;
  680. case 1://显示
  681. guiClearAll(guiGetBackColor());
  682. guiShowMessageBox("请稍候");
  683. sutPocStatus.ListDetailValid=0;
  684. if(type==0){
  685. guiShowCaption(0,"群组选择",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12); //0
  686. uiMenuShowBottomIndacitor("确定", "返回");
  687. msgAtSend("AT+POC=0D0000\r\n");
  688. }else{
  689. guiShowCaption(0,"用户选择",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12); //0
  690. uiMenuShowBottomIndacitor("单呼", "返回");
  691. snprintf(info, sizeof(info),"AT+POC=0E0000%08x\r\n",sutPocStatus.LocalGroup.ID);
  692. msgAtSend(info);
  693. }
  694. thisShowNum=0;
  695. SelMachine=3;
  696. uTimerStart(&timer, 5000);
  697. uiMenuShowBottomLine();
  698. break;
  699. case 3:
  700. if(uTimerExpired(&timer)){
  701. guiShowMessageBox("成员获取失败");
  702. SelMachine=0;
  703. uTimerStart(&timer, 1000);
  704. }
  705. if(sutPocStatus.ListDetailValid!=0){
  706. SelMachine=2;
  707. thisShowNum=sutPocStatus.ListCurOnlineNum;
  708. guiClearRect(0,GLCD_HEIGHT/2-20,GLCD_WIDTH-1,GLCD_HEIGHT/2+20,guiGetBackColor());//刷掉"请稍候"的残留
  709. ReFlashItemGU(type);
  710. }
  711. break;
  712. }
  713. }
  714. void GroupSelResponse(){
  715. unsigned int key;
  716. char buf[50];
  717. switch(SelMachine){
  718. case 2:
  719. key=ListBoxResponse(&sutListBox);
  720. if(MKEY_VALUE_ESC==key){
  721. uISetNextStatus(UIS_MENU_MAIN);
  722. }else if(MKEY_VALUE_MENU==key){
  723. if(0 == sutPocStatus.ListCurOnlineNum) break;
  724. ///////////////////////////////////////
  725. //UiassistEnd(1);
  726. sutApp.groupTTSEnable=1;
  727. snprintf(buf, sizeof(buf),"AT+POC=090000%08x\r\n",sutPocStatus.AllGroups[sutListBox.handle].ID);
  728. msgAtSend(buf);
  729. MSG_INFO(1,buf);
  730. snprintf(buf, sizeof(buf),"进入:%s",sutPocStatus.AllGroups[sutListBox.handle].name);
  731. MSG_INFO(1,buf);
  732. uISetNextStatus(UIS_STANDBY);
  733. SelMachine=0;
  734. }
  735. break;
  736. }
  737. }
  738. void UserSelResponse(){
  739. char buf[50];
  740. unsigned int key;
  741. switch(SelMachine){
  742. case 2:
  743. key=ListBoxResponse(&sutListBox);
  744. if(MKEY_VALUE_ESC==key){
  745. uISetNextStatus(UIS_MENU_MAIN);
  746. }else if(MKEY_VALUE_MENU==key){
  747. if(0 == sutPocStatus.ListCurOnlineNum) break;
  748. snprintf(buf, sizeof(buf),"AT+POC=0A0000%08x\r\n",sutPocStatus.AllUsers[sutListBox.handle].ID);
  749. msgAtSend(buf);
  750. MSG_INFO(1, buf);
  751. snprintf(buf, sizeof(buf),"呼叫:%s",sutPocStatus.AllUsers[sutListBox.handle].name);
  752. MSG_INFO(1, buf);
  753. uISetNextStatus(UIS_STANDBY);
  754. SelMachine=0;
  755. }
  756. break;
  757. }
  758. }
  759. static void UserAssistAdd(void){
  760. switch(SelMachine){
  761. case 1:
  762. if(getAssistResult()){
  763. if(sutUIstatus.Status==UIS_MENU_GROUP_SEL)ReFlashItemGU(0);
  764. else ReFlashItemGU(1);
  765. SelMachine=0;
  766. }
  767. break;
  768. case 2:
  769. if(getAssistResult()){
  770. if(sutUIstatus.Status==UIS_MENU_GROUP_SEL)ReFlashItemGU(0);
  771. else ReFlashItemGU(1);
  772. SelMachine=0;
  773. }
  774. break;
  775. }
  776. }
  777. static void ReFlashItemGU(char type){
  778. static unsigned short susCt=0;
  779. static const char *accIconFileName[]={
  780. "Group1.bmp",
  781. "Group2.bmp",
  782. "people1.bmp",
  783. "people2.bmp",
  784. "people3.bmp",
  785. ""
  786. };
  787. static char *icons[4];
  788. int i;
  789. unsigned short timeout;
  790. static const char *NullGU="";
  791. static char *GUName[POC_ALL_GROUPS_NUM+1]; //5
  792. static char GUFeatures[POC_ALL_GROUPS_NUM+1];//5
  793. if(type==0){
  794. icons[0]=accIconFileName[0];
  795. icons[1]=accIconFileName[1];
  796. icons[2]=accIconFileName[5];
  797. }else{
  798. icons[0]=accIconFileName[2];
  799. icons[1]=accIconFileName[3];
  800. icons[2]=accIconFileName[4];
  801. }
  802. icons[3]=accIconFileName[5];
  803. for(i=0;i<=POC_ALL_GROUPS_NUM;i++){
  804. GUName[i]=NullGU;
  805. GUFeatures[i]=0;
  806. }
  807. for(i=0;i<thisShowNum;i++){
  808. GUFeatures[i]=1;
  809. if(type==0){
  810. if(sutPocStatus.AllGroups[i].ID==sutPocStatus.LocalGroup.ID) GUFeatures[i]=0;
  811. GUName[i]=sutPocStatus.AllGroups[i].name;
  812. }else{
  813. if(sutPocStatus.AllUsers[i].status==3) GUFeatures[i]=1;//不在此组
  814. else if(sutPocStatus.AllUsers[i].status==4) GUFeatures[i]=2;//调度员
  815. GUName[i]=sutPocStatus.AllUsers[i].name;
  816. }
  817. }
  818. if(thisShowNum==0){//没有成员总数
  819. GUName[0]="空";
  820. GUFeatures[i]=0;
  821. }
  822. //初始化ListBox控件
  823. ListBoxInit(&sutListBox,GUName,0,icons,GUFeatures,0);
  824. GUListBoxInited=1;
  825. }
  826. /*****************************群组选择/成员选择部分结束*********************************/
  827. /*****************************系统设置部分开始*********************************/
  828. void uiShowMenuSysSetup(char flash){
  829. static const char *apcPtr[]={
  830. "1.LCD设置",
  831. //"2.网络设置",
  832. "2.SIM选择",
  833. "3.按键音设置",
  834. "4.麦克风粗调",
  835. "5.麦克风微调",
  836. //"6.平台切换",
  837. //"4.版本升级",
  838. "6.功耗模式设置",
  839. "7.音质设置",
  840. //"5.服务器设置",
  841. //"7.提示音设置",
  842. ""
  843. };
  844. if(flash){
  845. msgAtSend("AT+RSIM\r\n");//进此菜单前查询一下卡用于后面显示
  846. voiceModeQuery();
  847. guiClearAll(guiGetBackColor());
  848. guiShowCaption(0,"系统设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  849. uiMenuShowBottomLine();
  850. uiMenuShowBottomIndacitor("确认", "返回");
  851. uiMenuInit(&sutMenuSysSetup,apcPtr,FONT_MODE_12X12);
  852. GUListBoxInited=1;
  853. }
  854. }
  855. void sysTemSetResponse(void){
  856. unsigned short key;
  857. key=uiMenuResponse(&sutMenuSysSetup);
  858. if(MKEY_VALUE_MENU==key){
  859. switch(sutMenuSysSetup.handle){
  860. case 0://LCD设置
  861. uISetNextStatus(UIS_MENU_SYS_LCD);
  862. break;
  863. case 1://SIM选择
  864. uISetNextStatus(UIS_MENU_SYS_SIM);
  865. break;
  866. case 2://提示音设置
  867. uISetNextStatus(UIS_MENU_SYS_NOTE);
  868. break;
  869. case 3://MICLv粗调
  870. uISetNextStatus(UIS_MENU_SYS_MICCU);
  871. break;
  872. case 4://MICLv粗调
  873. uISetNextStatus(UIS_MENU_SYS_MICXI);
  874. break;
  875. case 5://功耗模式设置
  876. uISetNextStatus(UIS_MENU_SYS_PWR);
  877. break;
  878. case 6:
  879. uISetNextStatus(UIS_MENU_SYS_VOICEQC);
  880. break;
  881. }
  882. if(sutMenuSysSetup.handle<=6) {
  883. uiPushStack(sutMenuSysSetup.handle);
  884. }
  885. }
  886. else if(MKEY_VALUE_ESC==key){
  887. uISetNextStatus(UIS_MENU_MAIN);
  888. }
  889. }
  890. /*****************************系统设置部分结束*********************************/
  891. /*****************************定位设置部分开始*********************************/
  892. unsigned char tempGpsIndex;
  893. static locationTimeFlash(char type);
  894. static locationXYFlash(char flash);
  895. void uiShowMenuLocationSel(char flash){
  896. static unsigned int timer;
  897. if(flash){
  898. //machine=0;
  899. guiClearAll(guiGetBackColor());
  900. guiShowCaption(0,"定位设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  901. uiMenuShowBottomLine();
  902. // if(newPara.gpsEnable==0){
  903. // machine=1;
  904. // uiMenuShowBottomIndacitor(NULL, "返回");
  905. // guiShowMessageBox("版本不支持");
  906. // uTimerStart(&timer, 1000);
  907. // return;
  908. // }
  909. uiMenuShowBottomIndacitor("保存", "返回");
  910. locationTimeFlash(0);
  911. }
  912. //if(newPara.gpsEnable!=0)
  913. locationXYFlash(flash);
  914. }
  915. void loationSetResponse(void){
  916. unsigned short key;
  917. key=getKeyValue();
  918. if(MKEY_VALUE_UP==key) locationTimeFlash(1);
  919. else if(MKEY_VALUE_DOWN==key) locationTimeFlash(2);
  920. else if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_MAIN);
  921. else if(MKEY_VALUE_MENU==key){
  922. if(tempGpsIndex != newPara.gpsTimeIndex){
  923. MSG_INFO(1, "GPS timeIndex update:%d",getGPSTimeValue(tempGpsIndex));
  924. newPara.gpsTimeIndex=tempGpsIndex;
  925. sysIniSave();
  926. gpsCheckInfo();//检测一下
  927. GpsTimeUpdate();
  928. }
  929. uISetNextStatus(UIS_MENU_MAIN);
  930. }
  931. }
  932. static locationTimeFlash(char type){
  933. unsigned short gpsTimeValue;
  934. char buf[50];
  935. unsigned short y=70;
  936. if(type==0){
  937. tempGpsIndex=newPara.gpsTimeIndex;
  938. }else if(type==1){
  939. if(++tempGpsIndex>=GPS_TABLE_NUM) tempGpsIndex=0;
  940. }else if(type==2){
  941. if(tempGpsIndex>0) tempGpsIndex--;
  942. else tempGpsIndex=GPS_TABLE_NUM-1;
  943. }else return;
  944. gpsTimeValue=getGPSTimeValue(tempGpsIndex);
  945. if(gpsTimeValue==0) snprintf(buf, sizeof(buf), "定位采样设置:关闭");
  946. else snprintf(buf, sizeof(buf), "定位采样设置:%d秒",gpsTimeValue);
  947. guiClearRect(0,y,GLCD_WIDTH-1, y+12,guiGetBackColor());
  948. guiShowStr(1,y, buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  949. }
  950. static locationXYFlash(char flash){
  951. char buf[50];
  952. unsigned short y=UI_CONTENT_SHOW_Y+2;
  953. if(gpsInfo.update==0 && flash==0) return;
  954. gpsInfo.update=0;
  955. guiClearRect(0, y,GLCD_WIDTH-1, y+12+5+12,guiGetBackColor());
  956. snprintf(buf, sizeof(buf), "纬度 %c:%d.%05d",sutGpsInfo.NSFlag,sutGpsInfo.latitue/1000000,sutGpsInfo.latitue%1000000);
  957. guiShowStr(1,y, buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  958. y+=12+5;
  959. snprintf(buf, sizeof(buf), "经度 %c:%d.%06d",sutGpsInfo.EWFlag,sutGpsInfo.longitue/1000000,sutGpsInfo.longitue%1000000);
  960. guiShowStr(1,y, buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  961. }
  962. /*****************************定位设置部分结束*********************************/
  963. /*******************************终端信息开始**********************************/
  964. unsigned char sysInfoType;
  965. static void sysInfoFlash(void){
  966. unsigned short x,y,ext;
  967. char buf[50];
  968. unsigned char LineSpace=12+4;
  969. int len;
  970. char yunyingshang=0;
  971. x=2,y=UI_CONTENT_SHOW_Y+5;
  972. guiClearRect(0,y,GLCD_WIDTH-1,GLCD_HEIGHT,guiGetBackColor());
  973. QR_OUT testma;
  974. if(sysInfoType==0){
  975. if(LSAPI_SIM_GetIMEI(buf)==0){
  976. //guiShowCaption(0,"IMEI二维码",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  977. EncodeData(buf,&testma);
  978. guiDrawQRimage(20,40,4,testma.data,testma.size);
  979. }else{
  980. guiShowMessageBox("获取失败");
  981. }
  982. }
  983. else if(sysInfoType==1){
  984. memset(buf,0,sizeof(buf));
  985. snprintf(buf, sizeof(buf),"ICCID:");
  986. guiShowStr(0,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  987. y+=LineSpace;
  988. memset(buf,0,sizeof(buf));
  989. switch(sutApp.copstype){
  990. case 46000:
  991. case 46002:
  992. case 46007:
  993. yunyingshang=1;
  994. break;
  995. case 46001:
  996. case 46006:
  997. yunyingshang=2;
  998. break;
  999. case 46003:
  1000. case 46005:
  1001. case 46008:
  1002. case 46009:
  1003. case 46010:
  1004. case 46011:
  1005. yunyingshang=3;
  1006. break;
  1007. default:
  1008. yunyingshang=0;
  1009. break;
  1010. }
  1011. if(LSAPI_SIM_GetICCID(buf)==0&&yunyingshang!=0){
  1012. strcpy(sutApp.ICCID, buf);
  1013. if(yunyingshang!=1){
  1014. sutApp.ICCID[19]=0;
  1015. }
  1016. snprintf(buf, sizeof(buf),"%s",sutApp.ICCID);
  1017. guiShowStr(0,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1018. len=strlen(buf);
  1019. if(len>16){
  1020. y+=LineSpace;
  1021. guiShowStr(x,y,buf+16,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1022. }
  1023. }else{
  1024. snprintf(buf, sizeof(buf),"未知");
  1025. guiShowStr(0,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1026. }
  1027. y+=LineSpace;
  1028. memset(buf,0,sizeof(buf));
  1029. snprintf(buf, sizeof(buf),"IMEI:");
  1030. guiShowStr(0,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1031. //IMEI
  1032. y+=LineSpace;
  1033. memset(buf,0,sizeof(buf));
  1034. if(LSAPI_SIM_GetIMEI(buf)==0){
  1035. guiShowStr(0,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1036. }else{
  1037. guiShowStr(0,y,"未知",FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1038. }
  1039. }else if(sysInfoType==2){
  1040. //对讲平台
  1041. snprintf(buf, sizeof(buf),"对讲平台:%s", OHPOC_POC_PLATFORM);
  1042. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1043. y+=LineSpace;
  1044. ext=0;
  1045. memset(buf,sizeof(buf),0);
  1046. snprintf(buf,sizeof(buf),"POC:%s", sutApp.pocVersion);
  1047. len=strlen(buf);
  1048. if(len>16){
  1049. y+=LineSpace;
  1050. guiShowStr(x+32,y,buf+15,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1051. buf[20]=0;
  1052. y-=LineSpace;
  1053. ext=LineSpace;
  1054. }
  1055. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1056. y+=LineSpace+ext;
  1057. //模块
  1058. memset(buf,sizeof(buf),0);
  1059. snprintf(buf,sizeof(buf),"模块:%s", sutApp.modemVer);
  1060. len=strlen(buf);
  1061. if(len>16){
  1062. y+=LineSpace;
  1063. guiShowStr(x+32,y,buf+15,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1064. buf[20]=0;
  1065. y-=LineSpace;
  1066. }
  1067. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1068. y+=LineSpace;
  1069. //应用版本
  1070. snprintf(buf, sizeof(buf),"应用版本:%s",OHPOC_VERSION);
  1071. guiShowStr(x,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1072. //终端编码
  1073. y+=LineSpace;
  1074. snprintf(buf, sizeof(buf),"PSN:%s",sutApp.UserInfo.OtherId);
  1075. guiShowStr(0,y,buf,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK,guiGetBackColor());
  1076. }
  1077. }
  1078. void uiShowInformation(char update){
  1079. if(update){
  1080. sysInfoType=0;
  1081. guiClearAll(guiGetBackColor());
  1082. guiShowCaption(0,"终端信息",UI_STATUS_BAR_HEIGH,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1083. // uiMenuShowBottomLine();
  1084. // uiMenuShowBottomIndacitor(NULL, "返回");
  1085. sysInfoFlash();
  1086. }
  1087. }
  1088. void uiShowInformationResponse(void){
  1089. unsigned short key=getKeyValue();
  1090. if(MKEY_VALUE_ESC==key) uISetNextStatus(sutUIstatus.LastStatus);
  1091. else if(MKEY_VALUE_DOWN==key || MKEY_VALUE_UP==key){
  1092. if(sysInfoType==0) sysInfoType=1;
  1093. else if(sysInfoType==1) sysInfoType=2;
  1094. else sysInfoType=0;
  1095. sysInfoFlash();
  1096. }else if(MKEY_VALUE_CB_IP==key){
  1097. sysInfoType=2;
  1098. sysInfoFlash();
  1099. }
  1100. }
  1101. /*****************************终端信息结束**********************************/
  1102. static const char *commonIcon2[]={
  1103. "APN.bmp",
  1104. "APN1.bmp",
  1105. ""
  1106. };
  1107. /*****************************LCD设置开始**********************************/
  1108. unsigned char lcdTmpIndex;
  1109. static void lcdTimeFlash(char type){
  1110. char buf[50];
  1111. unsigned short x=4,y=56,value;
  1112. if(type==0) guiShowStr(x+25, y, "背光时间:", FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1113. else if(type==1){
  1114. if(++lcdTmpIndex>=5) lcdTmpIndex=0;
  1115. }else if(type==2){
  1116. if(lcdTmpIndex>0) lcdTmpIndex--;
  1117. else lcdTmpIndex=4;
  1118. }
  1119. value=newPara.lcdParaList[lcdTmpIndex];
  1120. if(value==0) snprintf(buf, sizeof(buf), " 常亮 ");
  1121. else snprintf(buf, sizeof(buf), "%3d 秒", value);
  1122. guiShowStr(x+80, y, buf, FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1123. }
  1124. void uiShowLcdSel(char StatusUpdate){
  1125. if(StatusUpdate){
  1126. guiClearAll(guiGetBackColor());
  1127. guiShowCaption(0,"LCD设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1128. uiMenuShowBottomLine();
  1129. lcdTmpIndex=newPara.lcdParaDefaultIndex;
  1130. lcdTimeFlash(0);
  1131. uiMenuShowBottomIndacitor("保存", "返回");
  1132. }
  1133. }
  1134. void uiShowLcdSelResponse(void){
  1135. unsigned short key=getKeyValue();
  1136. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1137. else if(MKEY_VALUE_DOWN==key)lcdTimeFlash(1);
  1138. else if(MKEY_VALUE_UP==key) lcdTimeFlash(2);
  1139. else if(MKEY_VALUE_MENU==key){
  1140. getStackStruct()->ok_back=1;
  1141. if(lcdTmpIndex != newPara.lcdParaDefaultIndex){
  1142. newPara.lcdParaDefaultIndex=lcdTmpIndex;
  1143. MSG_INFO(1, "LCD TimeUpdate");
  1144. backLightReset();
  1145. sysIniSave();
  1146. }
  1147. uISetNextStatus(UIS_MENU_SYS_SEL);
  1148. }
  1149. }
  1150. /*****************************LCD设置结束**********************************/
  1151. /*****************************网络设置开始**********************************/
  1152. const unsigned char netModeSetTable[3]={1,2,4};//设置制式:AUTH,2G,4G
  1153. /*输入制式源始值,返回索引值对应值*/
  1154. unsigned char getNetModeIndex(unsigned char netModeValue){
  1155. unsigned char i;
  1156. for(i=0;i<sizeof(netModeSetTable);i++){
  1157. if(netModeValue==netModeSetTable[i]) return i;
  1158. }
  1159. return 0xff;//无对应值
  1160. }
  1161. /*输入制式索引值,返回制式源始值*/
  1162. unsigned char getNetModeValue(unsigned char netModeIndex){
  1163. if(netModeIndex>=sizeof(netModeSetTable)) return 0xff;
  1164. else return netModeSetTable[netModeIndex];
  1165. }
  1166. /*输入制式索引值,发送对应该命令给模块*/
  1167. void netModeSetCmd(unsigned char netMode){
  1168. char buf[30];
  1169. snprintf(buf, sizeof(buf), "AT+CTEC=%d,%d\r\n",ctecCurrentSet, netMode);
  1170. msgAtSend(buf);
  1171. }
  1172. #define NET_MODE_NUM 3
  1173. void uiShowNetSel(char StatusUpdate){
  1174. static const char *netMode[NET_MODE_NUM+1]={
  1175. "AUTO",
  1176. "2G",
  1177. "4G",
  1178. ""
  1179. };
  1180. char Features[NET_MODE_NUM];
  1181. unsigned char i;
  1182. if(StatusUpdate){
  1183. guiClearAll(guiGetBackColor());
  1184. guiShowCaption(0,"网络设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1185. uiMenuShowBottomLine();
  1186. for(i=0;i<NET_MODE_NUM;i++){
  1187. if(i==newPara.netMode) Features[i]=1;
  1188. else Features[i]=0;
  1189. }
  1190. ListBoxInit(&sutListBox,netMode,0,commonIcon2,Features,0);
  1191. uiMenuShowBottomIndacitor("保存", "返回");
  1192. }
  1193. }
  1194. void uiShowNetSelResponse(void){
  1195. unsigned short key=ListBoxResponse(&sutListBox);
  1196. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1197. else if(MKEY_VALUE_MENU==key){
  1198. getStackStruct()->ok_back=1;
  1199. if(sutListBox.handle*2 != newPara.netMode){
  1200. newPara.netMode=sutListBox.handle*2;
  1201. MSG_INFO(1, "netMode update:%d", newPara.netMode);
  1202. sysIniSave();
  1203. netModeSetCmd(newPara.netMode);
  1204. }
  1205. uISetNextStatus(UIS_MENU_SYS_SEL);
  1206. }
  1207. }
  1208. /*****************************网络设置结束**********************************/
  1209. /*****************************卡选择设置开始**********************************/
  1210. #define SIM_MODE_NUM 2
  1211. void uiShowSimSel(char StatusUpdate){
  1212. static const char *simMode[SIM_MODE_NUM+1]={
  1213. "卡1",
  1214. "卡2",
  1215. ""
  1216. };
  1217. char Features[SIM_MODE_NUM];
  1218. unsigned char i;
  1219. if(StatusUpdate){
  1220. guiClearAll(guiGetBackColor());
  1221. guiShowCaption(0,"SIM设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1222. uiMenuShowBottomLine();
  1223. for(i=0;i<SIM_MODE_NUM;i++){
  1224. if(i==sutApp.simSel) Features[i]=1;
  1225. else Features[i]=0;
  1226. }
  1227. ListBoxInit(&sutListBox,simMode,0,commonIcon2,Features,sutApp.simSel);
  1228. uiMenuShowBottomIndacitor("保存", "返回");
  1229. }
  1230. }
  1231. void uiShowSimSelResponse(void){
  1232. char buf[30];
  1233. char temp;
  1234. unsigned short key=ListBoxResponse(&sutListBox);
  1235. if(MKEY_VALUE_ESC==key){
  1236. if(getStackStruct()->FastUiChange)uISetNextStatus(UIS_STANDBY);
  1237. else uISetNextStatus(UIS_MENU_SYS_SEL);
  1238. }else if(MKEY_VALUE_MENU==key){
  1239. getStackStruct()->ok_back=1;
  1240. if((sutListBox.handle)!= sutApp.simSel){
  1241. if(sutListBox.handle)temp=0;
  1242. else temp=1;
  1243. snprintf(buf, sizeof(buf), "AT+SIMCROSS=%d\r\n",temp);
  1244. msgToModem(buf);
  1245. MSG_INFO(1, buf);
  1246. guiShowMessageBox("请重启设备");
  1247. msgToModem("AT+TRB\r\n");
  1248. LSAPI_OSI_ThreadSleep(1000);
  1249. for(;;){
  1250. MSG_INFO(1, "card changed, wait user reboot");
  1251. CTL_POWER_HOLD(0);
  1252. LSAPI_OSI_ThreadSleep(1000);
  1253. }
  1254. }
  1255. uISetNextStatus(UIS_MENU_SYS_SEL);
  1256. }
  1257. }
  1258. /*****************************卡选择设置结束**********************************/
  1259. /*****************************功耗设置开始**********************************/
  1260. typedef enum{
  1261. PMODE_HIGH,
  1262. PMODE_INTELLECTUAL,
  1263. PMODE_LOW_PWR
  1264. }PWR_ENUMDEF;
  1265. void pwrModeSetCmd(unsigned char pwrMode){
  1266. unsigned char seg1;
  1267. char buf[30];
  1268. if(pwrMode==PMODE_HIGH){
  1269. seg1=0;
  1270. }else if(pwrMode==PMODE_INTELLECTUAL){
  1271. seg1=1;
  1272. }else if(pwrMode==PMODE_LOW_PWR){
  1273. seg1=2;
  1274. }else return;
  1275. snprintf(buf, sizeof(buf), "AT+POC=7A0000%02X\r\n",seg1);
  1276. msgAtSend(buf);
  1277. }
  1278. void pwrModeAckHandler(unsigned char seg1, unsigned char seg2){
  1279. if(seg1==PMODE_HIGH && newPara.pwrMode != PMODE_HIGH){
  1280. newPara.pwrMode=seg1;
  1281. goto SAVE_PWR_MODE;
  1282. }else if(seg1==PMODE_INTELLECTUAL && newPara.pwrMode != PMODE_INTELLECTUAL){
  1283. newPara.pwrMode=seg1;
  1284. goto SAVE_PWR_MODE;
  1285. }else if(seg1==PMODE_LOW_PWR && newPara.pwrMode != PMODE_LOW_PWR){
  1286. newPara.pwrMode=seg1;
  1287. goto SAVE_PWR_MODE;
  1288. }
  1289. return;
  1290. SAVE_PWR_MODE:
  1291. sysIniSave();
  1292. pwrModeSetCmd(newPara.pwrMode);
  1293. }
  1294. #define PWR_MODE_NUM 3
  1295. void uiShowPwrSel(char StatusUpdate){
  1296. static const char *pwrMode[PWR_MODE_NUM+1]={
  1297. "高性能模式",
  1298. "智能模式",
  1299. "低功耗模式",
  1300. "",
  1301. };
  1302. char Features[PWR_MODE_NUM];
  1303. unsigned char i;
  1304. if(StatusUpdate){
  1305. guiClearAll(guiGetBackColor());
  1306. guiShowCaption(0,"功耗设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1307. uiMenuShowBottomLine();
  1308. for(i=0;i<PWR_MODE_NUM;i++){
  1309. if(i==newPara.pwrMode) Features[i]=1;
  1310. else Features[i]=0;
  1311. }
  1312. ListBoxInit(&sutListBox,pwrMode,0,commonIcon2,Features,newPara.pwrMode);
  1313. uiMenuShowBottomIndacitor("保存", "返回");
  1314. }
  1315. }
  1316. void uiShowPwrSelResponse(void){
  1317. unsigned short key=ListBoxResponse(&sutListBox);
  1318. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1319. else if(MKEY_VALUE_MENU==key){
  1320. getStackStruct()->ok_back=1;
  1321. if(sutListBox.handle != newPara.pwrMode){
  1322. newPara.pwrMode=sutListBox.handle;
  1323. MSG_INFO(1, "pwrMode update:%d", newPara.pwrMode);
  1324. sysIniSave();
  1325. pwrModeSetCmd(newPara.pwrMode);
  1326. }
  1327. uISetNextStatus(UIS_MENU_SYS_SEL);
  1328. }
  1329. }
  1330. /*****************************功耗设置结束**********************************/
  1331. /*****************************服务器设置输入密码开始**********************************/
  1332. void uiShowServerPassSel(char StatusUpdate){
  1333. if(StatusUpdate){
  1334. guiClearAll(guiGetBackColor());
  1335. guiShowCaption(0,"密码验证",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1336. uiMenuShowBottomLine();
  1337. NumEditInit(&sutNumEdit,(GLCD_WIDTH-6*8)/2,(GLCD_HEIGHT-16)/2,"000000");
  1338. NumEditShow(&sutNumEdit);
  1339. uiMenuShowBottomIndacitor("[上]加值", "[下]移动");
  1340. }
  1341. }
  1342. void uiShowServerSelPassResponse(void){
  1343. unsigned short key=getKeyValue();
  1344. NumEditResponse(&sutNumEdit);
  1345. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1346. else if(MKEY_VALUE_MENU==key){
  1347. if(memcmp(sutNumEdit.buffer, getMenuKey(), 6)==0) uISetNextStatus(UIS_MENU_SYS_SERVER);
  1348. else{
  1349. guiShowMessageBox("密码错误");
  1350. LSAPI_OSI_ThreadSleep(1000);
  1351. getStackStruct()->ok_back=1;
  1352. uISetNextStatus(UIS_MENU_SYS_SEL);
  1353. }
  1354. }
  1355. }
  1356. /*****************************服务器设置输入密码结束**********************************/
  1357. /*****************************服务器设置开始**********************************/
  1358. void uiShowServerSel(char StatusUpdate){
  1359. static const char *serIcons[]={
  1360. "Ser.bmp",
  1361. "Sersel.bmp",
  1362. ""
  1363. };
  1364. static const char *serName[]={
  1365. "杭州服务器",
  1366. "山东服务器",
  1367. "IP分发服务器",
  1368. "集群服务器",
  1369. "自定义服务器",
  1370. "",
  1371. };
  1372. char Features[5];
  1373. unsigned char tempSer,i;
  1374. if(StatusUpdate){
  1375. guiClearAll(guiGetBackColor());
  1376. guiShowCaption(0,"服务器列表",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1377. uiMenuShowBottomLine();
  1378. uiMenuShowBottomIndacitor("确认", "返回");
  1379. tempSer=newPara.serList.defaultuse;
  1380. for(i=0;i<=SERVER_UR;i++){
  1381. if(i==tempSer) Features[i]=1;
  1382. else Features[i]=0;
  1383. }
  1384. ListBoxInit(&sutListBox,serName,0,serIcons,Features,0);
  1385. }
  1386. }
  1387. void uiShowServerSelResponse(void){
  1388. unsigned char tempSer;
  1389. char buf[50],buf1[100];
  1390. unsigned short key=ListBoxResponse(&sutListBox);
  1391. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1392. else if(MKEY_VALUE_MENU==key){
  1393. tempSer=sutListBox.handle;
  1394. if(tempSer != newPara.serList.defaultuse){
  1395. newPara.serList.defaultuse=tempSer;
  1396. sysIniSave();
  1397. getGIPAddr();
  1398. snprintf(buf, sizeof(buf), "ip=%s;domain=%s;",getPIPAddr(),getDOMAINAddr());
  1399. AscStrTurnHexStr(buf,buf1);
  1400. msgAtSend("AT+POC=010000");
  1401. msgAtSend(buf1);
  1402. msgAtSend("\r\n");
  1403. LSAPI_OSI_ThreadSleep(100);
  1404. msgAtSend("AT+POC=040000\r\n");
  1405. }
  1406. uISetNextStatus(UIS_STANDBY );
  1407. }
  1408. }
  1409. /*****************************服务器设置结束**********************************/
  1410. /*****************************版本设置开始**********************************/
  1411. unsigned char fotaStep;
  1412. unsigned int fotaTick;
  1413. void fotaStepSet(unsigned char newStep){
  1414. fotaStep=newStep;
  1415. }
  1416. void fotaMsgShow(char *msg){
  1417. #if 1
  1418. int len=guiGetStrXLen((char *)msg,FONT_MODE_12X12);
  1419. #else
  1420. int len=guiGetStrXLen((char *)msg,FONT_MODE_16X16);
  1421. #endif
  1422. guiClearRect(0, 60, GLCD_WIDTH-1, 60+16,guiGetBackColor());
  1423. #if 1
  1424. guiShowStr((GLCD_WIDTH-len)/2,60+2, msg,FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1425. #else
  1426. guiShowStr((GLCD_WIDTH-len)/2,60, msg,FONT_MODE_16X16, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1427. #endif
  1428. }
  1429. char loadMsg=0;
  1430. void showLoading(void){
  1431. loadMsg=1;
  1432. }
  1433. void uiShowVersionSel(char StatusUpdate){
  1434. char buf[50];
  1435. if(StatusUpdate){
  1436. sutApp.fotaVersion[0]=0;
  1437. guiClearAll(guiGetBackColor());
  1438. guiShowCaption(0,"版本更新",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1439. fotaStep=10;//0
  1440. loadMsg=0;
  1441. fotaMsgShow("正在检测版本");
  1442. uiMenuShowBottomLine();
  1443. uiMenuShowBottomIndacitor("确定", "返回");
  1444. uTimerStart(&fotaTick, 5000);
  1445. tupParaSet(&tupsendPara, AUTH_FOTA_PORT, authFotaRecv_cb,AUTH_UDP_THREAD_STACK);
  1446. if(1==netWork.netReady)tryConnectTup(domainInfo.address,TUP_UDP,&tupsendPara);
  1447. }
  1448. switch(fotaStep){
  1449. case 0:
  1450. if(uTimerExpired(&fotaTick)){
  1451. fotaMsgShow("检测超时");
  1452. // if(1==netWork.netReady){
  1453. // infoPacketAndSend(BND_PSN,ohpocGetIMEI(),OHPOC_VERSION,OHPOC_MODLE,UDP_HEART_TICK_NON_4G,UDP_HEART_TICK__4G);
  1454. // }
  1455. fotaStep=4;
  1456. }
  1457. break;
  1458. case 1://等待用户确定
  1459. break;
  1460. case 2://用户确定后等待结果
  1461. if(uTimerExpired(&fotaTick)){
  1462. fotaMsgShow("超时退出");
  1463. fotaStep=4;
  1464. }
  1465. if(loadMsg!=0){
  1466. fotaMsgShow("正在下载");
  1467. loadMsg=0;
  1468. }
  1469. break;
  1470. case 3://升级成功,等待重启
  1471. LSAPI_OSI_ThreadSleep(2000);
  1472. msgAtSend("AT+TRB\r\n");
  1473. MSG_INFO(1, "Reset system!!!");
  1474. while(1){LSAPI_OSI_ThreadSleep(1000);}
  1475. break;
  1476. case 4://延时显示2秒后退出
  1477. uTimerStart(&fotaTick, 2000);
  1478. fotaStep=5;
  1479. break;
  1480. case 5://退出升级流程
  1481. if(uTimerExpired(&fotaTick)) uISetNextStatus(UIS_MENU_SYS_SEL);
  1482. break;
  1483. case 6://无更新版本
  1484. fotaMsgShow("无更新版本");
  1485. fotaStep=4;
  1486. break;
  1487. case 7://升级失败
  1488. fotaMsgShow("升级失败");
  1489. fotaStep=4;
  1490. AppFotaInfo.fota_statue=DISENABLE;
  1491. break;
  1492. case 8://下载成功
  1493. fotaMsgShow("下载成功,重启更新");
  1494. fotaStep=3;
  1495. break;
  1496. case 9://
  1497. snprintf(buf, sizeof(buf), "是否更新到:%s",targetVersion);
  1498. fotaMsgShow(buf);
  1499. fotaStep=1;
  1500. break;
  1501. case 10:
  1502. if(uTimerExpired(&fotaTick)){
  1503. fotaStep=0;
  1504. if(1==netWork.netReady){
  1505. infoPacketAndSend(BND_PSN,ohpocGetIMEI(),OHPOC_VERSION,OHPOC_MODLE,UDP_HEART_TICK_NON_4G,UDP_HEART_TICK__4G);
  1506. }
  1507. uTimerStart(&fotaTick, 2000);
  1508. }
  1509. break;
  1510. }
  1511. }
  1512. void uiShowVersionSelResponse(void){
  1513. unsigned char key=getKeyValue();
  1514. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1515. else if(MKEY_VALUE_MENU==key){
  1516. if(fotaStep==1){
  1517. fotaMsgShow("请勿断电!");
  1518. fotaStep=2;
  1519. uTimerStart(&fotaTick, 10000);//1
  1520. AppFotaInfo.fota_statue=ENABLE;
  1521. }
  1522. }
  1523. }
  1524. /*****************************版本设置结束**********************************/
  1525. /*****************************提示音设置开始********************************/
  1526. unsigned char noteSetTmp;
  1527. static void switchFlash(void){
  1528. char info[30];
  1529. unsigned short x,y,len;
  1530. if(noteSetTmp==0) snprintf(info, sizeof(info), "关闭");
  1531. else snprintf(info, sizeof(info), "打开");
  1532. len=guiGetStrXLen((char *)info, FONT_MODE_12X12);
  1533. x=(GLCD_WIDTH-len)/2;
  1534. y=UI_CONTENT_SHOW_Y+(GLCD_HEIGHT-UI_CONTENT_SHOW_Y)/2-12;
  1535. guiShowStr(x,y,info, FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1536. }
  1537. void uiShowNoteSel(char StatusUpdate){
  1538. if(StatusUpdate){
  1539. guiClearAll(guiGetBackColor());
  1540. guiShowCaption(0,"提示音设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1541. uiMenuShowBottomLine();
  1542. noteSetTmp=newPara.KeySound;
  1543. switchFlash();
  1544. uiMenuShowBottomIndacitor("保存", "返回");
  1545. }
  1546. }
  1547. void uiShowNoteSelResponse(void){
  1548. unsigned short key=getKeyValue();
  1549. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1550. else if(MKEY_VALUE_MENU==key){
  1551. getStackStruct()->ok_back=1;
  1552. if(newPara.KeySound != noteSetTmp){
  1553. newPara.KeySound=noteSetTmp;
  1554. #ifndef ENABLE_PWM_BEEP
  1555. if(noteSetTmp==0) msgAtSend("AT+TONES=0\r\n");
  1556. else msgAtSend("AT+TONES=1\r\n");
  1557. #endif
  1558. sysIniSave();
  1559. }
  1560. uISetNextStatus(UIS_MENU_SYS_SEL);
  1561. }else if(MKEY_VALUE_DOWN || MKEY_VALUE_UP){
  1562. if(noteSetTmp==0) noteSetTmp=1;
  1563. else noteSetTmp=0;
  1564. switchFlash();
  1565. }
  1566. }
  1567. /*****************************提示音设置结束********************************/
  1568. /*****************************MIC增益**********************************/
  1569. unsigned char MictempIndex;
  1570. static void MICcugainFlash(char type){
  1571. char buf[50];
  1572. unsigned short x=4,y=56,value;
  1573. if(sutUIstatus.Status==UIS_MENU_SYS_MICCU)value=7;
  1574. else if(sutUIstatus.Status==UIS_MENU_SYS_MICXI)value=16;
  1575. if(type==0) guiShowStr(x+25, y, "设置:", FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1576. else if(type==1){
  1577. if(++MictempIndex>value) MictempIndex=0;
  1578. }else if(type==2){
  1579. if(MictempIndex>0) MictempIndex--;
  1580. else MictempIndex=value;
  1581. }
  1582. snprintf(buf, sizeof(buf), "%02d", MictempIndex);
  1583. guiShowStr(x+80, y, buf, FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1584. }
  1585. void uiShowMiccugainUISel(char StatusUpdate){
  1586. if(StatusUpdate){
  1587. guiClearAll(guiGetBackColor());
  1588. if(sutUIstatus.Status==UIS_MENU_SYS_MICCU){
  1589. guiShowCaption(0,"MIC增益粗调",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1590. MictempIndex =newPara.VolMicLvCu;
  1591. }
  1592. else{
  1593. guiShowCaption(0,"MIC增益微调",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1594. MictempIndex=newPara.VolMicLvXi;
  1595. }
  1596. uiMenuShowBottomLine();
  1597. //MictempIndex=newPara.MicCulv;
  1598. MICcugainFlash(0);
  1599. uiMenuShowBottomIndacitor("保存", "返回");
  1600. }
  1601. }
  1602. void uiShowMicCuSelResponse(void){
  1603. char buf[30];
  1604. unsigned short key=getKeyValue();
  1605. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1606. else if(MKEY_VALUE_DOWN==key)MICcugainFlash(1);
  1607. else if(MKEY_VALUE_UP==key) MICcugainFlash(2);
  1608. else if(MKEY_VALUE_MENU==key){
  1609. getStackStruct()->ok_back=1;
  1610. if(sutUIstatus.Status==UIS_MENU_SYS_MICCU){
  1611. if(MictempIndex != newPara.VolMicLvCu){
  1612. newPara.VolMicLvCu=MictempIndex;
  1613. snprintf(buf, sizeof(buf),"AT+CACCP=0,0,0,\"%02x00%02x00\"\r\n",newPara.VolMicLvCu,newPara.VolMicLvXi);
  1614. msgAtSend(buf);
  1615. MSG_INFO(0,buf);
  1616. sysIniSave();
  1617. }
  1618. }else if(sutUIstatus.Status==UIS_MENU_SYS_MICXI){
  1619. if(MictempIndex != newPara.VolMicLvXi){
  1620. newPara.VolMicLvXi=MictempIndex;
  1621. snprintf(buf, sizeof(buf),"AT+CACCP=0,0,0,\"%02x00%02x00\"\r\n",newPara.VolMicLvCu,newPara.VolMicLvXi);
  1622. msgAtSend(buf);
  1623. MSG_INFO(0,buf);
  1624. sysIniSave();
  1625. }
  1626. }
  1627. uISetNextStatus(UIS_MENU_SYS_SEL);
  1628. }
  1629. }
  1630. /*****************************BND 新旧平台选择**********************************/
  1631. void uiShowPingTaiSel(char StatusUpdate){
  1632. static const char *PTMode[2+1]={
  1633. "博纳德",
  1634. "芯平台",
  1635. ""
  1636. };
  1637. char Features[2];
  1638. unsigned char i;
  1639. if(StatusUpdate){
  1640. guiClearAll(guiGetBackColor());
  1641. guiShowCaption(0,"平台选择",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1642. uiMenuShowBottomLine();
  1643. for(i=0;i<2;i++){
  1644. if(i==newPara.newold_plam) Features[i]=1;
  1645. else Features[i]=0;
  1646. }
  1647. ListBoxInit(&sutListBox,PTMode,0,commonIcon2,Features,newPara.newold_plam);
  1648. uiMenuShowBottomIndacitor("保存", "返回");
  1649. }
  1650. }
  1651. void uiShowPingTaiSelResponse(void){
  1652. }
  1653. /*****************************BND 新旧平台选择结束**********************************/
  1654. /*****************************音质设置开始**********************************/
  1655. unsigned char voiceSetTmp;
  1656. static void switchVolceFlash(void){
  1657. char info[30];
  1658. unsigned short x,y,len;
  1659. if(voiceSetTmp==0) snprintf(info, sizeof(info), "标准");
  1660. else snprintf(info, sizeof(info), "高清");
  1661. len=guiGetStrXLen((char *)info, FONT_MODE_12X12);
  1662. x=(GLCD_WIDTH-len)/2;
  1663. y=UI_CONTENT_SHOW_Y+(GLCD_HEIGHT-UI_CONTENT_SHOW_Y)/2-12;
  1664. guiShowStr(x,y,info, FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1665. }
  1666. void uiShowVoiceSel(char StatusUpdate){
  1667. if(StatusUpdate){
  1668. guiClearAll(guiGetBackColor());
  1669. guiShowCaption(0,"音质设置",UI_STATUS_ITEM_Y+1,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12);
  1670. uiMenuShowBottomLine();
  1671. voiceSetTmp=newPara.voiceSel;
  1672. switchVolceFlash();
  1673. uiMenuShowBottomIndacitor("保存", "返回");
  1674. }
  1675. }
  1676. void uiShowVoiceSelResponse(void){
  1677. unsigned short key=getKeyValue();
  1678. if(MKEY_VALUE_ESC==key) uISetNextStatus(UIS_MENU_SYS_SEL);
  1679. else if(MKEY_VALUE_MENU==key){
  1680. getStackStruct()->ok_back=1;
  1681. if(newPara.voiceSel != voiceSetTmp){
  1682. newPara.voiceSel=voiceSetTmp;
  1683. voiceModeSet(newPara.voiceSel);
  1684. sysIniSave();
  1685. }
  1686. uISetNextStatus(UIS_MENU_SYS_SEL);
  1687. }else if(MKEY_VALUE_DOWN || MKEY_VALUE_UP){
  1688. if(voiceSetTmp==0) voiceSetTmp=1;
  1689. else voiceSetTmp=0;
  1690. switchVolceFlash();
  1691. }
  1692. }
  1693. /*****************************音质设置结束**********************************/
  1694. #ifdef USE_LEFT_MOVING
  1695. /***************************主界面滚动显示**********************************/
  1696. #define MOVING_ITME_NUM 3 //显示三条项目
  1697. #define MAX_ROW_BYTE (20+1+2) //最多显示20个字节,10个中文
  1698. #define MAX_SHOW_BYTE 12 //最多一次性显示10个字节
  1699. void leftMoveStr(char *name, unsigned short len){
  1700. char temp[3];
  1701. unsigned char move=1;
  1702. unsigned short i;
  1703. if(name[0] > 0x80) move=2;
  1704. for(i=0;i<move;i++) temp[i]=name[i];
  1705. for(i=0;i<len-move;i++) name[i]=name[i+move];
  1706. for(i=0;i<move;i++) name[i+len-move]=temp[i];
  1707. }
  1708. void getRealShow(char *des, char *src,int maxsize)
  1709. {//??è?×??à12+1??×??ú??ê?
  1710. int i,j,cpsize=maxsize-1;
  1711. for(i=0;i<cpsize;i++){
  1712. if(src[i]>0x80){
  1713. if(i+2>cpsize){//装不下了,停止
  1714. break;
  1715. }
  1716. des[i]=src[i];
  1717. des[i+1]=src[i+1];
  1718. i++;
  1719. }else des[i]=src[i];
  1720. }
  1721. des[i]=0;
  1722. }
  1723. void showbufdata(char type, unsigned char *data, int len){
  1724. char info[100],buf[3];
  1725. int i;
  1726. sprintf(info, "D[%d]%c:",len,type);
  1727. for(i=0;i<len;i++){
  1728. sprintf(buf, "%02x",data[i]);
  1729. strcat(info, buf);
  1730. }
  1731. MSG_INFO(1, info);
  1732. }
  1733. //除去标识(群组:/成员:/话权:)外的字节数,多的1字节用于加空格
  1734. void mainScreenShowMoving(unsigned short y, unsigned char reset,char *gname,char *uname,char *voicePri,char voicetype){
  1735. unsigned char i;
  1736. int j,len;
  1737. unsigned short showX,showY;
  1738. //显示缓存,最多显示7个中文
  1739. static const char *indicators[]={
  1740. "Group2.bmp",
  1741. "people2.bmp",
  1742. "Phone.bmp",
  1743. "Csend.bmp",
  1744. "Creceive.bmp",
  1745. "Onecall.bmp",
  1746. ""
  1747. };
  1748. static char item[MOVING_ITME_NUM][MAX_ROW_BYTE];
  1749. static unsigned char ItemMd5[MOVING_ITME_NUM][16];
  1750. unsigned char tempMd5[16]={0};
  1751. unsigned char *ptempMd5;
  1752. char *ptr,*showPtr;
  1753. char showMax[MAX_ROW_BYTE]={0};//用于临时存储条目全内容,判定是否发生变化
  1754. char needMove;
  1755. MD5_CTX mdContext;
  1756. static char *Picon[MOVING_ITME_NUM];
  1757. for(i=0;i<MOVING_ITME_NUM;i++){
  1758. showX=1;
  1759. showY=y+i*(12+8);//12x12高度,行间距2
  1760. ptempMd5=&ItemMd5[i][0];
  1761. showPtr=&item[i][0];
  1762. switch(i){
  1763. case 0://群组:默认群组
  1764. snprintf(showMax, sizeof(showMax), "%s ",gname);
  1765. if(sutPocStatus.danHuStatus==0)Picon[i]=indicators[0];
  1766. else Picon[i]=indicators[5];
  1767. break;
  1768. case 1://成员:测试组1
  1769. Picon[i]=indicators[1];
  1770. snprintf(showMax, sizeof(showMax), "%s ",uname);
  1771. break;
  1772. case 2://话权:空闲
  1773. if(voicetype==0)Picon[i]=indicators[2];
  1774. else if(voicetype==1)Picon[i]=indicators[3];
  1775. else if(voicetype==2)Picon[i]=indicators[4];
  1776. snprintf(showMax, sizeof(showMax), "%s ",voicePri);
  1777. break;
  1778. }
  1779. ptr=showMax;
  1780. len=strlen(ptr);
  1781. //计算buff的md5
  1782. MD5Init(&mdContext);//初始化MD5
  1783. MD5Update(&mdContext,ptr,len);
  1784. MD5Final(&mdContext);
  1785. memcpy(tempMd5, mdContext.digest,16);
  1786. //检测是否需要移动处理
  1787. if(len>MAX_SHOW_BYTE) needMove=1;
  1788. else needMove=0;
  1789. if(memcmp(ptempMd5, tempMd5, 16)|| reset){//内容发生了变化
  1790. guiClearRect(0, showY, GLCD_WIDTH-1, showY+16,guiGetBackColor());
  1791. //guiShowStr(showX, showY+2, &indicators[i][0], FONT_MODE_12X12, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1792. guiShowBmp(2,showY+2 , Picon[i]);
  1793. // if(type==0) guiShowBmp(2, UI_VOICE_SHOW_Y, "Phone.bmp");
  1794. // else if(type==1){
  1795. // color=COLOR_RED;
  1796. // guiShowBmp(2, UI_VOICE_SHOW_Y, "Csend.bmp");
  1797. // }else if(type==2){
  1798. // guiShowBmp(2, UI_VOICE_SHOW_Y, "Creceive.bmp");
  1799. // color=COLOR_DEEP_GREEN;
  1800. // }
  1801. // if(sutPocStatus.danHuStatus==0) guiShowBmp(2, UI_GROUP_SHOW_Y, "Group2.bmp");
  1802. // else{
  1803. // guiShowBmp(2, UI_GROUP_SHOW_Y, "Onecall.bmp");
  1804. // color=COLOR_RED;
  1805. }
  1806. showX += 20;
  1807. if(needMove==0){
  1808. //if(*sum!=tsum|| reset){//内容发生了变化
  1809. if(memcmp(ptempMd5, tempMd5, 16)|| reset){//内容发生了变化
  1810. //只显示一次即可
  1811. snprintf(showPtr, MAX_ROW_BYTE, "%s", ptr);
  1812. guiClearRect(showX, showY, GLCD_WIDTH-1, showY+16,guiGetBackColor());
  1813. if(i==2){
  1814. if(voicetype==0)guiShowStr(showX,showY, showMax, FONT_MODE_16X16, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1815. else if(voicetype==1)guiShowStr(showX,showY, showMax, FONT_MODE_16X16, REVERSED_NO, COLOR_RED, guiGetBackColor());
  1816. else if(voicetype==2)guiShowStr(showX,showY, showMax, FONT_MODE_16X16, REVERSED_NO, COLOR_BLUE, guiGetBackColor());
  1817. }else guiShowStr(showX,showY, showMax, FONT_MODE_16X16, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1818. }
  1819. }else{//做移动处理
  1820. //if(*sum!=tsum) memcpy(showPtr, ptr, MAX_ROW_BYTE);
  1821. if(memcmp(ptempMd5, tempMd5, 16)) memcpy(showPtr, ptr, MAX_ROW_BYTE);
  1822. else leftMoveStr(showPtr, strlen(showPtr));
  1823. getRealShow(showMax, showPtr,MAX_SHOW_BYTE);
  1824. guiClearRect(showX, showY, GLCD_WIDTH-1, showY+16,guiGetBackColor());
  1825. if(i==2){
  1826. if(voicetype==0)guiShowStr(showX,showY, showMax, FONT_MODE_16X16, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1827. else if(voicetype==1)guiShowStr(showX,showY, showMax, FONT_MODE_16X16, REVERSED_NO, COLOR_RED, guiGetBackColor());
  1828. else if(voicetype==2)guiShowStr(showX,showY, showMax, FONT_MODE_16X16, REVERSED_NO, COLOR_BLUE, guiGetBackColor());
  1829. }else guiShowStr(showX,showY, showMax, FONT_MODE_16X16, REVERSED_NO, COLOR_BLACK, guiGetBackColor());
  1830. }
  1831. memcpy( ptempMd5,tempMd5, 16);
  1832. }
  1833. }
  1834. #endif