mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-20 00:43:22 +08:00
修复mico-sdk错误
This commit is contained in:
@@ -1,273 +1,273 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// Mountain View Silicon Tech. Inc.
|
||||
// Copyright 2012, Mountain View Silicon Tech. Inc.,ShangHai,China
|
||||
// All rights reserved
|
||||
// Filename:fsinfo.h
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __FSINFO_H__
|
||||
#define __FSINFO_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif//__cplusplus
|
||||
|
||||
#include <string.h>
|
||||
#include "fs_config.h"
|
||||
|
||||
#define SECTOR_SIZE 512 //bytes per sector
|
||||
/////////////////////////<2F>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>//////////////////////////////////////////////////////
|
||||
#define MAX_FOLDER_NUM_SAVE 2048 //save foler 1-2048 empty flag
|
||||
|
||||
// Define device ID in system.
|
||||
typedef enum _DEV_ID
|
||||
{
|
||||
DEV_ID_NONE,
|
||||
DEV_ID_USB,
|
||||
DEV_ID_SD,
|
||||
DEV_ID_SPIFS,
|
||||
DEV_ID_ATA
|
||||
} DEV_ID;
|
||||
|
||||
//<2F><>ȡ<EFBFBD><C8A1>ǰĬ<C7B0>Ϲ<EFBFBD><CFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
extern uint8_t FsGetDriveType(void);
|
||||
|
||||
// File system structure
|
||||
typedef struct _FS_INFO
|
||||
{
|
||||
DEV_ID DevID; //device id of this drive
|
||||
bool FAT32; //is FAT32 file system
|
||||
bool IsCpatFS; //is compatalbe file system
|
||||
|
||||
bool IsFATChange;
|
||||
//bool IsDIRChange;
|
||||
|
||||
int32_t CurrFATSecNum; //current FAT sector number
|
||||
//int32_t CurrDirSecNum; //current directory sector number
|
||||
|
||||
uint8_t ClusterSize; //sector per cluster
|
||||
uint32_t FatStart; //the sector number of FAT start
|
||||
uint32_t RootStart; //This is set to the cluster number of the first cluster of the root director.,
|
||||
uint32_t DataStart; //the first sector of data
|
||||
uint32_t MaxCluster; //max cluster number in this drive
|
||||
uint32_t MaxSector; //max sector number in this drive
|
||||
|
||||
uint32_t FreeClusNum;
|
||||
|
||||
uint16_t FileSum; //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ϵĸ<CFB5><C4B8><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16_t FileSumInFolder; //<2F>ļ<EFBFBD>ϵͳ<CFB5>ڲ<EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
uint16_t FolderSum; //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ϵ<EFBFBD><CFB5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16_t FolderNumInFolder; //<2F>ļ<EFBFBD>ϵͳ<CFB5>ڲ<EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
|
||||
uint16_t ValidFolderSum; //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ϵķǿ<C4B7><C7BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint16_t RootFileSum; //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
} FS_INFO;
|
||||
|
||||
|
||||
#define MAX_STACK_DEPTH 9
|
||||
typedef struct _LEAD_PATH
|
||||
{
|
||||
uint32_t SecNum[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t Offset[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
uint8_t NodesCnt;
|
||||
|
||||
uint32_t FdiSecNum; //ĩ<>˽ڵ<CBBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>Ϊ0
|
||||
|
||||
uint16_t PreFileNumInDisk; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
||||
uint16_t PreFileNumInFolder; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>֮ǰͬһ<CDAC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
||||
|
||||
uint16_t ParentFolderNum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ļ<EFBFBD><C4BC>к<EFBFBD>
|
||||
uint16_t PreFolderNumInFolder; //<2F>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>֮ǰͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>и<EFBFBD><D0B8><EFBFBD>
|
||||
uint16_t PreFolderNumInDisk; //<2F><><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD><D0B1><EFBFBD>˳<EFBFBD><CBB3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>֮ǰȫ<C7B0><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>и<EFBFBD><D0B8><EFBFBD>
|
||||
uint16_t StartFileNumNextFolder; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Լ<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʱʹ<CAB1><CAB9>
|
||||
|
||||
uint32_t FolderDirStart;
|
||||
|
||||
} LEAD_PATH;
|
||||
|
||||
#define MAX_LEAD_PATH_CNT 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ㣬<DAB5><E3A3AC>ͬ·<CDAC><C2B7><EFBFBD>ϵĽڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
|
||||
|
||||
|
||||
|
||||
#define MEMORY_PAGE_CNT 1024
|
||||
|
||||
typedef struct _FDI_STATCK
|
||||
{
|
||||
uint32_t SecNum[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t Offset[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
uint16_t FolderNum[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD>ͬһ<CDAC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ڱ<EFBFBD><DAB1>ڵ<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint8_t Depth; //<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ϵĽڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
} FDI_STATCK;
|
||||
|
||||
|
||||
//define File Description Block
|
||||
#pragma pack(1)
|
||||
typedef struct _FDB
|
||||
{
|
||||
uint8_t FileName[8];
|
||||
uint8_t ExtName[3];
|
||||
uint8_t Attribute;
|
||||
uint8_t NTRes;
|
||||
uint8_t CrtTimeTenth;
|
||||
uint16_t CreateTime;
|
||||
uint16_t CreateDate;
|
||||
uint16_t AccessDate;
|
||||
uint16_t StartHigh; //this entry's first cluster number. High
|
||||
uint16_t ModifyTime;
|
||||
uint16_t ModifyDate;
|
||||
uint16_t StartLow; //this entry's first cluster number. Low
|
||||
uint32_t Size; //32-bit uint32_t holding this file<6C><65>s size in bytes
|
||||
|
||||
} FDB;
|
||||
#pragma pack()
|
||||
|
||||
#pragma pack(1)
|
||||
// Define long name dirctory entry sturct.
|
||||
typedef struct _LONG_DIR_ENTRY
|
||||
{
|
||||
uint8_t Ord;
|
||||
uint8_t Name1[10];
|
||||
uint8_t Attribute;
|
||||
uint8_t Type;
|
||||
uint8_t CheckSum;
|
||||
uint8_t Name2[12];
|
||||
uint8_t Resv[2];
|
||||
uint8_t Name3[4];
|
||||
|
||||
} LONG_DIR_ENTRY;
|
||||
#pragma pack()
|
||||
|
||||
#define PRESEARCH_STATUS_NONE 0x00
|
||||
#define PRESEARCH_STATUS_SEARCHING 0x01
|
||||
#define PRESEARCH_STATUS_SEARCHED 0x02
|
||||
typedef struct _FS_IO_BUFFER
|
||||
{
|
||||
uint8_t Buffer[SECTOR_SIZE];
|
||||
uint32_t BufferSecNum;
|
||||
bool IsBufferChange;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Buffer <20><>BufferSecNumͬʱ<CDAC>ı<EFBFBD>
|
||||
}FS_IO_BUFFER;
|
||||
|
||||
// File system context
|
||||
typedef struct _FS_CONTEXT
|
||||
{
|
||||
// File System memory address.
|
||||
uint8_t CurrentBufferFlag; //ָʾIO_BUFFER<45><52><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||||
FS_IO_BUFFER IO_BUFFER[2]; //<2F><><EFBFBD><EFBFBD>ԭFileIoBuffer<65><72>DIR_BUFFER<45><52><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ʡ<EFBFBD>ڴ<EFBFBD>
|
||||
|
||||
//uint8_t DIR_BUFFER[SECTOR_SIZE];
|
||||
uint8_t FAT_BUFFER[SECTOR_SIZE];
|
||||
|
||||
FS_INFO gFsInfo; // File system structure
|
||||
|
||||
uint8_t gPreSearchStatus;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD><D0B1>š<EFBFBD>ǰһ<C7B0><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʵ<EFBFBD>ֿ<EFBFBD><D6BF>ٶ<EFBFBD>λ<EFBFBD><CEBB>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>ļ<EFBFBD><C4BC>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>и<EFBFBD><D0B8><EFBFBD>
|
||||
LEAD_PATH LeadPaths[MAX_LEAD_PATH_CNT];
|
||||
uint16_t CurrentInterval;
|
||||
uint16_t FdiCnt;
|
||||
uint8_t OutIndex;
|
||||
|
||||
//
|
||||
uint16_t gPreFileNum;
|
||||
uint16_t gPreFileNumInFolder;
|
||||
uint16_t gPreFolderNum;
|
||||
uint16_t gPreFolderNumInFolder;
|
||||
bool gFindFolderFlag;
|
||||
|
||||
|
||||
uint16_t FolderStartFileNum;
|
||||
|
||||
bool gMemoryPageMapValid;
|
||||
|
||||
//dir
|
||||
FDB* gCurrentEntry;
|
||||
uint32_t gDirSecNum;
|
||||
uint8_t gEntryOffset;
|
||||
uint32_t gFolderDirStart;
|
||||
FDI_STATCK FdiStack;
|
||||
//bool gExcludeRecycled = FALSE;
|
||||
|
||||
//fat_write
|
||||
uint8_t gMemoryPageMap[MEMORY_PAGE_CNT / 8];
|
||||
uint32_t gClusStepNum;
|
||||
|
||||
//folder
|
||||
uint16_t IncFileSum;
|
||||
uint16_t IncFolderSum;
|
||||
|
||||
uint8_t gFolderEmpty[MAX_FOLDER_NUM_SAVE / 8]; //one bit per folder
|
||||
|
||||
uint32_t gCurFreeClusNum;
|
||||
|
||||
|
||||
} FS_CONTEXT;
|
||||
|
||||
extern bool FSInit(uint8_t DeviceID);
|
||||
extern bool FSDeInit(uint8_t DeviceID);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>麯<EFBFBD><E9BAAF>Ϊ<EFBFBD>ļ<EFBFBD>ϵͳ<CFB5>ڲ<EFBFBD>ʹ<EFBFBD>á<EFBFBD>
|
||||
void FSINFO_Init(FS_CONTEXT* FsContext);
|
||||
void FSINFO_SaveFdi(FS_CONTEXT* FsContext);
|
||||
void FSINFO_ChangeFolderNum(FS_CONTEXT* FsContext);
|
||||
void FSINFO_ChangeFileNum(FS_CONTEXT* FsContext);
|
||||
void FSINFO_InitOpenFolder(FS_CONTEXT* FsContext, uint16_t StartFolderNum, uint16_t FolderNum);
|
||||
bool FSINFO_FindLastNode(FS_CONTEXT* FsContext, uint32_t SecNum, uint8_t Offset, uint8_t Depth, bool RecFlag, bool RootFlag);
|
||||
void FSINFO_InitOpenFile(FS_CONTEXT* FsContext, uint16_t FileNum);
|
||||
|
||||
|
||||
//<2F><>ij<EFBFBD><C4B3><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>Ϊ<EFBFBD>ǿա<C7BF>
|
||||
void ClrFolderEmptyFlag(FS_CONTEXT* FsContext, uint16_t FolderNum);
|
||||
|
||||
//<2F><>ij<EFBFBD><C4B3><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>Ϊ<EFBFBD>ա<EFBFBD>
|
||||
void SetFolderEmptyFlag(FS_CONTEXT* FsContext, uint16_t FolderNum);
|
||||
|
||||
//<2F>ж<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>ա<EFBFBD>
|
||||
bool IsFolderEmpty(FS_CONTEXT* FsContext, uint16_t FolderNum);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>ԭʼ<D4AD>ļ<EFBFBD><C4BC>кż<D0BA><C5BC><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ļ<EFBFBD><C4BC>кţ<D0BA><C5A3>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>
|
||||
uint16_t GetValidFolderNum(FS_CONTEXT* FsContext, uint16_t OriginalFolderNum);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ļ<EFBFBD><C4BC>кţ<D0BA><C5A3>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD>ļ<EFBFBD><C4BC>кš<D0BA>
|
||||
uint16_t GetOriginalFolderNum(FS_CONTEXT* FsContext, uint16_t ValidFolderNum);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
||||
//uint16_t GetValidFolderSum();
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD>ѳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
DEV_ID GetCurFsDevType(void);
|
||||
|
||||
// <20><>ȡFSɨ<53><C9A8><EFBFBD><EFBFBD><EFBFBD>벥<EFBFBD><EBB2A5>ģʽ<C4A3>ϵ<EFBFBD><CFB5><EFBFBD>Ϣ<EFBFBD><CFA2>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ID<49><44>
|
||||
#ifdef FUNC_MATCH_PLAYER_BP
|
||||
typedef struct __PLAYER_BP_RET_
|
||||
{
|
||||
int8_t BPIndex; // <20><>ƥ<EFBFBD><C6A5><EFBFBD>IJ<EFBFBD><C4B2>Ŷϵ<C5B6><CFB5><EFBFBD><EFBFBD><EFBFBD>(0~2), -1 -- not found
|
||||
uint16_t FileId; // <20><><EFBFBD>Ŷϵ<C5B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ID
|
||||
uint16_t FolderId; // <20><><EFBFBD>Ŷϵ<C5B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ID
|
||||
} PLAYER_BP_RET;
|
||||
|
||||
typedef struct _PLAYER_BP_INFO_ // <20><><EFBFBD><EFBFBD>ģʽ <20>ϵ<EFBFBD><CFB5><EFBFBD>Ϣ
|
||||
{
|
||||
uint32_t FileAddr;
|
||||
uint8_t CRC8;
|
||||
} PLAYER_BP_INFO;
|
||||
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ŷϵ<C5B6>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>FS<46><53>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
PLAYER_BP_RET* GetMatchPlayerBPRet(void);
|
||||
void SetMatchPlayerBPRet(int8_t BPIndex, uint16_t FileId, uint16_t FolderId);
|
||||
|
||||
#endif
|
||||
|
||||
const unsigned char *GetLibVersionFs(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif//__cplusplus
|
||||
|
||||
#endif
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// Mountain View Silicon Tech. Inc.
|
||||
// Copyright 2012, Mountain View Silicon Tech. Inc.,ShangHai,China
|
||||
// All rights reserved
|
||||
// Filename:fsinfo.h
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __FSINFO_H__
|
||||
#define __FSINFO_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif//__cplusplus
|
||||
|
||||
#include <string.h>
|
||||
#include "fs_config.h"
|
||||
|
||||
#define SECTOR_SIZE 512 //bytes per sector
|
||||
/////////////////////////<2F>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>//////////////////////////////////////////////////////
|
||||
#define MAX_FOLDER_NUM_SAVE 2048 //save foler 1-2048 empty flag
|
||||
|
||||
// Define device ID in system.
|
||||
typedef enum _DEV_ID
|
||||
{
|
||||
DEV_ID_NONE,
|
||||
DEV_ID_USB,
|
||||
DEV_ID_SD,
|
||||
DEV_ID_SPIFS,
|
||||
DEV_ID_ATA
|
||||
} DEV_ID;
|
||||
|
||||
//<2F><>ȡ<EFBFBD><C8A1>ǰĬ<C7B0>Ϲ<EFBFBD><CFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
extern uint8_t FsGetDriveType(void);
|
||||
|
||||
// File system structure
|
||||
typedef struct _FS_INFO
|
||||
{
|
||||
DEV_ID DevID; //device id of this drive
|
||||
bool FAT32; //is FAT32 file system
|
||||
bool IsCpatFS; //is compatalbe file system
|
||||
|
||||
bool IsFATChange;
|
||||
//bool IsDIRChange;
|
||||
|
||||
int32_t CurrFATSecNum; //current FAT sector number
|
||||
//int32_t CurrDirSecNum; //current directory sector number
|
||||
|
||||
uint8_t ClusterSize; //sector per cluster
|
||||
uint32_t FatStart; //the sector number of FAT start
|
||||
uint32_t RootStart; //This is set to the cluster number of the first cluster of the root director.,
|
||||
uint32_t DataStart; //the first sector of data
|
||||
uint32_t MaxCluster; //max cluster number in this drive
|
||||
uint32_t MaxSector; //max sector number in this drive
|
||||
|
||||
uint32_t FreeClusNum;
|
||||
|
||||
uint16_t FileSum; //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ϵĸ<CFB5><C4B8><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16_t FileSumInFolder; //<2F>ļ<EFBFBD>ϵͳ<CFB5>ڲ<EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
uint16_t FolderSum; //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ϵ<EFBFBD><CFB5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16_t FolderNumInFolder; //<2F>ļ<EFBFBD>ϵͳ<CFB5>ڲ<EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
|
||||
uint16_t ValidFolderSum; //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ϵķǿ<C4B7><C7BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint16_t RootFileSum; //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
} FS_INFO;
|
||||
|
||||
|
||||
#define MAX_STACK_DEPTH 9
|
||||
typedef struct _LEAD_PATH
|
||||
{
|
||||
uint32_t SecNum[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t Offset[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
uint8_t NodesCnt;
|
||||
|
||||
uint32_t FdiSecNum; //ĩ<>˽ڵ<CBBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>Ϊ0
|
||||
|
||||
uint16_t PreFileNumInDisk; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
||||
uint16_t PreFileNumInFolder; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>֮ǰͬһ<CDAC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
||||
|
||||
uint16_t ParentFolderNum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ļ<EFBFBD><C4BC>к<EFBFBD>
|
||||
uint16_t PreFolderNumInFolder; //<2F>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>֮ǰͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>и<EFBFBD><D0B8><EFBFBD>
|
||||
uint16_t PreFolderNumInDisk; //<2F><><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD><D0B1><EFBFBD>˳<EFBFBD><CBB3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>֮ǰȫ<C7B0><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>и<EFBFBD><D0B8><EFBFBD>
|
||||
uint16_t StartFileNumNextFolder; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Լ<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʱʹ<CAB1><CAB9>
|
||||
|
||||
uint32_t FolderDirStart;
|
||||
|
||||
} LEAD_PATH;
|
||||
|
||||
#define MAX_LEAD_PATH_CNT 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ㣬<DAB5><E3A3AC>ͬ·<CDAC><C2B7><EFBFBD>ϵĽڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
|
||||
|
||||
|
||||
|
||||
#define MEMORY_PAGE_CNT 1024
|
||||
|
||||
typedef struct _FDI_STATCK
|
||||
{
|
||||
uint32_t SecNum[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t Offset[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
uint16_t FolderNum[MAX_STACK_DEPTH]; //<2F><><EFBFBD>ڵ<EFBFBD>ͬһ<CDAC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ڱ<EFBFBD><DAB1>ڵ<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint8_t Depth; //<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ϵĽڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
} FDI_STATCK;
|
||||
|
||||
|
||||
//define File Description Block
|
||||
#pragma pack(1)
|
||||
typedef struct _FDB
|
||||
{
|
||||
uint8_t FileName[8];
|
||||
uint8_t ExtName[3];
|
||||
uint8_t Attribute;
|
||||
uint8_t NTRes;
|
||||
uint8_t CrtTimeTenth;
|
||||
uint16_t CreateTime;
|
||||
uint16_t CreateDate;
|
||||
uint16_t AccessDate;
|
||||
uint16_t StartHigh; //this entry's first cluster number. High
|
||||
uint16_t ModifyTime;
|
||||
uint16_t ModifyDate;
|
||||
uint16_t StartLow; //this entry's first cluster number. Low
|
||||
uint32_t Size; //32-bit uint32_t holding this file<6C><65>s size in bytes
|
||||
|
||||
} FDB;
|
||||
#pragma pack()
|
||||
|
||||
#pragma pack(1)
|
||||
// Define long name dirctory entry sturct.
|
||||
typedef struct _LONG_DIR_ENTRY
|
||||
{
|
||||
uint8_t Ord;
|
||||
uint8_t Name1[10];
|
||||
uint8_t Attribute;
|
||||
uint8_t Type;
|
||||
uint8_t CheckSum;
|
||||
uint8_t Name2[12];
|
||||
uint8_t Resv[2];
|
||||
uint8_t Name3[4];
|
||||
|
||||
} LONG_DIR_ENTRY;
|
||||
#pragma pack()
|
||||
|
||||
#define PRESEARCH_STATUS_NONE 0x00
|
||||
#define PRESEARCH_STATUS_SEARCHING 0x01
|
||||
#define PRESEARCH_STATUS_SEARCHED 0x02
|
||||
typedef struct _FS_IO_BUFFER
|
||||
{
|
||||
uint8_t Buffer[SECTOR_SIZE];
|
||||
uint32_t BufferSecNum;
|
||||
bool IsBufferChange;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Buffer <20><>BufferSecNumͬʱ<CDAC>ı<EFBFBD>
|
||||
}FS_IO_BUFFER;
|
||||
|
||||
// File system context
|
||||
typedef struct _FS_CONTEXT
|
||||
{
|
||||
// File System memory address.
|
||||
uint8_t CurrentBufferFlag; //ָʾIO_BUFFER<45><52><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||||
FS_IO_BUFFER IO_BUFFER[2]; //<2F><><EFBFBD><EFBFBD>ԭFileIoBuffer<65><72>DIR_BUFFER<45><52><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ʡ<EFBFBD>ڴ<EFBFBD>
|
||||
|
||||
//uint8_t DIR_BUFFER[SECTOR_SIZE];
|
||||
uint8_t FAT_BUFFER[SECTOR_SIZE];
|
||||
|
||||
FS_INFO gFsInfo; // File system structure
|
||||
|
||||
uint8_t gPreSearchStatus;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD><D0B1>š<EFBFBD>ǰһ<C7B0><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʵ<EFBFBD>ֿ<EFBFBD><D6BF>ٶ<EFBFBD>λ<EFBFBD><CEBB>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>ļ<EFBFBD><C4BC>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>и<EFBFBD><D0B8><EFBFBD>
|
||||
LEAD_PATH LeadPaths[MAX_LEAD_PATH_CNT];
|
||||
uint16_t CurrentInterval;
|
||||
uint16_t FdiCnt;
|
||||
uint8_t OutIndex;
|
||||
|
||||
//
|
||||
uint16_t gPreFileNum;
|
||||
uint16_t gPreFileNumInFolder;
|
||||
uint16_t gPreFolderNum;
|
||||
uint16_t gPreFolderNumInFolder;
|
||||
bool gFindFolderFlag;
|
||||
|
||||
|
||||
uint16_t FolderStartFileNum;
|
||||
|
||||
bool gMemoryPageMapValid;
|
||||
|
||||
//dir
|
||||
FDB* gCurrentEntry;
|
||||
uint32_t gDirSecNum;
|
||||
uint8_t gEntryOffset;
|
||||
uint32_t gFolderDirStart;
|
||||
FDI_STATCK FdiStack;
|
||||
//bool gExcludeRecycled = FALSE;
|
||||
|
||||
//fat_write
|
||||
uint8_t gMemoryPageMap[MEMORY_PAGE_CNT / 8];
|
||||
uint32_t gClusStepNum;
|
||||
|
||||
//folder
|
||||
uint16_t IncFileSum;
|
||||
uint16_t IncFolderSum;
|
||||
|
||||
uint8_t gFolderEmpty[MAX_FOLDER_NUM_SAVE / 8]; //one bit per folder
|
||||
|
||||
uint32_t gCurFreeClusNum;
|
||||
|
||||
|
||||
} FS_CONTEXT;
|
||||
|
||||
extern bool FSInit(uint8_t DeviceID);
|
||||
extern bool FSDeInit(uint8_t DeviceID);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>麯<EFBFBD><E9BAAF>Ϊ<EFBFBD>ļ<EFBFBD>ϵͳ<CFB5>ڲ<EFBFBD>ʹ<EFBFBD>á<EFBFBD>
|
||||
void FSINFO_Init(FS_CONTEXT* FsContext);
|
||||
void FSINFO_SaveFdi(FS_CONTEXT* FsContext);
|
||||
void FSINFO_ChangeFolderNum(FS_CONTEXT* FsContext);
|
||||
void FSINFO_ChangeFileNum(FS_CONTEXT* FsContext);
|
||||
void FSINFO_InitOpenFolder(FS_CONTEXT* FsContext, uint16_t StartFolderNum, uint16_t FolderNum);
|
||||
bool FSINFO_FindLastNode(FS_CONTEXT* FsContext, uint32_t SecNum, uint8_t Offset, uint8_t Depth, bool RecFlag, bool RootFlag);
|
||||
void FSINFO_InitOpenFile(FS_CONTEXT* FsContext, uint16_t FileNum);
|
||||
|
||||
|
||||
//<2F><>ij<EFBFBD><C4B3><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>Ϊ<EFBFBD>ǿա<C7BF>
|
||||
void ClrFolderEmptyFlag(FS_CONTEXT* FsContext, uint16_t FolderNum);
|
||||
|
||||
//<2F><>ij<EFBFBD><C4B3><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>Ϊ<EFBFBD>ա<EFBFBD>
|
||||
void SetFolderEmptyFlag(FS_CONTEXT* FsContext, uint16_t FolderNum);
|
||||
|
||||
//<2F>ж<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>ա<EFBFBD>
|
||||
bool IsFolderEmpty(FS_CONTEXT* FsContext, uint16_t FolderNum);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>ԭʼ<D4AD>ļ<EFBFBD><C4BC>кż<D0BA><C5BC><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ļ<EFBFBD><C4BC>кţ<D0BA><C5A3>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>
|
||||
uint16_t GetValidFolderNum(FS_CONTEXT* FsContext, uint16_t OriginalFolderNum);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ļ<EFBFBD><C4BC>кţ<D0BA><C5A3>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD>ļ<EFBFBD><C4BC>кš<D0BA>
|
||||
uint16_t GetOriginalFolderNum(FS_CONTEXT* FsContext, uint16_t ValidFolderNum);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
||||
//uint16_t GetValidFolderSum();
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD>ѳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
DEV_ID GetCurFsDevType(void);
|
||||
|
||||
// <20><>ȡFSɨ<53><C9A8><EFBFBD><EFBFBD><EFBFBD>벥<EFBFBD><EBB2A5>ģʽ<C4A3>ϵ<EFBFBD><CFB5><EFBFBD>Ϣ<EFBFBD><CFA2>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ID<49><44>
|
||||
#ifdef FUNC_MATCH_PLAYER_BP
|
||||
typedef struct __PLAYER_BP_RET_
|
||||
{
|
||||
int8_t BPIndex; // <20><>ƥ<EFBFBD><C6A5><EFBFBD>IJ<EFBFBD><C4B2>Ŷϵ<C5B6><CFB5><EFBFBD><EFBFBD><EFBFBD>(0~2), -1 -- not found
|
||||
uint16_t FileId; // <20><><EFBFBD>Ŷϵ<C5B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ID
|
||||
uint16_t FolderId; // <20><><EFBFBD>Ŷϵ<C5B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ID
|
||||
} PLAYER_BP_RET;
|
||||
|
||||
typedef struct _PLAYER_BP_INFO_ // <20><><EFBFBD><EFBFBD>ģʽ <20>ϵ<EFBFBD><CFB5><EFBFBD>Ϣ
|
||||
{
|
||||
uint32_t FileAddr;
|
||||
uint8_t CRC8;
|
||||
} PLAYER_BP_INFO;
|
||||
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ŷϵ<C5B6>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>FS<46><53>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
PLAYER_BP_RET* GetMatchPlayerBPRet(void);
|
||||
void SetMatchPlayerBPRet(int8_t BPIndex, uint16_t FileId, uint16_t FolderId);
|
||||
|
||||
#endif
|
||||
|
||||
const unsigned char *GetLibVersionFs(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif//__cplusplus
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user