USB Host WAN Dongle library

Fork of USBHostWANDongle_bleedingedge by Donatien Garnier

Committer:
nherriot
Date:
Wed Jul 25 11:13:50 2012 +0000
Revision:
5:3189db174f6b
Parent:
3:4394986752db
Child:
6:075e36a3463e
Initial copy of door controller using bleeding edge voda lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 3:4394986752db 1 /* Copyright (c) 2010-2011 mbed.org, MIT License
donatien 3:4394986752db 2 *
donatien 3:4394986752db 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
donatien 3:4394986752db 4 * and associated documentation files (the "Software"), to deal in the Software without
donatien 3:4394986752db 5 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
donatien 3:4394986752db 6 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
donatien 3:4394986752db 7 * Software is furnished to do so, subject to the following conditions:
donatien 3:4394986752db 8 *
donatien 3:4394986752db 9 * The above copyright notice and this permission notice shall be included in all copies or
donatien 3:4394986752db 10 * substantial portions of the Software.
donatien 3:4394986752db 11 *
donatien 3:4394986752db 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
donatien 3:4394986752db 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
donatien 3:4394986752db 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
donatien 3:4394986752db 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
donatien 3:4394986752db 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
donatien 3:4394986752db 17 */
donatien 3:4394986752db 18
donatien 3:4394986752db 19 #define __DEBUG__ 4 //Maximum verbosity
donatien 3:4394986752db 20 #ifndef __MODULE__
donatien 3:4394986752db 21 #define __MODULE__ "WANDongleInitializer.cpp"
donatien 3:4394986752db 22 #endif
donatien 3:4394986752db 23
donatien 3:4394986752db 24 #include "dbg.h"
donatien 3:4394986752db 25
donatien 3:4394986752db 26 #include <cstdint>
donatien 3:4394986752db 27 using std::uint16_t;
donatien 3:4394986752db 28
donatien 3:4394986752db 29 #include "WANDongleInitializer.h"
donatien 3:4394986752db 30
donatien 3:4394986752db 31 WANDongleInitializer::WANDongleInitializer(USBHost* pHost) : m_pHost(pHost)
donatien 3:4394986752db 32 {
donatien 3:4394986752db 33
donatien 3:4394986752db 34 }
donatien 3:4394986752db 35
donatien 3:4394986752db 36 WANDongleInitializer** WANDongleInitializer::getInitializers(USBHost* pHost)
donatien 3:4394986752db 37 {
donatien 3:4394986752db 38 static VodafoneK3770Initializer vodafoneK3770(pHost);
donatien 3:4394986752db 39 const static WANDongleInitializer* list[] = { &vodafoneK3770, NULL };
donatien 3:4394986752db 40 return (WANDongleInitializer**)list;
donatien 3:4394986752db 41 }
donatien 3:4394986752db 42
donatien 3:4394986752db 43 //Huawei K3770 (Vodafone)
nherriot 5:3189db174f6b 44 // Switching from mass storage device string is: "55 53 42 43 12 34 56 78 00 00 00 00 00 00 00 11 06 20 00 00 01 00 00 00 00 00 00 00 00 00 00"
donatien 3:4394986752db 45 static uint8_t vodafone_k3770_switch_packet[] = {
donatien 3:4394986752db 46 0x55, 0x53, 0x42, 0x43, 0x12, 0x34, 0x56, 0x78, 0, 0, 0, 0, 0, 0, 0, 0x11, 0x06, 0x20, 0, 0, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
donatien 3:4394986752db 47 };
donatien 3:4394986752db 48
nherriot 5:3189db174f6b 49 // NVIDIA (ICERA) /ZTE K3772-Z (Vodafone)
nherriot 5:3189db174f6b 50 // Switching from mass storage device string is: "55 53 42 43 12 34 56 78 00 00 00 00 00 00 06 1b 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00"
nherriot 5:3189db174f6b 51 static uint8_t vodafone_k3772_z_switch_packet[] = {
nherriot 5:3189db174f6b 52 0x55, 0x53, 0x42, 0x43, 0x12, 0x34, 0x56, 0x78, 0, 0, 0, 0, 0, 0, 0x06, 0x1b, 0, 0, 0, 0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
nherriot 5:3189db174f6b 53 };
nherriot 5:3189db174f6b 54
nherriot 5:3189db174f6b 55
nherriot 5:3189db174f6b 56
donatien 3:4394986752db 57 VodafoneK3770Initializer::VodafoneK3770Initializer(USBHost* pHost) : WANDongleInitializer(pHost)
donatien 3:4394986752db 58 {
donatien 3:4394986752db 59
donatien 3:4394986752db 60 }
donatien 3:4394986752db 61
donatien 3:4394986752db 62 uint16_t VodafoneK3770Initializer::getMSDVid() { return 0x12D1; }
donatien 3:4394986752db 63 uint16_t VodafoneK3770Initializer::getMSDPid() { return 0x14D1; }
donatien 3:4394986752db 64
donatien 3:4394986752db 65 uint16_t VodafoneK3770Initializer::getSerialVid() { return 0x12D1; }
donatien 3:4394986752db 66 uint16_t VodafoneK3770Initializer::getSerialPid() { return 0x14C9; }
donatien 3:4394986752db 67
donatien 3:4394986752db 68 bool VodafoneK3770Initializer::switchMode(USBDeviceConnected* pDev)
donatien 3:4394986752db 69 {
donatien 3:4394986752db 70 for (int i = 0; i < pDev->getNbInterface(); i++)
donatien 3:4394986752db 71 {
donatien 3:4394986752db 72 if (pDev->getInterface(i)->intf_class == MSD_CLASS)
donatien 3:4394986752db 73 {
donatien 3:4394986752db 74 Endpoint* pEp = pDev->getEndpoint(i, BULK_ENDPOINT, OUT);
donatien 3:4394986752db 75 if ( pEp != NULL )
donatien 3:4394986752db 76 {
donatien 3:4394986752db 77 DBG("MSD descriptor found on device %p, intf %d, will now try to switch into serial mode", (void *)pDev, i);
donatien 3:4394986752db 78 m_pHost->bulkWrite(pDev, pEp, vodafone_k3770_switch_packet, 31);
donatien 3:4394986752db 79 return true;
donatien 3:4394986752db 80 }
donatien 3:4394986752db 81 }
donatien 3:4394986752db 82 }
donatien 3:4394986752db 83 return false;
donatien 3:4394986752db 84 }
donatien 3:4394986752db 85
donatien 3:4394986752db 86 Endpoint* VodafoneK3770Initializer::getEp(USBDeviceConnected* pDev, int serialPortNumber, bool tx)
donatien 3:4394986752db 87 {
donatien 3:4394986752db 88 const int intf[3] = {0,4,2};
donatien 3:4394986752db 89 return pDev->getEndpoint(intf[serialPortNumber], BULK_ENDPOINT, tx?OUT:IN, 0);
donatien 3:4394986752db 90 }
donatien 3:4394986752db 91
donatien 3:4394986752db 92 int VodafoneK3770Initializer::getSerialPortCount()
donatien 3:4394986752db 93 {
donatien 3:4394986752db 94 return 3;
donatien 3:4394986752db 95 }
donatien 3:4394986752db 96