Skip to content

Commit ae2e7c3

Browse files
committed
Refactored dongle initialization code
The code for dongle initialization (WANDongleInitializer.cpp) was removed from this class, it will be added by each modem as needed.
1 parent a0d9973 commit ae2e7c3

File tree

3 files changed

+39
-395
lines changed

3 files changed

+39
-395
lines changed

libraries/USBHost/USB3GModule/WANDongle.cpp

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#include "WANDongle.h"
3333
#include "WANDongleInitializer.h"
3434

35-
WANDongle::WANDongle() : m_pInitializer(NULL), m_serialCount(0)
35+
WANDongle::WANDongle() : m_pInitializer(NULL), m_serialCount(0), m_totalInitializers(0)
3636
{
3737
host = USBHost::getHostInst();
3838
init();
@@ -166,28 +166,28 @@ void WANDongle::init()
166166

167167
/*virtual*/ void WANDongle::setVidPid(uint16_t vid, uint16_t pid)
168168
{
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++)
173172
{
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()))
178178
{
179179
DBG("The dongle is in virtual serial mode");
180-
m_pInitializer = *initializer;
180+
m_pInitializer = initializer;
181181
break;
182182
}
183-
else if ((dev->getVid() == (*initializer)->getMSDVid()) && (dev->getPid() == (*initializer)->getMSDPid()))
183+
else if ((dev->getVid() == initializer->getMSDVid()) && (dev->getPid() == initializer->getMSDPid()))
184184
{
185-
DBG("Vodafone K3370 dongle detected in MSD mode");
186-
m_pInitializer = *initializer;
185+
DBG("Dongle detected in MSD mode");
186+
m_pInitializer = initializer;
187187
break;
188188
}
189189
initializer++;
190-
} //while()
190+
} //for
191191
if(m_pInitializer)
192192
{
193193
m_pInitializer->setVidPid(vid, pid);
@@ -218,4 +218,19 @@ void WANDongle::init()
218218
}
219219
}
220220

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+
221236
#endif /* USBHOST_3GMODULE */

libraries/USBHost/USB3GModule/WANDongle.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ class WANDongle : public IUSBEnumerator {
4747
*/
4848
WANDongle();
4949

50+
/*
51+
* Destructor
52+
*/
53+
virtual ~WANDongle();
54+
5055
/*
5156
* Check if a serial port device is connected
5257
*
@@ -72,7 +77,8 @@ class WANDongle : public IUSBEnumerator {
7277

7378
IUSBHostSerial& getSerial(int index);
7479
int getSerialCount();
75-
80+
bool addInitializer(WANDongleInitializer* pInitializer);
81+
7682
//From IUSBEnumerator
7783

7884
virtual void setVidPid(uint16_t vid, uint16_t pid);
@@ -92,6 +98,9 @@ class WANDongle : public IUSBEnumerator {
9298

9399
WANDongleSerialPort m_serial[WANDONGLE_MAX_SERIAL_PORTS];
94100
int m_serialCount;
101+
102+
int m_totalInitializers;
103+
WANDongleInitializer* m_Initializers[MAX_DEVICE_CONNECTED];
95104
};
96105

97106
#endif /* USBHOST_3GMODULE */

0 commit comments

Comments
 (0)