Webcam Server.

Dependencies:   uvchost FatFileSystem mbed HTTPServer NetServicesMin

Committer:
va009039
Date:
Wed Jun 06 11:47:06 2012 +0000
Revision:
0:2b4ea8a138e5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:2b4ea8a138e5 1 #include "UsbHostMgr.h"
va009039 0:2b4ea8a138e5 2 //#define __DEBUG
va009039 0:2b4ea8a138e5 3 #include "mydbg.h"
va009039 0:2b4ea8a138e5 4
va009039 0:2b4ea8a138e5 5 UsbDevice* UsbHostMgr::getDeviceByClass(uint8_t IfClass, int count)
va009039 0:2b4ea8a138e5 6 {
va009039 0:2b4ea8a138e5 7 DBG("IfClass=%02X count=%d\n", IfClass, count);
va009039 0:2b4ea8a138e5 8 for(int i = 0; i < USB_HOSTMGR_MAX_DEVS; i++) {
va009039 0:2b4ea8a138e5 9 UsbDevice* dev = m_lpDevices[i];
va009039 0:2b4ea8a138e5 10 if (dev) {
va009039 0:2b4ea8a138e5 11 if(dev->m_connected && dev->m_enumerated) {
va009039 0:2b4ea8a138e5 12 if (dev->m_InterfaceClass == IfClass) { // found
va009039 0:2b4ea8a138e5 13 if (count-- <= 0) {
va009039 0:2b4ea8a138e5 14 return dev;
va009039 0:2b4ea8a138e5 15 }
va009039 0:2b4ea8a138e5 16 }
va009039 0:2b4ea8a138e5 17 }
va009039 0:2b4ea8a138e5 18 }
va009039 0:2b4ea8a138e5 19 }
va009039 0:2b4ea8a138e5 20 return NULL;
va009039 0:2b4ea8a138e5 21 }
va009039 0:2b4ea8a138e5 22
va009039 0:2b4ea8a138e5 23 void UsbHostMgr::onUsbDeviceConnected(int hub, int port)
va009039 0:2b4ea8a138e5 24 {
va009039 0:2b4ea8a138e5 25 DBG("%p hub=%d port=%d\n", this, hub, port);
va009039 0:2b4ea8a138e5 26 for(int i = 0; i < USB_HOSTMGR_MAX_DEVS; i++) {
va009039 0:2b4ea8a138e5 27 UsbDevice* dev = m_lpDevices[i];
va009039 0:2b4ea8a138e5 28 if (dev) {
va009039 0:2b4ea8a138e5 29 if (dev->m_hub == hub && dev->m_port == port) { // skip
va009039 0:2b4ea8a138e5 30 return;
va009039 0:2b4ea8a138e5 31 }
va009039 0:2b4ea8a138e5 32 }
va009039 0:2b4ea8a138e5 33 }
va009039 0:2b4ea8a138e5 34
va009039 0:2b4ea8a138e5 35 int item = devicesCount();
va009039 0:2b4ea8a138e5 36 DBG_ASSERT(item < USB_HOSTMGR_MAX_DEVS);
va009039 0:2b4ea8a138e5 37 if( item == USB_HOSTMGR_MAX_DEVS )
va009039 0:2b4ea8a138e5 38 return; //List full...
va009039 0:2b4ea8a138e5 39 //Find a free address (not optimized, but not really important)
va009039 0:2b4ea8a138e5 40 int addr = 1;
va009039 0:2b4ea8a138e5 41 for(int i = 0; i < item; i++)
va009039 0:2b4ea8a138e5 42 {
va009039 0:2b4ea8a138e5 43 DBG_ASSERT(m_lpDevices[i]);
va009039 0:2b4ea8a138e5 44 addr = MAX( addr, m_lpDevices[i]->m_addr + 1 );
va009039 0:2b4ea8a138e5 45 }
va009039 0:2b4ea8a138e5 46 DBG("item=%d addr=%d\n", item, addr);
va009039 0:2b4ea8a138e5 47 UsbDevice* dev = new UsbDevice( this, hub, port, addr );
va009039 0:2b4ea8a138e5 48 DBG_ASSERT(dev);
va009039 0:2b4ea8a138e5 49 dev->m_connected = true;
va009039 0:2b4ea8a138e5 50 m_lpDevices[item] = dev;
va009039 0:2b4ea8a138e5 51 }