SetSystemPara.c 31 KB

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