- 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源码
ClassDataBase.h
资源名称:SDK_M5661.rar [点击查看]
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:10k
源码类别:
压缩解压
开发平台:
C++ Builder
- /*==========================================================================
- Copyright (c) 2004 ALi Corporation. All Rights Reserved
- File: CDB.h
- content: class data base header file
- History: Created by TNE 2005/8/24
- ==========================================================================*/
- #ifdef _CDB_H_
- #define EXTERN
- #define _AT_(addr) _at_ addr
- #else
- #define EXTERN extern
- #define _AT_(addr)
- #endif
- //================ Option ===================
- // Set this define to save dir info
- #define CDB_OPTION_SAVE_DIR_INFO 0
- // Set this define to enable data cache for building database
- #define CDB_OPTION_DATA_CACHE 1
- // Set this define to enable sys cache for building database
- #define CDB_OPTION_SYS_CACHE 1
- // Search Dir Info Cache Size
- #define CDB_SEARCH_DIR_CACHE_SIZE 3
- // Database cache size for top node
- #define CDB_TOP_DATA_CACHE_SIZE 3
- // Database cache size for enter node
- #define CDB_ENTER_DATA_CACHE_SIZE 4
- // Database cache size for title node
- #define CDB_TITLE_DATA_CACHE_SIZE 5
- // Database cache size for system (sector)
- #define CDB_SYS_CACHE_SIZE 16
- //================ Const Define =================
- //CDB Start Sector
- #define CDB_START_SECTOR_INDEX_ADD 0x0E //Tne051103 #1
- #define CDB_MAX_LEN_ADD 506
- #define CDB_LEN_MIN_VAL 6 //tne 2005/12/30 #1 //CDB min allocated sector
- #define CDB_MAX_SAFE_LEN (gxwCdbMaxSec-CDB_LEN_MIN_VAL)
- // CDB Base Header Address
- #define CDB_HEADER_TAG_START_POINT_ADD 0x00
- #define CDB_HEADER_GENRE_STRAT_ADD 0x00
- #define CDB_HEADER_ARTIST_START_ADD 0x04
- #define CDB_HEADER_ALBUM_START_ADD 0x08
- #define CDB_HEADER_TITLE_START_ADD 0x0C
- #define CDB_HEADER_TAG_LAST_POINT_ADD 0x10
- #define CDB_HEADER_GENRE_LAST_ADD 0x10
- #define CDB_HEADER_ARTIST_LAST_ADD 0x14
- #define CDB_HEADER_ALBUM_LAST_ADD 0x18
- #define CDB_HEADER_TITLE_LAST_ADD 0x1C
- #define CDB_HEADER_TOTAL_DIR_INF_ADD 0x20
- #define CDB_HEADER_TOTAL_MUSIC_ADD 0x22
- #define CDB_HEADER_LAST_POINT_ADD 0x24
- #define CDB_HEADER_GENRE_NUM_ADD 0x28
- #define CDB_HEADER_ARTIST_NUM_ADD 0x2A
- #define CDB_HEADER_ALBUM_NUM_ADD 0x2C
- #define CDB_HEADER_TITLE_NUM_ADD 0x2E
- // CDB Dir Info Address
- #define CDB_DIR_INF_START_ADD 0x30
- #define CDB_DIR_INF_DEPTH_ADD 0x00
- #define CDB_DIR_INF_DIR_SEC_ADD 0x01
- #define CDB_DIR_INF_DIR_OFF_ADD 0x05
- #define CDB_DIR_INF_START_SEC_ADD 0x07
- #define CDB_DIR_INF_PRE_DIR_INF_ADD 0x0B
- // CDB Class Point Address
- #define CDB_CLASS_NEXT_POINT_ADD 0x00
- #define CDB_CLASS_PRE_POINT_ADD 0x04
- #define CDB_CLASS_ENTER_POINT_ADD 0x08
- #define CDB_CLASS_BACK_POINT_ADD 0x0C
- #define CDB_CLASS_ENTER_LAST_POINT_ADD 0x14
- // CDB Class Info Address
- #define CDB_CLASS_MODE_ADD 0x00
- #define CDB_CLASS_ITEM_NUM_ADD 0x01
- #define CDB_CLASS_DEPTH_ADD 0x03
- #define CDB_CLASS_DIR_SEC_ADD 0x04
- #define CDB_CLASS_DIR_OFF_ADD 0x08
- #define CDB_CLASS_TOTAL_MUSIC_ADD 0x08
- #define CDB_CLADD_START_SEC_ADD 0x0A
- #define CDB_CLASS_DIR_INFO_NUM_ADD 0x0E
- #define CDB_CLASS_TOTAL_CHILD_ADD 0x0E
- #define CDB_CLASS_STRING 0x10
- // Class Mode
- #define CDB_CLASS_MODE_GENRE 0x00
- #define CDB_CLASS_MODE_ARTIST 0x01
- #define CDB_CLASS_MODE_ALBUM 0x02
- #define CDB_CLASS_MODE_TITLE 0x03
- #define CDB_CLASS_MODE_DELETE 0x80 //tne dir del //del bit
- // Search Type:
- #define CDB_SEARCH_WAY 0xF0
- #define CDB_SEARCH_CLASS_MODE 0x0F
- // Search Way // DO NOT Change the sequence
- #define CDB_SEARCH_NEXT 0x00
- #define CDB_SEARCH_PREV 0x10
- #define CDB_SEARCH_ENTER 0x20
- #define CDB_SEARCH_BACK 0x30
- #define CDB_SEARCH_FIRST 0x40
- #define CDB_SEARCH_ENTER_LAST 0x50
- #define CDB_SEARCH_LAST 0x60
- #define CDB_SERACH_GENRE CDB_CLASS_MODE_GENRE
- #define CDB_SEARCH_ARTIST CDB_CLASS_MODE_ARTIST
- #define CBD_SEARCH_ALBUM CDB_CLASS_MODE_ALBUM
- #define CDB_SEARCH_TITLE CDB_CLASS_MODE_TITLE
- #define CDB_SEARCH_FIRST_GENRE (CDB_SEARCH_FIRST|CDB_SERACH_GENRE)
- #define CDB_SEARCH_FIRST_ARTIST (CDB_SEARCH_FIRST|CDB_SEARCH_ARTIST)
- #define CDB_SEARCH_FIRST_ALBUM (CDB_SEARCH_FIRST|CBD_SEARCH_ALBUM)
- #define CDB_SEARCH_FIRST_TITLE (CDB_SEARCH_FIRST|CDB_SEARCH_TITLE)
- #define CDB_SEARCH_LAST_GENRE (CDB_SEARCH_LAST|CDB_SERACH_GENRE)
- #define CDB_SEARCH_LAST_ARTIST (CDB_SEARCH_LAST|CDB_SEARCH_ARTIST)
- #define CDB_SEARCH_LAST_ALBUM (CDB_SEARCH_LAST|CBD_SEARCH_ALBUM)
- #define CDB_SEARCH_LAST_TITLE (CDB_SEARCH_LAST|CDB_SEARCH_TITLE)
- //New Node
- #define CDB_NEXT_NEW_NODE TRUE
- #define CDB_ENTER_NEW_NODE FALSE
- //CDB Make Cache module number (gxbCdbCacheModuleNum)
- #define CDB_CACHE_MODULE_MODE_MASK 0xF0
- #define CDB_CACHE_MODULE_INDEX_MASK 0x0F
- #define CDB_CACHE_MODULE_ENTER_MODE 0x00
- #define CDB_CACHE_MODULE_TOP_MODE 0x10
- #define CDB_CACHE_MODULE_TITLE_MODE 0x20
- #define CDB_CACHE_MODULE_ONLY_TITLE 0x30
- #define CDB_CACHE_MODULE_GENRE_GENRE (CDB_CACHE_MODULE_TOP_MODE|0x00)
- #define CDB_CACHE_MODULE_ARTIST_ARTIST (CDB_CACHE_MODULE_TOP_MODE|0x01)
- #define CDB_CACHE_MODULE_ALBUM_ALBUM (CDB_CACHE_MODULE_TOP_MODE|0x02)
- #define CDB_CACHE_MODULE_GENRE_ARTIST (CDB_CACHE_MODULE_ENTER_MODE|0x00)
- #define CDB_CACHE_MODULE_GENRE_ALBUM (CDB_CACHE_MODULE_ENTER_MODE|0x01)
- #define CDB_CACHE_MODULE_ARTIST_ALBUM (CDB_CACHE_MODULE_ENTER_MODE|0x02)
- #define CDB_CACHE_MODULE_GENRE_TITLE (CDB_CACHE_MODULE_TITLE_MODE|0x00)
- #define CDB_CACHE_MODULE_ARTIST_TITLE (CDB_CACHE_MODULE_TITLE_MODE|0x01)
- #define CDB_CACHE_MODULE_ALBUM_TITLE (CDB_CACHE_MODULE_TITLE_MODE|0x02)
- #define CDB_CACHE_MODULE_TITLE_TITLE CDB_CACHE_MODULE_ONLY_TITLE
- //////////////////////////////////////////////
- //CDB Make Chache
- #define CDB_SEARCH_CACHE_HIT TRUE
- #define CDB_SEARCH_CACHE_MISS FALSE
- //Write down all sys cache
- #define CDB_SYS_CACHE_WRITE_ALL 0xFF
- //Move cache data
- #define CDB_MOV_DAT_BUF_TO_CACHE TRUE
- #define CDB_MOV_DAT_CACHE_TO_BUF FALSE
- // Read Data Buffer //Bulit Data Base should use Lyrics buffer only
- #if(_PM_INIT_CHK_)
- #if(CDB_OPTION_SYS_CACHE)
- #define CDB_DATA_BUFFER gxbCdbSysCache
- #define CDB_BUFFER_OFFSET gxwOffsetLrcSec
- #define CDB_DATA_PATH FS_LRC
- #define CDB_KEPT_DATA_MODIFY gfKeptLyricModified
- #define CDB_IO_DATA_BUFFER gxbLyrics //Use this buffer to read data from NandFlash
- #else
- #define CDB_DATA_BUFFER gxbLyrics
- #define CDB_BUFFER_OFFSET gxwOffsetLrcSec
- #define CDB_DATA_PATH FS_LRC
- #define CDB_KEPT_DATA_MODIFY gfKeptLyricModified
- #endif
- #else
- #define CDB_DATA_BUFFER gxbFsData
- #define CDB_BUFFER_OFFSET gxwOffsetDataSec
- #define CDB_DATA_PATH FS_DATA_0_0
- #define CDB_KEPT_DATA_MODIFY gfKeptDataModified
- #endif
- #define CDB_NULL_POINT 0xFFFFFFFF
- #define CDB_INIT_POINT 0x00
- #define CDB_DIR_INF_NUM_ROOT 0x00
- //Genre Table Define
- #define GENRE_STR_NUM_PER_SEC
- //================ Extern variable ================
- #if(_PM_INIT_CHK_ & UI_USE_CLASS_LIST)
- EXTERN struct CDB_DATA_INFO xdata stCdbClassInfo;
- EXTERN XBYTE gxbUnKnownTag[3][16];
- EXTERN XWORD gxwCdbMaxSec;
- EXTERN XDWORD gxdwCdbStartSec; //Nick061120 DWORD -> XDWORD
- EXTERN DWORD gdwCdbAddPoint;
- EXTERN DWORD gdwCdbPreKeptCdbSec; //for more speed
- //CDB Making Database Cache
- #if(CDB_OPTION_DATA_CACHE)
- typedef struct CDB_TOP_CACHE_INFO
- {
- BYTE bHitRate;
- BYTE bCdbCacheStrLen;
- BYTE bCdbCacheFirstChr;
- BYTE bCdbCacheLastChr;
- DWORD dwCdbCacheAddPoint;
- };
- typedef struct CDB_ENTER_CACHE_INFO
- {
- BYTE bHitRate;
- BYTE bCdbCacheStrLen;
- BYTE bCdbCacheFirstChr;
- BYTE bCdbCacheLastChr;
- DWORD dwCdbParentAddPoint;
- DWORD dwCdbCacheAddPoint;
- };
- typedef struct CDB_TITLE_CACHE_INFO
- {
- BYTE bHitRate;
- DWORD dwCdbParentAddPoint;
- DWORD dwCdbCacheAddPoint;
- };
- EXTERN struct CDB_TOP_CACHE_INFO xdata stCdbTopCache[3][CDB_TOP_DATA_CACHE_SIZE];
- EXTERN struct CDB_ENTER_CACHE_INFO xdata stCdbEnterCache[3][CDB_ENTER_DATA_CACHE_SIZE];
- EXTERN struct CDB_TITLE_CACHE_INFO xdata stCdbTitleCache[3][CDB_TITLE_DATA_CACHE_SIZE];
- EXTERN XDWORD gxdwCdbLastTitlePoint;
- #endif //CDB_OPTION_DATA_CACHE
- EXTERN XBYTE gxbCdbCacheModuleNum;
- #if(CDB_OPTION_SYS_CACHE)
- typedef struct CDB_SYS_CACHE_INFO
- {
- WORD bHitTimeStamp; // bit15->cache modify flag
- DWORD dwCdbSec;
- };
- EXTERN struct CDB_SYS_CACHE_INFO xdata stCdbSysCache[CDB_SYS_CACHE_SIZE];
- EXTERN XWORD gxwSysCacheTimeStamp;
- EXTERN XBYTE gxbCurtSysCacheNum;
- EXTERN XBYTE gxbCdbSysCache[CDB_SYS_CACHE_SIZE*512] _AT_(0xA000);
- #endif
- #if(UI_DISP_CDB_WORK_INF)
- EXTERN XWORD gxwCacheHitRateNum;
- EXTERN XWORD gxwSysCacheHitRateNum;
- EXTERN XWORD gxwWriteFlashNum;
- #endif
- #endif
- #define stCdbClassInfo_dwEnterLastPoint stCdbClassInfo.dwDirSec
- #define stCdbClassInfo_wTotalChild stCdbClassInfo.wDirInfoNum
- //#define stCdbClassInfo_wItemNum stCdbClassInfo.wDirOff
- #define stCdbClassInfo_wTotalMusic stCdbClassInfo.wDirOff
- //================ Extern Function =================
- EXTERN API void CdbGetDbSector(void) large;
- EXTERN API BOOL CdbInit(void) large;
- EXTERN API void CdbLoadUnKnownTag(BYTE bClassMode) large;
- EXTERN API BOOL CdbGetClassHeader(DWORD dwCdbPoint) large;
- EXTERN API BOOL CdbGetClassString(DWORD dwCdbPoint, PBYTE pbStrBuf) large;
- EXTERN API BOOL CdbSearchData(BYTE bSearchType) large;
- EXTERN API DWORD CdbGetDataBaseHeader(BYTE bInfAdd) large;
- EXTERN API BOOL CdbReadSector(DWORD dwCdbSec) large;
- EXTERN API BOOL CdbWriteSector(DWORD dwCdbSec) large;
- EXTERN API PBYTE CdbLoadDirInfo(WORD wDirNum) large;
- EXTERN API void CdbDelLeafNode(void) large;
- EXTERN API void CdbClearHeaderInfo(void) large;
- //==================================================
- #if(!CDB_OPTION_SAVE_DIR_INFO)
- #undef CDB_SEARCH_DIR_CACHE_SIZE
- #define CDB_SEARCH_DIR_CACHE_SIZE 0
- #endif
- #undef EXTERN
- #undef _AT_