📄 fs_api.h
字号:
typedef struct FS_BG_DATA {
struct FS_BG_DATA* pNext;
FS_U32 NumBytes;
FS_U32 NumBytesRem; /* Remaining bytes to transfer */
void * pData;
FS_FILE * pFile;
FS_U8 Operation;
void (*pfOnCompletion) (void * pData); /* Optional completion routine */
void * pCompletionData; /* Optional data for completion routine */
char IsCompleted;
} FS_BG_DATA; /* Information for background data */
void FS_Daemon(void);
void FS_FReadNonBlock (void *pData,
FS_U32 NumBytes,
FS_FILE *pFile,
FS_BG_DATA * pBGData, /* User supplied management block */
void (*pfOnCompletion) (void * pData), /* Optional completion routine */
void * pCompletionData /* Optional data for completion routine */
);
void FS_FWriteNonBlock(const void *pData,
FS_U32 NumBytes,
FS_FILE *pFile,
FS_BG_DATA * pBGData, /* User supplied management block */
void (*pfOnCompletion) (void * pData), /* Optional completion routine */
void * pCompletionData /* Optional data for completion routine */
);
char FS_IsCompleted(FS_BG_DATA * pBGData);
/*********************************************************************
*
* directory types
*/
#define FS_ino_t int
typedef struct FS_DIRENT {
FS_ino_t d_ino; /* to be POSIX conform */
char DirName[FS_DIRNAME_MAX];
FS_U8 Attributes;
FS_U32 Size;
FS_U32 TimeStamp;
} FS_DIRENT;
typedef struct FS_DIR {
FS_DIRENT dirent; /* current directory entry */
FS_DIR_POS DirPos; /* current position in file */
FS_U16 DirEntryIndex;
FS_U32 FirstCluster;
FS_VOLUME * pVolume;
FS_I16 error; /* error code */
FS_U8 InUse; /* handle in use mark */
} FS_DIR;
/*********************************************************************
*
* Global function prototypes
*
**********************************************************************
*/
/*********************************************************************
*
* "Standard" file I/O functions
*/
FS_FILE * FS_FOpen(const char *pFileName, const char *pMode);
int FS_FClose(FS_FILE *pFile);
FS_SIZE_T FS_FRead ( void *pData, FS_SIZE_T Size, FS_SIZE_T N, FS_FILE *pFile);
FS_SIZE_T FS_FWrite(const void *pData, FS_SIZE_T Size, FS_SIZE_T N, FS_FILE *pFile);
/*********************************************************************
*
* Non-standard file I/O functions
*/
FS_U32 FS_Read (FS_FILE *pFile, void *pData, FS_U32 NumBytes);
FS_U32 FS_Write(FS_FILE *pFile, const void *pData, FS_U32 NumBytes);
/*********************************************************************
*
* file pointer handling
*/
int FS_FSeek(FS_FILE *pFile, FS_I32 Offset, int Origin);
FS_I32 FS_FTell(FS_FILE *pFile);
/*********************************************************************
*
* I/O error handling
*/
int FS_FEof(FS_FILE *pFile);
FS_I16 FS_FError(FS_FILE *pFile);
void FS_ClearErr(FS_FILE *pFile);
const char * FS_ErrorNo2Text(int ErrCode);
/*********************************************************************
*
* file functions
*/
int FS_CopyFile (const char * sSource, const char * sDest);
FS_U32 FS_GetFileSize(FS_FILE *pFile);
int FS_Move (const char * sExistingName, const char * sNewName);
int FS_Remove (const char * pFileName);
int FS_Rename (const char * sOldName, const char * sNewName);
int FS_Verify (FS_FILE * pFile, const void *pData, FS_U32 NumBytes);
/*********************************************************************
*
* IOCTL
*/
int FS_IoCtl(const char *pDevName, FS_I32 Cmd, FS_I32 Aux, void *pBuffer);
/*********************************************************************
*
* FS_Volume
*/
int FS_GetVolumeName(int Index, char * pBuffer, int MaxSize);
int FS_GetNumVolumes(void);
FS_VOLUME * FS_AddDevice (const FS_DEVICE_TYPE * pDevType);
void FS_UnmountDevice(const FS_DEVICE * pDevice);
/*********************************************************************
*
* FS_Attrib
*/
int FS_SetFileAttributes(const char * pName, FS_U8 Attributes);
FS_U8 FS_GetFileAttributes(const char * pName);
/*********************************************************************
*
* FS_Time
*/
int FS_SetFileTime (const char * pName, FS_U32 TimeStamp);
int FS_GetFileTime (const char * pName, FS_U32 * pTimeStamp);
void FS_TimeStampToFileTime(FS_U32 TimeStamp, FS_FILETIME * pFileTime);
void FS_FileTimeToTimeStamp(const FS_FILETIME * pFileTime, FS_U32 * pTimeStamp);
/*********************************************************************
*
* directory functions
*/
#if FS_POSIX_DIR_SUPPORT
void FS_DirEnt2Attr(FS_DIRENT *pDirEnt, FS_U8* pAttr);
void FS_DirEnt2Name(FS_DIRENT *pDirEnt, char* pBuffer);
FS_U32 FS_DirEnt2Size(FS_DIRENT *pDirEnt);
FS_U32 FS_DirEnt2Time(FS_DIRENT *pDirEnt);
FS_U32 FS_GetNumFiles(FS_DIR *pDir);
FS_DIR *FS_OpenDir(const char *pDirName);
int FS_CloseDir(FS_DIR *pDir);
FS_DIRENT *FS_ReadDir(FS_DIR *pDir);
void FS_RewindDir(FS_DIR *pDir);
int FS_MkDir(const char *pDirName);
int FS_RmDir(const char *pDirName);
#endif /* FS_POSIX_DIR_SUPPORT */
/*********************************************************************
*
* file system control functions
*/
int FS_Init (void);
int FS_Exit (void);
FS_U32 FS_AssignCache (const char * pName, void * pData, FS_I32 NumBytes);
FS_U32 FS__AssignCache (FS_DEVICE * pDevice, void * pData, FS_I32 NumBytes);
/*********************************************************************
*
* Formatting
*/
int FS_Format (const char *pDevice, FS_FORMAT_INFO * pFormatInfo);
int FS_FormatLow(const char *pDevice);
/*********************************************************************
*
* Partition related
*/
FS_U32 FS_GetMediaStartSec(const FS_U8* pBuffer);
signed char FS_LocatePartition(FS_VOLUME * pVolume);
/*********************************************************************
*
* Space information functions
*/
#if (FS_FAT_DISKINFO)
FS_U32 FS_GetFreeSpace (const char *pDevName, FS_U8 DevIndex);
FS_U32 FS_GetTotalSpace(const char *pDevName, FS_U8 DevIndex);
#endif
/*********************************************************************
*
* endian translation functions
*/
FS_U32 FS_ReadU32 (const FS_U8 *pBuffer);
FS_U16 FS_ReadU16 (const FS_U8 *pBuffer);
void FS_WriteU32( FS_U8 *pBuffer, FS_U32 Data);
void FS_WriteU16( FS_U8 *pBuffer, unsigned Data);
/*********************************************************************
*
* Debug support
*/
void FS_X_Log (const char *s);
void FS_X_Warn (const char *s);
void FS_X_ErrorOut(const char *s);
/*********************************************************************
*
* FLASH driver specific
*/
typedef struct {
FS_U32 Off;
FS_U32 Size;
FS_U32 EraseCnt;
FS_U16 NumUsedSectors;
FS_U16 NumFreeSectors;
FS_U16 NumEraseableSectors;
} FS_FLASH_SECTOR_INFO;
typedef struct {
FS_U32 NumPhysSectors;
FS_U32 NumLogSectors;
FS_U32 NumUsedSectors; /* Number of used logical sectors */
} FS_FLASH_DISK_INFO;
void FS_FLASH_GetDiskInfo (FS_U8 Unit, FS_FLASH_DISK_INFO * pDiskInfo);
void FS_FLASH_GetSectorInfo(FS_U8 Unit, FS_U32 PhysSectorIndex, FS_FLASH_SECTOR_INFO * pSectorInfo);
#if defined(__cplusplus)
} /* Make sure we have C-declarations in C++ programs */
#endif
#endif /* _FS_API_H_ */
/*************************** End of file ****************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -