Files
zTC1/mico-os/platform/MCU/MX1101/FileSystem/inc/dir.h

74 lines
2.0 KiB
C

#ifndef __DIR_H__
#define __DIR_H__
#ifdef __cplusplus
extern "C" {
#endif//__cplusplus
#include "fsinfo.h"
//file attributes define
#define ATTR_READ_ONLY 0x01
#define ATTR_HIDDEN 0x02
#define ATTR_SYSTEM 0x04
#define ATTR_VOLUME_ID 0x08
#define ATTR_DIRECTORY 0x10
#define ATTR_ARCHIVE 0x20
#define ATTR_LONG_NAME 0x0f //ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID
#define ATTR_LONG_NAME_MASK 0x3f //ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID | ATTR_DIRECTORY | ATTR_ARCHIVE
#define ATTR_RECYCLED_MASK 0x16 //ATTR_DIRECTORY | ATTR_HIDDEN | ATTR_SYSTEM
typedef enum _ENTRY_TYPE
{
ENTRY_FILE,
ENTRY_FOLDER, //文件夹目录项,不会马上进入该子文件夹
ENTRY_END, //当前目录搜索完毕
ENTRY_RECYCLED,
ENTRY_DOT,
ENTRY_LONG_NAME,
ENTRY_DELETED_FILE,
ENTRY_UNKNOWN
} ENTRY_TYPE;
void DirSetStartEntry(FS_CONTEXT* FsContext, uint32_t StartSecNum, uint8_t Offset, bool InitFlag);
uint32_t DirGetSonClusNum(FS_CONTEXT* FsContext);
uint32_t DirGetSonSecNum(FS_CONTEXT* FsContext);
void DirSetSonClusNum(FS_CONTEXT* FsContext, uint32_t ClusNum);
//在当前目录下找下一个文件目录项
uint8_t DirGetNextEntry(FS_CONTEXT* FsContext);
bool DirFindNextFolder(FS_CONTEXT* FsContext);
//进入子目录
bool DirEnterSonFolder(FS_CONTEXT* FsContext);
//返回父目录
bool DirEnterParentFolder(FS_CONTEXT* FsContext);
void RewindFolderStart(FS_CONTEXT* FsContext);
bool DirNameConvert(uint8_t* DstFileName, uint8_t* SrcFileName);
void DirGenItem(FS_CONTEXT* FsContext, uint8_t* DirName, uint32_t StartClusNum, uint32_t Size, uint8_t Attribute);
void DirGenLongItem(FS_CONTEXT* FsContext, uint8_t* longName, uint8_t* shortName, uint8_t Len);
// Load file/folder long name.
bool GetLongName(FS_CONTEXT* FsContext, uint32_t ParentFoldSect, uint32_t SectorNum, uint8_t Offset, uint8_t* LongFileName, uint8_t GetMaxLength);
bool FindNextFolder(FS_CONTEXT* FsContext);
#ifdef __cplusplus
}
#endif//__cplusplus
#endif