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

压缩解压

开发平台:

C++ Builder

  1. /***********************************************************************************
  2. *
  3. *   Copyright (C) 2006 ALi Corporation. All Rights Reserved.
  4. *
  5. *   File:     MtpDataBase.h
  6. *
  7. *   Contents:
  8. *
  9. *   History:
  10. *       Date              By         Reason
  11. *       ===========       ===========       ===========
  12. *       2006/1/05         Allen Hsu development
  13. *
  14. ************************************************************************************/
  15. #define _MDB_COMMON_ 0
  16. #define _MDB_INIT_ 0
  17. #define _MTP_PLAYLIST_ 0
  18. #if(_PM_MTP_|_PM_MTP_INIT_)
  19. #undef _MDB_COMMON_
  20. #define _MDB_COMMON_ 1
  21. #endif
  22. #if(_PM_MTP_INIT_)
  23. #undef _MDB_INIT_
  24. #define _MDB_INIT_ 1
  25. #endif
  26. #if(_PM_MTP_)
  27. #undef _MTP_PLAYLIST_
  28. #define _MTP_PLAYLIST_ 1
  29. #endif
  30. /* //Chris move to Const.h for UiCommon.c to use 060731 #1
  31. //051227 start
  32. typedef struct
  33. {
  34. BYTE bStatus;
  35. BYTE bRoundTripStatus;
  36. WORD wFormatCode;
  37. WORD wCurPoint;
  38. WORD wNextPoint; //0x0000: last object
  39. WORD wPrePoint; //0x0000: first object
  40. WORD wBackPoint; //0x0000: root
  41. WORD wEnterPoint; //0x0000: Folder but no file, 0xFFFF: file
  42. WORD wEnterLastPoint;
  43. }MTP_DB_NODE;
  44. // 0 ~ 42 : Property: mapping to variable.
  45. // 43 ~ 95 : Parameter
  46. // 96 ~ 191 : wPropEntry
  47. // 192 ~ : Property: Date
  48. typedef struct  MDB_OBJLIST//_OBJECT_PROPERTY
  49. {
  50. //
  51. // Seq must be the same with cwObjectPropertyEntry
  52. //
  53. BYTE bPersusrentGUID[12]; // 0
  54. DWORD dwObjectHandle; // 12
  55. DWORD dwObjectParentID; // 16 
  56. DWORD dwObjectSize; // 20
  57. WORD wFormatCode; // 24
  58. WORD wProtectionStatus; // 26
  59. DWORD dwStorageID; // 28
  60. WORD wAssociationType; // 32 050506
  61. DWORD dwAssociationDesc; // 34 050506
  62. DWORD dwAUDIOWAVECODEC; // 38 050506
  63. DWORD dwSAMPLERATE; // 42 050506
  64. DWORD dwAUDIOBITRATE; // 46 050506
  65. WORD wNUMBEROFCHANNELS; // 50 050506
  66. WORD wTRACK; // 52 050506
  67. BYTE  bNonConsumable; // 54 050507
  68. DWORD dwUseCount; // 55 //add by chris 06/05/02
  69. WORD wUserRating; // 59 //Chris 060503
  70. DWORD dwDuration; // 61 //add by chris 060717 #3
  71. // WORD wFreePointer; // 65 point to free
  72. BYTE  bPathDepth; // 65 => Fs Allen060123
  73. DWORD dwObjectFileEntrySec; // 66 => Fs
  74. WORD wObjectFileEntrySecOffset; // 70 => Fs
  75. DWORD dwObjectFileFirstClu; // 72 => Fs
  76. DWORD dwObjectDirStartSec; // 76  => Fs //add by tne 2005/04/22
  77. //060119start Chris modify 060717 #3
  78. XBYTE pShortFileName[11]; // 80 - 11
  79. BYTE bFileContinuous; // 91 - 1 //Allen060728
  80. BYTE bReserved1[9]; // 92 - 9
  81. XBYTE bDateCreated[49]; // 101 - 49 ENTRY_DATE_START
  82. XBYTE  bDateModified[49]; // 150 - 49
  83. //060119end
  84. }MDB_OBJLIST;
  85. */
  86. #ifdef _MTP_DATA_BASE_
  87. CBYTE cbObjectFilePath[3][25]={ "\\ObjProp\ObjList.prp", //050506
  88. "\\ObjProp\ObjName.prp",
  89. "\\ObjProp\ObjStat.prp"};
  90. CBYTE cbObjectFileName[3][12]={ "OBJLIST PRP", //050506
  91. "OBJNAME PRP",
  92. "OBJSTAT PRP"};
  93. #else
  94. extern CBYTE cbObjectFilePath;
  95. extern CBYTE cbObjectFileName;
  96. #endif
  97. #ifdef _MTP_DATA_BASE_
  98. #define EXTERN
  99. #define _AT_(addr) _at_ addr
  100. #else
  101. #define EXTERN extern
  102. #define _AT_(addr)
  103. #endif
  104. //EXTERN xdata MTP_DB_NODE stMdbNodeParent; //051227 060803 del
  105. //EXTERN xdata MTP_DB_NODE stMdbNode; //051227 060803 del
  106. //EXTERN xdata MTP_DB_NODE stMdbNodePre; //051227 060803 del
  107. EXTERN xdata MTP_DB_NODE* gpMdbNode; //051227
  108. EXTERN xdata MDB_OBJLIST* gpObjList;
  109. EXTERN xdata XBYTE* gpPtyFile; //060123
  110. EXTERN XBYTE gxbMoveBlind; //060109
  111. //060802
  112. //1 MTP Performance Increase Part
  113. #define NODECH_CURRENT 0x00
  114. #define NODECH_PARENT 0x01
  115. #define NODECH_PREVIOUS 0x02
  116. #define NODECH_NEXT 0x03
  117. EXTERN XBYTE gxbNodeCacheModify[4];
  118. EXTERN xdata MTP_DB_NODE gstMdbNode[4];// _AT_ ((0x9700));
  119. EXTERN XBYTE gxbMdbNodeCacheModify;
  120. EXTERN xdata MTP_DB_NODE gstMdbNodeCache; //060803
  121. EXTERN XBYTE gxbMdbNameFileInit;
  122. #define stMdbNode gstMdbNodeCache //060803
  123. //2 End of Performance Increase
  124. #if(_MDB_COMMON_)
  125. EXTERN API void MtpFinishJob(void);
  126. EXTERN API void SaveFsInfo(OUT FS_INF_DATA* pFs) large;
  127. EXTERN API void LoadFsInfo(IN FS_INF_DATA* pFs) large;
  128. EXTERN void MtpVariableInit(void) large;
  129. #endif
  130. #if(_MDB_COMMON_)
  131. EXTERN API void MdbFreeCache(void) large; //060801
  132. EXTERN void ConvertHandle2Index(IN DWORD dwObjectHandle, OUT BYTE* pbStorLun, OUT WORD* pwObjectIndex);
  133. EXTERN void ConvertIndex2Handle(IN BYTE bStorLun, IN WORD wObjectIndex, OUT DWORD* pdwObjectHandle);
  134. EXTERN API void MdbLoadFileStruct(WORD wObjectIndex) large; //Allen060124
  135. EXTERN API BOOL MdbMovePoint(BYTE bMoveType) large;
  136. EXTERN API void MdbBackupNode(MTP_DB_NODE* pNode) large;
  137. EXTERN API void MdbGetPropFile(WORD wObjectIndex, BYTE bFileIndex) large;
  138. //EXTERN API void MdbUpdateCreateObject(BYTE) large; 060803 del
  139. EXTERN API MdbNodeCacheInit(void) large; //060802
  140. EXTERN API MdbFreeNodeCache(void) large;//060802
  141. EXTERN API void MdbUpdateDeleteObject(WORD wDeleteIndex) large;
  142. EXTERN API bit MdbFindFreeObject(OUT WORD* pwObjectIndex) large;
  143. EXTERN API bit CheckWriteProtect(void);
  144. EXTERN API void DeleteObjectProcess(WORD wDeleteIndex, bit fDirectSet) large; //060804
  145. EXTERN API void MdbNameFileInit(void) large; //060804
  146. #endif
  147. #if(_MDB_INIT_)
  148. EXTERN API void MdbInit(BYTE,BYTE) large;
  149. #endif
  150. #if(_MTP_PLAYLIST_)
  151. EXTERN API void MtpGetObjectReferences(void) large;
  152. EXTERN API void MtpSetObjectReferences() large;
  153. #if MTP_SUPPORT_ROUNDTRIP
  154. EXTERN API void MtpGetRoundTrip(void) large; //Chris 060728 #1
  155. #endif
  156. #endif
  157. #if(_MTP_PLAYLIST_|_MTP_KERNEL_)
  158. EXTERN API void PldbTitleHeaderInit() large;
  159. #endif
  160. #if(_MTP_SPECIAL_CMD_)
  161. EXTERN API bit MtpSpecialCommand(BYTE bState) large;
  162. #endif
  163. #undef EXTERN
  164. #undef _AT_
  165. //Define
  166. #define MTPDATA_VISUAL_ROOT_DIR_NAME "MTPDATA    "
  167. #define MTPMEDIA_VISUAL_ROOT_DIR_NAME "MTPMEDIA   "
  168. #define FILE_STRING_FOLDER_FORBUILD "OBJPROP    "
  169. //060103
  170. //2 Note: if NAME number have change need to change MASK_OBJECT_NAME
  171. #define OBJ_LIST 0x00
  172. #define OBJ_NAME 0x01
  173. #define OBJ_STAT 0x02
  174. #define OBJ_NAME_2ND (OBJ_NAME|0x10)
  175. #define OBJ_NAME_ARIST (OBJ_NAME|0x20) //chris add 060427 for longfilename
  176. #define OBJ_NAME_GENRE (OBJ_NAME|0x30)
  177. #define OBJ_NAME_ALBUMNAME (OBJ_NAME|0x40)
  178. #define OBJ_NAME_ALBUMARIST (OBJ_NAME|0x50) //Chris 060728 #4
  179. #define BY_PASS_LIST (OBJ_LIST|0x10) //Chris add for load gpstFileIndex 060728 #1
  180. #define BY_PASS_STAT (OBJ_STAT|0x10)
  181. #define OBJ_REFERENCE 0x08 //Chris add 061016 #3 for support Reference
  182. #define MASK_OBJECT_NAME 0x7F //060809: for gxbMdbNameFileInit //Chris add Reference 061016 #3
  183. #define DB_NO_CACHE 0x80 //060724
  184. #define USE_FAT 0x04 //Chris Test 061013 #2
  185. //050530
  186. /*#define STORAGE_NOT_AVAILABLE 0x00
  187. #define STORAGE_INIT_DONE 0x01 //060108
  188. #define STORAGE_FSINIT_DONE 0x02 //0x01 060108
  189. #define STORAGE_DBINIT_DONE 0x03 //0x02 060108
  190. #define STORAGE_AVAILABLE 0x04 //0x03 060108
  191. */
  192. //050530
  193. #define MTPINIT_NORMAL 0x00
  194. #define MTPINIT_CARDINIT 0x01
  195. #define MTPINIT_CHECK_MSC 0x20 //MTP_CLASS_CHECK 060105
  196. #define MTPINIT_NEED_USBINIT 0x40
  197. #define MTPINIT_FULLFORMAT 0x80
  198. //050505
  199. #define OBJECT_FREE 0x00
  200. #define OBJECT_CREATE 0x01 //MTP_INIT => Delete non-complete Object
  201. #define OBJECT_VALID 0x02
  202. #define OBJECT_NEED_UPGRADE 0x80 //051227
  203. #define OBJECT_INIT_FLAG 0x40 //060104
  204. #define NODE_ENTER 0x01
  205. #define NODE_BACK 0x02
  206. #define NODE_NEXT 0x04
  207. #define NODE_PRE 0x08
  208. #define NODE_MOVE_FORWARD 0x80
  209. #define NODE_MOVE_BACKWARD 0x40
  210. #define NODE_FIRST_OBJECT 0x0000
  211. #define NODE_LAST_OBJECT 0x0000
  212. #define NODE_FOLDER_EMPTY 0x0000
  213. #define NODE_FILE 0xFFFF
  214. #define OBJINDEX_ROOT 0x0000
  215. #define OBJINDEX_NOSPACE 0xFFFF //060105
  216. #define STORAGEID_NANDFLASH 0x01000100 // logical partition ID(0x0001), physical storage ID(0x0001),
  217. #define STORAGEID_CARD 0x01000200 // logical partition ID(0x0001), physical storage ID(0x0002),
  218. #define MTP_ROOT_HANDLE 0xFFFFFFFF //Allen060210
  219. //Chris move to Common.h for UiCommon.h to use 060731 #1
  220. //RoundTripStatusType
  221. //#define DELETED 0x01
  222. //#define ADDED 0x02
  223. //#define MODIFIED 0x04