Customizing Non-UI IP Phone Functionality (Windows CE 5.0)
This topic outlines the non-UI customization options provided by the IP phone functionality in Windows CE. For detailed information about these options, see Common IP Phone Customization Tasks, VoIP Application Interface Layer (VAIL), PC Authentication, and Exchange Client.
The non-UI IP phone functionality included with Windows CE implements the underlying functionality used by the TUI, and in doing so, provides most of the VoIP functionality.
The following table shows the major pieces of non-UI functionality included with Windows CE and the directory that contains the source code for the component. The Real-time Communications (RTC) Client API does not ship in source code form and is not included in this table. For more information about customizing the RTC Client API, see Customizing RTC.
Functionality | Directory Location |
---|---|
VAIL, which includes signaling (call control), media transport, and call and caller information databases. | %_WINCEROOT%\Public\VoIP\Oak\Phone\VAIL |
PC Authentication, which implements lock and unlock functionality. | %_WINCEROOT%\Public\VoIP\Oak\Phone\LAP |
Exchange Client. | %_WINCEROOT%\Public\VoIP\Oak\Phone\OWAExchangeClient |
Because VAIL, Exchange Client, and PC Authentication are provided in source code form, you can customize their functionality. However, you will probably want to keep the APIs they provide constant, so that you do not need to customize the code that uses the APIs (like the TUI or another UI). More frequently, you will want to customize the implementation of the API to change how the components operate.
You can customize the Exchange Client and PC Authentication features by directly changing the source. You can customize the VAIL by changing the source and also by providing new COM components that implement specific COM interfaces.
Implementing COM interfaces to customize the VAIL
VAIL is designed so that the implementation of much of its functionality is provided using defined COM interfaces. This is the case for the following features and COM interfaces:
IVoIPMediaMgr. Controls how VAIL transmits media information (but not signaling information).
Windows CE ships with an implementation that transmits audio data using the media transport functionality provided by the RTC Client API Catalog item (which in turn uses RTP over UDP).
You can plug in your own implementation of the IVoIPMediaMgr interface that uses another stack or other networking code to transmit audio (or video, or other) media.
IVoIPCallLogDB and IVoIPCallerInfoDB Controls how the VAIL stores and retrieves call log and caller information data.
Windows CE ships with implementations for these interfaces that use native Windows CE databases as the backing store. You can provide your own implementations that store this information in any location.
The TUI and other UIs can implement IVoIPUI. VAIL calls methods of this interface to communicate telephony status to an application.
Directly replacing code to customize the VAIL
Other parts of the VAIL can be modified by directly changing or replacing VAIL code.
A common example of a VAIL modification that requires changing code is replacing the SIP stack that VAIL uses for signaling.
By default, the VAIL implements signaling using the SIP stack included in the RTC Client API Catalog item, with code in the files in %_WINCEROOT%\Public\VoIP\Oak\Phone\VAIL\voipmanager.
To change the SIP stack that the VAIL uses, examine the code in these files and replace references to the RTC Client API functions with code that calls your own SIP stack.
If you change the VAIL so it uses another SIP stack for signaling, by default the TUI still uses RTC for presence and instant message functionality. For more information, see Customizing RTC.
See Also
Customizing IP Phone Functionality | Adding or Changing SIP Headers and Verbs | Supporting Video Conferencing | Using the TUI and the VAIL with a Custom SIP Stack | Using Multiple SIP Stacks | Using Exchange Integration | Changing the Media Transport Implementation | Changing How Call Log and Caller Information is Stored
Send Feedback on this topic to the authors