USB composite device example program, drag-and-drop flash writer.
Dependencies: SWD USBDevice mbed BaseDAP
tests/test_RomDisk.cpp@1:ea8e179320d7, 2013-09-28 (annotated)
- 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?
User | Revision | Line number | New 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 |