Introduction
Vodafone Mobile Connect Card driver for Linux is a 3G device manager
originally written in Python for the Linux OS
- Pluggable architecture that can be extended by plugins
- Make mobile data connections over the network
- Send, receive and manage SMS from your computer
- CRUD interface for contacts
- Operator-agnostic (can be used by customers of other companies)
The big picture
Vodafone Mobile Connect Card driver for Linux architecture is relatively simple, the code is divided in two big blocks: Core and GUI. While Core provides all the low-level communication with the 3G device, GUI is just the interface to the application.

The big picture explained
The above image shows the different stacks of components and how they rely on each other. All the light-violet boxes are internal components, while the black and white boxes are external components that this software relies on. This diagram is oversimplified and only shows some of the components, the actual UML diagram has more than 170 classes.
As we can see in the core layer, the Twisted framework sits at the heart of this application. Vodafone Mobile Connect Card driver for Linux sports an asynchronous core built upon the superb Twisted framework.
The vmc.common.hardware.HardwareRegistry
class
manages all the device discovery on Unix/Linux systems through
DBus. The
vmc.common.hardware.DeviceListener
class listens
for DeviceAdded and DeviceRemoved signals and informs the upper layers
accordingly.
A device found through the HardwareRegistry will be attached to the
SIMCardConnection
class.
This class provides the necessary methods to interact with the 3G device,
like reading all the contacts in the SIM card or obtaining the IMSI
number. SIMCardConnection
is wrapped by
SIMCardConnAdapter
.
SIMCardConnAdapter encapsulates error control and high-level operations
over the SIMCardConnection class.
WVDialProtocol
is
used while connecting to the Internet. Vodafone Mobile Connect Card driver
for Linux uses wvdial for the PPP
dialing. The WVDialProtocol class manages and monitors wvdial, it will
issue signals to the upper layers informing of any errors or exceptions
occurred.