lineSetTerminal
The lineSetTerminal
function enables an application to specify which terminal information related
to the specified line, address, or call is to be routed. The lineSetTerminal
function can be used while calls are in progress on the line to allow an
application to route these events to different devices as required.
LONG lineSetTerminal(
HLINE hLine, |
|
DWORD dwAddressID, |
|
HCALL hCall, |
|
DWORD dwSelect, |
|
DWORD dwTerminalModes, |
|
DWORD dwTerminalID, |
|
DWORD bEnable |
|
); |
|
Parameters
hLine
A handle to
an open line device.
dwAddressID
An address on
the given open line device.
hCall
A handle to a
call. The call state of hCall can be any state, if dwSelect is
CALL.
dwSelect
Specifies
whether the terminal setting is requested for the line, the address, or just
the specified call. If line or address is specified, events either apply to the
line or address itself or serves as a default initial setting for all new calls
on the line or address. This parameter uses the following LINECALLSELECT_ constants:
LINECALLSELECT_LINE
Selects the
specified line device. The hLine parameter must be a valid line handle; hCall
and dwAddressID are ignored.
LINECALLSELECT_ADDRESS
Selects the
specified address on the line. Both hLine and dwAddressID must be
valid; hCall is ignored.
LINECALLSELECT_CALL
Selects the
specified call. hCall must be valid; hLine and dwAddressID
are both ignored.
dwTerminalModes
The class or
classes of low-level events to be routed to the given terminal. This parameter
uses the following LINETERMMODE_ constants:
LINETERMMODE_BUTTONS
The button
presses from the terminal to the line.
LINETERMMODE_DISPLAY
The display
events from the line to the terminal.
LINETERMMODE_LAMPS
The lamp
lighting events from the line to the terminal.
LINETERMMODE_RINGER
The ring
requests from the line to the terminal.
LINETERMMODE_HOOKSWITCH
The
hookswitch events between the terminal and the line.
LINETERMMODE_MEDIATOLINE
This is the
unidirectional media stream from the terminal to the line associated with a
call on the line. Use this value when routing of both unidirectional channels
of a call's media stream can be controlled independently.
LINETERMMODE_MEDIAFROMLINE
This is the
unidirectional media stream from the line to the terminal associated with a
call on the line. Use this value when routing of both unidirectional channels
of a call's media stream can be controlled independently.
LINETERMMODE_MEDIABIDIRECT
This is the
bidirectional media stream associated with a call on the line and the terminal.
Use this value when routing of both unidirectional channels of a call's media
stream cannot be controlled independently. Note that MEDIABIDIRECT is mutually
exclusive with MEDIATOLINE and MEDIAFROMLINE
dwTerminalID
The device ID
of the terminal device where the given events are to be routed. Terminal IDs
are small integers in the range of 0 to one less than dwNumTerminals,
where dwNumTerminals, and the terminal modes each terminal is capable of
handling, are returned by lineGetDevCaps
bEnable
If TRUE, dwTerminalID
is valid and the specified event classes are routed to or from that terminal.
If FALSE, these events are not routed to or from the terminal device with ID
equal to dwTerminalID.
Return Values
Returns a
positive request ID if the function will be completed asynchronously, or a
negative error number if an error has occurred. The dwParam2 parameter
of the corresponding LINE_REPLY
LINEERR_INVALADDRESSID,
LINEERR_NOMEM, LINEERR_INVALCALLHANDLE, LINEERR_OPERATIONUNAVAIL,
LINEERR_INVALCALLSELECT, LINEERR_OPERATIONFAILED, LINEERR_INVALLINEHANDLE,
LINEERR_RESOURCEUNAVAIL, LINEERR_INVALTERMINALID, LINEERR_UNINITIALIZED,
LINEERR_INVALTERMINALMODE.
Remarks
An
application can use this function to route certain classes of low-level line
events to the specified terminal device or to suppress the routing of these
events. For example, voice may be routed to an audio I/O device (headset);
lamps and display events may be routed to the local phone device, and button
events and ringer events may be suppressed altogether.
This function
can be called at any time, even when a call is active on the given line device.
This allows a user to switch from using the local phone set to another audio
I/O device. This function may be called multiple times to route the same events
to multiple terminals simultaneously. To reroute events to a different
terminal, the application should first disable routing to the existing terminal
and then route the events to the new terminal.
Terminal ID
assignments are made by the line's service provider. Device capabilities
indicate only which terminal IDs the service provider has available. Service
providers that do not support this type of event routing would indicate that
they have no terminal devices (dwNumTerminals in LINEDEVCAPS
Invoking lineSetTerminal
on a line or address affects all existing calls on that line or address, but
does not affect calls on other addresses. It also sets the default for future
calls on that line or address. A line or address that has multiple connected
calls active at one time may have different routing in effect for each call.
Disabling the
routing of low-level events to a terminal when these events are not currently
routed to or from that terminal will not necessarily generate an error so long
after the function succeeds (the specified events are not routed to or from
that terminal).
TAPI routes
call progress tones and messages to the same location as set by the lineSetTerminal
function for "media". For example, if audio signals are going to the
phone, then so will busy signals (analog) or Q.931 messages indicating busy
(digital).
See Also