UiSaveSetting.c
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:27k
源码类别:

压缩解压

开发平台:

C++ Builder

  1. #define _UI_SAVE_H_
  2. #include <DP8051XP.H>
  3. #include "TypeDef.h"
  4. #include "Const.h"
  5. #include "Reg5661.h"
  6. #include "Common.h"
  7. #include "UiCommon.h"
  8. #include "SysStrdef.h"
  9. #include "UiSysStr.h"
  10. #include "FileSystem.h"
  11. #include "NandFlash.h"
  12. #include "OledString.h"
  13. #include "SaveSetting.h"
  14. #include "SD.h"
  15. #include "KEY.h" //050725
  16. #include "ClassDataBase.h"
  17. #include "Oled.h"
  18. #include "IconDefine.h"
  19. // WHH #3 301_061225(start)
  20. #include "IconDefine1.h"
  21. #include "IconDefine2.h"
  22. #include "IconDefineMenu1.h"
  23. #include "IconDefineMenu2.h"
  24. #include "IconDefineMenu3.h"
  25. #include "IconDefineGame.h"
  26. // WHH #3 301_061225(end)
  27. #if(USE_STEP_UP_CONVERTER) 
  28. #include "StepUp.h"
  29. #endif
  30. // WHH #4 301_061225(start)
  31. //#define MAX_MODE 7
  32. /*CBYTE cbModeConvert[MAX_MODE]={ SAVE_FROM_PLAY,
  33. SAVE_FROM_PHOTO,
  34. SAVE_FROM_VIDEO,  //Walace051106#Video
  35. SAVE_FROM_DVR,
  36. SAVE_FROM_FM,
  37. SAVE_FROM_SYS,
  38. SAVE_FROM_HOST};
  39. */
  40. #define MAX_MODE 9
  41. /*CBYTE cbModeConvert[MAX_MODE]={
  42. SAVE_FROM_DVR,
  43. SAVE_FROM_PLAY,
  44. SAVE_FROM_FM,
  45. SAVE_FROM_SYS,
  46. SAVE_FROM_SYS,
  47. SAVE_FROM_VIDEO,
  48. SAVE_FROM_PHOTO,
  49. SAVE_FROM_AMUSE,
  50. SAVE_FROM_PLAY};
  51. CWORD cwMenuItem[MAX_MODE] = {
  52. IM_MAINMENU_MIC,
  53. IM_MAINMENU_MUSIC,
  54. IM_MAINMENU_RADIO,
  55. IM_MAINMENU_BROWSER,
  56. IM_MAINMENU_SETUP,
  57. IM_MAINMENU_VIDEO,
  58. IM_MAINMENU_PHOTO,
  59. IM_MAINMENU_GAME,
  60. IM_MAINMENU_EBOOK};
  61. CWORD cwMenuItemSelect[MAX_MODE] = {
  62. IM_MAINMENU_MIC_SELECT,
  63. IM_MAINMENU_MUSIC_SELECT,
  64. IM_MAINMENU_RADIO_SELECT,
  65. IM_MAINMENU_BROWSER_SELECT,
  66. IM_MAINMENU_SETUP_SELECT,
  67. IM_MAINMENU_VIDEO_SELECT,
  68. IM_MAINMENU_PHOTO_SELECT,
  69. IM_MAINMENU_GAME_SELECT,
  70. IM_MAINMENU_EBOOK_SELECT};
  71. CWORD cwMenuItemSelectB[MAX_MODE] = {
  72. IM_MAINMENU_MIC_SELECT_B,
  73. IM_MAINMENU_MUSIC_SELECT_B,
  74. IM_MAINMENU_RADIO_SELECT_B,
  75. IM_MAINMENU_BROWSER_SELECT_B,
  76. IM_MAINMENU_SETUP_SELECT_B,
  77. IM_MAINMENU_VIDEO_SELECT_B,
  78. IM_MAINMENU_PHOTO_SELECT_B,
  79. IM_MAINMENU_GAME_SELECT_B,
  80. IM_MAINMENU_EBOOK_SELECT_B};*/
  81. CBYTE cbModeConvert[MAX_MODE]={
  82. SAVE_FROM_PLAY,
  83. SAVE_FROM_FM,
  84. SAVE_FROM_DVR,
  85. SAVE_FROM_PHOTO,              
  86. SAVE_FROM_VIDEO,
  87. SAVE_FROM_FILECTRL,
  88. SAVE_FROM_AMUSE,
  89. SAVE_FROM_SYS,
  90. SAVE_FROM_EBOOK};
  91. CWORD cwMenuSelectItem=IM_MAINMENU_1MUSIC_SELECT;
  92. CWORD cwMenuItem=IM_MAINMENU_1MUSIC;
  93. #define MenuItemOffset (IM_MAINMENU_2RADIO-IM_MAINMENU_1MUSIC)
  94. #define MenuSelectItemOffset (IM_MAINMENU_2RADIO_SELECT-IM_MAINMENU_1MUSIC_SELECT)
  95. #define MenuItemSelectBOffset (A0_IM_MAINMENU_2VIDEO_SELECT_B-A0_IM_MAINMENU_1PHOTO_SELECT_B)
  96. // WHH #4 301_061225(end)
  97. BOOL fDrawSelecIcon;
  98. void ICEStartInitial(void);
  99. BYTE UiModeSelection(void) large;
  100. void WriteModuleSettingData(void);
  101. void SwapToNextModule(void);
  102. //void UiShowWakeUp(void) large;
  103. void UiErrHandle(void) large;
  104. /*--------------------------------------------------------------------------
  105. Description:
  106. Main program for TARGET save setting
  107. Arguments:
  108. Global arguments:
  109. Returns: 
  110. --------------------------------------------------------------------------*/
  111. main(void)
  112. {
  113. #if(SETTING_FOR_ICE_START)
  114.        ICEStartInitial();
  115. #endif
  116.        SetSysSpeed(SYS_SPEED_NORMAL); //Walace060902#3
  117.        OLED_DISP_MASK_INIT();
  118. #if(SETTING_FOR_ICE_START|UI_USE_ALARM_DISPLAY) //vicky050131 
  119. EX0=1;
  120.        #endif
  121. EA=1;
  122. ET0=1;
  123. #if(SD_DET_USE_INT1)
  124. EX1 = 1;//Nick060808
  125. #endif
  126. gxfSourceUnicode=STRING_TYPE_ASCII;
  127. gxbLcdLimitCol=MAX_COLNUM;
  128. gxbVolCount=0; // WHH 070110
  129. //Walace060915#3 start
  130. switch(gxbSettingBuffer[SETTING_CURRENT_MODE])
  131. {
  132. case SAVE_FROM_HOST:
  133. InitToNormalSys();
  134. break;
  135. case SAVE_FROM_PLAY:
  136. case SAVE_FROM_DVR:
  137. case SAVE_FROM_SYS:
  138. case SAVE_FROM_PHOTO: //tne 2005/12/17
  139. case SAVE_FROM_EBOOK:
  140. case SAVE_FROM_VIDEO:  //tne 2005/12/17
  141. if(gxbSettingBuffer[SETTING_DEL_FILE_FLASG]==TRUE)
  142. {
  143. UiShowWaitMsg(UI_SHOW_WAIT_START); //Walace060915#2
  144. SetSysSpeed(SYS_SPEED_UP_UI); //Walace060915#2
  145. LoadRecInfo();
  146. UiUpdateRecInfo();
  147. SetSysSpeed(SYS_SPEED_NORMAL);//Walace060915#2
  148. UiShowWaitMsg(UI_SHOW_WAIT_TIME_OUT);//Walace060915#2
  149. }
  150. break;
  151. }
  152. //Walace060915#3 end
  153. switch(gxbSettingBuffer[SETTING_NEXT_MODE])
  154. {
  155. case SAVE_AND_SEL_MODE:
  156. OLED_CLEAR_ALL();
  157. OledShowIconNew(1,LOGO,0,0);
  158. UiModeSelection();
  159. break;
  160. case SAVE_AND_INIT_CHK:
  161. case SAVE_AND_POWER_OFF:
  162. /*
  163.               case SAVE_AND_DIR_DEL:  //Tne051221#Video
  164.               case SAVE_AND_FILE_DEL: 
  165.               */
  166. break;
  167. }
  168. /* //Walace060915#3
  169. //tne 2006/05/25 #1
  170. switch(gxbSettingBuffer[SETTING_CURRENT_MODE])
  171. {
  172. case SAVE_FROM_HOST:
  173. InitToNormalSys();
  174. break;
  175. case SAVE_FROM_PLAY:
  176. case SAVE_FROM_DVR:
  177. case SAVE_FROM_SYS:
  178. case SAVE_FROM_PHOTO: //tne 2005/12/17
  179. case SAVE_FROM_VIDEO:  //tne 2005/12/17
  180. if(gxbSettingBuffer[SETTING_DEL_FILE_FLASG]==TRUE)
  181. {
  182. LoadRecInfo();
  183. UiUpdateRecInfo();
  184. }
  185. break;
  186. }
  187. */ //Walace060915#3
  188. WriteModuleSettingData();
  189. SwapToNextModule();
  190. while(1) { };
  191. }
  192. #if(SETTING_FOR_ICE_START)
  193. void ICEStartInitial(void)
  194. {
  195. SettingForIceStart();
  196. //SM Clock
  197. obCLKSMDIVF=0x01;
  198. obCLKSMCTRL=0xC8; //147/3=49
  199. NandInit();
  200. OledCtrlEn();
  201. #if(!OLED_USE_SM_INTERFEACE)
  202.     obPARLCD = 0x31;  //Select Parallel Mode & Give CS Hight
  203.     obMODSEL2 |= LCD_PAR_EN; //LCD Parallel mode enable
  204.     obCLKLCDCTRL |= (LCD_CLK_EN | LCD_CLK_3000); //LCD Enable & Set Clock 3MHz
  205. #endif
  206. OledInit() ;
  207. OledCtrlDis();
  208. FontTableInit();
  209. LoadStringTableIndex();
  210. LoadTransTableIndex();
  211. //gxbSettingBuffer[SETTING_CURRENT_MODE]=SAVE_FROM_INIT;
  212. //gxbSettingBuffer[SETTING_CURRENT_MODE]=SAVE_FROM_PLAY;
  213. //gxbSettingBuffer[SETTING_CURRENT_MODE]=SAVE_FROM_HOST;
  214. gxbSettingBuffer[SETTING_CURRENT_MODE]=SAVE_FROM_PHOTO;
  215. //gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_POWER_OFF;
  216. //gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_DVR;
  217. //gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_PLAY;
  218. gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_SEL_MODE;
  219. }
  220. #endif
  221. BYTE UiModeSelection(void) large
  222. {
  223. BYTE bKey;
  224. BYTE btmp;//,bLeftMode;   // WHH #4 301_061225
  225. BYTE bModeSelctCount=0;
  226. //BYTE bDrawMode; // WHH #4 301_061225
  227. /* //tne 2006/05/25 #1
  228. switch(gxbSettingBuffer[SETTING_CURRENT_MODE])
  229. {
  230. case SAVE_FROM_HOST:
  231. InitToNormalSys();
  232. break;
  233. case SAVE_FROM_PLAY:
  234. case SAVE_FROM_DVR:
  235. case SAVE_FROM_SYS:
  236. case SAVE_FROM_PHOTO: //tne 2005/12/17
  237. case SAVE_FROM_VIDEO:  //tne 2005/12/17
  238. if(gxbSettingBuffer[SETTING_DEL_FILE_FLASG]==TRUE)
  239. {
  240. LoadRecInfo();
  241. UiUpdateRecInfo();
  242. }
  243. break;
  244. }
  245. */
  246. // WHH #1 301_061220(start)
  247. if(gxbSettingBuffer[SETTING_CURRENT_MODE]==SAVE_FROM_INIT)
  248. {
  249. gxbUiMenuSubStates=0;
  250. fDrawSelecIcon=TRUE;
  251. }
  252. // WHH #1 301_061220(end)
  253. else
  254. {
  255. gxbUiMenuSubStates=0;
  256. for(gxbUiMenuSubStates=0;gxbUiMenuSubStates<MAX_MODE;gxbUiMenuSubStates++)
  257. {
  258. if(gxbSettingBuffer[SETTING_CURRENT_MODE]==cbModeConvert[gxbUiMenuSubStates])
  259. break;
  260. }
  261. ASSERT(gxbUiMenuSubStates<MAX_MODE);
  262. fDrawSelecIcon=TRUE;
  263. }    // WHH #1 301_061220(end)
  264. //remove by tne 2006/12/05 #2
  265. //UI_SHOW_BATTERY();
  266. //UiShowAlarmPic();    
  267. while(1)
  268. {
  269. UiNormalCheck();
  270. /*============Del by Rojam  2007-04-12 10:12===============
  271. if(gxbLastErrCode!=ERR_NO_ERROR)
  272. {
  273. UiErrHandle();
  274. return 0xFF;
  275. }
  276. =========================== end Del ========================*/
  277. KeyGet(bKey);
  278. UiCheckBackLight(bKey);
  279.              // UI_SHOW_BATTERY();  //Walace060903#1
  280.   
  281. if(fDrawSelecIcon)
  282. {
  283. bModeSelctCount=0;
  284. //UiShowAlarmPic();
  285.   
  286. fDrawSelecIcon=FALSE;
  287. // WHH #4 301_061225(start)
  288. /*if(gxbUiMenuSubStates)  // WHH #4 301_061225
  289. bLeftMode=gxbUiMenuSubStates-1; //Left side
  290. else
  291. bLeftMode=(MAX_MODE-1); //Left side
  292. */
  293. /*for(btmp=0;btmp<3;btmp++)
  294. {
  295. if((bLeftMode+btmp)>(MAX_MODE-1))
  296. bDrawMode=(bLeftMode+btmp)-MAX_MODE;
  297. else
  298. bDrawMode=(bLeftMode+btmp);
  299. OledShowIcon(ICON_PM_N00_MUSIC+bDrawMode*ICON_PM_PITCH,(btmp*ICON_PM_W),PAGE3);
  300. }*/
  301. // OledClearArea(0, 112, 128, 16);   
  302. OledShowIconNew(1,LOGO_CLEAR,0,144);
  303. gfTransparent = TRUE;
  304. StrShowSysString(cbStringMainMenuList[gxbUiMenuSubStates],LCD_AUTO_CENTER_COL,144);
  305. gfTransparent = FALSE;
  306. #define ROW_START   2
  307.  
  308. if(gxbUiMenuSubStates == 0 )
  309. {
  310. OledShowIconNew(3,cwMenuItem+7*MenuItemOffset,18,ROW_START);
  311. OledShowIconNew(3,cwMenuItem+8*MenuItemOffset,18+16,ROW_START);
  312. for(btmp=2;btmp<5;btmp++)
  313. {
  314. //OledShowIconNew((btmp/3)+3,cwMenuItem[btmp],18+btmp*16,11);
  315. OledShowIconNew(3,cwMenuItem+(btmp-2)*MenuItemOffset,18+btmp*16,ROW_START);
  316. }
  317. }
  318. else if(gxbUiMenuSubStates ==1)
  319. {
  320. OledShowIconNew(3,cwMenuItem+8*MenuItemOffset,18,ROW_START);
  321. for(btmp=1;btmp<5;btmp++)
  322. {
  323. //OledShowIconNew((btmp/3)+3,cwMenuItem[btmp],18+btmp*16,11);
  324. OledShowIconNew(3,cwMenuItem+(btmp-1)*MenuItemOffset,18+btmp*16,ROW_START);
  325. }
  326. }
  327. else if(gxbUiMenuSubStates ==7)
  328. {
  329. for(btmp=0;btmp<4;btmp++)
  330. {
  331. //OledShowIconNew((btmp/3)+3,cwMenuItem[btmp],18+btmp*16,11);
  332. OledShowIconNew(3,cwMenuItem+(btmp+gxbUiMenuSubStates-2)*MenuItemOffset,18+btmp*16,ROW_START);
  333. }
  334. OledShowIconNew(3,cwMenuItem,18+16*4,ROW_START);
  335. }
  336. else if(gxbUiMenuSubStates ==8)
  337. {
  338. OledShowIconNew(3,cwMenuItem+8*MenuItemOffset,18+16,ROW_START);
  339. for(btmp=0;btmp<3;btmp++)
  340. {
  341. //OledShowIconNew((btmp/3)+3,cwMenuItem[btmp],18+btmp*16,11);
  342. OledShowIconNew(3,cwMenuItem+(btmp+gxbUiMenuSubStates-2)*MenuItemOffset,18+btmp*16,ROW_START);
  343. }
  344. OledShowIconNew(3,cwMenuItem,18+16*3,ROW_START);
  345. OledShowIconNew(3,cwMenuItem+MenuItemOffset,18+16*4,ROW_START);
  346. }
  347. else
  348. {
  349. for(btmp=0;btmp<5;btmp++)
  350. {
  351. //OledShowIconNew((btmp/3)+3,cwMenuItem[btmp],18+btmp*16,11);
  352. OledShowIconNew(3,cwMenuItem+(btmp+gxbUiMenuSubStates-2)*MenuItemOffset,18+btmp*16,ROW_START);
  353. }
  354. }
  355. OledShowIconNew(3,cwMenuSelectItem+gxbUiMenuSubStates*MenuSelectItemOffset,18+2*16,ROW_START);
  356. //OledShowIconNew((gxbUiMenuSubStates/3)+3,cwMenuItemSelectB[gxbUiMenuSubStates],0,44);
  357. OledShowIconNew((gxbUiMenuSubStates/3)+3,(gxbUiMenuSubStates%3)*MenuItemSelectBOffset,0,16);
  358. //OledShowIconNew((gxbUiMenuSubStates/3)+3,cwMenuItemSelect[gxbUiMenuSubStates],18+gxbUiMenuSubStates*16,11);
  359. //OledClearArea(SEG0,PAGE0+4,OLED_MAX_COL-WORD1,LINE1); //ok
  360. //StrShowSysString(cbStringMainMenuList[gxbUiMenuSubStates],LCD_AUTO_CENTER_COL,PAGE0+4);
  361. OledShowIconNew(3,IM_MAINMENU_ARROW_RIGHT_GRAY,102,ROW_START);    
  362. OledShowIconNew(3,IM_MAINMENU_ARROW_LEFT_GRAY,2,ROW_START);
  363. //StrShowSysString(cbStringMainMenuList[gxbUiMenuSubStates],220,0);
  364. // WHH #4 301_061225(end)
  365. }
  366. else// WHH #4 301_061225
  367. {
  368. bModeSelctCount++;
  369. if(bModeSelctCount<=30)
  370. OledShowIconNew((gxbUiMenuSubStates/3)+3,(gxbUiMenuSubStates%3)*MenuItemSelectBOffset,0,16);
  371.        else 
  372.     OledShowIconNew((gxbUiMenuSubStates/3)+3,A0_IM_1MAINMENU_MUSIC_SELECT_S+(gxbUiMenuSubStates%3)*MenuItemSelectBOffset,0,16);
  373. if( bModeSelctCount==60)
  374. bModeSelctCount=0;
  375. }
  376. switch(bKey)
  377. {
  378. case KEY_LEFT_BREAK:
  379. // WHH #4 301_061225
  380. OledShowIconNew(3,IM_MAINMENU_ARROW_LEFT,2,ROW_START); 
  381. if(gxbUiMenuSubStates)
  382. gxbUiMenuSubStates--;
  383. else
  384. gxbUiMenuSubStates=(MAX_MODE-1);
  385. fDrawSelecIcon=TRUE;
  386. break;
  387. case KEY_RIGHT_BREAK:
  388. // WHH #4 301_061225
  389. OledShowIconNew(3,IM_MAINMENU_ARROW_RIGHT,102,ROW_START); 
  390. if(gxbUiMenuSubStates<(MAX_MODE-1))
  391. gxbUiMenuSubStates++;
  392. else
  393. gxbUiMenuSubStates=0;
  394. fDrawSelecIcon=TRUE;
  395. break;
  396. case KEY_UP_BREAK:
  397. gxbSettingBuffer[SETTING_NEXT_MODE]=cbModeConvert[gxbUiMenuSubStates];
  398. return TRUE;
  399. /*
  400. case KEY_REC_BREAK: // 7 Cancel
  401. gxbSettingBuffer[SETTING_NEXT_MODE]=gxbSettingBuffer[SETTING_CURRENT_MODE];
  402. return TRUE;
  403. */
  404. }
  405. }
  406. #undef ROW_START
  407. }
  408. void WriteModuleSettingData(void)
  409. {
  410. BYTE bI;
  411. BYTE bKeepStorType;
  412. PBYTE pbFsData; //Walace060926#1 VideoResume
  413.        //Walace020616#1 start
  414. if((gxbSettingBuffer[SETTING_CURRENT_MODE]==SAVE_FROM_INIT)||
  415. (gxbSettingBuffer[SETTING_CURRENT_MODE]==SAVE_FROM_INIT_KEY_HOLD))
  416. {
  417. return;
  418. }
  419. //Walace020616#1 end
  420. bKeepStorType=gxbStorage;
  421. //read 2k data
  422. NandPrivateEn();
  423. ReadSettingData(FS_DATA_0_0);
  424. pbFsData = gxbFsData+gxwOffsetDataSec; //Walace060926#1 VideoResume
  425. /* //Walace060216#1
  426. if(gxbSettingBuffer[SETTING_CURRENT_MODE]==SAVE_FROM_INIT) //use default setting, no change any more
  427. { RestoreDefaultSetting(); }  
  428. else
  429. {
  430. */
  431. /* Walace051124 #1
  432. #if(PW_OFF_USE_ANIMATION)
  433. if(gxbSettingBuffer[SETTING_NEXT_MODE]==SAVE_AND_POWER_OFF)
  434. {
  435. while(gxbLcdCounter<PW_OFF_DISP_INTERVAL) { };
  436. gxbLcdCounter=0;
  437. }
  438. #endif
  439.               */
  440.              
  441. switch(gxbSettingBuffer[SETTING_CURRENT_MODE])
  442. {
  443. case SAVE_FROM_HOST:
  444. case SAVE_FROM_PHOTO: //050725
  445. break;
  446. case SAVE_FROM_VIDEO:   //Walace051217#Video
  447. //Walace060926#1 VideoResume start
  448. *(pbFsData+SRAM_VIDEO_REPEAT_MODE) = gxbSettingBuffer[SETTING_REPEAT_MODE];
  449. *((PDWORD)(pbFsData+SRAM_VIDEO_LAST_FILESECTOR)) = gxdwLastPlayFileSector;
  450. *((PWORD)(pbFsData+SRAM_VIDEO_LAST_PLAY_TIME)) = gxwVideoLastPlayTime;
  451. for(bI=0;bI<11;bI++)
  452. *(pbFsData+SRAM_LAST_VIDEO_FILE+bI)=gxbLastFileName[bI];
  453. *(pbFsData+SRAM_VIDEO_PATH_DEPTH)=gxbLastFileDepth;
  454. for(bI=0;bI<(MAX_PATH_DEPTH-1)*11;bI++)
  455. *(pbFsData+SRAM_VIDEO_PATH_START+bI) = gxbLastFilePath[bI];
  456. //Walace060926#1 VideoResume end
  457. break;
  458. case SAVE_FROM_REC:
  459. if(gxbSettingBuffer[SETTINT_PLAY_FILE_NAME]!=0x00)
  460. {
  461. for(bI=0;bI<11;bI++)
  462. gxbFsData[SRAM_LAST_DVR_FILE+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTINT_PLAY_FILE_NAME+bI];
  463. }
  464. *((WORD*)&gxbFsData[SRAM_LAST_DVR_TIME+gxwOffsetDataSec])=0; //tne 2005/11/28 #1 //clean Ui resume
  465. break;
  466. case SAVE_FROM_PLAY:
  467. /////tne 2006/01/16/////
  468. gxbFsData[SRAM_EQ+gxwOffsetDataSec]=gxwEqMode;
  469. gxbFsData[SRAM_3D+gxwOffsetDataSec]=gxw3DMode;
  470. for(bI=0;bI<=5;bI++)
  471. gxbFsData[SRAM_USER_EQ_LV1+bI+gxwOffsetDataSec]=gxbUserDefEq[bI];
  472. ////////////////////////
  473. gxbFsData[SRAM_REPT_MODE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_REPEAT_MODE];
  474. //Renshuo050603#A  //resorte time
  475. *((DWORD*)&gxbFsData[SRAM_PLAY_LAST_FILESECTOR+gxwOffsetDataSec])=*((DWORD*)&gxbSettingBuffer[SETTING_PLAY_LAST_FILESECTOR]);
  476. *((DWORD*)&gxbFsData[SRAM_PLAY_LAST_FILESIZE+gxwOffsetDataSec])=*((DWORD*)&gxbSettingBuffer[SETTING_PLAY_LAST_FILESIZE]);
  477. *((DWORD*)&gxbFsData[SRAM_PLAY_LAST_FRAMENUM+gxwOffsetDataSec])=*((DWORD*)&gxbSettingBuffer[SETTING_PLAY_LAST_FRAMENUM]);
  478. //UI for class
  479. gxbFsData[SRAM_PLAY_CLASS_MODE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_PLAY_CLASS_MODE];
  480. if(gxbSettingBuffer[SETTING_PLAY_CLASS_MODE]==P_CLASS_MODE_FILE)
  481. {
  482. gxbFsData[SRAM_PLAY_PATH_DEPTH+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_PLAY_PATH_DEPTH];
  483. for(bI=0;bI<(MAX_PATH_DEPTH-1)*11;bI++)
  484. gxbFsData[SRAM_PLAY_PATH_START+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_PLAY_PATH_START+bI]; //Walace060931#1
  485. for(bI=0;bI<11;bI++)
  486. gxbFsData[SRAM_LAST_PLAY_FILE+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTINT_PLAY_FILE_NAME+bI];
  487. //let CDB invalid
  488. *((DWORD*)&gxbFsData[SRAM_CLASS_ADDR_POINT+gxwOffsetDataSec])=CDB_INIT_POINT;
  489. }
  490. else
  491. {
  492. *((DWORD*)&gxbFsData[SRAM_CLASS_ADDR_POINT+gxwOffsetDataSec])=*((DWORD*)(&gxbSettingBuffer[SETTING_CLASS_ADDR_POINT]));
  493. *((WORD*)&gxbFsData[SRAM_FILE_NUM_IN_ALL_CLASS+gxwOffsetDataSec])=*((WORD*)(&gxbSettingBuffer[SETTING_FNUM_IN_ALL_CLASS]));
  494. *((WORD*)&gxbFsData[SRAM_TOTAL_NUM_IN_ALL_CLASS+gxwOffsetDataSec])=*((WORD*)(&gxbSettingBuffer[SETTING_TOTAL_NUM_IN_ALL_CLASS]));
  495. *((WORD*)&gxbFsData[SRMA_TOTAL_NUM_IN_CLASS+gxwOffsetDataSec])=*((WORD*)(&gxbSettingBuffer[SETTING_TOTAL_NUM_IN_CLASS]));
  496. //let file name invalid
  497. gxbFsData[SRAM_PLAY_PATH_DEPTH+gxwOffsetDataSec]=0;
  498. gxbFsData[SRAM_PLAY_PATH_START+gxwOffsetDataSec]=0; //Walace060931#1
  499. gxbFsData[SRAM_LAST_PLAY_FILE+gxwOffsetDataSec]=0;
  500. }
  501. gxbFsData[SRAM_SPECTRUM_MODE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_SPECTRUM_MODE];
  502. //tne 2005/08/19
  503. *((WORD*)&gxbFsData[SRAM_LAST_PLAY_TIME+gxwOffsetDataSec])=*((WORD*)&gxbSettingBuffer[SETTING_LAST_PLAY_TIME]);
  504. //Walace060220#1
  505. #if(UI_USE_SLIDE_SHOW)
  506. gxbFsData[SRAM_SLIDE_SHOW_DATA+gxwOffsetDataSec]=gxbSlideShowSet; //Walace060220#1
  507. #endif
  508. break;
  509. case SAVE_FROM_DVR:
  510. /////tne 2006/01/16/////
  511. gxbFsData[SRAM_DVR_EQ+gxwOffsetDataSec]=gxwEqMode;
  512. gxbFsData[SRAM_DVR_3D+gxwOffsetDataSec]=gxw3DMode;
  513. for(bI=0;bI<=5;bI++)
  514. gxbFsData[SRAM_DVR_USER_EQ_LV1+bI+gxwOffsetDataSec]=gxbUserDefEq[bI];
  515. ////////////////////////
  516. gxbFsData[SRAM_DVR_REPEAT_MODE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_REPEAT_MODE];
  517. gxbFsData[SRAM_VAD_MODE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_VAD_MODE];
  518. //Renshuo050603#A //resorte time
  519. //Walace060931#1 start
  520. *((DWORD*)&gxbFsData[SRAM_DVR_LAST_FILESECTOR+gxwOffsetDataSec])=*((DWORD*)&gxbSettingBuffer[SETTING_PLAY_LAST_FILESECTOR]);//Walace060931#1
  521. *((DWORD*)&gxbFsData[SRAM_DVR_LAST_FILESIZE+gxwOffsetDataSec])=*((DWORD*)&gxbSettingBuffer[SETTING_PLAY_LAST_FILESIZE]);//Walace060931#1
  522. *((DWORD*)&gxbFsData[SRAM_DVR_LAST_FRAMENUM+gxwOffsetDataSec])=*((DWORD*)&gxbSettingBuffer[SETTING_PLAY_LAST_FRAMENUM]);//Walace060931#1
  523. //Walace060931#1 end
  524. for(bI=0;bI<11;bI++)
  525. gxbFsData[SRAM_LAST_DVR_FILE+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTINT_PLAY_FILE_NAME+bI];
  526. gxbFsData[SRAM_SPECTRUM_MODE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_SPECTRUM_MODE];
  527. //tne 2005/08/19
  528.                         *((WORD*)&gxbFsData[SRAM_LAST_DVR_TIME+gxwOffsetDataSec])=*((WORD*)&gxbSettingBuffer[SETTING_LAST_PLAY_TIME]);//Walace060931#1
  529. break;
  530. case SAVE_FROM_FM:
  531.                          //Dennis060517#1 start
  532. for(bI=0;bI<=FM_MAX_PRESET;bI++)
  533. {
  534. //Walace060931#1 start
  535. #if(FM_STEP_100K)
  536. gxbFsData[SRAM_FM_PRESET_START+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_FM_PRESET_START+bI];
  537. //gxbFsData[SRAM_FM_PRESET_START+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_FM_PRESET_S+bI];
  538. #else
  539. //tne 2006/11/20 #6
  540. *((PWORD)(gxbFsData+gxwOffsetDataSec+SRAM_FM_PRESET_START)+bI) = 
  541. *((PWORD)(gxbSettingBuffer+SETTING_FM_PRESET_START)+bI);
  542. //gxbFsData[SRAM_FM_PRESET_START+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_FM_PRESER_1+bI];
  543. //gxbFsData[SRAM_FM_PRESET_16+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_FM_PRESER_16+bI];
  544. #endif  
  545. //Walace060931#1 end
  546. }
  547. #if(FM_STEP_100K)
  548. gxbFsData[SRAM_FM_FREQ+gxwOffsetDataSec]=((BYTE)((gxwFmFreq-FM_FREQ_MIN)&0x00FF));
  549. #else
  550. //Walace060931#1 start
  551. *((PWORD)(gxbFsData+SRAM_FM_FREQ+gxwOffsetDataSec)) = (gxwFmFreq-FM_FREQ_MIN);
  552. //gxbFsData[SRAM_FM_FREQ+gxwOffsetDataSec]=((BYTE)((gxwFmFreq-FM_FREQ_MIN)&0x00FF));
  553. //gxbFsData[SRAM_FM_FREQ_HIGH+gxwOffsetDataSec]=((BYTE)((gxwFmFreq-FM_FREQ_MIN)>>8));
  554. //Walace060931#1 end
  555. #endif
  556.                         //Dennis060517#1 end
  557. gxbFsData[SRAM_FM_PRESET_NUM+gxwOffsetDataSec]=gxbFmPreset;
  558. gxbFsData[SRAM_FM_STATE+gxwOffsetDataSec]=gxbFmState; //Walace060217#1
  559. break;
  560. case SAVE_FROM_SYS:
  561. gxbFsData[SRAM_LANGUAGE_TYPE+gxwOffsetDataSec]=gxbLangueType;
  562. gxbFsData[SRAM_CONTRAST+gxwOffsetDataSec]=gxbLcdContrast;
  563. gxbFsData[SRAM_BACK_LIGHT+gxwOffsetDataSec]=gxbBackLightTime;
  564. gxbFsData[SRAM_AUTO_OFF_H+gxwOffsetDataSec]=(gxwAutoOff>>8);
  565. gxbFsData[SRAM_AUTO_OFF_L+gxwOffsetDataSec]=gxwAutoOff;
  566. gxbFsData[SRAM_VAD_MODE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_VAD_MODE];
  567. //tne 2005/11/23 #3
  568. obDCVARRD=0x03;
  569. gxbFsData[SRAM_TIME_ZONE+gxwOffsetDataSec]=(((obDCVRDDATA&RTC_GET_ALARM_STS)<<4) | gxbSettingBuffer[SETTING_TIME_ZONE]);
  570. //gxbFsData[SRAM_TIME_ZONE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_TIME_ZONE]; //tne 2005/05/17
  571. //gxbFsData[SRAM_DRM_OPTION_MODE+gxwOffsetDataSec]=gxbSettingBuffer[SETTING_DRM_MODE];  //mark by tne 2005/02/18 #1
  572. break;
  573. //Vicky060301
  574. case SAVE_FROM_AMUSE:
  575. break;
  576. case SAVE_FROM_EBOOK: // Jeff070424#1
  577. for(bI=0;bI<11;bI++)
  578. gxbFsData[SRAM_LAST_EBOOK_FILE+bI+gxwOffsetDataSec]=gxbSettingBuffer[SETTINT_EBOOK_FILE_NAME+bI];
  579. gxbFsData[SRAM_EBOOK_PAGE+gxwOffsetDataSec]=gxbSettingBuffer[SETTINT_EBOOK_PAGE];
  580. break;
  581. //End
  582. }
  583.  #if(_PEDOMETER_Mode_)
  584. gxbFsData[SRAM_CUSTOMERAGE+gxwOffsetDataSec]=gxbCustomerAge;
  585. gxbFsData[SRAM_CUSTOMERSTATURE+gxwOffsetDataSec]=gxbUserStanding;
  586. gxbFsData[SRAM_CUSTOMERWEIGHT+gxwOffsetDataSec]=gxbUserWeight;
  587. gxbFsData[SRAM_CUSTOMERSTRIDE+gxwOffsetDataSec]=gxbWalkingStride;
  588. gxbFsData[SRAM_CUSTOMERSEX+gxwOffsetDataSec]=gxbCustomerSEX;
  589. #endif
  590. gxbFsData[SRAM_LAST_MODE+gxwOffsetDataSec]=gxbDeviceMode;
  591. gxbFsData[SRAM_VOLUME+gxwOffsetDataSec]=gxbVolume;
  592. //gxbFsData[SRAM_EQ+gxwOffsetDataSec]=gxwEqMode; //tne 2006/01/16
  593. gxbFsData[SRAM_STORAGE+gxwOffsetDataSec]=gxbStorage;
  594. //gxbFsData[SRAM_INTRO+gxwOffsetDataSec]=gxbIntroMode; //Tne051228#1
  595. //gxbFsData[SRAM_SLIDE_SHOW_DATA+gxwOffsetDataSec]=(BYTE)gxbSlideShowSet; //Walace060220#1
  596. //for(bI=0;bI<=5;bI++)
  597. // gxbFsData[SRAM_USER_EQ_LV1+bI+gxwOffsetDataSec]=gxbUserDefEq[bI]; //tne 2006/01/16
  598. gxbFsData[SRAM_REC_S_Q+gxwOffsetDataSec]=(gxbRecSource<<4)|(gxbRecQuality);
  599. //gxbFsData[SRAM_3D+gxwOffsetDataSec]=gxw3DMode; //tne 2006/01/16
  600. gxbFsData[SRAM_RECORD_ID1+gxwOffsetDataSec]=0x56;
  601. gxbFsData[SRAM_RECORD_ID2+gxwOffsetDataSec]=0x61;
  602. //add by tne 2005/05/17
  603. (DWORD)gxbFsData[SRAM_LAST_RTC_TIME+gxwOffsetDataSec]=gxdwNowTime;
  604. for(bI=0;bI<4;bI++)
  605. {
  606. obDCVARRD=bI+0x19;
  607. gxbFsData[SRAM_LAST_ALARM_TIME+gxwOffsetDataSec+(3-bI)]=obDCVRDDATA;
  608. }
  609. (DWORD)gxbFsData[SRAM_LAST_CK_OFFSET+gxwOffsetDataSec]=gxdwSClockOffset;
  610. gxbFsData[SRAM_LAST_DRM_OPTION+gxwOffsetDataSec]=gxbDrmOptionMode;
  611. ////////////////////////
  612. //tne 2006/05/10 #3 Start
  613. SramWrite(SRAM_DRM_OPTION_MODE,&gxbDrmOptionMode);
  614. SramWrite(SRAM_CONTRAST, &gxbLcdContrast);
  615. SramWrite(SRAM_BACK_LIGHT,&gxbBackLightTime);
  616. //tne 2006/05/10 #3 End
  617. #if(_PEDOMETER_Mode_)
  618. SramWrite(SRAM_CUSTOMERAGE, &gxbCustomerAge);
  619. SramWrite(SRAM_CUSTOMERSTATURE, &gxbUserStanding);
  620. SramWrite(SRAM_CUSTOMERWEIGHT, &gxbUserWeight);
  621. SramWrite(SRAM_CUSTOMERSTRIDE, &gxbWalkingStride);
  622. SramWrite(SRAM_CUSTOMERSEX, &gxbCustomerSEX);
  623. #endif
  624. //save setting to Nand Flash private area
  625. WriteSettingData(FS_DATA_0_0);
  626. /*  //Walace051124#1
  627. #if(PW_OFF_USE_ANIMATION)
  628. if(gxbSettingBuffer[SETTING_NEXT_MODE]==SAVE_AND_POWER_OFF)
  629. {
  630. while(gxbLcdCounter<PW_OFF_DISP_INTERVAL) { };
  631. gxbLcdCounter=0;
  632. }
  633. #endif
  634. */
  635. //} //Walace060216#1
  636. NandPrivateDis();
  637. NandFinishJob(); //tne 2005/05/16
  638. gxbStorType=bKeepStorType;
  639. gxbStorage=bKeepStorType;
  640. //Nick061120 start
  641. gxbRestoreCMD = FullStep;
  642. NandRestore();
  643. //Nick061120 end
  644. }
  645. void SwapToNextModule(void)
  646. {
  647. BYTE bKey=KEY_INVALID;
  648. //swap module or power off
  649. switch(gxbSettingBuffer[SETTING_NEXT_MODE])
  650. {
  651. case SAVE_AND_INIT:
  652. LoadProgram(PM_INIT,NORMAL_CODE);
  653. break;
  654. case SAVE_AND_PLAY:
  655.                      gxbModuleState = MODULE_INITIAL;
  656. gxbDeviceMode=DEV_MUSIC;
  657. LoadProgram(PM_PLAY_FAT_LARGE,NORMAL_CODE);
  658. break;
  659. case SAVE_AND_PHOTO: 
  660. gxbModuleState = MODULE_INITIAL; //tne 2005/12/17
  661. gxbDeviceMode=DEV_PHO;
  662. LoadProgram(PM_PHOTO_VIEW,NORMAL_CODE);
  663. break;
  664. case SAVE_AND_VIDEO: //Walace051106#Video
  665. gxbModuleState = MODULE_INITIAL; //tne 2005/12/17
  666. gxbDeviceMode=DEV_VIDEO;
  667. LoadProgram(PM_VIDEO_FLIST,NORMAL_CODE); //Walace060926#1 VideoResume
  668. break;
  669. case SAVE_AND_DVR:   
  670. if(gxbModuleState==(MODULE_REC|MODULE_PRC_REC_KEY_END)) //vicky060810
  671. gxbModuleState = (MODULE_INITIAL|MODULE_PRC_REC_KEY_END); 
  672. else
  673. gxbModuleState = (MODULE_INITIAL);
  674.                      gxbDeviceMode=DEV_DVR;
  675. SetSysSpeed(0x02); 
  676. LoadProgram(PM_PLAY_DVR,NORMAL_CODE);
  677. break;
  678. case SAVE_AND_FM:
  679. if(gxbModuleState==(MODULE_REC|MODULE_PRC_REC_KEY_END)) //vicky060810
  680. {
  681. gxbModuleState = (MODULE_INITIAL|MODULE_PRC_REC_KEY_END); 
  682. }
  683. else
  684. gxbModuleState = (MODULE_INITIAL);
  685. gxbDeviceMode=DEV_FM;
  686. if(gxbSettingBuffer[SETTING_CURRENT_MODE]==SAVE_FROM_REC)
  687. gxbFmPreset|=0x01;
  688. else
  689. gxbFmPreset&=0xFE;
  690. LoadProgram(PM_FM,NORMAL_CODE);
  691. break;
  692. case SAVE_AND_SYS:
  693. gxbDeviceMode=DEV_SYS;
  694. LoadProgram(PM_SYSTEM,NORMAL_CODE);
  695. break;
  696. case SAVE_AND_FILECTRL:                 //TONY070111
  697. gxbDeviceMode=DEV_FILE_CTRL; //tne 2007/01/12 #1
  698. LoadProgram(PM_SYSTEM,NORMAL_CODE);
  699. break;
  700. case SAVE_AND_REC:
  701. LoadProgram(PM_REC_FAT_LARGE,NORMAL_CODE);
  702. break;
  703. case SAVE_AND_HOST:
  704. gxbDeviceMode=DEV_HST;
  705. LoadProgram(PM_HOST,NORMAL_CODE);
  706. break;
  707. case SAVE_AND_INIT_CHK:
  708. LoadProgram(PM_INIT_CHK,NORMAL_CODE);
  709. break;
  710. case SAVE_AND_AMUSE:
  711. LoadProgram(PM_AMUSE,NORMAL_CODE);
  712. break;
  713. case SAVE_AND_EBOOK:
  714. LoadProgram(PM_EBOOK,NORMAL_CODE);
  715. break;
  716. /*
  717.               case SAVE_AND_DIR_DEL:  //Tne051221#Video
  718.                LoadProgram(PM_DIR_DEL);
  719.                break;
  720.               case SAVE_AND_FILE_DEL:   //Tne051221#Video
  721.                 LoadProgram(PM_PLAY_DEL);
  722. break;
  723. */
  724. case SAVE_AND_POWER_OFF:
  725. //Nick061120 start
  726. gxbRestoreCMD = FinishAllBlk;
  727. NandRestore();
  728. //Nick061120 end //NandRestore
  729. ScanPM();  //Nick061204 //NandRestore
  730. //tne 2007/01/04 #1
  731. ShowAnimation(IM_CLOSE_ANIMATION_START,IM_CLOSE_ANIMATION_OFFSET,IM_CLOSE_ANIMATION_NUM,0,0,IM_CLOSE_ANIMATION_DELAY);
  732. OledShowIconNew(2,IM_BG_CLEAR_TO_BLACK,0,0);
  733. //OledDisplayFade(FALSE,4000);
  734. OledDisplayOn(OFF);
  735. #if(USE_STEP_UP_CONVERTER)
  736. PwmDisable();
  737. #endif
  738. if(VbusCheck(CHECK_VBUS_ON)) //Walace060901#2
  739. {
  740. OledDisplayOn(ON);
  741. LoadProgram(PM_INIT,NORMAL_CODE);
  742. }
  743. /*============Del by Rojam  2007-03-28 09:29===============
  744.  #if(!FIVEKEY)
  745.       obGPIOCDIR |= 0x04;//TONY060404
  746.           obGPIOCDAT &= (~0x04);
  747.           #else
  748. obGPIOADIR |= 0x01;
  749.               obGPIOADAT &= (~0x01);   
  750.               #endif
  751. =========================== end Del ========================*/
  752. SetPowerOff();
  753. while(1)
  754.        {
  755. /*============Del by Rojam  2007-03-28 09:29===============
  756.        #if(!FIVEKEY)
  757.       obGPIOCDIR |= 0x04;//TONY060404
  758.           obGPIOCDAT &= (~0x04);
  759. #else
  760. obGPIOADIR |= 0x01;
  761.                      obGPIOADAT &= (~0x01);         
  762.                      #endif
  763. =========================== end Del ========================*/
  764.                       }
  765. break;
  766. }
  767. }
  768.  // Walace050920
  769.  #if(UI_USE_ALARM_DISPLAY)
  770. //tne 2006/01/15 #1 move to UiCommon.c
  771. //void UiShowWakeUp() large
  772. #endif
  773. void UiErrHandle(void) large
  774. {
  775. }