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

📄 fat_layer.h

📁 MP3 Cyclone的source code 利用FPGGA實現MP3的功能
💻 H
字号:
#ifndef _FAT_LAYER_H_#define _FAT_LAYER_H_#ifndef NUM_FS_HANDLES#define NUM_FS_HANDLES 1#endif #ifndef FAT_DEBUG#define FAT_DEBUG 0#endif typedef unsigned char BYTE; /* | host 8 */typedef unsigned short SHORT; /* | host 16 */typedef unsigned long LONG; /* | host 32 */typedef int BOOL;#define TRUE 1#define FALSE 0#define nm_packed __attribute__ ((packed,aligned(1)))typedef volatile struct BPB_FAT_STRUCT{  BYTE jmp_boot[3];      /* offset 0, size 3 */  BYTE oem_name[8];      /* offset 3, size 8 */  SHORT bytes_per_sec;   /* offset 11, size 2 */  BYTE sec_per_clust;    /* offset 13, size 1 */  SHORT rsvd_sec_cnt;    /* offset 14, size 2 */  BYTE num_fats;         /* offset 16, size 1 */  SHORT root_ent_cnt;    /* offset 17, size 2    */  SHORT tot_sec_16;      /* offset 19, size 2 */  BYTE media;            /* offset 21, size 1 */  SHORT fat_size_16;     /* offset 22, size 2 */  SHORT sec_per_trck;    /* offset 24, size 2 */  SHORT num_heads;       /* offset 26, size 2 */  LONG hidden_sec;       /* offset 28, size 4 */  LONG tot_sec_32;       /* offset 32, size 4 */}nm_packed BPB_FAT;typedef BPB_FAT * BPB_FAT_PTR;typedef volatile struct BPB_FAT_OFFSET_STRUCT{  BYTE drv_num;  BYTE rsvd_1;  BYTE boot_sig;  LONG vol_id;  BYTE vol_lab[11];  BYTE file_sys_type[8];} nm_packed BPB_FAT_OFFSET;typedef BPB_FAT_OFFSET * BPB_FAT_OFFSET_PTR;typedef BYTE * FAT_SEC_BUF;typedef volatile struct VOLUME_STRUCT{  LONG ide_op;  LONG ide_op_data;  BYTE fat_type;  /* FAT data */  LONG fat_op;  LONG fat_num;  LONG fat_data;  LONG fat_sector;  /* FAT Info */  LONG fat_entry_size;  LONG fat_bytes_per_sec;  LONG fat_size;  SHORT count_of_clusters;  /* Directory INFO */  LONG root_sector;  LONG fat_data_sector;  LONG root_sectors;  /* BPB DATA from disk */  int bpb_sector_offset;  BPB_FAT_PTR bpb_fat_ptr;  BPB_FAT_OFFSET_PTR bpb_fat_offset_ptr;  /* scratch buffer... used for fat table  */  FAT_SEC_BUF fat_buf_ptr;      /* status info about the fat */  LONG fat_buf_status;}  VOLUME;typedef VOLUME * VOLUME_PTR;typedef volatile struct FAT_FILE_STRUCT{  BYTE dir_name[11];  BYTE dir_attr[1];  BYTE dir_ntres[1];  BYTE dir_crt_time_tenth[1];  SHORT dir_crt_time;  SHORT dir_crt_date;  SHORT dir_lst_acc_date;  SHORT dir_clust_hi;  SHORT dir_wrt_time;  SHORT dir_wrt_date;  SHORT dir_clust_low;  LONG dir_file_size;} nm_packed FAT_FILE;typedef FAT_FILE * FAT_FILE_PTR;typedef volatile struct FILE_HNDL_STRUCT{  LONG cluster_op;  LONG cluster_op_data1;  LONG cluster_op_data2;  LONG file_op;  LONG file_op_data1;  char *file_op_data2;  /* stuff which corresponds to the file */  FAT_FILE_PTR dir_entry;  LONG file_status;  LONG curr_cluster;                 LONG curr_sector_index;            LONG curr_sector_offset;  LONG byte_index;  FAT_SEC_BUF fat_file_buf;    VOLUME_PTR vol_ptr;} FILE_HNDL;typedef FILE_HNDL * FILE_HNDL_PTR;/* FAT TABLE OPERATIONS */enum{  FAT_NULL_OP=0,  FAT_GET,  FAT_SET,  FAT_RESET  };/* FAT BUF STATUS INFO */enum{  FAT_NULL_CONDITION=0,    FAT_DIRTY=0x80,    FAT_CLEAN=0x40};/* CLUSTER OPERATIONS */enum{    CLUSTER_NULL_OP=0,    CLUSTER_READ,    CLUSTER_WRITE,    ROOT_READ,    ROOT_WRITE};/* FILE TYPE OPERATIONS */enum{    FILE_NULL_OP=0,      GET_ROOT_ENTRY_BY_NAME,      SET_ROOT_ENTRY_BY_NAME,      GET_ENTRY_BY_NAME,      SET_ENTRY_BY_NAME,      ABSOLUTE_SEEK,      RELATIVE_SEEK,      GET_FILE_DIRECTORY,      GET_FILE_FILE};/* FILE COUNT  */enum{  NULL_FILE_COUNT=0,    GET_NUM_FILES,    GET_FILE_BY_INDEX    };/* FILE STATUS BITS  */enum{  FILE_STATUS_NULL=0,    ATTR_READ_ONLY = 0x01,    ATTR_HIDDEN = 0x02,    ATTR_SYSTEM = 0x04,    ATTR_VOLUME_ID = 0x08,    ATTR_DIRECTORY = 0x10,    ATTR_ARCHIVE = 0x20    };/* FILE_HNDL OPERATIONS */enum{  FILE_NULL=0,    FILE_CLOSE,    FILE_OPEN,    FILE_READ,    FILE_WRITE,};/* IDE OPERATIONS */enum{  IDE_OP_OK =0,  IDE_READ_SEC=1,  IDE_WRITE_SEC,  IDE_OP_ERROR};/* ERROR CODES */enum{  UNKNOWN_FAT_OP=1,};/* FAT TYPES */enum{  UNKNOWN=0,  FAT12,  FAT16,  FAT32  };/* Function Prototypes */int FAT_GetNumFiles(FILE_HNDL_PTR file_handle);BOOL FAT_GetFileByIndex(FILE_HNDL_PTR file_handle, int index);void FAT_GetShortName(FILE_HNDL_PTR file_handle, char *buf);LONG read_file(FILE_HNDL_PTR file_handle,         BYTE *buffer,          LONG size);VOLUME_PTR doFatInit();FILE_HNDL_PTR get_file_handle(void);       #endif /* _FAT_LAYER_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -