Changes to support Vodafone K4606

Dependents:   VodafoneUSBModem

Fork of USBHostWANDongle by mbed official

Revision:
10:08bce4cd973a
Parent:
8:0d1ec493842c
Child:
11:a0841fba0599
--- a/USB3GModule/WANDongle.cpp	Tue Jul 31 10:37:16 2012 +0000
+++ b/USB3GModule/WANDongle.cpp	Thu Aug 30 09:15:55 2012 +0000
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2011 mbed.org, MIT License
+/* Copyright (c) 2010-2012 mbed.org, MIT License
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 * and associated documentation files (the "Software"), to deal in the Software without
@@ -121,6 +121,16 @@
   return false;
 }
 
+bool WANDongle::disconnect()
+{
+  dev_connected = false;
+  for(int i = 0; i < WANDONGLE_MAX_SERIAL_PORTS; i++)
+  {
+    m_serial[i].disconnect();
+  }
+  return true;
+}
+
 WAN_DONGLE_TYPE WANDongle::getDongleType()
 {
   if( m_pInitializer != NULL )
@@ -146,6 +156,7 @@
 //Private methods
 void WANDongle::init()
 {
+  m_pInitializer = NULL;
   dev_connected = false;
   for(int i = 0; i < WANDONGLE_MAX_SERIAL_PORTS; i++)
   {
@@ -157,31 +168,31 @@
 /*virtual*/ void WANDongle::setVidPid(uint16_t vid, uint16_t pid)
 {
     //Load right initializer
-          WANDongleInitializer** initializer = WANDongleInitializer::getInitializers(host);
-          
-          while(*initializer)
-          {
-            DBG("*initializer=%p", *initializer);
-            DBG("(*initializer)->getSerialVid()=%04x", (*initializer)->getSerialVid());
-            DBG("(*initializer)->getSerialPid()=%04x", (*initializer)->getSerialPid());
-            if ((dev->getVid() == (*initializer)->getSerialVid()) && (dev->getPid() == (*initializer)->getSerialPid()))
-            {
-              DBG("The dongle is in virtual serial mode");
-              m_pInitializer = *initializer;
-              break;
-            }
-            else if ((dev->getVid() == (*initializer)->getMSDVid()) && (dev->getPid() == (*initializer)->getMSDPid()))
-            {
-              DBG("Vodafone K3370 dongle detected in MSD mode");
-              m_pInitializer = *initializer;
-              break;
-            }
-            initializer++;
-          } //while()
-          if(m_pInitializer)
-          {
-            m_pInitializer->setVidPid(vid, pid);
-          }
+  WANDongleInitializer** initializer = WANDongleInitializer::getInitializers(host);
+  
+  while(*initializer)
+  {
+    DBG("*initializer=%p", *initializer);
+    DBG("(*initializer)->getSerialVid()=%04x", (*initializer)->getSerialVid());
+    DBG("(*initializer)->getSerialPid()=%04x", (*initializer)->getSerialPid());
+    if ((dev->getVid() == (*initializer)->getSerialVid()) && (dev->getPid() == (*initializer)->getSerialPid()))
+    {
+      DBG("The dongle is in virtual serial mode");
+      m_pInitializer = *initializer;
+      break;
+    }
+    else if ((dev->getVid() == (*initializer)->getMSDVid()) && (dev->getPid() == (*initializer)->getMSDPid()))
+    {
+      DBG("Vodafone K3370 dongle detected in MSD mode");
+      m_pInitializer = *initializer;
+      break;
+    }
+    initializer++;
+  } //while()
+  if(m_pInitializer)
+  {
+    m_pInitializer->setVidPid(vid, pid);
+  }
 }
 
 /*virtual*/ bool WANDongle::parseInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol) //Must return true if the interface should be parsed