On Time, On Point, On Budget!

Skype Driver for USB phone

The IPFones utility is to adapt a USB phone to be used as a communication device for the Skype application. IPFones (http://www.ipfones.com) already owns the software for Windows and selected Enterra to implement this software under Mac OS X.

When writing this application we resolved several tasks:

  • Phone interface. Enterra had to obtain data from the phone including both sound data and keyboard data. It also implied the USB device communication: device recognition and manipulation
  • Communication with Skype. Sound had to go from the phone to Skype and from Skype to the phone. Key strokes on the phone had to initiate some actions in Skype
  • Application window management. It included device selection and sound volume manipulation

Technical Details

The application was developed under Mac OS X 10.3.9. Carbon application environment seemed to be more suitable both for the tasks of the application and for developers. The application required the following frameworks:

  • Skype Framework
  • Carbon Framework
  • IOKit Framework
  • CoreAudio Framework
  • CoreServices Framework

It also required: Human Interface Devices Utilities library taken from samples provided with Mac OS X. The library has been modified to more suit our needs.

USB Device Manipulation

The phone was provided as a USB device. To work with it Human Interface Devices Utilities library was used. It allowed obtaining data from the phone and sending the data to the phone. Using this library we completed the following tasks:

  • The device search
  • The device connection / disconnection event management
  • Obtaining keys pressed. Later we converted them to Skype commands
  • The phone LED manipulation. LED blinking indicates the phone is controlled by our application
  • The phone LCD update. We use it to display date, time and call status

Communication with Skype

To communicate with Skype we used a Framework provided by Skype Company (http://www.skype.com). The framework provides with an ability to:

  • Define when Skype becomes available
  • Define when Skype becomes unavailable
  • Send commands to Skype. Keys pressed on the phone we converted to Skype commands and sent to the program
  • Receive notifications from Skype. Solving this task, we wrote a parser, which allowed us to convert string notifications to information required for our application

Once the phone is recognized as an audio device, Skype allows setting it up as input and output devices. The sound goes to Skype through Mac OS X audio driver.

Would you like to use our expertise in your project? Do not hesitate to contact us now