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:
Fri Apr 25 05:55:06 2014 +0000
Revision:
1:1bb68ef9aa77
Parent:
0:c972ee42b455
update LPC4088-USBHost library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:c972ee42b455 1 // CamInfo.cpp
va009039 0:c972ee42b455 2 #include "USBHostCam.h"
va009039 0:c972ee42b455 3
va009039 0:c972ee42b455 4 // Logitech C270
va009039 0:c972ee42b455 5 #define C270_VID 0x046d
va009039 0:c972ee42b455 6 #define C270_PID 0x0825
va009039 0:c972ee42b455 7 #define C270_160x120 2
va009039 0:c972ee42b455 8 #define C270_176x144 3
va009039 0:c972ee42b455 9 #define C270_320x176 4
va009039 0:c972ee42b455 10 #define C270_320x240 5
va009039 0:c972ee42b455 11 #define C270_352x288 6
va009039 0:c972ee42b455 12 #define C270_432x240 7
va009039 0:c972ee42b455 13 #define C270_640x480 1
va009039 0:c972ee42b455 14 #define C270_544x288 8
va009039 0:c972ee42b455 15 #define C270_640x360 9
va009039 0:c972ee42b455 16 #define C270_752x416 10
va009039 0:c972ee42b455 17 #define C270_800x448 11
va009039 0:c972ee42b455 18 #define C270_800x600 12
va009039 0:c972ee42b455 19
va009039 0:c972ee42b455 20 #define C270_MJPEG 2
va009039 0:c972ee42b455 21 #define C270_YUV2 1
va009039 0:c972ee42b455 22
va009039 0:c972ee42b455 23 #define C270_EN 0x81
va009039 0:c972ee42b455 24 #define C270_MPS 192
va009039 0:c972ee42b455 25 #define C270_IF_ALT_192 1
va009039 0:c972ee42b455 26 #define C270_IF_ALT(A) C270_IF_ALT_##A
va009039 0:c972ee42b455 27
va009039 0:c972ee42b455 28 #define C270_INFO(SIZE) {C270_VID, C270_PID, _##SIZE, 0, \
va009039 0:c972ee42b455 29 "C270", \
va009039 0:c972ee42b455 30 C270_MJPEG, \
va009039 0:c972ee42b455 31 C270_##SIZE, \
va009039 0:c972ee42b455 32 _5FPS, \
va009039 0:c972ee42b455 33 C270_EN, \
va009039 0:c972ee42b455 34 192, \
va009039 0:c972ee42b455 35 C270_IF_ALT(192), \
va009039 0:c972ee42b455 36 4, \
va009039 0:c972ee42b455 37 3}
va009039 0:c972ee42b455 38
va009039 0:c972ee42b455 39 #define C210_PID 0x819
va009039 0:c972ee42b455 40 #define C210_INFO(SIZE) {C270_VID, C210_PID, _##SIZE, 0, \
va009039 0:c972ee42b455 41 "C270", \
va009039 0:c972ee42b455 42 C270_MJPEG, \
va009039 0:c972ee42b455 43 C270_##SIZE, \
va009039 0:c972ee42b455 44 _5FPS, \
va009039 0:c972ee42b455 45 C270_EN, \
va009039 0:c972ee42b455 46 192, \
va009039 0:c972ee42b455 47 C270_IF_ALT(192), \
va009039 0:c972ee42b455 48 4, \
va009039 0:c972ee42b455 49 3}
va009039 0:c972ee42b455 50
va009039 0:c972ee42b455 51 // Logitech Qcam Orbit AF QCAM-200R
va009039 0:c972ee42b455 52 #define Q200R_VID 0x046d
va009039 0:c972ee42b455 53 #define Q200R_PID 0x0994
va009039 0:c972ee42b455 54 #define Q200R_160x120 1
va009039 0:c972ee42b455 55 #define Q200R_176x144 2
va009039 0:c972ee42b455 56 #define Q200R_320x240 3
va009039 0:c972ee42b455 57 #define Q200R_352x288 4
va009039 0:c972ee42b455 58 #define Q200R_640x480 5
va009039 0:c972ee42b455 59 #define Q200R_800x600 6
va009039 0:c972ee42b455 60
va009039 0:c972ee42b455 61 #define Q200R_MJPEG 1
va009039 0:c972ee42b455 62 #define Q200R_YUV2 2
va009039 0:c972ee42b455 63
va009039 0:c972ee42b455 64 #define Q200R_EN 0x81
va009039 0:c972ee42b455 65 #define Q200R_MPS 192
va009039 0:c972ee42b455 66 #define Q200R_IF_ALT_192 1
va009039 0:c972ee42b455 67 #define Q200R_IF_ALT_384 2
va009039 0:c972ee42b455 68 #define Q200R_IF_ALT_512 3
va009039 0:c972ee42b455 69 #define Q200R_IF_ALT_640 4
va009039 0:c972ee42b455 70 #define Q200R_IF_ALT_800 5
va009039 0:c972ee42b455 71 #define Q200R_IF_ALT_944 6
va009039 0:c972ee42b455 72 #define Q200R_IF_ALT(A) Q200R_IF_ALT_##A
va009039 0:c972ee42b455 73 #define Q200R_INFO(SIZE) {Q200R_VID, Q200R_PID, _##SIZE, 0, \
va009039 0:c972ee42b455 74 "Q200R", \
va009039 0:c972ee42b455 75 Q200R_MJPEG, \
va009039 0:c972ee42b455 76 Q200R_##SIZE, \
va009039 0:c972ee42b455 77 _5FPS, \
va009039 0:c972ee42b455 78 Q200R_EN, \
va009039 0:c972ee42b455 79 192, \
va009039 0:c972ee42b455 80 Q200R_IF_ALT(192), \
va009039 0:c972ee42b455 81 4, \
va009039 0:c972ee42b455 82 3}
va009039 0:c972ee42b455 83
va009039 0:c972ee42b455 84 //LifeCam VX700 / VX500
va009039 0:c972ee42b455 85 #define VX700_VID 0x045e
va009039 0:c972ee42b455 86 #define VX700_PID 0x074a
va009039 0:c972ee42b455 87
va009039 0:c972ee42b455 88 #define VX700_160x120 5
va009039 0:c972ee42b455 89 #define VX700_176x144 4
va009039 0:c972ee42b455 90 #define VX700_320x240 3
va009039 0:c972ee42b455 91 #define VX700_352x288 2
va009039 0:c972ee42b455 92 #define VX700_640x480 1
va009039 0:c972ee42b455 93
va009039 0:c972ee42b455 94 #define VX700_MJPEG 1
va009039 0:c972ee42b455 95
va009039 0:c972ee42b455 96 #define VX700_EN 0x81
va009039 0:c972ee42b455 97 #define VX700_MPS 128
va009039 0:c972ee42b455 98 #define VX700_IF_ALT_128 1
va009039 0:c972ee42b455 99 #define VX700_IF_ALT(A) VX700_IF_ALT_##A
va009039 0:c972ee42b455 100 #define VX700_INFO(SIZE) {VX700_VID, VX700_PID, _##SIZE, 0, \
va009039 0:c972ee42b455 101 "VX700", \
va009039 0:c972ee42b455 102 VX700_MJPEG, \
va009039 0:c972ee42b455 103 VX700_##SIZE, \
va009039 0:c972ee42b455 104 _5FPS, \
va009039 0:c972ee42b455 105 VX700_EN, \
va009039 0:c972ee42b455 106 128, \
va009039 0:c972ee42b455 107 VX700_IF_ALT(128), \
va009039 0:c972ee42b455 108 4, \
va009039 0:c972ee42b455 109 3}
va009039 0:c972ee42b455 110
va009039 0:c972ee42b455 111 //Sonix USB 2.0 Camera
va009039 0:c972ee42b455 112 #define SONIX_160x120 5
va009039 0:c972ee42b455 113 #define SONIX_176x144 4
va009039 0:c972ee42b455 114 #define SONIX_320x240 3
va009039 0:c972ee42b455 115 #define SONIX_352x288 2
va009039 0:c972ee42b455 116 #define SONIX_640x480 1
va009039 0:c972ee42b455 117
va009039 0:c972ee42b455 118 #define SONIX_IF_ALT_128 1
va009039 0:c972ee42b455 119 #define SONIX_IF_ALT_256 2
va009039 0:c972ee42b455 120 #define SONIX_IF_ALT_512 3
va009039 0:c972ee42b455 121 #define SONIX_IF_ALT_600 4
va009039 0:c972ee42b455 122 #define SONIX_IF_ALT_800 5
va009039 0:c972ee42b455 123 #define SONIX_IF_ALT_956 6
va009039 0:c972ee42b455 124 #define SONIX_IF_ALT(A) SONIX_IF_ALT_##A
va009039 0:c972ee42b455 125 #define SONIX_INFO(SIZE) {0x0c45, 0x62c0, _##SIZE, 0, \
va009039 0:c972ee42b455 126 "SONIX", \
va009039 0:c972ee42b455 127 1, \
va009039 0:c972ee42b455 128 SONIX_##SIZE, \
va009039 0:c972ee42b455 129 _5FPS, \
va009039 0:c972ee42b455 130 0x81, \
va009039 0:c972ee42b455 131 128, \
va009039 0:c972ee42b455 132 SONIX_IF_ALT(128), \
va009039 0:c972ee42b455 133 4, \
va009039 0:c972ee42b455 134 3}
va009039 0:c972ee42b455 135
va009039 0:c972ee42b455 136 static const CamInfo CamInfoList[] = {
va009039 0:c972ee42b455 137 // Logitech C270
va009039 0:c972ee42b455 138 C270_INFO(160x120),
va009039 0:c972ee42b455 139 C270_INFO(176x144),
va009039 0:c972ee42b455 140 C270_INFO(320x176),
va009039 0:c972ee42b455 141 C270_INFO(320x240),
va009039 0:c972ee42b455 142 C270_INFO(352x288),
va009039 0:c972ee42b455 143 C270_INFO(432x240),
va009039 0:c972ee42b455 144 C270_INFO(640x480),
va009039 0:c972ee42b455 145 C270_INFO(544x288),
va009039 0:c972ee42b455 146 C270_INFO(640x360),
va009039 0:c972ee42b455 147 C270_INFO(752x416),
va009039 0:c972ee42b455 148 C270_INFO(800x448),
va009039 0:c972ee42b455 149 C270_INFO(800x600),
va009039 0:c972ee42b455 150
va009039 0:c972ee42b455 151 // Logitech C210
va009039 0:c972ee42b455 152 C210_INFO(160x120),
va009039 0:c972ee42b455 153 C210_INFO(176x144),
va009039 0:c972ee42b455 154 C210_INFO(320x176),
va009039 0:c972ee42b455 155 C210_INFO(320x240),
va009039 0:c972ee42b455 156 C210_INFO(352x288),
va009039 0:c972ee42b455 157 C210_INFO(432x240),
va009039 0:c972ee42b455 158 C210_INFO(640x480),
va009039 0:c972ee42b455 159 C210_INFO(544x288),
va009039 0:c972ee42b455 160 C210_INFO(640x360),
va009039 0:c972ee42b455 161 C210_INFO(752x416),
va009039 0:c972ee42b455 162 C210_INFO(800x448),
va009039 0:c972ee42b455 163 C210_INFO(800x600),
va009039 0:c972ee42b455 164
va009039 0:c972ee42b455 165 // Logitech Qcam Orbit AF QCAM-200R
va009039 0:c972ee42b455 166 Q200R_INFO(160x120),
va009039 0:c972ee42b455 167 Q200R_INFO(176x144),
va009039 0:c972ee42b455 168 Q200R_INFO(320x240),
va009039 0:c972ee42b455 169 Q200R_INFO(352x288),
va009039 0:c972ee42b455 170 Q200R_INFO(640x480),
va009039 0:c972ee42b455 171 Q200R_INFO(800x600),
va009039 0:c972ee42b455 172
va009039 0:c972ee42b455 173 // LifeCam VX700
va009039 0:c972ee42b455 174 VX700_INFO(160x120),
va009039 0:c972ee42b455 175 VX700_INFO(176x144),
va009039 0:c972ee42b455 176 VX700_INFO(320x240),
va009039 0:c972ee42b455 177 VX700_INFO(352x288),
va009039 0:c972ee42b455 178 VX700_INFO(640x480),
va009039 0:c972ee42b455 179
va009039 0:c972ee42b455 180 // Sonix USB 2.0 Camera
va009039 0:c972ee42b455 181 SONIX_INFO(160x120),
va009039 0:c972ee42b455 182 SONIX_INFO(176x144),
va009039 0:c972ee42b455 183 SONIX_INFO(320x240),
va009039 0:c972ee42b455 184 SONIX_INFO(352x288),
va009039 0:c972ee42b455 185 SONIX_INFO(640x480),
va009039 0:c972ee42b455 186
va009039 0:c972ee42b455 187 // Not found
va009039 0:c972ee42b455 188 {0,0,0,0},
va009039 0:c972ee42b455 189 };
va009039 0:c972ee42b455 190
va009039 0:c972ee42b455 191 CamInfo* getCamInfoList() {
va009039 0:c972ee42b455 192 return const_cast<CamInfo*>(CamInfoList);
va009039 0:c972ee42b455 193 }