Device Classes in TAPI
Device classes simplify development by letting programmers treat devices that
have similar properties in a similar manner. Real-world devices such as
telephones, modems, and telephone lines belong to device classes. Applications access
devices belonging to a given class using the same functions.
An application never needs to know which service provider controls which
Device classes help make TAPI extensible by providing a framework from which
to classify and support new equipment.
Application developers should keep in mind the existence of other applications
that share telephony services, as explained in Multiple-Application Programming
There are two device classes: line device and phone device.
It also defines two sets of functions and messages, one used for line devices
and one used for phone devices.
The line device class is a device-independent representation of a physical
line device, such as a modem. It can contain one or more identical communications
channels (used for signaling and/or information) between the application and
the switch or network. Because channels belonging to a single line have identical
capabilities, they are interchangeable. In many cases (as with POTS), a
service provider will model a line as having only one channel. Other technologies,
like ISDN, offer more channels, and the service provider should treat them
A service provider may allow an application to request that multiple channels
be combined in a single call (as, for example, when ISDN "B" channels are
combined into "H" channels) to give the call wider bandwidth, using a technique
often referred to as inverse multiplexing. This added bandwidth enables the call to
transmit more information at the same time. For most current telephonic
purposes, inverse multiplexing is not necessary.
In POTS, it is normally necessary to assign one channel per line, but with
ISDN, a line's channels are dynamically allocated when an application makes or
answers a call. Because these channels have identical capabilities and are
interchangeable, the application need not identify which channel is to be used in a
given function call. Channels are owned and assigned by the service provider for
the line device in a way that is transparent to applications. This channel
management is a method of abstraction that eliminates the need to introduce the
naming of channels by TAPI.
Just as a line device class is an abstraction of a physical line device, the
phone device class represents a device-independent abstraction of a telephone
set. TAPI treats line and phone devices as devices that are independent of each
other. In other words, you can use a phone (device) without using an associated
line, and you can use a line (device) without using a phone.
Service providers that fully implement this independence can offer uses for
these devices not defined by traditional telephony protocols. For example, a
person can use the handset of the desktop's phone as a waveform audio device for
voice recording or playback, perhaps without the switch's knowledge that the
phone is in use. In such an implementation, lifting the local phone handset need
not automatically send an offhook signal to the switch.
This independence also allows an application to ring the local telephone in a
manner that is independent of inbound calls. The capabilities of service
providers is limited by the capabilities of the hardware and software used to
interconnect the switch, the phone, and the computer. For detailed information about
specific device classes, see Device Classes
- Software for developers
Software for Android Developers
- More information resources
Unix Manual Pages