fs96602.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:6k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef __FS9660_H
  2. #define __FS9660_H
  3. #include "memmap.h"
  4. #include "user_init.h"
  5. #if (defined( SDRAM_16Mb_Mode ) && defined( SUPPORT_FILE_SYSTEM_MODE ))||defined(FAT_FILE_MODE)||defined(FILE_MODE_WRITE)  //sunzhh mod 20041230//liweihua mod 2004-11-2// 2004/06/12 yltseng
  6. extern  UINT32      _fs9660_buf;
  7. #else
  8. extern  UINT8    _fs9660_buf [];
  9. #endif
  10. #define ISO9660_DIR_OFFSET              _fs9660_buf
  11. #if defined( SDRAM_16Mb_Mode ) && defined( SUPPORT_FILE_SYSTEM_MODE )
  12. #define ISO9660_FILE_OFFSET             (_fs9660_buf+1*1024)
  13. #else
  14. #define ISO9660_FILE_OFFSET             (_fs9660_buf+10*1024)
  15. #endif
  16. #if defined( SDRAM_16Mb_Mode ) && defined( SUPPORT_FILE_SYSTEM_MODE )
  17. #define ISO_DIR_MAX                     30   //add max-dir limition
  18. #define ISO_FILE_MAX                    250   //add max-file limition
  19. #else
  20. #define ISO_DIR_MAX                     300   //add max-dir limition
  21. #define ISO_FILE_MAX                    3000   //add max-file limition
  22. #endif
  23. #define iso9660_dir                     ((DIR_REC *)ISO9660_DIR_OFFSET)
  24. #define iso9660_file                    ((DIR_REC *)ISO9660_FILE_OFFSET)
  25. #if defined(FAT_FILE_MODE)
  26. #define CurrentFiles1                    ((UINT16*)(SDRAM_BASE + FS9660YA * 1024+108*1024))
  27. #define CurrentFiles2                    ((UINT16*)(SDRAM_BASE + FS9660YA * 1024+109*1024))
  28. #endif
  29. #define DIR_REC_LEN                     sizeof(DIR_REC) //30
  30. typedef struct
  31. {
  32. BYTE            len_of_record;
  33. BYTE            len_of_attr;
  34. BYTE            location_le[4];
  35. BYTE            location_be[4];
  36. BYTE            length_le[4];
  37. BYTE            length_be[4];
  38. BYTE            time_stamp[7];
  39. BYTE            file_flag;
  40. BYTE            file_unit_size;
  41. BYTE            interleave_gap;
  42. UINT16          volume_seq_le;
  43. UINT16          volume_seq_be;
  44. BYTE            len_of_filename;
  45. BYTE            filename[31];
  46. } CDDirRecord;
  47. typedef struct
  48. {
  49. BYTE            len_of_dirid;
  50. BYTE            len_of_attr;
  51. BYTE            location_of_ext[4];
  52. BYTE            parent_dir_num[2];
  53. BYTE            dirname[31];
  54. } ISO_PATH_TABLE;
  55. typedef struct
  56. {
  57. UINT32          loc;    // mmssff 
  58. int             size;   // in sectors 
  59.         UINT32          AD_lba; 
  60. #if defined(ETON_DVD)&&defined(SUPPORT_CHINESE_FONT)//for Eton,liweihua 2004-11-23
  61.      char            name[16];
  62. #else
  63.         char            name[12];
  64. #endif
  65. UINT16          dir;    // amount of MP3+JPEG+GAME files under the directory
  66. #if defined(READ_DIR_AS_PC) || defined (FAT_FILE_MODE) || defined (FILE_MODE_WRITE)  //sunzhh 20041230
  67. INT16 parent_dir;//record its parent dir index
  68. #endif
  69.     #ifdef SUPPORT_FS_LONGNAME
  70.     UINT32          rec_lba;
  71.     UINT32          rec_offset;
  72.     #endif
  73. BYTE            type;
  74. BYTE            file_type; //20020730 #ifdef  SUPPORT_FILE_SYSTEM_MODE   
  75. #if defined (FAT_FILE_MODE)||defined(FILE_MODE_WRITE)//lijd 2005-1-7 16:56 
  76.     #if defined(READ_FAT_LONGNAME)&&defined(SUPPORT_FS_LONGNAME) 
  77.     char            file_short_name[9]; //linrc 2004-12-13 11:18 USE it checksum longfile name
  78. #endif
  79. char            file_ext_name[4];
  80. #endif    
  81. //#if defined(SPHE8202_FAT_WRITE_API)||defined(SPHE8202_FAT_Write_Function) //||defined(WRITE_USB) //liweihua 2004-8-16
  82. #if defined(SPHE8202_FAT_WRITE_API)||defined(SPHE8202_FAT_Write_Function)//liweihua mod 2004-12-9 14:37//lijd 2005-1-5 18:16
  83.     UINT16          presave_time;
  84.     UINT32          save_time;
  85.     UINT32          ext_info;
  86. #endif
  87. }DIR_REC;
  88. /*
  89. enum
  90. {
  91. TYPE_UNKNOWN,
  92. TYPE_GB,
  93. TYPE_BIG5,
  94. };
  95. */
  96. // 2004/04/18 yltseng, Use this struct to represent supported file type
  97. typedef struct
  98. {
  99.     char            FileExt[5];
  100.     UINT8           uiFileType;
  101.     UINT8           uiCategoryOfFile;
  102. } FILE_EXT_INFO_TABLE;
  103. //for OKO used, to record dir_index
  104. #define MAX_MENU_NO 10
  105. #define MAX_FILE_NAME_LEN 12
  106. typedef struct
  107. {
  108. int trk_no;    // how many files which a oko menu include
  109. char filename[MAX_FILE_NAME_LEN];
  110. } OKO_MENU_DATA;
  111. OKO_MENU_DATA oko_menu[MAX_MENU_NO];
  112. //functions for external reference
  113. int     read_iso9660(void);
  114. UINT32  mp3_file_msf(UINT16);
  115. UINT32  mp3_file_length(UINT16);
  116. void    get_mergefile_info();
  117. void    CalMergefilelength(UINT32*);
  118. void    iso9660_assign_name(char*, char*, int, BYTE);
  119. int     iso_search_str(char*, char*, int);
  120. void    ConvertNameFormat( char*, char*, int*, int );
  121. // 2004/04/16 yltseng, Use this function to find out if pFileName has the extension of pExtStr
  122. // note, pExtStr should not store '.', eg 'WMA' or 'MP3'
  123. int     FindFileExt( const char* pFileName, char* pExtStr );
  124. // 2004/04/16 yltseng, Use this function to convert english in pStr from lower case to upper case
  125. void    ConvertLowerCaseToUpperCase( char* pStr );
  126. // 2004/04/16 yltseng, Use this function to find last occurance of c from pStr
  127. char*   strrchr( const char* pStr, int c );
  128. // 2004/04/18 yltseng, Use this function to fill iso9660_file data structure
  129. #ifdef SUPPORT_FS_LONGNAME
  130. void SetISO9660FileInfo( UINT32 uiLoc, UINT32 uiSize, UINT32 uiDir, char* pFileName, int iType, UINT32 AD_lba, UINT32 uiRecLba, UINT32 uiRecOffset );
  131. #else
  132. void SetISO9660FileInfo( UINT32 uiLoc, UINT32 uiSize, UINT32 uiDir, char* pFileName, int iType, UINT32 AD_lba );
  133. #endif
  134. // 2004/04/18 yltseng, Use this function to process general file type ( defined in g_aFileExtInfoTable[] )
  135. int     ProcessGeneralFileType( char* pFileName, UINT32 uiFileSize );
  136. // 2004/04/18 yltseng, Use this function to process non-general file type
  137. int     ProcessNonGeneralFileType( char* pFileName, UINT32 loc, UINT32 sz, int dir_index );
  138. char*   strinstr( const char* pStr, const char* pStrSearch, int iSrcLen );
  139. #ifdef SUPPORT_FS_LONGNAME  //Maoyong 2004.06.24
  140. #ifdef HANYANG_FS_LONGNAME   //Maoyong 2004-7-6 23:29
  141. #define SCROLL_SHOW_500MS_CNT   3
  142. #define MAX_DISP_LEN   12
  143. #define SCROLL_STEP_LEN    4
  144. #else
  145. #define SCROLL_SHOW_500MS_CNT   2
  146. #define MAX_DISP_LEN   20
  147. #define SCROLL_STEP_LEN    4
  148. #endif
  149. UINT8  uFullFilename[256];
  150. UINT16 uFullFileLength;
  151. UINT8  uScrollDispFilenameSt;
  152. extern UINT8 uScrollDispFilenameFlag;
  153. extern UINT8 *wb_loc(UINT32 lsn, UINT32 offset);
  154. UINT8 GetFileFullName(int nIndex);
  155. UINT8 GetUDFFileFullName(int nIndex);
  156. void FS_ScrollDispFileName(void);
  157. #endif  //#ifdef SUPPORT_FS_LONGNAME
  158. #endif //__FS9660.H