Architecture

The architecture section shows the relationship between the core telephony APIs and the functionality they provide to the client applications.

The API defines a core set of functions, that many telephony devices and services support. Applications can use the APIs directly to access the telephony devices. The interfaces are derived from by other telephony related APIs, for example the GSM APIs. The derived APIs provide more advanced functionality.

The APIs uses the Symbian platform client/server framework. The APIs provides R classes that send requests to the telephony server. The server in turn passes requests to an appropriate plug-in module that handles the physical device.

Structure of Core Telephony API

The Core telephony APIs defines generic interfaces that supports a limited set of telephony functionality. The interfaces are based on three fundamental abstractions.

The fundamental abstractions are phones, lines, and calls. All requests to the telephony server are made through a server session through a phone, line, call or data port. The telephony server also contains fax functionality, but this is not directly available to applications.

The following diagram illustrates the class hierarchy used to implement the core client-side interface.

Figure 1. Core Telephony Blocks

The following sections define the root server session, and each of the fundamental core telephony classes.

Root server

The client applications must open a connection to a root server to use the telephony server. The root session enables the clients to access information and functionality of the available telephony resources. The interface provides the functions that allow clients to:

  • load and unload the telephony system (TSY) modules.

  • list the number of phones that are supported by the loaded TSY modules.

  • get the information about the phones in the loaded TSY modules

  • close an open root session

The clients must open a sub-session to access functions related to a phone, line, or call. The sub-sessions are created using an object of the associated class.

Phone sub-session

The phone sub-session provides access to functionality associated with a specific phone. The API provides the functions that allow clients to:

  • open and close phone sub-sessions.

  • get information about phone capabilities.

  • get information about the current phone status.

  • list the number of lines that are supported by the phone.

  • get information about the supported lines, including their status and capabilities.

  • initialise the phone to a known state.

  • get notification of phone events, for example when the phone hardware is connected.

Line sub-session

The line sub-session provides access to functionality associated with a specific line. The API provides functions that allow clients to:

  • open and close line sub-sessions.

  • get information about the line capabilities.

  • get information about the current line status.

  • get information about the status of the hook.

  • get notification of events associated with the line, for example notification of an incoming call.

  • list the number of calls that are supported by the line.

  • get information about the calls in a line.

  • get notification of:

    • an incoming call

    • change in hook status

    • change in line status

    • a new call added to the line

Call sub-session

The call sub-session provides access to functionality associated with a specific call. The API provides functions that allow clients to:

  • open a sub-session with a specific call that has already been created.

  • open a sub-session with a new call.

  • close an open call.

  • obtain information about the call capabilities.

  • obtain information about the current call status.

  • dial a number and establish a connection with a remote modem.

  • answer an incoming call.

  • connect to a call which has already been established.

  • request access to the raw data stream from a Data Call.

  • terminate an active call.

  • transfer call ownership to another client.

  • retrieve information about the bearer associated with an active connection

  • get notification of the hook status, or the progress of a call.

  • get the current progress state and duration of the call