Share via


IP Dialer (PhoneApp) Component (Windows Embedded CE 6.0)

1/6/2010

The IP Dialer (PhoneApp) component is an executable that performs all phone operations including placing and receiving calls, along with call control functionality.

When other applications (IP Contacts, etc) want to make phone calls, they can call an API that will invoke IP Dialer.

IP Dialer uses the Real-time Communications (RTC) Client API for making and receiving calls.

Application writers can provision the device. Additionally, IP Dialer uses an XML and regular-expression based dial plan for formatting phone numbers to display and to send over the network.

For more information about the dial plan and provisioning see

DialPlan Component and

IP Phone Suite Provisioning.

VoIP Core Component Usage

The following diagram shows the VoIP Core Components that the IP Dialer application component uses.

Ee500698.82c4a621-0370-4df0-972c-0160fd91ab32(en-US,WinEmbedded.60).gif

Inter-Application Connections

None of the applications that make up the IP Phone Suite directly call each other. All inter-application communication is handled through calls to PhCommon or through the use of Registry settings. Even calls to the VAIL Database Store are handled via PhCommon database calls, including initialization and a pointer to the database for further API calls directly.

In the case of IP Dialer, the phoneapp.exe simply launches the dynamic link library, phonecore.dll. Phonecore handles all the call control and provisioning work for IP Dialer, including the user interface screens needed.

IP Dialer uses the following PhCommon API sets:

  • PhCommon Controls APIs
  • PhCommon Settings APIs
  • PhCommon Command APIs
  • PhCommon AddSpeedDial APIs
  • PhCommon Database APIs
  • PhCommon Authentication APIs

For example, IP Dialer would use PHGetSetting to determine if an incoming phone call needs to be blocked or not. Or it might use PHSetValue to change the phone status to active, even as it goes ahead and updates its menus as well. All of its UI was created with calls to PhCommon control functions.

IP Dialer would use PHGetAppWindow to determine if phoneapp.exe is still running. If it were not, it would indicate that it cannot make a phone call and would have to wait until IP Home Screen launched the application again.

In terms of using the features of other applications, IP Dialer would use PHAddSpeedDialEntry, a PhCommon API, to add a speed dial entry. This API would cause PhCommon to launch the IP Contacts application if it were not yet running. Then, PhCommon would send the information provided by IP Dialer, to IP Contacts with the instructions for IP Contacts to create the new entry. Along the way, PhCommon would have used PHLaunchProcess and PhGetAppWindow as well.

IP Dialer, in turn, is used by the other applications, via PhCommon, to handle phone requests and provisioning.

To do this, phonecore.dll exposes the following APIs for use by PhCommon:

  • Run - which is used by phoneapp.exe to start up phonecore.dll with instructions
  • ProcessProvisionXML
  • ValidateProvisionXML
  • MakePhoneCall
  • OnHookDialing

The last four APIs all have equivalent calls via PhCommon.

IP Dialer does make direct calls to the Real-time Communications (RTC) Client API.

Power Settings Information

Different classes of VoIP devices have differing power requirements. For example, the power requirements of a wireless portable phone will differ from that of a wired desktop phone. The Dialer Component provides a simple way of handling power modes, using a registry value located under HKEY_LOCAL_MACHINE\System\VoIP.

Registry variable Values

PowerOnMode

0x00000000: The application takes no specific action to make the power stay on.

0x00000001: The power will stay on while there is a connected audio call.

0x00000002: The power will stay on while there is a connected video call.

OS Design Information

For a table showing the operating design information for the IP Phone Suite, of which IP Dialer is just one part, please see IP Phone Suite OS Design Development.

Module

The following module implements the IP Dialer. The module is an executable.

Item Module

IP Dialer

phoneapp

Source Code Location

The IP Phone Suite sample source code is located in %_WINCEROOT%\Public\VoIP\OAK\Phone\ and its subdirectories

For a complete source code location list, please see IP Phone Suite Source Code Directories.

The following table summarizes the contents of the directories and subdirectories of IP Dialer:

Directory or file name Description

PHONEAPP

IP Dialer source code.

PHONEAPP\INC

Common headers files for IP Dialer source.

PHONEAPP\APP

Thin wrapper that loads phonecore.dll to start up IP Dialer.

PHONEAPP\PROVISION

This is the provisioning engine code that handles provisioning requests and provisions the device.

PHONEAPP\PHONECORE

This is the main core of IP Dialer. This is the source code for phonecore.dll, which is a core component that handles all the calling functionality and UI behaviors.

PHONEAPP\PHONECORE\RES

Bitmaps for use by IP Dialer.

Implementation Considerations

The following table shows the core Sysgen variable for IP Dialer. For a complete dependency list, showing all the Sysgens, please see the IP Phone Advanced Design Template and look at the advanced phone case.

Sysgen variable Description

SYSGEN_VOIPPHONE_PHONEAPP

IP Dialer Application

See Also

Reference

VAIL Database Store Reference
PhCommon Reference

Concepts

IP Phone Suite Architecture
IP Phone Suite

Other Resources

Real-time Communications (RTC) Client API
Exchange Client
Pocket Outlook Object Model (POOM)
State and Notifications Broker
Developing a VoIP Phone