Simons Wii controlled m3pi program

Dependencies:   mbed m3pi ID12RFIDIRQ

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?

UserRevisionLine numberNew 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 }