|
32 | 32 | #include "WANDongle.h"
|
33 | 33 | #include "WANDongleInitializer.h"
|
34 | 34 |
|
35 |
| -WANDongle::WANDongle() : m_pInitializer(NULL), m_serialCount(0) |
| 35 | +WANDongle::WANDongle() : m_pInitializer(NULL), m_serialCount(0), m_totalInitializers(0) |
36 | 36 | {
|
37 | 37 | host = USBHost::getHostInst();
|
38 | 38 | init();
|
@@ -166,28 +166,28 @@ void WANDongle::init()
|
166 | 166 |
|
167 | 167 | /*virtual*/ void WANDongle::setVidPid(uint16_t vid, uint16_t pid)
|
168 | 168 | {
|
169 |
| - //Load right initializer |
170 |
| - WANDongleInitializer** initializer = WANDongleInitializer::getInitializers(host); |
171 |
| - |
172 |
| - while(*initializer) |
| 169 | + WANDongleInitializer* initializer; |
| 170 | + |
| 171 | + for(unsigned i = 0; i < m_totalInitializers; i++) |
173 | 172 | {
|
174 |
| - DBG("*initializer=%p", *initializer); |
175 |
| - DBG("(*initializer)->getSerialVid()=%04x", (*initializer)->getSerialVid()); |
176 |
| - DBG("(*initializer)->getSerialPid()=%04x", (*initializer)->getSerialPid()); |
177 |
| - if ((dev->getVid() == (*initializer)->getSerialVid()) && (dev->getPid() == (*initializer)->getSerialPid())) |
| 173 | + initializer = m_Initializers[i]; |
| 174 | + DBG("initializer=%p", initializer); |
| 175 | + DBG("initializer->getSerialVid()=%04x", initializer->getSerialVid()); |
| 176 | + DBG("initializer->getSerialPid()=%04x", initializer->getSerialPid()); |
| 177 | + if ((dev->getVid() == initializer->getSerialVid()) && (dev->getPid() == initializer->getSerialPid())) |
178 | 178 | {
|
179 | 179 | DBG("The dongle is in virtual serial mode");
|
180 |
| - m_pInitializer = *initializer; |
| 180 | + m_pInitializer = initializer; |
181 | 181 | break;
|
182 | 182 | }
|
183 |
| - else if ((dev->getVid() == (*initializer)->getMSDVid()) && (dev->getPid() == (*initializer)->getMSDPid())) |
| 183 | + else if ((dev->getVid() == initializer->getMSDVid()) && (dev->getPid() == initializer->getMSDPid())) |
184 | 184 | {
|
185 |
| - DBG("Vodafone K3370 dongle detected in MSD mode"); |
186 |
| - m_pInitializer = *initializer; |
| 185 | + DBG("Dongle detected in MSD mode"); |
| 186 | + m_pInitializer = initializer; |
187 | 187 | break;
|
188 | 188 | }
|
189 | 189 | initializer++;
|
190 |
| - } //while() |
| 190 | + } //for |
191 | 191 | if(m_pInitializer)
|
192 | 192 | {
|
193 | 193 | m_pInitializer->setVidPid(vid, pid);
|
@@ -218,4 +218,19 @@ void WANDongle::init()
|
218 | 218 | }
|
219 | 219 | }
|
220 | 220 |
|
| 221 | + |
| 222 | +bool WANDongle::addInitializer(WANDongleInitializer* pInitializer) |
| 223 | +{ |
| 224 | + if (m_totalInitializers >= MAX_DEVICE_CONNECTED) |
| 225 | + return false; |
| 226 | + m_Initializers[m_totalInitializers++] = pInitializer; |
| 227 | + return true; |
| 228 | +} |
| 229 | + |
| 230 | +WANDongle::~WANDongle() |
| 231 | +{ |
| 232 | + for(unsigned i = 0; i < m_totalInitializers; i++) |
| 233 | + delete m_Initializers[i]; |
| 234 | +} |
| 235 | + |
221 | 236 | #endif /* USBHOST_3GMODULE */
|
0 commit comments