Ad van der Weiden / Mbed 2 deprecated myBlueUSB

Dependencies:   mbed myUSBHost AvailableMemory

Dependents:   mbed_TANK_Kinect myBlueUSB_ros ftusbClass

Committer:
networker
Date:
Sat Jun 11 19:45:42 2011 +0000
Revision:
6:567607a9a79f
Parent:
1:0dde58e0cccf
new release because of some changes to the libraries.
Also added functions to spoof the mac address on csr dongles

Who changed what in which revision?

UserRevisionLine numberNew contents of line
networker 1:0dde58e0cccf 1 /*
networker 1:0dde58e0cccf 2 Copyright (c) 2010 Peter Barrett
networker 1:0dde58e0cccf 3
networker 1:0dde58e0cccf 4 Permission is hereby granted, free of charge, to any person obtaining a copy
networker 1:0dde58e0cccf 5 of this software and associated documentation files (the "Software"), to deal
networker 1:0dde58e0cccf 6 in the Software without restriction, including without limitation the rights
networker 1:0dde58e0cccf 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
networker 1:0dde58e0cccf 8 copies of the Software, and to permit persons to whom the Software is
networker 1:0dde58e0cccf 9 furnished to do so, subject to the following conditions:
networker 1:0dde58e0cccf 10
networker 1:0dde58e0cccf 11 The above copyright notice and this permission notice shall be included in
networker 1:0dde58e0cccf 12 all copies or substantial portions of the Software.
networker 1:0dde58e0cccf 13
networker 1:0dde58e0cccf 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
networker 1:0dde58e0cccf 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
networker 1:0dde58e0cccf 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
networker 1:0dde58e0cccf 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
networker 1:0dde58e0cccf 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
networker 1:0dde58e0cccf 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
networker 1:0dde58e0cccf 20 THE SOFTWARE.
networker 1:0dde58e0cccf 21 */
networker 1:0dde58e0cccf 22
networker 1:0dde58e0cccf 23 #include "mbed.h"
networker 1:0dde58e0cccf 24 #include "USBHost.h"
networker 1:0dde58e0cccf 25 #include "Utils.h"
networker 1:0dde58e0cccf 26 #include "FATFileSystem.h"
networker 1:0dde58e0cccf 27
networker 1:0dde58e0cccf 28 int MassStorage_ReadCapacity(int device, u32* blockCount, u32* blockSize);
networker 1:0dde58e0cccf 29 int MassStorage_Read(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize);
networker 1:0dde58e0cccf 30 int MassStorage_Write(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize);
networker 1:0dde58e0cccf 31
networker 1:0dde58e0cccf 32 class USBFileSystem : public FATFileSystem
networker 1:0dde58e0cccf 33 {
networker 1:0dde58e0cccf 34 int _device;
networker 1:0dde58e0cccf 35 u32 _blockSize;
networker 1:0dde58e0cccf 36 u32 _blockCount;
networker 1:0dde58e0cccf 37
networker 1:0dde58e0cccf 38 public:
networker 1:0dde58e0cccf 39 USBFileSystem() : FATFileSystem("usb"),_device(0),_blockSize(0),_blockCount(0)
networker 1:0dde58e0cccf 40 {
networker 1:0dde58e0cccf 41 }
networker 1:0dde58e0cccf 42
networker 1:0dde58e0cccf 43 void SetDevice(int device)
networker 1:0dde58e0cccf 44 {
networker 1:0dde58e0cccf 45 _device = device;
networker 1:0dde58e0cccf 46 }
networker 1:0dde58e0cccf 47
networker 1:0dde58e0cccf 48 virtual int disk_initialize()
networker 1:0dde58e0cccf 49 {
networker 1:0dde58e0cccf 50 return MassStorage_ReadCapacity(_device,&_blockCount,&_blockSize);
networker 1:0dde58e0cccf 51 }
networker 1:0dde58e0cccf 52
networker 1:0dde58e0cccf 53 virtual int disk_write(const char *buffer, int block_number)
networker 1:0dde58e0cccf 54 {
networker 1:0dde58e0cccf 55 return MassStorage_Write(_device,block_number,1,(u8*)buffer,_blockSize);
networker 1:0dde58e0cccf 56 }
networker 1:0dde58e0cccf 57
networker 1:0dde58e0cccf 58 virtual int disk_read(char *buffer, int block_number)
networker 1:0dde58e0cccf 59 {
networker 1:0dde58e0cccf 60 return MassStorage_Read(_device,block_number,1,(u8*)buffer,_blockSize);
networker 1:0dde58e0cccf 61 }
networker 1:0dde58e0cccf 62
networker 1:0dde58e0cccf 63 virtual int disk_sectors()
networker 1:0dde58e0cccf 64 {
networker 1:0dde58e0cccf 65 return _blockCount;
networker 1:0dde58e0cccf 66 }
networker 1:0dde58e0cccf 67 };
networker 1:0dde58e0cccf 68
networker 1:0dde58e0cccf 69 void DumpFS(int depth, int count)
networker 1:0dde58e0cccf 70 {
networker 1:0dde58e0cccf 71 DIR *d = opendir("/usb");
networker 1:0dde58e0cccf 72 if (!d)
networker 1:0dde58e0cccf 73 {
networker 1:0dde58e0cccf 74 printf("USB file system borked\n");
networker 1:0dde58e0cccf 75 return;
networker 1:0dde58e0cccf 76 }
networker 1:0dde58e0cccf 77
networker 1:0dde58e0cccf 78 printf("\nDumping root dir\n");
networker 1:0dde58e0cccf 79 struct dirent *p;
networker 1:0dde58e0cccf 80 for(;;)
networker 1:0dde58e0cccf 81 {
networker 1:0dde58e0cccf 82 p = readdir(d);
networker 1:0dde58e0cccf 83 if (!p)
networker 1:0dde58e0cccf 84 break;
networker 1:0dde58e0cccf 85 int len = sizeof( dirent);
networker 1:0dde58e0cccf 86 printf("%s %d\n", p->d_name, len);
networker 1:0dde58e0cccf 87 }
networker 1:0dde58e0cccf 88 closedir(d);
networker 1:0dde58e0cccf 89 }
networker 1:0dde58e0cccf 90
networker 1:0dde58e0cccf 91 int OnDiskInsert(int device)
networker 1:0dde58e0cccf 92 {
networker 1:0dde58e0cccf 93 USBFileSystem fs;
networker 1:0dde58e0cccf 94 fs.SetDevice(device);
networker 1:0dde58e0cccf 95 DumpFS(0,0);
networker 1:0dde58e0cccf 96 return 0;
networker 1:0dde58e0cccf 97 }
networker 1:0dde58e0cccf 98
networker 1:0dde58e0cccf 99 /*
networker 1:0dde58e0cccf 100 Simple test shell to exercise mouse,keyboard,mass storage and hubs.
networker 1:0dde58e0cccf 101 Add 2 15k pulldown resistors between D+/D- and ground, attach a usb socket and have at it.
networker 1:0dde58e0cccf 102 */
networker 1:0dde58e0cccf 103
networker 1:0dde58e0cccf 104 Serial pc(USBTX, USBRX);
networker 1:0dde58e0cccf 105 int GetConsoleChar()
networker 1:0dde58e0cccf 106 {
networker 1:0dde58e0cccf 107 if (!pc.readable())
networker 1:0dde58e0cccf 108 return -1;
networker 1:0dde58e0cccf 109 char c = pc.getc();
networker 1:0dde58e0cccf 110 pc.putc(c); // echo
networker 1:0dde58e0cccf 111 return c;
networker 1:0dde58e0cccf 112 }
networker 1:0dde58e0cccf 113
networker 1:0dde58e0cccf 114 void TestShell();
networker 1:0dde58e0cccf 115
networker 1:0dde58e0cccf 116 int main()
networker 1:0dde58e0cccf 117 {
networker 1:0dde58e0cccf 118 pc.baud(460800);
networker 1:0dde58e0cccf 119 printf("BlueUSB\nNow get a bunch of usb or bluetooth things and plug them in\n");
networker 1:0dde58e0cccf 120 TestShell();
networker 1:0dde58e0cccf 121 }