USB host library, support isochronous,bulk,interrupt and control.
Dependents: BaseUsbHost_example BaseJpegDecode_example SimpleJpegDecode_example
BaseUsbHostDebug.cpp
00001 // BaseUseHostDebug.cpp 2013/1/11 00002 #include "mbed.h" 00003 #include "rtos.h" 00004 #include "BaseUsbHost.h" 00005 #include "BaseUsbHostDebug.h" 00006 00007 void print_td(FILE* stream, HCTD* td) 00008 { 00009 if (td == NULL) { 00010 fprintf(stream, "TD %p:\n", td); 00011 return; 00012 } 00013 uint32_t* p = reinterpret_cast<uint32_t*>(td); 00014 fprintf(stream, "TD %p: %08X %08X %08X %08X", p, p[0], p[1], p[2], p[3]); 00015 fprintf(stream, " ep=%p\n", td->ep); 00016 uint8_t* bp = reinterpret_cast<uint8_t*>(p[1]); 00017 uint8_t* be = reinterpret_cast<uint8_t*>(p[3]); 00018 if (bp) { 00019 fprintf(stream, "BF %p:", bp); 00020 while(bp <= be) { 00021 fprintf(stream, " %02X", *bp); 00022 bp++; 00023 } 00024 fprintf(stream, "\n"); 00025 } 00026 } 00027 00028 void print_ed(FILE* stream, HCED* ed) 00029 { 00030 uint32_t* p = reinterpret_cast<uint32_t*>(ed); 00031 while(p) { 00032 fprintf(stream, "ED %p: %08X %08X %08X %08X\n", p, p[0], p[1], p[2], p[3]); 00033 HCTD* td = reinterpret_cast<HCTD*>(p[2] & ~3); 00034 HCTD* tdtail = reinterpret_cast<HCTD*>(p[1]); 00035 while(td != NULL && td != tdtail) { 00036 print_td(stream, td); 00037 td = td->Next; 00038 } 00039 p = reinterpret_cast<uint32_t*>(p[3]); 00040 } 00041 } 00042 00043 void print_itd(FILE* stream, HCITD* itd) 00044 { 00045 if (itd == NULL) { 00046 fprintf(stream, "ITD %p:\n", itd); 00047 return; 00048 } 00049 uint32_t* p = reinterpret_cast<uint32_t*>(itd); 00050 fprintf(stream, "ITD %p: %08X %08X %08X %08X", p, p[0], p[1], p[2], p[3]); 00051 fprintf(stream, " ep=%p\n", itd->ep); 00052 uint16_t* offset = reinterpret_cast<uint16_t*>(p+4); 00053 fprintf(stream, "ITD %p: %04X %04X %04X %04X %04X %04X %04X %04X\n", offset, 00054 offset[0], offset[1], offset[2], offset[3], offset[4], offset[5], offset[6], offset[7]); 00055 } 00056 00057 void print_ied(FILE* stream, HCED* ed) 00058 { 00059 uint32_t* p = reinterpret_cast<uint32_t*>(ed); 00060 while(p) { 00061 fprintf(stream, "ED %p: %08X %08X %08X %08X\n", p, p[0], p[1], p[2], p[3]); 00062 HCITD* itd = reinterpret_cast<HCITD*>(p[2] & ~3); 00063 HCITD* itdtail = reinterpret_cast<HCITD*>(p[1]); 00064 while(itd != NULL && itd != itdtail) { 00065 print_itd(stream, itd); 00066 itd = itd->Next; 00067 } 00068 p = reinterpret_cast<uint32_t*>(p[3]); 00069 } 00070 } 00071 00072 void print_bytes(FILE* stream, char* s, uint8_t* buf, int len) 00073 { 00074 fprintf(stream, "%s %d:", s, len); 00075 for(int i = 0; i < len; i++) { 00076 fprintf(stream, " %02X", buf[i]); 00077 } 00078 fprintf(stream, "\n"); 00079 } 00080 00081 void print_hex(FILE* stream, uint8_t* p, int len) 00082 { 00083 for(int i = 0; i < len; i++) { 00084 if (i%16 == 0) { 00085 fprintf(stream, "%p:", p); 00086 } 00087 fprintf(stream, " %02X", *p); 00088 p++; 00089 if (i%16 == 15) { 00090 fprintf(stream, "\n"); 00091 } 00092 } 00093 fprintf(stream, "\n"); 00094 } 00095
Generated on Fri Jul 15 2022 19:56:09 by 1.7.2