Simple USBHost WebCam for EA LPC4088 QSB/LPC1768 test program

Dependencies:   LPC4088-USBHost mbed

EA LPC4088 QSB/LPC1768をUSBホストにしてWebカメラからJPEG画像を読み取るテストプログラムです。

The usage is the same as KL46Z-USBHostC270_example.
使い方はKL46Z-USBHostC270_exampleと同じです。
動作確認: Logitech C270,Logitech Q200R(Qcam Orbit AF)
/media/uploads/va009039/lpc4088-c270-480x360.jpg

Committer:
va009039
Date:
Thu Apr 24 05:38:45 2014 +0000
Revision:
0:c972ee42b455
first commit,sync rev.29.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:c972ee42b455 1 // BaseUseHostDebug.cpp 2014/4/21
va009039 0:c972ee42b455 2 #include "USBHost.h"
va009039 0:c972ee42b455 3 #include "BaseUsbHostDebug.h"
va009039 0:c972ee42b455 4
va009039 0:c972ee42b455 5 void print_td(FILE* stream, HCTD* td)
va009039 0:c972ee42b455 6 {
va009039 0:c972ee42b455 7 if (td == NULL) {
va009039 0:c972ee42b455 8 fprintf(stream, "TD %p:\n", td);
va009039 0:c972ee42b455 9 return;
va009039 0:c972ee42b455 10 }
va009039 0:c972ee42b455 11 uint32_t* p = reinterpret_cast<uint32_t*>(td);
va009039 0:c972ee42b455 12 fprintf(stream, "TD %p: %08X %08X %08X %08X", p, p[0], p[1], p[2], p[3]);
va009039 0:c972ee42b455 13 fprintf(stream, " ep=%p\n", td->ep);
va009039 0:c972ee42b455 14 uint8_t* bp = reinterpret_cast<uint8_t*>(p[1]);
va009039 0:c972ee42b455 15 uint8_t* be = reinterpret_cast<uint8_t*>(p[3]);
va009039 0:c972ee42b455 16 if (bp) {
va009039 0:c972ee42b455 17 fprintf(stream, "BF %p:", bp);
va009039 0:c972ee42b455 18 while(bp <= be) {
va009039 0:c972ee42b455 19 fprintf(stream, " %02X", *bp);
va009039 0:c972ee42b455 20 bp++;
va009039 0:c972ee42b455 21 }
va009039 0:c972ee42b455 22 fprintf(stream, "\n");
va009039 0:c972ee42b455 23 }
va009039 0:c972ee42b455 24 }
va009039 0:c972ee42b455 25
va009039 0:c972ee42b455 26 void print_ed(FILE* stream, HCED* ed)
va009039 0:c972ee42b455 27 {
va009039 0:c972ee42b455 28 uint32_t* p = reinterpret_cast<uint32_t*>(ed);
va009039 0:c972ee42b455 29 while(p) {
va009039 0:c972ee42b455 30 fprintf(stream, "ED %p: %08X %08X %08X %08X\n", p, p[0], p[1], p[2], p[3]);
va009039 0:c972ee42b455 31 HCTD* td = reinterpret_cast<HCTD*>(p[2] & ~3);
va009039 0:c972ee42b455 32 HCTD* tdtail = reinterpret_cast<HCTD*>(p[1]);
va009039 0:c972ee42b455 33 while(td != NULL && td != tdtail) {
va009039 0:c972ee42b455 34 print_td(stream, td);
va009039 0:c972ee42b455 35 td = td->Next;
va009039 0:c972ee42b455 36 }
va009039 0:c972ee42b455 37 p = reinterpret_cast<uint32_t*>(p[3]);
va009039 0:c972ee42b455 38 }
va009039 0:c972ee42b455 39 }
va009039 0:c972ee42b455 40
va009039 0:c972ee42b455 41 void print_itd(FILE* stream, HCITD* itd)
va009039 0:c972ee42b455 42 {
va009039 0:c972ee42b455 43 if (itd == NULL) {
va009039 0:c972ee42b455 44 fprintf(stream, "ITD %p:\n", itd);
va009039 0:c972ee42b455 45 return;
va009039 0:c972ee42b455 46 }
va009039 0:c972ee42b455 47 uint32_t* p = reinterpret_cast<uint32_t*>(itd);
va009039 0:c972ee42b455 48 fprintf(stream, "ITD %p: %08X %08X %08X %08X", p, p[0], p[1], p[2], p[3]);
va009039 0:c972ee42b455 49 fprintf(stream, " ep=%p\n", itd->ep);
va009039 0:c972ee42b455 50 uint16_t* offset = reinterpret_cast<uint16_t*>(p+4);
va009039 0:c972ee42b455 51 fprintf(stream, "ITD %p: %04X %04X %04X %04X %04X %04X %04X %04X\n", offset,
va009039 0:c972ee42b455 52 offset[0], offset[1], offset[2], offset[3], offset[4], offset[5], offset[6], offset[7]);
va009039 0:c972ee42b455 53 }
va009039 0:c972ee42b455 54
va009039 0:c972ee42b455 55 void print_ied(FILE* stream, HCED* ed)
va009039 0:c972ee42b455 56 {
va009039 0:c972ee42b455 57 uint32_t* p = reinterpret_cast<uint32_t*>(ed);
va009039 0:c972ee42b455 58 while(p) {
va009039 0:c972ee42b455 59 fprintf(stream, "ED %p: %08X %08X %08X %08X\n", p, p[0], p[1], p[2], p[3]);
va009039 0:c972ee42b455 60 HCITD* itd = reinterpret_cast<HCITD*>(p[2] & ~3);
va009039 0:c972ee42b455 61 HCITD* itdtail = reinterpret_cast<HCITD*>(p[1]);
va009039 0:c972ee42b455 62 while(itd != NULL && itd != itdtail) {
va009039 0:c972ee42b455 63 print_itd(stream, itd);
va009039 0:c972ee42b455 64 itd = itd->Next;
va009039 0:c972ee42b455 65 }
va009039 0:c972ee42b455 66 p = reinterpret_cast<uint32_t*>(p[3]);
va009039 0:c972ee42b455 67 }
va009039 0:c972ee42b455 68 }
va009039 0:c972ee42b455 69
va009039 0:c972ee42b455 70 void print_bytes(FILE* stream, char* s, uint8_t* buf, int len)
va009039 0:c972ee42b455 71 {
va009039 0:c972ee42b455 72 fprintf(stream, "%s %d:", s, len);
va009039 0:c972ee42b455 73 for(int i = 0; i < len; i++) {
va009039 0:c972ee42b455 74 fprintf(stream, " %02X", buf[i]);
va009039 0:c972ee42b455 75 }
va009039 0:c972ee42b455 76 fprintf(stream, "\n");
va009039 0:c972ee42b455 77 }
va009039 0:c972ee42b455 78
va009039 0:c972ee42b455 79 void print_hex(FILE* stream, uint8_t* p, int len)
va009039 0:c972ee42b455 80 {
va009039 0:c972ee42b455 81 for(int i = 0; i < len; i++) {
va009039 0:c972ee42b455 82 if (i%16 == 0) {
va009039 0:c972ee42b455 83 fprintf(stream, "%p:", p);
va009039 0:c972ee42b455 84 }
va009039 0:c972ee42b455 85 fprintf(stream, " %02X", *p);
va009039 0:c972ee42b455 86 p++;
va009039 0:c972ee42b455 87 if (i%16 == 15) {
va009039 0:c972ee42b455 88 fprintf(stream, "\n");
va009039 0:c972ee42b455 89 }
va009039 0:c972ee42b455 90 }
va009039 0:c972ee42b455 91 fprintf(stream, "\n");
va009039 0:c972ee42b455 92 }
va009039 0:c972ee42b455 93
va009039 0:c972ee42b455 94 void assert_print(const char* pf, int line, const char* msg) {
va009039 0:c972ee42b455 95 fprintf(stderr, "\n\n%s@%d %s ASSERT!\n\n", pf, line, msg);
va009039 0:c972ee42b455 96 exit(1);
va009039 0:c972ee42b455 97 }
va009039 0:c972ee42b455 98