File System Component  Version 6.9.8
MDK Middleware for Devices with Flash File System
 All Data Structures Files Functions Variables Enumerations Enumerator Macros Groups Pages
rl_fs.h
Go to the documentation of this file.
1 /*------------------------------------------------------------------------------
2  * MDK Middleware - Component ::File System
3  * Copyright (c) 2004-2017 ARM Germany GmbH. All rights reserved.
4  *------------------------------------------------------------------------------
5  * Name: rl_fs.h
6  * Purpose: File System API
7  *----------------------------------------------------------------------------*/
8 
9 #ifndef __RL_FS_H
10 #define __RL_FS_H
11 
12 #include <stdint.h>
13 #include <stdbool.h>
14 
15 // ==== Enumeration, structures, defines ====
16 
18 #define FS_FAT_ATTR_READ_ONLY 0x01
19 #define FS_FAT_ATTR_HIDDEN 0x02
20 #define FS_FAT_ATTR_SYSTEM 0x04
21 #define FS_FAT_ATTR_VOLUME_ID 0x08
22 #define FS_FAT_ATTR_DIRECTORY 0x10
23 #define FS_FAT_ATTR_ARCHIVE 0x20
24 
25 #define FS_MEDIA_INSERTED 0x01
27 #define FS_MEDIA_PROTECTED 0x02
28 #define FS_MEDIA_INITIALIZED 0x04
29 #define FS_MEDIA_NOCHKMEDIA 0x80
30 
31 #define FS_CONTROL_MEDIA_INIT 0x00
33 #define FS_CONTROL_EMMC_SLEEP 0x01
34 #define FS_CONTROL_EMMC_AWAKE 0x02
35 
36 #define FS_DEVICE_SET_PASSWORD 0x01
38 #define FS_DEVICE_CLR_PASSWORD 0x02
39 #define FS_DEVICE_LOCK_UNLOCK 0x04
40 #define FS_DEVICE_ERASE 0x08
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
47 typedef enum {
48  fsOK = 0,
64 } fsStatus;
65 
67 typedef enum _fsType {
68  fsTypeNone = 0,
74 } fsType;
75 
77 typedef enum _fsDevCtrlCode {
85 
87 typedef struct _fsMediaInfo {
88  uint32_t block_cnt;
89  uint16_t read_blen;
90  uint16_t write_blen;
91 } fsMediaInfo;
92 
94 typedef struct _fsIOC_Cache {
95  uint8_t *buffer;
96  uint32_t size;
97 } fsIOC_Cache;
98 
100 typedef struct _fsCID_Register {
101  uint32_t PSN;
102  uint16_t OID;
103  uint8_t MID;
104  uint8_t PRV;
105  uint16_t MDT;
106  uint8_t PNM[6];
108 
109 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
110  #pragma clang diagnostic push
111  #pragma clang diagnostic ignored "-Wpadded"
112 #endif
113 
115 typedef struct {
116  uint8_t const *password;
117  uint8_t length;
118  uint8_t flags;
119 } fsLockUnlock;
120 
122 typedef struct _fsTime {
123  uint8_t hr;
124  uint8_t min;
125  uint8_t sec;
126  uint8_t day;
127  uint8_t mon;
128  uint16_t year;
129 } fsTime;
130 
132 typedef struct _fsFileInfo {
133  char name[256];
134  uint32_t size;
135  uint16_t fileID;
136  uint8_t attrib;
138 } fsFileInfo;
139 
141 typedef struct _fsDriveInfo {
143  uint64_t capacity;
144 } fsDriveInfo;
145 
146 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
147  #pragma clang diagnostic pop
148 #endif
149 
150 // ==== System Routines ====
151 
160 extern fsStatus finit (const char *drive);
161 
169 extern fsStatus funinit (const char *drive);
170 
182 extern fsStatus fmount (const char *drive);
183 
190 extern fsStatus funmount (const char *drive);
191 
192 
193 // ==== File Maintenance Routines ====
194 
199 #ifdef MW_FILESYSTEM_FDELETE_LEGACY
200 extern fsStatus fdelete (const char *path);
201 #else
202 extern fsStatus fdelete (const char *path, const char *options);
203 #endif
204 
205 
215 extern fsStatus ffind (const char *pattern, fsFileInfo *info);
216 
221 extern fsStatus frename (const char *path, const char *newname);
222 
235 extern fsStatus fattrib (const char *path, const char *attr);
236 
237 
238 // ==== Directory Maintenance Routines ====
239 
245 extern fsStatus fpwd (const char *drive, char *buf, uint32_t len);
246 
250 extern fsStatus fchdir (const char *path);
251 
255 extern fsStatus fmkdir (const char *path);
256 
261 extern fsStatus frmdir (const char *path, const char *options);
262 
263 
264 // ==== Utility Routines ====
265 
269 extern fsStatus fchdrive (const char *drive);
270 
276 extern int64_t ffree (const char *drive);
277 
282 extern fsStatus fformat (const char *drive, const char *options);
283 
290 extern int32_t fanalyse (const char *drive);
291 
300 extern fsStatus fcheck (const char *drive);
301 
310 extern fsStatus fdefrag (const char *drive);
311 
320 extern fsStatus fmedia (const char *drive);
321 
330 extern fsStatus finfo (const char *drive, fsDriveInfo *info);
331 
345 extern fsStatus fvol (const char *drive, char *label, uint32_t *serial);
346 
347 
348 // ==== File Time Support Routines ====
349 
356 extern fsStatus fs_get_time (fsTime *time);
357 
358 
359 // ==== Media Support Routines ====
360 
365 extern int32_t fs_mc_read_cd (uint32_t drive_num);
366 
371 extern int32_t fs_mc_read_wp (uint32_t drive_num);
372 
380 extern int32_t fs_mc_spi_control_ss (uint32_t drive_num, uint32_t ss);
381 
386 extern fsLockUnlock *fs_mc_lock_unlock (uint32_t drive_num);
387 
388 
389 // ==== I/O Control Interface Routines ====
390 
396 extern int32_t fs_ioc_get_id (const char *drive);
397 
404 extern fsStatus fs_ioc_lock (int32_t drv_id);
405 
412 extern fsStatus fs_ioc_unlock (int32_t drv_id);
413 
422 extern fsStatus fs_ioc_get_cache (int32_t drv_id, fsIOC_Cache *cache_info);
423 
435 extern fsStatus fs_ioc_read_sector (int32_t drv_id, uint32_t sect, uint8_t *buf, uint32_t cnt);
436 
448 extern fsStatus fs_ioc_write_sector (int32_t drv_id, uint32_t sect, const uint8_t *buf, uint32_t cnt);
449 
459 extern fsStatus fs_ioc_read_info (int32_t drv_id, fsMediaInfo *info);
460 
466 extern fsStatus fs_ioc_device_ctrl (int32_t drv_id, fsDevCtrlCode code, void *p);
467 
468 #ifdef __cplusplus
469 }
470 #endif
471 
472 #endif /* __RL_FS_H */
fsStatus fdefrag(const char *drive)
Defragment Embedded Flash drive.
fsStatus fpwd(const char *drive, char *buf, uint32_t len)
Print working directory.
Media information.
Definition: rl_fs.h:87
fsStatus fmkdir(const char *path)
Create a directory.
fsStatus fs_ioc_write_sector(int32_t drv_id, uint32_t sect, const uint8_t *buf, uint32_t cnt)
Write sector to media.
File system type is unknown.
Definition: rl_fs.h:69
uint32_t size
Cache Buffer size in bytes.
Definition: rl_fs.h:96
Media error.
Definition: rl_fs.h:57
The directory is not empty.
Definition: rl_fs.h:62
uint16_t year
Year [1980..2107].
Definition: rl_fs.h:128
int32_t fs_mc_read_wp(uint32_t drive_num)
Callback function used to read Write Protect (WP) pin state when Memory Card is used in SPI mode...
fsStatus fmedia(const char *drive)
Check if media present on removable drive.
File system type is EFS.
Definition: rl_fs.h:73
uint8_t attrib
Attributes.
Definition: rl_fs.h:136
fsLockUnlock * fs_mc_lock_unlock(uint32_t drive_num)
Callback function used to retrieve password management information in order to manage locked memory c...
No file system (volume unformatted)
Definition: rl_fs.h:68
Too many open files.
Definition: rl_fs.h:63
File system type is FAT16.
Definition: rl_fs.h:71
uint16_t fileID
System Identification.
Definition: rl_fs.h:135
uint8_t flags
Operation definition bitmask.
Definition: rl_fs.h:118
uint32_t block_cnt
Total number of blocks on the volume.
Definition: rl_fs.h:88
Read/write error.
Definition: rl_fs.h:56
fsStatus fs_ioc_read_info(int32_t drv_id, fsMediaInfo *info)
Read media configuration info.
fsStatus fs_get_time(fsTime *time)
Callback function used to provide the current date and time to the File System.
File system type is FAT12.
Definition: rl_fs.h:70
int32_t fanalyse(const char *drive)
Analyse volume and check for file fragmentation.
uint64_t capacity
Drives capacity in bytes.
Definition: rl_fs.h:143
fsStatus finit(const char *drive)
Initialize File System and drive related driver.
fsStatus
File System return codes.
Definition: rl_fs.h:47
fsStatus fs_ioc_read_sector(int32_t drv_id, uint32_t sect, uint8_t *buf, uint32_t cnt)
Read sector from media.
fsStatus fs_ioc_device_ctrl(int32_t drv_id, fsDevCtrlCode code, void *p)
IOC device control access; control code is sent directly to device driver.
fsStatus finfo(const char *drive, fsDriveInfo *info)
Read drive information.
Control Media Device.
Definition: rl_fs.h:79
Unspecified error.
Definition: rl_fs.h:49
Check Media Status.
Definition: rl_fs.h:78
int32_t fs_mc_read_cd(uint32_t drive_num)
Callback function used to read Card Detect (CD) pin state when Memory Card is used in SPI mode...
fsStatus funinit(const char *drive)
Uninitialize File System.
uint32_t PSN
Product serial number.
Definition: rl_fs.h:101
uint8_t mon
Month [1..12].
Definition: rl_fs.h:127
Invalid parameter specified.
Definition: rl_fs.h:52
uint8_t MID
Manufacturer ID.
Definition: rl_fs.h:103
int32_t fs_ioc_get_id(const char *drive)
Check if valid drive is specified and return its ID.
fsStatus fchdrive(const char *drive)
Change current drive.
Operation succeeded.
Definition: rl_fs.h:48
Drive information.
Definition: rl_fs.h:141
uint8_t day
Day [1..31].
Definition: rl_fs.h:126
Drive is uninitialized.
Definition: rl_fs.h:55
uint16_t MDT
Manufacturing date.
Definition: rl_fs.h:105
Manage device password protection.
Definition: rl_fs.h:83
File System Time structure.
Definition: rl_fs.h:122
File system type is FAT32.
Definition: rl_fs.h:72
fsStatus fs_ioc_lock(int32_t drv_id)
Lock drive and block media access to the upper layer.
Format Media at low level.
Definition: rl_fs.h:80
uint8_t hr
Hours [0..23].
Definition: rl_fs.h:123
fsType
File System Type.
Definition: rl_fs.h:67
Invalid path specified.
Definition: rl_fs.h:54
fsStatus frmdir(const char *path, const char *options)
Remove a directory.
uint8_t * buffer
Cache Buffer (4 byte aligned)
Definition: rl_fs.h:95
File information data.
Definition: rl_fs.h:132
fsStatus fvol(const char *drive, char *label, uint32_t *serial)
Read volume label and serial number.
fsStatus ffind(const char *pattern, fsFileInfo *info)
Find a file or directory matching search pattern.
Return device serial number.
Definition: rl_fs.h:81
uint8_t min
Minutes [0..59].
Definition: rl_fs.h:124
uint8_t length
Password length in bytes.
Definition: rl_fs.h:117
fsStatus fformat(const char *drive, const char *options)
Format drive.
fsStatus fs_ioc_get_cache(int32_t drv_id, fsIOC_Cache *cache_info)
Return IOC cache buffer information.
Media lock/unlock information structure.
Definition: rl_fs.h:115
int64_t ffree(const char *drive)
Find free space on drive.
Nonexistent drive.
Definition: rl_fs.h:53
fsStatus fs_ioc_unlock(int32_t drv_id)
Unlock drive and allow media access to the upper layer.
fsStatus fchdir(const char *path)
Change working directory.
No free space available.
Definition: rl_fs.h:60
No media, or not initialized.
Definition: rl_fs.h:58
fsStatus fcheck(const char *drive)
Analyse volume and check for allocation errors.
Memory card CID register.
Definition: rl_fs.h:100
uint16_t read_blen
Read block length.
Definition: rl_fs.h:89
fsStatus fattrib(const char *path, const char *attr)
Change file attributes.
uint16_t write_blen
Write block length.
Definition: rl_fs.h:90
uint16_t OID
OEM/Application ID.
Definition: rl_fs.h:102
fsStatus fdelete(const char *path, const char *options)
Delete one or multiple files.
Read Memory Card CID Register.
Definition: rl_fs.h:82
uint8_t sec
Seconds [0..59].
Definition: rl_fs.h:125
uint8_t PRV
Product revision.
Definition: rl_fs.h:104
uint8_t const * password
Password data buffer.
Definition: rl_fs.h:116
fsTime time
Create/Modify Time.
Definition: rl_fs.h:137
fsStatus funmount(const char *drive)
Unmount drive.
Operation not supported.
Definition: rl_fs.h:50
IO Control Cache information.
Definition: rl_fs.h:94
fsStatus fmount(const char *drive)
Mount drive.
Resource access denied.
Definition: rl_fs.h:51
int32_t fs_mc_spi_control_ss(uint32_t drive_num, uint32_t ss)
Callback function used to control Slave Select signal when Memory Card is used in SPI mode...
fsDevCtrlCode
Driver DeviceCtrl parameter code.
Definition: rl_fs.h:77
fsType fs_type
Drives file system type.
Definition: rl_fs.h:142
File system is not formatted.
Definition: rl_fs.h:59
Requested file not found.
Definition: rl_fs.h:61
uint32_t size
File size in bytes.
Definition: rl_fs.h:134
fsStatus frename(const char *path, const char *newname)
Rename a file or directory with given path name to a new name.