First working version of a FATFileSystem compatible Chan FAT v0.8 implementation. This is intended to use with long file names and RTOS support. For now long file names work but RTOS support is still untested.

Dependents:   USB_MSC USB_CDC_MSD_Hello TFTPServerTest DMXStation ... more

FATFileSystem.h

Committer:
NeoBelerophon
Date:
2011-02-04
Revision:
2:629e4be333f3
Parent:
0:8ea634413549

File content as of revision 2:629e4be333f3:

/* mbed Microcontroller Library - FATFileSystem
 * Copyright (c) 2008, sford
 */

/* Library: FATFileSystem.h
 * A library of stuff to make a fat filesystem on top of a block device
 */

#ifndef MBED_FATFILESYSTEM_H
#define MBED_FATFILESYSTEM_H

#ifndef FFSDEBUG_ENABLED
#define FFSDEBUG_ENABLED 0
#endif

#if FFSDEBUG_ENABLED
#define FFSDEBUG(FMT, ...) printf(FMT, ##__VA_ARGS__)
#else
#define FFSDEBUG(FMT, ...)
#endif

#include "FileSystemLike.h"
#include "FileHandle.h"
#include "ff.h"
#include "diskio.h"

namespace mbed {
/* Class: FATFileSystem
 * The class itself
 */
class FATFileSystem : public FileSystemLike {
public:

    FATFileSystem(const char* n);
    virtual ~FATFileSystem();
    
    /* Function: open
       * open a file on the filesystem. never called directly
       */
    virtual FileHandle *open(const char* name, int flags);
    virtual int remove(const char *filename);
    virtual int format();
        virtual DirHandle *opendir(const char *name);
        virtual int mkdir(const char *name, mode_t mode);
    
    FATFS _fs;                                // Work area (file system object) for logical drive    
    static FATFileSystem *_ffs[_DRIVES];    // FATFileSystem objects, as parallel to FatFs drives array
    int _fsid;
    
    virtual int disk_initialize() { return 0; }
    virtual int disk_status() { return 0; }
    virtual int disk_read(char *buffer, int sector) = 0;
    virtual int disk_write(const char *buffer, int sector) = 0;
    virtual int disk_sync() { return 0; }
    virtual int disk_sectors() = 0;
     
};
    
}

#endif