Vodafone Mobile Connect Card driver for Linux overview

  1. Introduction
  2. The big picture

Introduction

Vodafone Mobile Connect Card driver for Linux is a 3G device manager originally written in Python for the Linux OS 1. Some of its features are:

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.

Footnotes

  1. although there are some secret plans to port it to other OSes such as *BSD, Windows, OS X, etc. Being Python multiplatform, you are only really constrained by Twisted's support of your chosen GUI toolkit.

Index