データのサイズが4800で制限されているようだったので、 /uvchost/uvc/uvc.cpp内の int uvc::get_jpeg(const char* path) const int size = 9600; に変更。
Fork of uvchost by
usb/UsbHostMgr2.cpp@4:97438d526ad3, 2013-02-10 (annotated)
- Committer:
- Dromar
- Date:
- Sun Feb 10 15:20:36 2013 +0000
- Revision:
- 4:97438d526ad3
- Parent:
- 0:b0f04c137829
????????4800????????????????; /uvchost/uvc/uvc.cpp??; int uvc::get_jpeg(const char* path); const int size = 9600;; ????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 | 0:b0f04c137829 | 1 | #include "UsbHostMgr.h" |
va009039 | 0:b0f04c137829 | 2 | //#define __DEBUG |
va009039 | 0:b0f04c137829 | 3 | #include "mydbg.h" |
va009039 | 0:b0f04c137829 | 4 | |
va009039 | 0:b0f04c137829 | 5 | UsbDevice* UsbHostMgr::getDeviceByClass(uint8_t IfClass, int count) |
va009039 | 0:b0f04c137829 | 6 | { |
va009039 | 0:b0f04c137829 | 7 | DBG("IfClass=%02X count=%d\n", IfClass, count); |
va009039 | 0:b0f04c137829 | 8 | for(int i = 0; i < USB_HOSTMGR_MAX_DEVS; i++) { |
va009039 | 0:b0f04c137829 | 9 | UsbDevice* dev = m_lpDevices[i]; |
va009039 | 0:b0f04c137829 | 10 | if (dev) { |
va009039 | 0:b0f04c137829 | 11 | if(dev->m_connected && dev->m_enumerated) { |
va009039 | 0:b0f04c137829 | 12 | if (dev->m_InterfaceClass == IfClass) { // found |
va009039 | 0:b0f04c137829 | 13 | if (count-- <= 0) { |
va009039 | 0:b0f04c137829 | 14 | return dev; |
va009039 | 0:b0f04c137829 | 15 | } |
va009039 | 0:b0f04c137829 | 16 | } |
va009039 | 0:b0f04c137829 | 17 | } |
va009039 | 0:b0f04c137829 | 18 | } |
va009039 | 0:b0f04c137829 | 19 | } |
va009039 | 0:b0f04c137829 | 20 | return NULL; |
va009039 | 0:b0f04c137829 | 21 | } |
va009039 | 0:b0f04c137829 | 22 | |
va009039 | 0:b0f04c137829 | 23 | UsbDevice* UsbHostMgr::getDeviceByVidPid(uint16_t vid, uint16_t pid, int count) |
va009039 | 0:b0f04c137829 | 24 | { |
va009039 | 0:b0f04c137829 | 25 | for(int i = 0; i < USB_HOSTMGR_MAX_DEVS; i++) { |
va009039 | 0:b0f04c137829 | 26 | UsbDevice* dev = m_lpDevices[i]; |
va009039 | 0:b0f04c137829 | 27 | if (dev) { |
va009039 | 0:b0f04c137829 | 28 | if(dev->m_connected && dev->m_enumerated) { |
va009039 | 0:b0f04c137829 | 29 | if (dev->m_vid == vid && dev->m_pid == pid) { // found |
va009039 | 0:b0f04c137829 | 30 | if (count-- <= 0) { |
va009039 | 0:b0f04c137829 | 31 | return dev; |
va009039 | 0:b0f04c137829 | 32 | } |
va009039 | 0:b0f04c137829 | 33 | } |
va009039 | 0:b0f04c137829 | 34 | } |
va009039 | 0:b0f04c137829 | 35 | } |
va009039 | 0:b0f04c137829 | 36 | } |
va009039 | 0:b0f04c137829 | 37 | return NULL; |
va009039 | 0:b0f04c137829 | 38 | } |
va009039 | 0:b0f04c137829 | 39 | |
va009039 | 0:b0f04c137829 | 40 | void UsbHostMgr::onUsbDeviceConnected(int hub, int port, bool low_speed) |
va009039 | 0:b0f04c137829 | 41 | { |
va009039 | 0:b0f04c137829 | 42 | DBG("%p hub=%d port=%d %s\n", this, hub, port, low_speed ? "slow" : "full"); |
va009039 | 0:b0f04c137829 | 43 | for(int i = 0; i < USB_HOSTMGR_MAX_DEVS; i++) { |
va009039 | 0:b0f04c137829 | 44 | UsbDevice* dev = m_lpDevices[i]; |
va009039 | 0:b0f04c137829 | 45 | if (dev) { |
va009039 | 0:b0f04c137829 | 46 | if (dev->m_hub == hub && dev->m_port == port) { // skip |
va009039 | 0:b0f04c137829 | 47 | return; |
va009039 | 0:b0f04c137829 | 48 | } |
va009039 | 0:b0f04c137829 | 49 | } |
va009039 | 0:b0f04c137829 | 50 | } |
va009039 | 0:b0f04c137829 | 51 | |
va009039 | 0:b0f04c137829 | 52 | int item = devicesCount(); |
va009039 | 0:b0f04c137829 | 53 | DBG_ASSERT(item < USB_HOSTMGR_MAX_DEVS); |
va009039 | 0:b0f04c137829 | 54 | if( item == USB_HOSTMGR_MAX_DEVS ) |
va009039 | 0:b0f04c137829 | 55 | return; //List full... |
va009039 | 0:b0f04c137829 | 56 | //Find a free address (not optimized, but not really important) |
va009039 | 0:b0f04c137829 | 57 | int addr = 1; |
va009039 | 0:b0f04c137829 | 58 | for(int i = 0; i < item; i++) |
va009039 | 0:b0f04c137829 | 59 | { |
va009039 | 0:b0f04c137829 | 60 | DBG_ASSERT(m_lpDevices[i]); |
va009039 | 0:b0f04c137829 | 61 | addr = MAX( addr, m_lpDevices[i]->m_addr + 1 ); |
va009039 | 0:b0f04c137829 | 62 | } |
va009039 | 0:b0f04c137829 | 63 | DBG("item=%d addr=%d\n", item, addr); |
va009039 | 0:b0f04c137829 | 64 | UsbDevice* dev = new UsbDevice( this, hub, port, addr , low_speed); |
va009039 | 0:b0f04c137829 | 65 | DBG_ASSERT(dev); |
va009039 | 0:b0f04c137829 | 66 | dev->m_connected = true; |
va009039 | 0:b0f04c137829 | 67 | m_lpDevices[item] = dev; |
va009039 | 0:b0f04c137829 | 68 | } |