USB composite device example program, drag-and-drop flash writer.

Dependencies:   SWD USBDevice mbed BaseDAP

Committer:
va009039
Date:
Sat Sep 28 03:21:14 2013 +0000
Revision:
1:ea8e179320d7
Parent:
0:2385683c867a
add USBMSD_Drop class. add CDC(Virtual COM) and HID(for example CMSIS-DAP), but KL25Z not work.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:ea8e179320d7 1 // test_RomDisk.cpp 2013/9/24
va009039 0:2385683c867a 2 #if 0
va009039 0:2385683c867a 3 #include "mbed.h"
va009039 1:ea8e179320d7 4 #include "USBMSD2.h"
va009039 1:ea8e179320d7 5 #include "RomDisk.h"
va009039 0:2385683c867a 6 #include "mytest.h"
va009039 0:2385683c867a 7 #include "mydebug.h"
va009039 0:2385683c867a 8
va009039 0:2385683c867a 9 Serial pc(USBTX, USBRX);
va009039 0:2385683c867a 10
va009039 1:ea8e179320d7 11 class RomDisk1 : public USBMSD2 {
va009039 1:ea8e179320d7 12 public:
va009039 1:ea8e179320d7 13 RomDisk1() {
va009039 1:ea8e179320d7 14 _sectors = 128; // 64KB(512*128)
va009039 1:ea8e179320d7 15 _status = 0x01;
va009039 1:ea8e179320d7 16 connect();
va009039 1:ea8e179320d7 17 }
va009039 1:ea8e179320d7 18 virtual int disk_initialize() {
va009039 1:ea8e179320d7 19 _status = 0x00;
va009039 1:ea8e179320d7 20 return 0;
va009039 1:ea8e179320d7 21 }
va009039 1:ea8e179320d7 22 virtual int disk_status() { return _status; }
va009039 1:ea8e179320d7 23 virtual int disk_read(uint8_t * data, uint64_t block) { return _disk.read(data, block); }
va009039 1:ea8e179320d7 24 virtual int disk_write(const uint8_t * data, uint64_t block) {
va009039 1:ea8e179320d7 25 if (_disk.is_data(block)) {
va009039 1:ea8e179320d7 26 DBG("block=%d", (int)block);
va009039 1:ea8e179320d7 27 }
va009039 1:ea8e179320d7 28 return _disk.write(data, block);
va009039 1:ea8e179320d7 29 }
va009039 1:ea8e179320d7 30 virtual uint64_t disk_sectors() { return _sectors; }
va009039 1:ea8e179320d7 31 virtual uint64_t disk_size() { return _sectors * 512; }
va009039 1:ea8e179320d7 32
va009039 1:ea8e179320d7 33 protected:
va009039 1:ea8e179320d7 34 RomDisk _disk;
va009039 1:ea8e179320d7 35 uint64_t _sectors;
va009039 1:ea8e179320d7 36 uint8_t _status;
va009039 1:ea8e179320d7 37 };
va009039 1:ea8e179320d7 38
va009039 1:ea8e179320d7 39
va009039 0:2385683c867a 40 TEST(RomDisk1,test1) {
va009039 1:ea8e179320d7 41 RomDisk1* intf = new RomDisk1();
va009039 1:ea8e179320d7 42 Timer t;
va009039 1:ea8e179320d7 43 t.reset();
va009039 1:ea8e179320d7 44 t.start();
va009039 1:ea8e179320d7 45 int n = 0;
va009039 1:ea8e179320d7 46 while(1) { // forever
va009039 1:ea8e179320d7 47 if (intf->readable()) {
va009039 1:ea8e179320d7 48 int c = intf->getc();
va009039 1:ea8e179320d7 49 debug("%02x[%c]\n", c, c > ' ' ? c : '.');
va009039 1:ea8e179320d7 50 }
va009039 1:ea8e179320d7 51 if (t.read_ms() > 1000*1) {
va009039 1:ea8e179320d7 52 t.reset();
va009039 1:ea8e179320d7 53 intf->putc('A'+ n%26);
va009039 1:ea8e179320d7 54 n++;
va009039 1:ea8e179320d7 55 }
va009039 1:ea8e179320d7 56 }
va009039 0:2385683c867a 57 }
va009039 0:2385683c867a 58
va009039 0:2385683c867a 59 int main() {
va009039 0:2385683c867a 60 pc.baud(921600);
va009039 0:2385683c867a 61 //pc.baud(9600);
va009039 0:2385683c867a 62 DBG("%s", __FILE__);
va009039 0:2385683c867a 63
va009039 0:2385683c867a 64 RUN_ALL_TESTS();
va009039 0:2385683c867a 65 exit(0);
va009039 0:2385683c867a 66 }
va009039 0:2385683c867a 67 #endif