Changes to support Vodafone K4606
Fork of USBHostWANDongle by
Diff: USB3GModule/WANDongle.cpp
- Revision:
- 10:08bce4cd973a
- Parent:
- 8:0d1ec493842c
- Child:
- 11:a0841fba0599
diff -r c9e9817c398c -r 08bce4cd973a USB3GModule/WANDongle.cpp --- 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