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

📄 fs_api.h

📁 嵌入式文件系统 ucfs.包含全部源代码
💻 H
📖 第 1 页 / 共 2 页
字号:

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 + -