KT24-1110_65E-HA-651B/include_lib/system/fs/virfat_flash.h

148 lines
4.0 KiB
C
Raw Normal View History

2024-11-10 10:44:17 +00:00
#ifndef VIRTUAL_DISK_H
#define VIRTUAL_DISK_H
#include "system/includes.h"
#define VIR_FILE_TYPE_MP3 1
#define VIR_FILE_TYPE_WAV 2
extern const struct device_operations virfat_flash_dev_ops;
typedef enum {
FS_FAT12 = 0x01,
FS_FAT16 = 0x02,
FS_FAT32 = 0x04,
FS_EXFAT = 0x14,
} FS_TYPE;
typedef struct _virfat_flash_t {
u32 fatbase;
// u32 fatbase2;
u16 fatsize;
u32 dirbase;
u32 database;
u32 clustSize;
u32 max_clust;
u32 capacity;
u8 csize;
FS_TYPE fs_type;
char re_devname[24];
} virfat_flash_t;
typedef struct _dir_entry {
u8 name[12];
u32 fileSize;
} dir_entry_t;
#if 0
extern void virfat_flash_rand_file_size();
extern void virtual_disk_reduce_file_size(tu8 file_num);
extern void virtual_disk_remove_files(tu8 file_type);
extern void virtual_disk_reduce_file_size(tu8 file_num);
extern u8 virfat_flash_init(void *buf_512, void (*fun_read_file)(u32, u32, u8 *, u32));
#endif
#define MIN_FAT16 4086 /* Minimum number of clusters for FAT16 */
#define MIN_FAT32 65526 /* Minimum number of clusters for FAT32 */
#define AM_RDO 0x01 /* Read only */
#define AM_HID 0x02 /* Hidden */
#define AM_SYS 0x04 /* System */
#define AM_VOL 0x08 /* Volume label */
#define AM_LFN 0x0F /* LFN entry */
#define AM_DIR 0x10 /* Directory */
#define AM_ARC 0x20 /* Archive */
#define AM_FCH 0x80 /* exFAT下,文件簇连续标志 */
#define AM_FRG 0x40 /* exFAT下,文件簇BITMAP 有碎片 */
#define AM_LFN0_START 0x1
#define AM_LFN0_LEN 10
#define AM_LFN1_START 0xE
#define AM_LFN1_LEN 12
#define AM_LFN2_START 0x1C
#define AM_LFN2_LEN 4
#define AM_LFN_LEN 26
#define AM_EX_DIR_STRETCHED 0x08
#define BS_jmpBoot 0
#define BS_OEMName 3
#define BPB_BytsPerSec_l 11
#define BPB_BytsPerSec_h 12
#define BPB_SecPerClus 13
#define BPB_RsvdSecCnt 14
#define BPB_NumFATs 16
#define BPB_RootEntCnt 17
#define BPB_TotSec16 19
#define BPB_Media 21
#define BPB_FATSz16 22
#define BPB_SecPerTrk 24
#define BPB_NumHeads 26
#define BPB_HiddSec 28
#define BPB_TotSec32 32
#define BS_55AA 510
#define BS_DrvNum 36
#define BS_BootSig 38
#define BS_VolID 39
#define BS_VolLab 43
#define BS_FilSysType 54
#define BPB_FATSz32 36
#define BPB_ExtFlags 40
#define BPB_FSVer 42
#define BPB_RootClus 44
#define BPB_FSInfo 48
#define BPB_BkBootSec 50
#define BS_DrvNum32 64
#define BS_BootSig32 66
#define BS_VolID32 67
#define BS_VolLab32 71
#define BS_FilSysType32 82
#define BS_FileSysTypeexFAT 5
#define BPB_FatOffset 80
#define BPB_FatLength 84
#define BPB_ClusterHeapOffset 88
#define BPB_ClusterCount 92
#define BPB_FirstClusterOfRootDirectory 96
#define BPB_VolumeFlags 106
#define BPB_BytesPerSectorShift 108
#define BPB_SectorsPerClusterShift 109
#define BPB_NumberOfFats 110
#define MBR_Table 446
#define FSI_LeadSig 0 /* FSI: Leading signature (4) */
#define FSI_StrucSig 484 /* FSI: Structure signature (4) */
#define FSI_Free_Count 488 /* FSI: Number of free clusters (4) */
#define FSI_Nxt_Free 492 /* FSI: Last allocated cluster (4) */
///for FAT12/FAT16/FAT32
#define DIR_Name 0 /* Short file name (11) */
#define DIR_Attr 11 /* Attribute (1) */
#define DIR_NTres 12 /* NT flag (1) */
#define DIR_CrtTimeTenth 13 /* Created time sub-second (1) */
#define DIR_CrtTime 14 /* Created time (2) */
#define DIR_CrtDate 16 /* Created date (2) */
#define DIR_LstAccDate 18 /* Last accessed date (2) */
#define DIR_FstClusHI 20 /* Higher 16-bit of first cluster (2) */
#define DIR_WrtTime 22 /* Modified time (2) */
#define DIR_WrtDate 24 /* Modified date (2) */
#define DIR_FstClusLO 26
#define DIR_FileSize 28
#define LDIR_Attr 11 /* LFN attribute (1) */
#define LDIR_Type 12 /* LFN type (1) */
#define LDIR_Chksum 13 /* Sum of corresponding SFN entry */
////for exFAT
#define DIR_FileChainFlags 1
#define DIR_NameLen 3
#define DIR_AttrexFAT 4
#define DIR_FileSizeexFAT 8
#define DIR_FstClustexFAT 20
#define DIR_FileSize2exFAT 24
#endif