Dependencies:   mbed

Committer:
iva2k
Date:
Thu Jan 21 01:15:42 2010 +0000
Revision:
0:1802fb31b938

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iva2k 0:1802fb31b938 1 /*
iva2k 0:1802fb31b938 2 **************************************************************************************************************
iva2k 0:1802fb31b938 3 * NXP USB Host Stack
iva2k 0:1802fb31b938 4 *
iva2k 0:1802fb31b938 5 * (c) Copyright 2008, NXP SemiConductors
iva2k 0:1802fb31b938 6 * (c) Copyright 2008, OnChip Technologies LLC
iva2k 0:1802fb31b938 7 * All Rights Reserved
iva2k 0:1802fb31b938 8 *
iva2k 0:1802fb31b938 9 * www.nxp.com
iva2k 0:1802fb31b938 10 * www.onchiptech.com
iva2k 0:1802fb31b938 11 *
iva2k 0:1802fb31b938 12 * File : usbhost_fat.h
iva2k 0:1802fb31b938 13 * Programmer(s) : Ravikanth.P
iva2k 0:1802fb31b938 14 * Version :
iva2k 0:1802fb31b938 15 *
iva2k 0:1802fb31b938 16 **************************************************************************************************************
iva2k 0:1802fb31b938 17 */
iva2k 0:1802fb31b938 18
iva2k 0:1802fb31b938 19 #ifndef USBHOST_FAT_H
iva2k 0:1802fb31b938 20 #define USBHOST_FAT_H
iva2k 0:1802fb31b938 21
iva2k 0:1802fb31b938 22 /*
iva2k 0:1802fb31b938 23 **************************************************************************************************************
iva2k 0:1802fb31b938 24 * INCLUDE HEADER FILES
iva2k 0:1802fb31b938 25 **************************************************************************************************************
iva2k 0:1802fb31b938 26 */
iva2k 0:1802fb31b938 27
iva2k 0:1802fb31b938 28 #include "usbhost_inc.h"
iva2k 0:1802fb31b938 29
iva2k 0:1802fb31b938 30 /*
iva2k 0:1802fb31b938 31 **************************************************************************************************************
iva2k 0:1802fb31b938 32 * FAT DEFINITIONS
iva2k 0:1802fb31b938 33 **************************************************************************************************************
iva2k 0:1802fb31b938 34 */
iva2k 0:1802fb31b938 35
iva2k 0:1802fb31b938 36 #define FAT_16 1
iva2k 0:1802fb31b938 37
iva2k 0:1802fb31b938 38 #define LAST_ENTRY 1
iva2k 0:1802fb31b938 39 #define FREE_ENTRY 2
iva2k 0:1802fb31b938 40 #define LFN_ENTRY 3
iva2k 0:1802fb31b938 41 #define SFN_ENTRY 4
iva2k 0:1802fb31b938 42
iva2k 0:1802fb31b938 43 #define RDONLY 1
iva2k 0:1802fb31b938 44 #define RDWR 2
iva2k 0:1802fb31b938 45
iva2k 0:1802fb31b938 46 /*
iva2k 0:1802fb31b938 47 **************************************************************************************************************
iva2k 0:1802fb31b938 48 * TYPE DEFINITIONS
iva2k 0:1802fb31b938 49 **************************************************************************************************************
iva2k 0:1802fb31b938 50 */
iva2k 0:1802fb31b938 51
iva2k 0:1802fb31b938 52 typedef struct boot_sec {
iva2k 0:1802fb31b938 53 USB_INT32U BootSecOffset; /* Offset of the boot sector from sector 0 */
iva2k 0:1802fb31b938 54 USB_INT16U BytsPerSec; /* Bytes per sector */
iva2k 0:1802fb31b938 55 USB_INT08U SecPerClus; /* Sectors per cluster */
iva2k 0:1802fb31b938 56 USB_INT32U BytsPerClus; /* Bytes per cluster */
iva2k 0:1802fb31b938 57 USB_INT16U RsvdSecCnt; /* Reserved sector count */
iva2k 0:1802fb31b938 58 USB_INT08U NumFATs; /* Number of FAT copies */
iva2k 0:1802fb31b938 59 USB_INT16U RootEntCnt; /* Root entry count */
iva2k 0:1802fb31b938 60 USB_INT16U TotSec16; /* Total sectors in the disk. !=0 if TotSec32 = 0 */
iva2k 0:1802fb31b938 61 USB_INT32U TotSec32; /* Total sectors in the disk. !=0 if TotSec16 = 0 */
iva2k 0:1802fb31b938 62 USB_INT16U FATSz16; /* Sectors occupied by single FAT table */
iva2k 0:1802fb31b938 63 USB_INT08U FATType; /* File system type */
iva2k 0:1802fb31b938 64 USB_INT32U RootDirSec; /* Sectors occupied by root directory */
iva2k 0:1802fb31b938 65 USB_INT32U RootDirStartSec; /* Starting sector of the root directory */
iva2k 0:1802fb31b938 66 USB_INT32U FirstDataSec; /* Starting sector of the first data cluster */
iva2k 0:1802fb31b938 67 } BOOT_SEC;
iva2k 0:1802fb31b938 68
iva2k 0:1802fb31b938 69 typedef struct file_entry {
iva2k 0:1802fb31b938 70 USB_INT32U FileSize; /* Total size of the file */
iva2k 0:1802fb31b938 71 USB_INT16U CurrClus; /* Current cluster of the cluster offset */
iva2k 0:1802fb31b938 72 USB_INT32U CurrClusOffset; /* Current cluster offset */
iva2k 0:1802fb31b938 73 USB_INT32U EntrySec; /* Sector where the file entry is located */
iva2k 0:1802fb31b938 74 USB_INT32U EntrySecOffset; /* Offset in the entry sector from where the file is located */
iva2k 0:1802fb31b938 75 USB_INT08U FileStatus; /* File's open status */
iva2k 0:1802fb31b938 76 } FILE_ENTRY;
iva2k 0:1802fb31b938 77
iva2k 0:1802fb31b938 78 /*
iva2k 0:1802fb31b938 79 **************************************************************************************************************
iva2k 0:1802fb31b938 80 * FUNCTION PROTOTYPES
iva2k 0:1802fb31b938 81 **************************************************************************************************************
iva2k 0:1802fb31b938 82 */
iva2k 0:1802fb31b938 83
iva2k 0:1802fb31b938 84 USB_INT32S FAT_Init (void);
iva2k 0:1802fb31b938 85
iva2k 0:1802fb31b938 86 USB_INT08U FAT_GetFATType (void);
iva2k 0:1802fb31b938 87 void PrintBootSec (void);
iva2k 0:1802fb31b938 88
iva2k 0:1802fb31b938 89 USB_INT32S FILE_Open ( USB_INT08U *file_name,
iva2k 0:1802fb31b938 90 USB_INT08U flags);
iva2k 0:1802fb31b938 91
iva2k 0:1802fb31b938 92 USB_INT32S FAT_FindEntry ( USB_INT08U *ent_name_given,
iva2k 0:1802fb31b938 93 FILE_ENTRY *entry);
iva2k 0:1802fb31b938 94
iva2k 0:1802fb31b938 95 void FAT_GetSFN (volatile USB_INT08U *entry,
iva2k 0:1802fb31b938 96 USB_INT08U *name);
iva2k 0:1802fb31b938 97
iva2k 0:1802fb31b938 98 void FAT_GetSfnName (volatile USB_INT08U *entry,
iva2k 0:1802fb31b938 99 USB_INT08U *name);
iva2k 0:1802fb31b938 100
iva2k 0:1802fb31b938 101 void FAT_GetSfnExt (volatile USB_INT08U *entry,
iva2k 0:1802fb31b938 102 USB_INT08U *ext_ptr);
iva2k 0:1802fb31b938 103
iva2k 0:1802fb31b938 104 USB_INT32S FAT_StrCaseCmp ( USB_INT08U *str1,
iva2k 0:1802fb31b938 105 USB_INT08U *str2);
iva2k 0:1802fb31b938 106
iva2k 0:1802fb31b938 107 USB_INT32U FAT_ChkEntType (volatile USB_INT08U *ent);
iva2k 0:1802fb31b938 108
iva2k 0:1802fb31b938 109 USB_INT32U FAT_ClusRead ( USB_INT16U curr_clus,
iva2k 0:1802fb31b938 110 USB_INT32U clus_offset,
iva2k 0:1802fb31b938 111 volatile USB_INT08U *buffer,
iva2k 0:1802fb31b938 112 USB_INT32U num_bytes);
iva2k 0:1802fb31b938 113
iva2k 0:1802fb31b938 114 USB_INT32U FILE_Read ( USB_INT32S fd,
iva2k 0:1802fb31b938 115 volatile USB_INT08U *buffer,
iva2k 0:1802fb31b938 116 USB_INT32U num_bytes);
iva2k 0:1802fb31b938 117 USB_INT16U FAT_GetNextClus ( USB_INT16U clus_no);
iva2k 0:1802fb31b938 118
iva2k 0:1802fb31b938 119 USB_INT32U FAT_ClusWrite ( USB_INT16U curr_clus,
iva2k 0:1802fb31b938 120 USB_INT32U clus_offset,
iva2k 0:1802fb31b938 121 volatile USB_INT08U *buffer,
iva2k 0:1802fb31b938 122 USB_INT32U num_bytes);
iva2k 0:1802fb31b938 123 USB_INT32U FILE_Write ( USB_INT32S fd,
iva2k 0:1802fb31b938 124 volatile USB_INT08U *buffer,
iva2k 0:1802fb31b938 125 USB_INT32U num_bytes);
iva2k 0:1802fb31b938 126
iva2k 0:1802fb31b938 127 void FAT_UpdateEntry ( FILE_ENTRY *entry);
iva2k 0:1802fb31b938 128
iva2k 0:1802fb31b938 129 void FAT_UpdateFAT ( USB_INT16U curr_clus,
iva2k 0:1802fb31b938 130 USB_INT16U value);
iva2k 0:1802fb31b938 131
iva2k 0:1802fb31b938 132 USB_INT16U FAT_GetFreeClus (void);
iva2k 0:1802fb31b938 133
iva2k 0:1802fb31b938 134 USB_INT32S FAT_GetFreeEntry( FILE_ENTRY *entry);
iva2k 0:1802fb31b938 135
iva2k 0:1802fb31b938 136 void FAT_PutSFN ( USB_INT08U *ent_name_given,
iva2k 0:1802fb31b938 137 FILE_ENTRY *entry);
iva2k 0:1802fb31b938 138
iva2k 0:1802fb31b938 139 USB_INT32S FAT_CreateEntry ( USB_INT08U *ent_name_given,
iva2k 0:1802fb31b938 140 FILE_ENTRY *entry);
iva2k 0:1802fb31b938 141
iva2k 0:1802fb31b938 142 void FILE_Close ( USB_INT32S fd);
iva2k 0:1802fb31b938 143
iva2k 0:1802fb31b938 144 USB_INT16U FAT_GetEndClus ( USB_INT16U clus_no);
iva2k 0:1802fb31b938 145
iva2k 0:1802fb31b938 146 #endif