- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
UiInitChk.c
资源名称:SDK_M5661.rar [点击查看]
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:21k
源码类别:
压缩解压
开发平台:
C++ Builder
- /*==========================================================================
- Copyright (c) 2004 ALi Corporation. All Rights Reserved
- File: UiCommon.c
- content: user interface for system module
- History: Created by TNE 2004/8/17
- ==========================================================================*/
- #define _UI_FSDELETE_H_
- #include <DP8051XP.H>
- #include "TypeDef.h"
- #include "Const.h"
- #include "Reg5661.h"
- #include "Common.h"
- #include "UiCommon.h"
- #include "SysStrDef.h"
- #include "UiSysStr.h"
- #include "OledString.h"
- #include "Key.h"
- #include "ClassDataBase.h"
- #include "NandFlash.h"
- #include "UiSys.h"
- #include "SD.h"
- #include "FileSystem.h"
- #include "SaveSetting.h"
- #include "IconDefine.h"
- // WHH #3 301_061225(start)
- #include "IconDefine1.h"
- #include "IconDefine2.h"
- #include "IconDefineMenu1.h"
- #include "IconDefineMenu2.h"
- #include "IconDefineMenu3.h"
- #include "IconDefineGame.h"
- // WHH #3 301_061225(end)
- #include "Oled.h"
- #if(USE_STEP_UP_CONVERTER)
- #include "StepUp.h"
- #endif
- void SetModifyFlag(BYTE bModifyFlag) large;
- void CheckCdbReflash(void) large;
- void CheckRecFile(void) large;
- void RecoverRecFile(void) large;
- struct FILE_INF_DATA xdata stFsInitChk;
- /*
- #if(UI_DISP_CDB_HOURGLASS)
- CBYTE cbIcon_Hourglass_1[]={0x0,0x0,0x0,0x0,0x0,0xC,0xFC,0x14,0x94,0x14,0x94,0x1C,0x9C,0x1C,0xFC,0xC,0x0,0x0,0x0,0x0,
- 0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0x21,0x12,0xD,0x2,0xD,0x12,0x21,0xC0,0x0,0x0,0x0,0x0,0x0,
- 0x0,0x0,0x0,0x0,0x0,0xC,0xF,0xA,0xA,0xA,0xA,0xE,0xE,0xE,0xF,0xC,0x0,0x0,0x0,0x0,
- };
- #endif
- CBYTE cbIcon_Hourglass_2[]={0x0,0x0,0x0,0x0,0x0,0xC,0xFC,0x14,0x94,0x14,0x14,0x1C,0x1C,0x1C,0xFC,0xC,0x0,0x0,0x0,0x0,
- 0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0x21,0x12,0xD,0x52,0xD,0x12,0x21,0xC0,0x0,0x0,0x0,0x0,0x0,
- 0x0,0x0,0x0,0x0,0x0,0xC,0xF,0xA,0xB,0xA,0xB,0xE,0xF,0xE,0xF,0xC,0x0,0x0,0x0,0x0,
- };
- #if(UI_DISP_CDB_HOURGLASS)
- CBYTE cbIcon_Hourglass_3[]={0x0,0x0,0x0,0x0,0x0,0xC,0xFC,0x14,0x14,0x14,0x14,0x1C,0x1C,0x1C,0xFC,0xC,0x0,0x0,0x0,0x0,
- 0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xA1,0x52,0x8C,0x40,0x8C,0x52,0xA1,0xC0,0x0,0x0,0x0,0x0,0x0,
- 0x0,0x0,0x0,0x0,0x0,0xC,0xF,0xA,0xB,0xA,0xB,0xE,0xF,0xE,0xF,0xC,0x0,0x0,0x0,0x0,
- };
- CBYTE cbIcon_Hourglass_4[]={0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0x20,0x10,0xE,0x16,0x2C,0x58,0xF0,0xE0,0xC0,0x80,
- 0x60,0xA0,0x60,0xD0,0xA8,0x44,0xA4,0x44,0x84,0x43,0xF0,0x8,0x8,0x8,0x8,0x4,0x2,0x1,0x1,0x1,
- 0x0,0x0,0x1,0x2,0x7,0xF,0x1E,0x1D,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
- };
- CBYTE cbIcon_Hourglass_5[]={0x0,0x0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0xC0,0xC0,
- 0x0,0x0,0xFF,0xF0,0xFF,0xA0,0xD0,0xA0,0x51,0x22,0x14,0x14,0x22,0x41,0x80,0x80,0x80,0xFF,0xF0,0xFF,
- 0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,
- };
- CBYTE cbIcon_Hourglass_6[]={0x80,0x40,0xA0,0xD0,0x78,0x3C,0x1E,0xE,0x10,0xA0,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
- 0x1,0x1,0x1,0x2,0x4,0xA,0xD,0xA,0xD,0xF2,0x3,0x4,0x4,0x4,0x4,0x88,0xD0,0xE0,0xE0,0x60,
- 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x1C,0x1A,0xD,0x6,0x3,0x1,0x0,0x0,
- };
- code PBYTE pbIconHourGlassPoint[]=
- {
- cbIcon_Hourglass_1,
- cbIcon_Hourglass_2,
- cbIcon_Hourglass_3,
- cbIcon_Hourglass_4,
- cbIcon_Hourglass_5,
- cbIcon_Hourglass_6,
- };
- #endif
- */
- ////////////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////// Ui Header End ///////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////
- /*--------------------------------------------------------------------------
- Description:
- Main program for TARGET System
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- main(void) large
- {
- //obPMSIZE|=0x04; //MCU USE ALL
- #if(SETTING_FOR_ICE_START)
- SettingForIceStart();
- //SM Clock
- obCLKSMDIVF=0x01;
- obCLKSMCTRL=0xC8; //147/3=49
- gxwAddrPMI=0;
- NandInit();
- FsInit();
- OledCtrlEn();
- OledInit();
- OledCtrlDis();
- LoadStringTableIndex();
- LoadTransTableIndex();
- KeyInit();
- EnableTimer0();
- //gxbFsDelId = FSDEL_INIT_FS | FSDEL_GO_USB;
- //gxbFsDelId=FSDEL_GO_PLAY|FSDEL_SCAN_DB;
- gxbFsDelId = FSDEL_GO_AMUSE; //Vicky060301
- #endif
- #if(CDB_OPTION_SYS_CACHE)
- obPMSIZE|=0x04; //MCU USE ALL //System cache use 0xA000-0xBFFF
- #endif
- EA=0;
- //DCV_SET_PWM(); //David050719, Shiaw-Yi suggests
- //SetDCVPWMCycle(PWM_NORMAL_CYCLE); //Walace060607#4 //Walace060720#1
- /* //move to init
- if(gxbFsDelId & FSDEL_INIT_FS)
- {
- obCLKMCUDIVF=0x02;
- gfNandInit=FALSE;
- NandInit();
- FsInit();
- obCLKMCUDIVF=0x08;
- }
- */
- OLED_DISP_MASK_INIT();
- //OLED_CLEAR_ALL(); //Walace060501#3
- stFsInitChk.pbFileName=gxbFileName;
- stFsInitChk.pbLongFileName=gxbLongFileName;
- gpstFileIndex=&stFsInitChk;
- gxbLcdLimitCol=MAX_COLNUM;
- #if(!UI_USE_CLASS_LIST) //Walace070130#1 start
- // Dummy call for disable Class UI function, because of that It occupies the data memory by "the uncalled function"
- // after Keil C optimization.
- //if(gxbLcdLimitCol!=0xFF) // Jeff070515#1
- if(gxbLcdLimitCol!=MAX_COLNUM) // Jeff070515#1
- {
- StrCompWithCase(&gxbLcdLimitCol, &gxbLcdLimitCol,0xFF);
- CommonDelay(0xFFFF);
- ParserGetField(&gxbLcdLimitCol,0xFFFF, (PWORD)&gxbLcdLimitCol,TRUE, TRUE);
- FsOpenFile(0xFF);
- FsWriteFileHeader();
- FsWriteWmaHeader();
- //OledShowIcon(0xFFFF,0xFF,0xFF);
- ShowProgress(0xFF,0xFF,0xFF);
- }
- #endif //Walace070130#1 end
- if(!gbFsUnableUse) //Walace060629#2
- {
- #if(NANDRESTORE_EN)
- CheckNandReStore(); //Scott061212
- #endif //tne CDB with SD
- #if(UI_USE_CLASS_LIST)
- if((gxbFsDelId&FSDEL_SCAN_DB)==0) //Force scan data base again, doesn't need to check rec file
- #endif
- {
- CheckRecFile();
- }
- #if(UI_USE_CLASS_LIST)
- CheckCdbReflash();
- #endif
- NandFinishJob();
- }
- /*
- #if(UI_USE_CLASS_LIST)
- if(gxbFsDelId&FSDEL_SCAN_DB) //Force scan data base again
- {
- SetModifyFlag(MSC_DATA_HAVE_MODIFIED);
- if(CdbInit())
- SetModifyFlag(MSC_DATA_NOT_MODIFIED);
- else
- SetModifyFlag(MSC_DATA_HAVE_MODIFIED);
- }
- else
- #endif
- {
- CheckRecFile();
- #if(UI_USE_CLASS_LIST)
- if( ((gxbFsDelId & FSDEL_NEXT_PM)!=FSDEL_GO_MTP) && ((gxbFsDelId & FSDEL_NEXT_PM)!=FSDEL_GO_USB) )
- CheckCdbReflash();
- #endif
- }
- */
- #if(SETTING_FOR_ICE_START )
- while(1) { }; //stop here
- #else
- switch(gxbFsDelId & FSDEL_NEXT_PM)
- {
- // WHH #1 301_061220(start)
- case FSDEL_GO_SAVE:
- gxbModuleState=MODULE_INITCHK;
- LoadProgram(PM_SAVE_SETTING,NORMAL_CODE);
- break;
- // WHH #1 301_061220(end)
- case FSDEL_GO_DVR:
- gxbModuleState=MODULE_INITCHK; //Walace060607#1 PlayProcess
- LoadProgram(PM_PLAY_DVR,NORMAL_CODE);
- break;
- case FSDEL_GO_FM:
- gxbModuleState=MODULE_INITCHK; //Walace060607#1 PlayProcess
- gxbFmPreset=0x00; //Walace060714#2
- LoadProgram(PM_FM,NORMAL_CODE);
- break;
- case FSDEL_GO_HST:
- LoadProgram(PM_HOST,NORMAL_CODE);
- break;
- case FSDEL_GO_MTP:
- #if(DRM_MODE_EN)
- LoadProgram(PM_MTP_INIT,NORMAL_CODE); //load MTP program
- #else
- LoadProgram(PM_USB,NORMAL_CODE); //load USB program
- #endif
- break;
- case FSDEL_GO_PLAY:
- gxbModuleState=MODULE_INITCHK; //Walace060607#1 PlayProcess
- LoadProgram(PM_PLAY_FAT_LARGE,NORMAL_CODE);
- break;
- case FSDEL_GO_PHO: // Walace050916
- gxbModuleState=MODULE_INITCHK; //NandRestore
- LoadProgram(PM_PHOTO_VIEW,NORMAL_CODE);
- break;
- case FSDEL_GO_VIDEO: // Walace051124#Video //Walace060926#1 VideoResume
- gxbModuleState=MODULE_INITIAL; //NandRestore
- LoadProgram(PM_VIDEO_FLIST,NORMAL_CODE);
- break;
- case FSDEL_GO_SYS:
- case FSDEL_GO_FCTRL: //tne 2007/01/12 #1
- LoadProgram(PM_SYSTEM,NORMAL_CODE);
- break;
- case FSDEL_GO_USB:
- LoadProgram(PM_USB,NORMAL_CODE); //load USB program
- break;
- //Vicky060301
- #if(ENABLE_AMUSE_FUNC)
- case FSDEL_GO_AMUSE:
- IE=0;
- #if(ENABLE_SD_FUNCTION)
- SD_POWER_OFF();
- #endif
- obSYSSOFTRSTCTRL&=0xF7; //reset dsp
- obSYSSOFTRSTCTRL|=DSP_RST_DIS; //dsp enable
- obPMSIZE|=0x04; //MCU USE ALL
- LoadProgram(PM_AMUSE,NORMAL_CODE); //load AMUSE
- break;
- #endif
- //End
- }
- #endif
- //code will step into each LoadProgram() and won't return
- }
- #if(UI_USE_CLASS_LIST)
- //clean or set MSC modify flag and reset play class mode
- void SetModifyFlag(BYTE bModifyFlag) large
- {
- NandPrivateEn();
- #if(NEW_FLASH)
- gfCommonModified=TRUE; //Allen060510#0 new_nf
- #endif
- ReadSettingData(FS_LRC);
- //tne CDB with SD
- if(bModifyFlag>=SD_DATA_NOT_MODIFIED)
- {
- SRAM_LRC_ACCESS(SRAM_SD_MODIFY_FLAG)=bModifyFlag;
- }
- else
- {
- SRAM_LRC_ACCESS(SRAM_MSC_MODIFY_FLAG)=bModifyFlag;
- }
- SRAM_LRC_ACCESS(SRAM_PLAY_CLASS_MODE)=P_CLASS_MODE_FILE;
- FsWrite(SAVE_SETTING_NAND_ADD, 1, FS_LRC);
- NandPrivateDis();
- }
- #endif
- #if(UI_USE_CLASS_LIST)
- //check the necessary of CDB reflash //tne CDB with SD
- void CheckCdbReflash(void) large
- {
- BYTE bOldStorType;
- if( ((gxbFsDelId & FSDEL_NEXT_PM)==FSDEL_GO_MTP) || ((gxbFsDelId & FSDEL_NEXT_PM)==FSDEL_GO_USB) )
- return;
- if(gxbStorage==STOR_NAND)
- {
- NandPrivateEn();
- ReadSettingData(FS_LRC);
- NandPrivateDis();
- if( (SRAM_LRC_ACCESS(SRAM_MSC_MODIFY_FLAG)==MSC_DATA_HAVE_MODIFIED) ||(gxbFsDelId&FSDEL_SCAN_DB))
- {
- SetModifyFlag(MSC_DATA_HAVE_MODIFIED);
- bOldStorType=gxbStorage;
- gxbStorType=STOR_NAND;
- gxbStorage=STOR_NAND;
- if(CdbInit())
- SetModifyFlag(MSC_DATA_NOT_MODIFIED);
- gxbStorType=bOldStorType;
- gxbStorage=bOldStorType;
- //CDB might set ERR_CDB_OVER_MAX but return TRUE here
- //CDB is ready to use but maybe lost some music
- //You could check the error code to show some message here
- gxbErrCode=ERR_NO_ERROR;
- }
- }
- else
- {
- SetModifyFlag(SD_DATA_HAVE_MODIFIED);
- if(CdbInit())
- SetModifyFlag(SD_DATA_NOT_MODIFIED);
- //CDB might set ERR_CDB_OVER_MAX but return TRUE here
- //CDB is ready to use but maybe lost some music
- //You could check the error code to show some message here
- gxbErrCode=ERR_NO_ERROR;
- }
- }
- #endif
- //check lost rec file
- void CheckRecFile(void) large
- {
- if(gxbStorage!=STOR_NAND) //not support
- return;
- #if(NEW_FLASH) //Allen060607 new_nf
- NandSettingEn();
- ReadSettingData(FS_LRC);
- NandPrivateDis();
- if(SRAM_LRC_ACCESS(SRAM_RECING_FLAG)==SAVE_REC_STILL_REC) //File lost
- {
- //#if(USE_STEP_UP_CONVERTER)
- McuClockDivfAdjust(0x02);// WHH #1 061017
- //#else
- // obCLKMCUDIVF=0x02;
- //#endif
- //allen060607 start from RecoverRecFile()
- stFsInitChk.bPathDepth=1;
- stFsInitChk.dwDirSec[1]=*((DWORD *)&SRAM_LRC_ACCESS(SRAM_RECING_ENTRY_SEC));
- stFsInitChk.wDirOffset[1]=*((WORD *)&SRAM_LRC_ACCESS(SRAM_RECING_ENTRY_OFF));
- stFsInitChk.dwFileTotalSector=*((DWORD *)&SRAM_LRC_ACCESS(SRAM_RECING_FILE_SEC));
- stFsInitChk.dwFileSize=(stFsInitChk.dwFileTotalSector<<9);
- stFsInitChk.dwDirStartSec=*((DWORD *)&SRAM_LRC_ACCESS(SRAM_RECING_ENTRY_SEC));
- //allen060607 end
- if(gxbFsDelId & FSDEL_INIT_FS)
- {
- gxdwFirstEmptyClu=2;
- gxdwFirstEmptyClu=FindEmptyClu();
- //FsRecInit();
- }
- //try to recover file here
- RecoverRecFile();
- //#if(USE_STEP_UP_CONVERTER)
- McuClockDivfAdjust(0x08);// WHH #1 061017 //CheckWHH
- //#else
- // obCLKMCUDIVF=0x02;
- //#endif
- }
- #else
- NandPrivateEn();
- ReadSettingData(FS_LRC);
- NandPrivateDis();
- if(SRAM_LRC_ACCESS(SRAM_RECING_FLAG)==SAVE_REC_STILL_REC) //File lost
- {
- //#if(USE_STEP_UP_CONVERTER)
- McuClockDivfAdjust(0x02);// WHH #1 061017
- //#else
- // obCLKMCUDIVF=0x02;
- //#endif
- //obCLKSRAMDIVF=0x00;
- //obCLKSMDIVF=0x00;
- //allen060607 start from RecoverRecFile()
- stFsInitChk.bPathDepth=1;
- stFsInitChk.dwDirSec[1]=*((DWORD *)&SRAM_LRC_ACCESS(SRAM_RECING_ENTRY_SEC));
- stFsInitChk.wDirOffset[1]=*((WORD *)&SRAM_LRC_ACCESS(SRAM_RECING_ENTRY_OFF));
- stFsInitChk.dwFileTotalSector=*((DWORD *)&SRAM_LRC_ACCESS(SRAM_RECING_FILE_SEC));
- stFsInitChk.dwFileSize=(stFsInitChk.dwFileTotalSector<<9);
- stFsInitChk.dwDirStartSec=*((DWORD *)&SRAM_LRC_ACCESS(SRAM_RECING_ENTRY_SEC));
- //allen060607 end
- if(gxbFsDelId & FSDEL_INIT_FS)
- {
- gxdwFirstEmptyClu=2;
- gxdwFirstEmptyClu=FindEmptyClu();
- //FsRecInit();
- }
- //try to recover file here
- RecoverRecFile();
- //#if(USE_STEP_UP_CONVERTER)
- McuClockDivfAdjust(0x08);// WHH #1 061017 //CheckWHH
- //#else
- // obCLKMCUDIVF=0x02;
- //#endif
- //obCLKSRAMDIVF=0x03;
- //obCLKSMDIVF=0x03;
- }
- #endif
- }
- void CleanRecFileFlag(void) large
- {
- #if(NEW_FLASH) //allen060607 new_nf
- NandSettingEn();
- gfCommonModified=TRUE;
- ReadSettingData(FS_LRC);
- SRAM_LRC_ACCESS(SRAM_RECING_FLAG)=SAVE_REC_FINISH_REC;
- FsWrite(SAVE_SETTING_NAND_ADD, 1, FS_LRC);
- NandPrivateDis();
- #else
- NandPrivateEn();
- ReadSettingData(FS_LRC);
- SRAM_LRC_ACCESS(SRAM_RECING_FLAG)=SAVE_REC_FINISH_REC;
- FsWrite(SAVE_SETTING_NAND_ADD, 1, FS_LRC);
- NandPrivateDis();
- #endif
- }
- void RecoverRecFile(void) large
- {
- WORD wAddrOffset;
- DWORD dwTotalCluster,dwCurFatNum,dwNextFatNum;
- BYTE bRecFileName[11],bI; //tne 2006/06/20 #1
- //NeedToCheck
- #if 0 //Source20500_061208v2 have the following code ?? check this section!
- stFsInitChk.bPathDepth=1;
- stFsInitChk.dwDirSec[1]=*((DWORD *)&gxbLyrics[SRAM_RECING_ENTRY_SEC+gxwOffsetLrcSec]);
- stFsInitChk.wDirOffset[1]=*((WORD *)&gxbLyrics[SRAM_RECING_ENTRY_OFF+gxwOffsetLrcSec]);
- #if(USE_SPECIAL_REC_PRC) //Scott060610
- stFsInitChk.dwFileTotalSector=gdwFileSector;
- #else
- stFsInitChk.dwFileTotalSector=*((DWORD *)&gxbLyrics[SRAM_RECING_FILE_SEC+gxwOffsetLrcSec]);
- #endif
- stFsInitChk.dwFileSize=(stFsInitChk.dwFileTotalSector<<9);
- stFsInitChk.dwDirStartSec=*((DWORD *)&gxbLyrics[SRAM_RECING_ENTRY_SEC+gxwOffsetLrcSec]);
- #endif
- FsRead(stFsInitChk.dwDirSec[1],1,FS_DATA_0_0);
- wAddrOffset=stFsInitChk.wDirOffset[1]+gxwOffsetDataSec;
- /*
- if( (gxbFsData[wAddrOffset+8]=='M') &&
- (gxbFsData[wAddrOffset+8]=='P') &&
- (gxbFsData[wAddrOffset+8]=='3') )
- */
- if( (gxbFsData[wAddrOffset+8]=='M') && //Tne060310#1
- (gxbFsData[wAddrOffset+9]=='P') &&
- (gxbFsData[wAddrOffset+10]=='3') )
- { gxbMusicType=M_MP3; }
- else
- { gxbMusicType=M_WAV; }
- //Walace060926#3 code size start
- DWORDFsClusterCopy((PBYTE)&stFsInitChk.dwFileStartClu,gxbFsData+wAddrOffset);
- /*if(gxbFatType==FAT_32)
- {
- stFsInitChk.dwFileStartClu=((DWORD)gxbFsData[wAddrOffset+0x15]<<24) | //start cluster number of this file
- ((DWORD)gxbFsData[wAddrOffset+0x14]<<16) |
- ((DWORD)gxbFsData[wAddrOffset+0x1b]<<8) | gxbFsData[wAddrOffset+0x1a] ;
- }
- else //FAT12 or FAT16
- {
- stFsInitChk.dwFileStartClu=((WORD)gxbFsData[wAddrOffset+0x1b]<<8) |//start cluster number of this file
- gxbFsData[wAddrOffset+0x1a];
- }
- */
- //Walace060926#3 code size end
- if(stFsInitChk.dwFileTotalSector==0)
- {
- //no size, unable recover, del the file entry
- gxbFsData[wAddrOffset]=0xE5;
- FsWrite(stFsInitChk.dwDirSec[1],1,FS_DATA_0_0);
- }
- else
- {
- //tne 2006/06/20 #1 //keep file name
- for(bI=0;bI<11;bI++)
- bRecFileName[bI]=gxbFsData[wAddrOffset+bI];
- //restore file entry size
- //Walace060926#3 code size start
- DWORDReverseCopy(gxbFsData+wAddrOffset+0x1c,(PBYTE)&stFsInitChk.dwFileSize);
- gxbFsData[wAddrOffset+0x1c]=(BYTE)stFsInitChk.dwFileSize;
- gxbFsData[wAddrOffset+0x1d]=(BYTE)(stFsInitChk.dwFileSize>>8);
- gxbFsData[wAddrOffset+0x1e]=(BYTE)(stFsInitChk.dwFileSize>>16);
- gxbFsData[wAddrOffset+0x1f]=(BYTE)(stFsInitChk.dwFileSize>>24);
- //Walace060926#3 code size end
- FsWrite(stFsInitChk.dwDirSec[1],1,FS_DATA_0_0);
- dwTotalCluster=((stFsInitChk.dwFileTotalSector-1)/gbSecPerClu)+1;
- dwCurFatNum=stFsInitChk.dwFileStartClu;
- while(dwTotalCluster)
- {
- dwNextFatNum=FatRead(dwCurFatNum); //search next fat number
- //FAT break...start to recover file
- if(dwNextFatNum==0)
- {
- dwTotalCluster--;
- while(dwTotalCluster)
- {
- gxdwFirstEmptyClu++;
- gxdwFirstEmptyClu=FindEmptyClu(); //Find next empty cluster
- FatWrite(dwCurFatNum,gxdwFirstEmptyClu);
- dwCurFatNum=gxdwFirstEmptyClu;
- dwTotalCluster--;
- gxdwNumFreeClu--;
- }
- FsWriteEndOfFatEntry(dwCurFatNum);
- //Fix record information
- gxdwFirstEmptyClu++;
- gxdwFirstEmptyClu=FindEmptyClu();
- gxdwRecFileStartClu=gxdwFirstEmptyClu;
- break;
- }
- dwCurFatNum=dwNextFatNum;
- dwTotalCluster--;
- }
- if(gxbMusicType==M_WAV)
- {
- gpstFileIndex=&stFsInitChk;
- FsWriteFileHeader();
- FsWrite(gxdwData+((gpstFileIndex->dwFileStartClu)-2)*gbSecPerClu,1,FS_DATA_0_0);
- }
- //tne 2006/06/20 #1 //strat
- NandPrivateEn(); //060710
- #if(NEW_FLASH)
- gfCommonModified=TRUE; //060710
- #endif
- ReadSettingData(FS_LRC);
- for(bI=0;bI<11;bI++)
- gxbLyrics[SRAM_LAST_DVR_FILE+bI+gxwOffsetLrcSec]=bRecFileName[bI];
- FsWrite(SAVE_SETTING_NAND_ADD,1,FS_LRC);
- NandPrivateDis();
- //tne 2006/06/20 #1 //end
- }
- CleanRecFileFlag();
- if(gxbFsDelId & FSDEL_INIT_FS)
- {
- //unknow free size, let os search free size again
- gxdwNumFreeClu=0xFFFFFFFF;
- }
- FsInfoUpdate();
- NandFinishJob();
- }
- /*
- void UiDispyWorkBar(BYTE bPercent) large
- {
- BYTE bI;
- if(bPercent>100)
- return;
- LcdGoto(6,12);
- LcdWriteData(0xFF);
- LcdWriteData(0x81);
- for(bI=0;bI<bPercent;bI++)
- {
- LcdWriteData(0xBD);
- }
- while(bI<=100)
- {
- LcdWriteData(0x81);
- bI++;
- }
- LcdWriteData(0xFF);
- }
- */
- /*
- void UiShowCancelButton(void) large
- {
- BYTE bLen,bI,bJ;
- bLen=LcdShowSysString(SYS_STR_CANCEL,5,LCD_AUTO_CENTER_COL);
- bI=((MAX_COLNUM+1-bLen)>>1);
- LcdGoto(5,bI-4);
- LcdWriteData(0xFF);
- LcdGoto(4,bI-3);
- LcdWriteData(0x80);
- LcdGoto(6,bI-4);
- LcdWriteData(0xFF);
- LcdGoto(7,bI-3);
- LcdWriteData(0x01);
- LcdGoto(5,bI+bLen+3);
- LcdWriteData(0xFF);
- LcdGoto(4,bI+bLen+2);
- LcdWriteData(0x80);
- LcdGoto(6,bI+bLen+3);
- LcdWriteData(0xFF);
- LcdGoto(7,bI+bLen+2);
- LcdWriteData(0x01);
- LcdGoto(4,bI-2);
- for(bJ=0;bJ<bLen+4;bJ++)
- LcdWriteData(0xC0);
- LcdGoto(7,bI-2);
- for(bJ=0;bJ<bLen+4;bJ++)
- LcdWriteData(0x03);
- LcdReverse(5,bI-3,2,bLen+6);
- }
- */
- API void UiDispCtrl(BYTE bStatus) large
- {
- BYTE bCurtPercen;
- BYTE bClkCtrlTmp=obCLKMCUDIVF;
- bCurtPercen=((DWORD)gxwCurrentFileNum*100)/gxwNumTotalFiles;
- //#if(USE_STEP_UP_CONVERTER)
- McuClockDivfAdjust(0x08);// WHH #1 061017
- //#else
- // obCLKMCUDIVF=0x08;
- //#endif
- //LCD_CTRL_EN();
- switch(bStatus)
- {
- case UI_CDB_INIT_START:
- //LcdWritePic(cbIcon_Hourglass_2,1,54,4,22);
- //UiDispyWorkBar(0);
- //UiShowCancelButton();
- //OLED_CLEAR_ALL(); //Walace060501#3
- //OledShowIcon(ICON_UPDATE_DB,SEG3,LINE0);
- OledShowIconNew(2,IM_WAITING,0,0); //tne 2007/01/09 #3
- #if(UI_USE_PROGRESS_BAR)
- ShowProgress((OLED_MAX_COL-PROGRESS_MAX)/2,185,0); //tne 2007/01/09 #3
- #endif
- #if(UI_DISP_CDB_WORK_INF & !SETTING_FOR_ICE_START)
- //wait to get current time
- dwCdbWorkTime=gxdwNowTime;
- EX0=1;
- EA=1;
- while(dwCdbWorkTime==gxdwNowTime) { };
- dwCdbWorkTime=gxdwNowTime;
- #endif
- break;
- case UI_CDB_INIT_END:
- #if(UI_DISP_CDB_WORK_INF)
- dwCdbWorkTime = gxdwNowTime-dwCdbWorkTime;
- LcdClearAll();
- #if(CDB_OPTION_DATA_CACHE)
- LcdShowTitleNum(dwCdbWorkTime,0,0,4);
- LcdShowTitleNum(gxwCacheHitRateNum,2,0,4);
- LcdShowTitleNum(gxwNumTotalFiles*10,2,32,4);
- #endif
- #if(CDB_OPTION_SYS_CACHE)
- LcdShowTitleNum(gxwSysCacheHitRateNum,4,0,4);
- LcdShowTitleNum(gxwWriteFlashNum,4,32,4);
- LcdShowTitleNum(gxwSysCacheTimeStamp,4,64,4);
- #endif
- gxbLcdCounter=0;
- while(gxbLcdCounter<75) { };
- #endif
- //tne 2006/12/05 #3
- #if(UI_USE_PROGRESS_BAR)
- ShowProgress((OLED_MAX_COL-PROGRESS_MAX)/2,185,PROGRESS_MAX); //tne 2007/01/09 #3
- #endif
- break;
- case UI_CDB_CLASS_ENDING:
- //UiDispyWorkBar(100);
- #if(UI_USE_PROGRESS_BAR)
- ShowProgress((OLED_MAX_COL-PROGRESS_MAX)/2,185,PROGRESS_MAX); //tne 2007/01/09 #3
- #endif
- break;
- case UI_CDB_CLASS_BUILDING:
- //only show odd number to decrease display overhead
- if(gxwCurrentFileNum&0x01)
- {
- /*
- #if(UI_DISP_CDB_HOURGLASS)
- //not display 6 hourglass because it change too fast
- if(gxwCurrentFileNum>6)
- {
- LcdWritePic(pbIconHourGlassPoint[xbHourGlassNum],0,52,3,20);
- xbHourGlassNum++;
- if(xbHourGlassNum>=6)
- xbHourGlassNum=0;
- }
- #endif
- */
- //UiDispyWorkBar(bCurtPercen);
- #if(UI_USE_PROGRESS_BAR)
- ShowProgress((OLED_MAX_COL-PROGRESS_MAX)/2,185,(((WORD)bCurtPercen*PROGRESS_MAX)/100)); //tne 2007/01/09 #3
- #endif
- }
- break;
- default:
- //do nothing...
- break;
- }
- //LCD_CTRL_DIS();
- //#if(USE_STEP_UP_CONVERTER)
- McuClockDivfAdjust(bClkCtrlTmp);// WHH #1 061017
- //#else
- // obCLKMCUDIVF=bClkCtrlTmp;
- //#endif
- }