Simons Wii controlled m3pi program

Dependencies:   mbed m3pi ID12RFIDIRQ

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MassStorageFS.cpp Source File

MassStorageFS.cpp

00001 #include "mbed.h"
00002 #include "FATFileSystem.h"
00003 #include "Utils.h"
00004 
00005 int MassStorage_ReadCapacity(int device, u32* blockCount, u32* blockSize);
00006 int MassStorage_Read(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize);
00007 int MassStorage_Write(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize);
00008 
00009 class USBFileSystem : public FATFileSystem
00010 {
00011     int _device;
00012     u32 _blockSize;
00013     u32 _blockCount;
00014     
00015 public:
00016     USBFileSystem() : FATFileSystem("usb"),_device(0),_blockSize(0),_blockCount(0)
00017     {
00018     }
00019     
00020     void SetDevice(int device)
00021     {
00022         _device = device;
00023     }
00024     
00025     virtual int disk_initialize()
00026     {
00027         return MassStorage_ReadCapacity(_device,&_blockCount,&_blockSize);
00028     }
00029     
00030     virtual int disk_write(const char *buffer, int block_number)
00031     {
00032         return MassStorage_Write(_device,block_number,1,(u8*)buffer,_blockSize);
00033     }
00034     
00035     virtual int disk_read(char *buffer, int block_number)
00036     {
00037         return MassStorage_Read(_device,block_number,1,(u8*)buffer,_blockSize);
00038     }
00039         
00040     virtual int disk_sectors()
00041     {
00042         return _blockCount;
00043     }
00044 };
00045 
00046 void DumpFS(int depth, int count)
00047 {
00048     DIR *d = opendir("/usb");
00049     if (!d)
00050     {
00051         printf("USB file system borked\n");
00052         return;
00053     }
00054 
00055     printf("\nDumping root dir\n");
00056     struct dirent *p;
00057     for(;;)
00058     {
00059         p = readdir(d);
00060         if (!p)
00061             break;
00062         int len = sizeof( dirent);
00063         printf("%s %d\n", p->d_name, len);
00064     }
00065     closedir(d);
00066 }
00067 
00068 int OnDiskInsert(int device)
00069 {
00070     USBFileSystem fs;
00071     fs.SetDevice(device);
00072     DumpFS(0,0);
00073     return 0;
00074 }