Simple USBHost library for LPC4088. Backward compatibility of official-USBHost.

Dependencies:   FATFileSystem mbed-rtos

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BaseUsbHostDebug.cpp Source File

BaseUsbHostDebug.cpp

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