User | Revision | Line number | New 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
|