📄 fs_api.h
字号:
FS_DRV_E,
FS_DRV_F,
FS_DRV_G,
FS_DRV_H,
FS_DRV_I,
FS_DRV_J,
FS_DRV_K,
FS_DRV_NULL = 0xFF
} FS_Drive_et;
/*! Date information
*/
typedef struct _FS_Date_st
{
BYTE2 year;
BYTE1 month;
BYTE1 day;
} FS_Date_st;
/*! File system api return types
*/
typedef SINT FS_RETURN;
#define FS_RET_NO_ERROR 0
#define FS_RET_NO_LIST -1
#define FS_RET_READ_ERROR -2
#define FS_RET_INVALID_PATHNAME -3
#define FS_RET_FORMAT_UNDEFINED -4
#define FS_RET_NO_DEVICE_MOUNT -5
#define FS_RET_NOT_OPENED -6
#define FS_RET_DRIVE_FULL -7
/*********************************************
* Data types
*********************************************/
/*!
* "bEntry_flag".
* This option for file filter.
* flag bits are following,
*
* 1st bit : Au.
* 2nd bit : Pi.
* 3rd bit : Vi.
* 4th bit : Tx.
*
* Vi : Video file.
* Pi : Picture file.
* Au : Audio file.
* Tx : Text file.
*
* This flag only for directory entry.
*/
struct _FS_Entry_st
{
ULONG iEntry_lba;
UINT iEntry_size;
UCHAR cEntry_type;
CHAR szEntry_name[FS_MAX_FILE_NAME_LENGTH];
BYTE1 cEntry_name_len;
#if FS_SUPPORT_FILE_FILTER
BYTE1 bEntry_flag;
#endif
BYTE4 iEntry_index;
BYTE4 iEntry_limit;
BYTE1 cLevel; /* to support depth search */
#if FS_SUPPORT_FILE_COUNT
BYTE2 wAud_count;
BYTE2 wVid_count;
BYTE2 wImg_count;
#endif
#if FS_SUPPORT_DATE_INFO
struct _FS_Date_st stEntry_date;
#endif
#if _APP_CAP_MMP_CD_PARSE_ALL_FILES_AT_ONCE // cydrain 20060731
struct _FS_Entry_st *pstEntry_audio;
#endif
struct _FS_Entry_st *pstEntry_next;
struct _FS_Entry_st *pstEntry_pre;
};
typedef struct _FS_Entry_st FS_Entry_st;
typedef struct _FS_Entry_st FS_Dir_st;
typedef struct _FS_Entry_st FS_File_st;
/*!
* Open file structure
*/
typedef struct _FS_OpenFile_st
{
FS_Drive_et etDrv;
BYTE1 etMode; /** read or write mode */
FS_Entry_st *pOpened_file;
} FS_OpenFile_st;
/*!
* Mount information structure.
* _giFs_cache_size has to be times of FS_MAX_CD_DUMP_COUNT.
* For example,.
* eiCache_size = FS_MAX_CD_DUMP_COUNT * n(UINT).
* Here are one start address of cache buffer and one start lba of cached.
* epCache_addr : cache buffer start address.
* eiCache_start_lba : first lba of cached on cache buffer.
* Here are two read pointer for cache.
* One is epCache_read_addr for byte index in cache buffer. This pointer is
* controled by byte indexing during data parsing.
* Another one is eiCache_read_lba for SECTOR(LBA) index in cache buffer.
* This pointer is used for finding out epCache_read_addr to start.
***************************************************************************/
typedef struct _FS_MntInfo_st
{
FS_System_et etFs; /*!< File system type */
FS_Device_et etDev; /*!< Device type */
FS_Drive_et etDrv; /*!< Drive character */
UINT eiLS_size; /*!< logical sector size defined in File system */
UINT eiPS_size; /*!< Physical sector size */
UINT eiList_cap;
BOOL ebIs_ucs; /* Wide character or not (ex. UNICODE) */
BYTE4 eiCache_size;
BYTE1 *epCache_addr; /*!< Cache buffer pointer */
BYTE4 eiCache_start_lba; /*!< start lba written on cache */
BYTE4 eiCache_read_lba;
BYTE1 *epCache_read_addr; /*!< current read addr of cache */
#if 1//FS_SUPPORT_FS_FLATTEN || FS_SUPPORT_PRE_LIST
FS_Dir_st *pstFlatten_list;
BYTE4 eiFlatten_num;
#endif
struct _FS_Entry_st *pstRoot_info; /* Root folder information */
VOID *efpReader; /* Reader function pointer */
VOID *efpMount;
VOID *efpUnmount;
VOID *efpPlayer;
VOID *efpFlatten;
VOID *pstFilePlay; /* structure for non-ODD media play task */
} FS_MntInfo_st;
/*!
* Reader function pointer
*/
typedef FS_RETURN (*FS_READER)(LBA, BYTE4, BOOL, VOID *);
/*!
* Mount function pointer type
*/
typedef FS_RETURN (*FS_MOUNT)( FS_MntInfo_st *, UINT );
/*!
* Un Mount function pointer type
*/
typedef VOID (*FS_UNMOUNT)( UINT );
/*!
* read/play function pointer type
*/
typedef FS_RETURN (*FS_PLAYER)( FS_File_t, VOID *, BYTE4, BYTE4, BYTE1, BOOL, UINT );
/*!
* Flatten function pointer tye
*/
typedef FS_Entry_st *(*FS_FLATTEN)(FS_MntInfo_st *, FS_Entry_st *, BYTE4, BYTE1 );
/*!
* FAT Reader function pointer
*/
typedef SH_RETURN (*FAT_READER)(UINT, UINT, UCHAR*);
/*!
* File system main control structure.
*
* Support wide character or not
* bSupport_ucs
*
* how many device mounted
* This value will be matched with drive chacter.
* ecMount_cnt
* Mounted device list
* Opened file handler list
* This array will keep opened file handler pointer list.
* Because each file system internal file handling structure little bit
* different.
*/
typedef struct _FS_CtrlInfo_st
{
BOOL bSupport_ucs;
BYTE1 ecMount_cnt;
struct _FS_MntInfo_st *pstMnt_list[FS_MAX_MOUNT_COUNT];
struct _FS_OpenFile_st *pFopen_list[FS_MAX_FILE_OPEN];
} FS_CtrlInfo_st;
/*! \fn FS_RETURN FS_Mount( CHAR * szDevice, FS_System_et etSys, FS_Drive_et *etMnt_drv )
* \brief Mount the specific file system.
* \param szDevice The name of device(IN).
* \param etSys The type of file system(IN).
* \param etMnt_drv Mounted drive type(OUT).
* \exception
* \return FS_RETURN
*/
/*********************************************
* Functions Define
*********************************************/
FS_RETURN FS_Mount( CHAR *szDevice, FS_System_et etSys, FS_Drive_et *etMnt_drv );
FS_RETURN FS_Unmount( FS_Drive_et etMnt_drv );
FS_Entry_st *FS_ListEntry(FS_Drive_et etMnt_drv, FS_Entry_st *srcList, CHAR *pPath, SINT index, UINT iCap);
FS_Entry_st *FS_DirectListEntry( FS_Drive_et etMnt_drv, FS_Entry_st *entry, UINT iCap );
VOID FS_DeleteEntryList( FS_Entry_st *pstEntry );
FS_File_t FS_Open( FS_Drive_et etMnt_drv, FS_Entry_st *srcList, FS_File_st *pOpen_file, CHAR *szName, SINT index, BYTE1 om );
FS_RETURN FS_Close( FS_File_t tFile );
FS_RETURN FS_Read( FS_File_t tFile, VOID *pDst_addr, UINT iStart, UINT iSize, BYTE1 cMode );
FS_RETURN FS_Play( FS_File_t tFile, UINT iStart, UINT iSize, BOOL bLast, UINT extra_idx );
FS_RETURN FS_Stop( FS_File_t tFile ); // cydrain 20051123
FS_Entry_st *FS_Flatten(FS_Drive_et etMnt_drv, BYTE4 iCap, BYTE1 cType );
BYTE4 FS_FileType( CHAR *szFilename );
FS_MntInfo_st *FS_GetMountInfo( FS_Drive_et etMnt_drv );
FS_System_et FS_GetMountedSystem( FS_Drive_et etMnt_drv );
FS_Entry_st *FS_GetRootInfo( FS_Drive_et etMnt_drv );
VOID FS_CloseAllFiles( VOID );
FS_Entry_st *FS_FindEntry( FS_Entry_st *srcList, CHAR *szPath,
SINT index, BYTE1 bEntry_type );
FS_RETURN FS_getOpenFileInfo( FS_File_t id, FS_File_st *fsInfo );
BOOL FS_isUnicode( VOID );
VOID FS_TrimFilename( CONST CHAR *fname, CHAR *dstName, UINT size );
UINT FS_GetMaxFileNumInFolder(VOID);
#if FS_SUPPORT_UNICODE
CHAR *FS_wcscpy(CHAR *dst, CONST CHAR *src);
CHAR *FS_wcsncpy(CHAR *dst, CONST CHAR *src, UINT size);
CHAR *FS_wcscat(CHAR *dst, CONST CHAR *src);
CHAR *FS_wcsncat(CHAR *dst, CONST CHAR *src, UINT size);
UINT FS_wcslen(CONST CHAR *s1);
SINT FS_wcscmp(CONST CHAR *s1, CONST CHAR *s2);
SINT FS_wcsncmp(CONST CHAR *s1, CONST CHAR *s2, UINT size);
CHAR *FS_wcstok (CHAR *wcs, CONST CHAR *delim);
#define FS_STRCPY(x,y) ((FS_isUnicode()==TRUE) ? FS_wcscpy(x,y) :strcpy(x,y))
#define FS_STRNCPY(x,y,n) ((FS_isUnicode()==TRUE) ? FS_wcsncpy(x,y,n) :strncpy(x,y,n))
#define FS_STRCAT(x,y) ((FS_isUnicode()==TRUE) ? FS_wcscat(x,y) :strcat(x,y))
#define FS_STRNCAT(x,y,n) ((FS_isUnicode()==TRUE) ? FS_wcsncat(x,y,n) :strncat(x,y,n))
#define FS_STRCMP(x,y) ((FS_isUnicode()==TRUE) ? FS_wcscmp(x,y) :strcmp(x,y))
#define FS_STRNCMP(x,y,n) ((FS_isUnicode()==TRUE) ? FS_wcsncmp(x,y,n) :strncmp(x,y,n))
#define FS_STRLEN(x) ((FS_isUnicode()==TRUE) ? FS_wcslen(x) :strlen(x))
#define FS_STRTOK(x,y) ((FS_isUnicode()==TRUE) ? FS_wcstok(x,y) :strtok(x,y))
#if 0
#define FS_DEVICE_CD ((FS_isUnicode()==TRUE) ? (CHAR *)"\0C\0D\0\0" :(CHAR *)"CD")
#define FS_DEVICE_DVD ((FS_isUnicode()==TRUE) ? (CHAR *)"\0D\0V\0D\0\0" :(CHAR *)"DVD")
#define FS_DEVICE_USB ((FS_isUnicode()==TRUE) ? (CHAR *)"\0U\0S\0B\0\0" :(CHAR *)"USB")
#define FS_DEVICE_FX ((FS_isUnicode()==TRUE) ? (CHAR *)"\0F\0X\0\0" :(CHAR *)"FX")
#endif
#define FS_ROOT_DIR_NAME ((FS_isUnicode()==TRUE) ? (CHAR *)"\0R\0o\0o\0t\0\0" :(CHAR *)"Root")
#define FS_SELF_DIR_NAME ((FS_isUnicode()==TRUE) ? (CHAR *)"\0.\0\0" :(CHAR *)".")
#define FS_UP_DIR_NAME ((FS_isUnicode()==TRUE) ? (CHAR *)"\0.\0.\0\0" :(CHAR *)"..")
#define FS_DELIM_NAME ((FS_isUnicode()==TRUE) ? (CHAR *)"\0.\0\0" :(CHAR *)".")
/* File name matching strings */
#define FS_FILE_EXT_MP3 ((FS_isUnicode()==TRUE) ? (CHAR *)"\0M\0P\0\x033\0\0" :(CHAR *)"MP3")
#define FS_FILE_EXT_MP2 ((FS_isUnicode()==TRUE) ? (CHAR *)"\0M\0P\0\x032\0\0" :(CHAR *)"MP2")
#define FS_FILE_EXT_WMA ((FS_isUnicode()==TRUE) ? (CHAR *)"\0W\0M\0A\0\0" :(CHAR *)"WMA")
#define FS_FILE_EXT_AC3 ((FS_isUnicode()==TRUE) ? (CHAR *)"\0A\0C\0\x033\0\0" :(CHAR *)"AC3")
#define FS_FILE_EXT_JPG ((FS_isUnicode()==TRUE) ? (CHAR *)"\0J\0P\0G\0\0" :(CHAR *)"JPG")
#define FS_FILE_EXT_JPEG ((FS_isUnicode()==TRUE) ? (CHAR *)"\0J\0P\0E\0G\0\0" :(CHAR *)"JPEG")
#define FS_FILE_EXT_GIF ((FS_isUnicode()==TRUE) ? (CHAR *)"\0G\0I\0F\0\0" :(CHAR *)"GIF")
#define FS_FILE_EXT_WMV ((FS_isUnicode()==TRUE) ? (CHAR *)"\0W\0M\0V\0\0" :(CHAR *)"WMV")
#define FS_FILE_EXT_MPG ((FS_isUnicode()==TRUE) ? (CHAR *)"\0M\0P\0G\0\0" :(CHAR *)"MPG")
#define FS_FILE_EXT_MPEG ((FS_isUnicode()==TRUE) ? (CHAR *)"\0M\0P\0E\0G\0\0" :(CHAR *)"MPEG")
#define FS_FILE_EXT_AVI ((FS_isUnicode()==TRUE) ? (CHAR *)"\0A\0V\0I\0\0" :(CHAR *)"AVI")
#define FS_FILE_EXT_ASF ((FS_isUnicode()==TRUE) ? (CHAR *)"\0A\0S\0F\0\0" :(CHAR *)"ASF")
#define FS_FILE_EXT_DIVX ((FS_isUnicode()==TRUE) ? (CHAR *)"\0D\0I\0V\0X\0\0" :(CHAR *)"DIVX")
#define FS_FILE_EXT_SWF ((FS_isUnicode()==TRUE) ? (CHAR *)"\0S\0W\0F\0\0" :(CHAR *)"SWF")
#define FS_FILE_EXT_DAT ((FS_isUnicode()==TRUE) ? (CHAR *)"\0D\0A\0T\0\0" :(CHAR *)"DAT")
#define FS_FILE_EXT_VOB ((FS_isUnicode()==TRUE) ? (CHAR *)"\0V\0O\0B\0\0" :(CHAR *)"VOB")
#define FS_FILE_EXT_SMI ((FS_isUnicode()==TRUE) ? (CHAR *)"\0S\0M\0I\0\0" :(CHAR *)"SMI")
#define FS_FILE_EXT_SMIL ((FS_isUnicode()==TRUE) ? (CHAR *)"\0S\0M\0I\0L\0\0" :(CHAR *)"SMIL") // cydrain 20060530
/* 2005. 11. 4 modified by Taijin Kwon. written by Hyun seung Seo - */
#define FS_FILE_EXT_PSB ((FS_isUnicode()==TRUE) ? (CHAR *)"\0P\0S\0B\0\0" :(CHAR *)"PSB")
#define FS_FILE_EXT_TXT ((FS_isUnicode()==TRUE) ? (CHAR *)"\0T\0X\0T\0\0" :(CHAR *)"TXT")
#define FS_FILE_EXT_SUB ((FS_isUnicode()==TRUE) ? (CHAR *)"\0S\0U\0B\0\0" :(CHAR *)"SUB")
#define FS_FILE_EXT_SRT ((FS_isUnicode()==TRUE) ? (CHAR *)"\0S\0R\0T\0\0" :(CHAR *)"SRT")
#define FS_FILE_EXT_SSA ((FS_isUnicode()==TRUE) ? (CHAR *)"\0S\0S\0A\0\0" :(CHAR *)"SSA")
#define FS_FILE_EXT_ASS ((FS_isUnicode()==TRUE) ? (CHAR *)"\0A\0S\0S\0\0" :(CHAR *)"ASS")
#define FS_FILE_EXT_IDX ((FS_isUnicode()==TRUE) ? (CHAR *)"\0I\0D\0X\0\0" :(CHAR *)"IDX") //azureming@060421
#define FS_FILE_EXT_FW ((FS_isUnicode()==TRUE) ? (CHAR *)"\0A\0B\0\x037\0\0" :(CHAR *)"AB7")
#else
#define FS_STRCPY(x,y) strcpy(x,y)
#define FS_STRNCPY(x,y,n) strncpy(x,y,n)
#define FS_STRCAT(x,y) strcat(x,y)
#define FS_STRNCAT(x,y,n) strncat(x,y,n)
#define FS_STRCMP(x,y) strcmp(x,y)
#define FS_STRNCMP(x,y,n) strncmp(x,y,n)
#define FS_STRLEN(x) strlen(x)
#define FS_STRTOK(x,y) strtok(x,y)
#define FS_ROOT_DIR_NAME (CHAR *)"Root"
#define FS_SELF_DIR_NAME (CHAR *)"."
#define FS_UP_DIR_NAME (CHAR *)".."
#define FS_DELIM_NAME (CHAR *)"."
/* File name matching strings */
#define FS_FILE_EXT_MP3 (CHAR *)"MP3"
#define FS_FILE_EXT_MP2 (CHAR *)"MP2"
#define FS_FILE_EXT_WMA (CHAR *)"WMA"
#define FS_FILE_EXT_AC3 (CHAR *)"AC3"
#define FS_FILE_EXT_JPG (CHAR *)"JPG"
#define FS_FILE_EXT_JPEG (CHAR *)"JPEG"
#define FS_FILE_EXT_FAT_JPEG (CHAR *)"JPE"
#define FS_FILE_EXT_GIF (CHAR *)"GIF"
#define FS_FILE_EXT_WMV (CHAR *)"WMV"
#define FS_FILE_EXT_MPG (CHAR *)"MPG"
#define FS_FILE_EXT_MPEG (CHAR *)"MPEG"
#define FS_FILE_EXT_FAT_MPEG (CHAR *)"MPE"
#define FS_FILE_EXT_AVI (CHAR *)"AVI"
#define FS_FILE_EXT_ASF (CHAR *)"ASF"
#define FS_FILE_EXT_DIVX (CHAR *)"DIVX"
#define FS_FILE_EXT_FAT_DIVX (CHAR *)"DIV"
#define FS_FILE_EXT_SWF (CHAR *)"SWF"
#define FS_FILE_EXT_DAT (CHAR *)"DAT"
#define FS_FILE_EXT_VOB (CHAR *)"VOB"
#define FS_FILE_EXT_SMI (CHAR *)"SMI"
#define FS_FILE_EXT_SMIL (CHAR *)"SMIL" // cydrain 20060530
/* 2005. 11. 4 modified by Taijin Kwon. written by Hyun seung Seo - */
#define FS_FILE_EXT_PSB (CHAR *)"PSB"
#define FS_FILE_EXT_TXT (CHAR *)"TXT"
#define FS_FILE_EXT_SUB (CHAR *)"SUB"
#define FS_FILE_EXT_SRT (CHAR *)"SRT"
#define FS_FILE_EXT_SSA (CHAR *)"SSA"
#define FS_FILE_EXT_ASS (CHAR *)"ASS"
#define FS_FILE_EXT_IDX (CHAR *)"IDX" //azureming@060421
#define FS_FILE_EXT_FW (CHAR *)"AB7"
#define FS_FILE_EXT_BIN (CHAR *)"BIN"
#endif
#define FS_DEVICE_CD (CHAR *)"CD"
#define FS_DEVICE_DVD (CHAR *)"DVD"
#define FS_DEVICE_USB (CHAR *)"USB"
#define FS_DEVICE_FX (CHAR *)"FX"
#define FS_ROOT_DIR_NAME_MNT (CHAR *)"Root"
#ifdef __cplusplus
}
#endif
#endif /* _FS_API_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -