Simons Wii controlled m3pi program
Dependencies: mbed m3pi ID12RFIDIRQ
blueusb/MassStorageFS.cpp@0:0ab65a1aef12, 2011-05-18 (annotated)
- Committer:
- chris
- Date:
- Wed May 18 14:50:46 2011 +0000
- Revision:
- 0:0ab65a1aef12
Added some printing to the m3pi screen
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chris | 0:0ab65a1aef12 | 1 | #include "mbed.h" |
chris | 0:0ab65a1aef12 | 2 | #include "FATFileSystem.h" |
chris | 0:0ab65a1aef12 | 3 | #include "Utils.h" |
chris | 0:0ab65a1aef12 | 4 | |
chris | 0:0ab65a1aef12 | 5 | int MassStorage_ReadCapacity(int device, u32* blockCount, u32* blockSize); |
chris | 0:0ab65a1aef12 | 6 | int MassStorage_Read(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize); |
chris | 0:0ab65a1aef12 | 7 | int MassStorage_Write(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize); |
chris | 0:0ab65a1aef12 | 8 | |
chris | 0:0ab65a1aef12 | 9 | class USBFileSystem : public FATFileSystem |
chris | 0:0ab65a1aef12 | 10 | { |
chris | 0:0ab65a1aef12 | 11 | int _device; |
chris | 0:0ab65a1aef12 | 12 | u32 _blockSize; |
chris | 0:0ab65a1aef12 | 13 | u32 _blockCount; |
chris | 0:0ab65a1aef12 | 14 | |
chris | 0:0ab65a1aef12 | 15 | public: |
chris | 0:0ab65a1aef12 | 16 | USBFileSystem() : FATFileSystem("usb"),_device(0),_blockSize(0),_blockCount(0) |
chris | 0:0ab65a1aef12 | 17 | { |
chris | 0:0ab65a1aef12 | 18 | } |
chris | 0:0ab65a1aef12 | 19 | |
chris | 0:0ab65a1aef12 | 20 | void SetDevice(int device) |
chris | 0:0ab65a1aef12 | 21 | { |
chris | 0:0ab65a1aef12 | 22 | _device = device; |
chris | 0:0ab65a1aef12 | 23 | } |
chris | 0:0ab65a1aef12 | 24 | |
chris | 0:0ab65a1aef12 | 25 | virtual int disk_initialize() |
chris | 0:0ab65a1aef12 | 26 | { |
chris | 0:0ab65a1aef12 | 27 | return MassStorage_ReadCapacity(_device,&_blockCount,&_blockSize); |
chris | 0:0ab65a1aef12 | 28 | } |
chris | 0:0ab65a1aef12 | 29 | |
chris | 0:0ab65a1aef12 | 30 | virtual int disk_write(const char *buffer, int block_number) |
chris | 0:0ab65a1aef12 | 31 | { |
chris | 0:0ab65a1aef12 | 32 | return MassStorage_Write(_device,block_number,1,(u8*)buffer,_blockSize); |
chris | 0:0ab65a1aef12 | 33 | } |
chris | 0:0ab65a1aef12 | 34 | |
chris | 0:0ab65a1aef12 | 35 | virtual int disk_read(char *buffer, int block_number) |
chris | 0:0ab65a1aef12 | 36 | { |
chris | 0:0ab65a1aef12 | 37 | return MassStorage_Read(_device,block_number,1,(u8*)buffer,_blockSize); |
chris | 0:0ab65a1aef12 | 38 | } |
chris | 0:0ab65a1aef12 | 39 | |
chris | 0:0ab65a1aef12 | 40 | virtual int disk_sectors() |
chris | 0:0ab65a1aef12 | 41 | { |
chris | 0:0ab65a1aef12 | 42 | return _blockCount; |
chris | 0:0ab65a1aef12 | 43 | } |
chris | 0:0ab65a1aef12 | 44 | }; |
chris | 0:0ab65a1aef12 | 45 | |
chris | 0:0ab65a1aef12 | 46 | void DumpFS(int depth, int count) |
chris | 0:0ab65a1aef12 | 47 | { |
chris | 0:0ab65a1aef12 | 48 | DIR *d = opendir("/usb"); |
chris | 0:0ab65a1aef12 | 49 | if (!d) |
chris | 0:0ab65a1aef12 | 50 | { |
chris | 0:0ab65a1aef12 | 51 | printf("USB file system borked\n"); |
chris | 0:0ab65a1aef12 | 52 | return; |
chris | 0:0ab65a1aef12 | 53 | } |
chris | 0:0ab65a1aef12 | 54 | |
chris | 0:0ab65a1aef12 | 55 | printf("\nDumping root dir\n"); |
chris | 0:0ab65a1aef12 | 56 | struct dirent *p; |
chris | 0:0ab65a1aef12 | 57 | for(;;) |
chris | 0:0ab65a1aef12 | 58 | { |
chris | 0:0ab65a1aef12 | 59 | p = readdir(d); |
chris | 0:0ab65a1aef12 | 60 | if (!p) |
chris | 0:0ab65a1aef12 | 61 | break; |
chris | 0:0ab65a1aef12 | 62 | int len = sizeof( dirent); |
chris | 0:0ab65a1aef12 | 63 | printf("%s %d\n", p->d_name, len); |
chris | 0:0ab65a1aef12 | 64 | } |
chris | 0:0ab65a1aef12 | 65 | closedir(d); |
chris | 0:0ab65a1aef12 | 66 | } |
chris | 0:0ab65a1aef12 | 67 | |
chris | 0:0ab65a1aef12 | 68 | int OnDiskInsert(int device) |
chris | 0:0ab65a1aef12 | 69 | { |
chris | 0:0ab65a1aef12 | 70 | USBFileSystem fs; |
chris | 0:0ab65a1aef12 | 71 | fs.SetDevice(device); |
chris | 0:0ab65a1aef12 | 72 | DumpFS(0,0); |
chris | 0:0ab65a1aef12 | 73 | return 0; |
chris | 0:0ab65a1aef12 | 74 | } |