A more capable USB Host. The API supports synchronous and Asynchronous control, interrupt and bulk transfers. It has built in support for hubs and hot plugging. It can support any number of devices and endpoints limited only by sram. The test shell supports mouse, keyboard and mass storage/fat.
Utils.cpp@0:5ad808014a49, 2010-04-02 (annotated)
- Committer:
- peterbarrett1967
- Date:
- Fri Apr 02 22:28:01 2010 +0000
- Revision:
- 0:5ad808014a49
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
peterbarrett1967 | 0:5ad808014a49 | 1 | |
peterbarrett1967 | 0:5ad808014a49 | 2 | |
peterbarrett1967 | 0:5ad808014a49 | 3 | #include "mbed.h" |
peterbarrett1967 | 0:5ad808014a49 | 4 | #include "Utils.h" |
peterbarrett1967 | 0:5ad808014a49 | 5 | |
peterbarrett1967 | 0:5ad808014a49 | 6 | void printfBytes(const char* s, const u8* data, int len) |
peterbarrett1967 | 0:5ad808014a49 | 7 | { |
peterbarrett1967 | 0:5ad808014a49 | 8 | printf("%s %d:",s,len); |
peterbarrett1967 | 0:5ad808014a49 | 9 | if (len > 256) |
peterbarrett1967 | 0:5ad808014a49 | 10 | len = 256; |
peterbarrett1967 | 0:5ad808014a49 | 11 | while (len-- > 0) |
peterbarrett1967 | 0:5ad808014a49 | 12 | printf(" %02X",*data++); |
peterbarrett1967 | 0:5ad808014a49 | 13 | printf("\n"); |
peterbarrett1967 | 0:5ad808014a49 | 14 | } |
peterbarrett1967 | 0:5ad808014a49 | 15 | |
peterbarrett1967 | 0:5ad808014a49 | 16 | void printHexLine(const u8* d, int addr, int len) |
peterbarrett1967 | 0:5ad808014a49 | 17 | { |
peterbarrett1967 | 0:5ad808014a49 | 18 | printf("%04X ",addr); |
peterbarrett1967 | 0:5ad808014a49 | 19 | int i; |
peterbarrett1967 | 0:5ad808014a49 | 20 | for (i = 0; i < len; i++) |
peterbarrett1967 | 0:5ad808014a49 | 21 | printf("%02X ",d[i]); |
peterbarrett1967 | 0:5ad808014a49 | 22 | for (;i < 16; i++) |
peterbarrett1967 | 0:5ad808014a49 | 23 | printf(" "); |
peterbarrett1967 | 0:5ad808014a49 | 24 | char s[16+1]; |
peterbarrett1967 | 0:5ad808014a49 | 25 | memset(s,0,sizeof(s)); |
peterbarrett1967 | 0:5ad808014a49 | 26 | for (i = 0; i < len; i++) |
peterbarrett1967 | 0:5ad808014a49 | 27 | { |
peterbarrett1967 | 0:5ad808014a49 | 28 | int c = d[i]; |
peterbarrett1967 | 0:5ad808014a49 | 29 | if (c < 0x20 || c > 0x7E) |
peterbarrett1967 | 0:5ad808014a49 | 30 | c = '.'; |
peterbarrett1967 | 0:5ad808014a49 | 31 | s[i] = c; |
peterbarrett1967 | 0:5ad808014a49 | 32 | } |
peterbarrett1967 | 0:5ad808014a49 | 33 | printf("%s\n",s); |
peterbarrett1967 | 0:5ad808014a49 | 34 | } |
peterbarrett1967 | 0:5ad808014a49 | 35 | |
peterbarrett1967 | 0:5ad808014a49 | 36 | void printHex(const u8* d, int len) |
peterbarrett1967 | 0:5ad808014a49 | 37 | { |
peterbarrett1967 | 0:5ad808014a49 | 38 | int addr = 0; |
peterbarrett1967 | 0:5ad808014a49 | 39 | while (len) |
peterbarrett1967 | 0:5ad808014a49 | 40 | { |
peterbarrett1967 | 0:5ad808014a49 | 41 | int count = len; |
peterbarrett1967 | 0:5ad808014a49 | 42 | if (count > 16) |
peterbarrett1967 | 0:5ad808014a49 | 43 | count = 16; |
peterbarrett1967 | 0:5ad808014a49 | 44 | printHexLine(d+addr,addr,count); |
peterbarrett1967 | 0:5ad808014a49 | 45 | addr += 16; |
peterbarrett1967 | 0:5ad808014a49 | 46 | len -= count; |
peterbarrett1967 | 0:5ad808014a49 | 47 | } |
peterbarrett1967 | 0:5ad808014a49 | 48 | } |