Contents
ETels core API defines a generic interface that supports the limited set of almost universally accepted telephony functionality. The interface is based on three fundamental abstractions, each represented by a class. Everything a telephone is, everything it can do, and all the services it either invokes or which invoke it, are captured by these basic types.
The fundamental abstractions are phones, lines, and calls. All requests to the ETel Server are made via a root ETel Server session, through a phone, line, call or data port. ETel also contains fax functionality, but this is not directly available to applications.
The following Booch diagram illustrates the class hierarchy used to implement the core client-side interface.

- ETel class overview
The following sections define the root server session, and each of the fundamental ETel classes.
Clients wishing to use the ETel Server must first open a connection to a root server session (see RTelServer class). The root session provides access to general information and functionality about the available telephony resources. The interface provides functions that allow clients to:
- load and unload TSY modules
- list the number of phones that are supported by the loaded TSY modules
- obtain information about the phones in the loaded TSY modules
- close an open root session
To access functionality associated with a specific phone, line, or call, the client must open a sub-session through an object of the associated class.
The phone sub-session provides access to functionality associated with a specific phone (see RPhone class). The API provides functions that allow clients to:
- open and close phone sub-sessions
- obtain information about phone capabilities
- obtain information about the current phone status
- list the number of lines that are supported by the phone
- obtain information about the supported lines, including their status and capabilities
- initialise the phone to a known state
- obtain notification of phone events, e.g. when the phone hardware is connected or disconnected (through the TSY)
The line sub-session provides access to functionality associated with a specific line (see RLine class). The API provides functions that allow clients to:
- open and close line sub-sessions
- obtain information about the line capabilities
- obtain information about the current line status
- obtain information about the status of the hook
- obtain notification of events associated with the line, e.g. incoming calls
- list the number of calls that are supported by the line
- obtain information about the lines calls
- obtain notification of an incoming call, change in hook status, change in line status, or a new call being added to the line
The call sub-session provides access to functionality associated with a specific call (see RCall class). 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 (hang up)
- transfer call ownership to another client
- retrieve information about the bearer associated with an active connection
- obtain notification that the hook status, or the progress state of the call, has changed
- determine the current progress state and duration of the call