⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fs_api.h

📁 SAMSUNG 5009的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
	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 + -