Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FatFileSystem TB6612FNG2 mbed
Diff: usb/UsbHostMgr2.cpp
- Revision:
- 0:de03cbbcd0ff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usb/UsbHostMgr2.cpp Mon Nov 30 09:32:15 2015 +0000
@@ -0,0 +1,51 @@
+#include "UsbHostMgr.h"
+//#define __DEBUG
+#include "mydbg.h"
+
+UsbDevice* UsbHostMgr::getDeviceByClass(uint8_t IfClass, int count)
+{
+ DBG("IfClass=%02X count=%d\n", IfClass, count);
+ for(int i = 0; i < USB_HOSTMGR_MAX_DEVS; i++) {
+ UsbDevice* dev = m_lpDevices[i];
+ if (dev) {
+ if(dev->m_connected && dev->m_enumerated) {
+ if (dev->m_InterfaceClass == IfClass) { // found
+ if (count-- <= 0) {
+ return dev;
+ }
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+void UsbHostMgr::onUsbDeviceConnected(int hub, int port)
+{
+ DBG("%p hub=%d port=%d\n", this, hub, port);
+ for(int i = 0; i < USB_HOSTMGR_MAX_DEVS; i++) {
+ UsbDevice* dev = m_lpDevices[i];
+ if (dev) {
+ if (dev->m_hub == hub && dev->m_port == port) { // skip
+ return;
+ }
+ }
+ }
+
+ int item = devicesCount();
+ DBG_ASSERT(item < USB_HOSTMGR_MAX_DEVS);
+ if( item == USB_HOSTMGR_MAX_DEVS )
+ return; //List full...
+ //Find a free address (not optimized, but not really important)
+ int addr = 1;
+ for(int i = 0; i < item; i++)
+ {
+ DBG_ASSERT(m_lpDevices[i]);
+ addr = MAX( addr, m_lpDevices[i]->m_addr + 1 );
+ }
+ DBG("item=%d addr=%d\n", item, addr);
+ UsbDevice* dev = new UsbDevice( this, hub, port, addr );
+ DBG_ASSERT(dev);
+ dev->m_connected = true;
+ m_lpDevices[item] = dev;
+}