NAME
irCall - place a telephone call with call progress detection
SYNOPSIS
#include <irapi.h>
int irCall (channel_id cid, int tag, const char
*dial_string);
DESCRIPTION
The irCall function places a telephone call to dial_string
on the channel specified by cid. irCall automatically places
cid in the IRD_ACTIVE channel service state.
The tag is a user-supplied number that associates the irCall
with a subsequent event.
The dial_string is the telephone number of the call destina-
tion. Valid values for dial_string are listed in
IrDIALSTRINGS(4IRAPI). irCall can be used on TipRing chan-
nels to take the channel offhook and resolve glare without
actually dialing a number by calling irCall with the
dial_string equal to the NULL string, and the
IRP_OUTCALL_CCALEVEL set to IRD_BLIND_CCA. In this case,
irCall will return the appropriate event after detecting
dialtone or detecting glare.
The irCall function monitors call progress via Call Classif-
ication Analysis (CCA). Intermediate CCA results are
returned to applications via IRE_CALL_PROG or
IRE_DISCONNECT_TONE events [see IrEVENTS(4IRAPI)]. Unlike
irDial(3IRAPI), irCall will automatically start and stop CCA
as needed [see irCCA(3IRAPI)].
IRAPI library parameters IRP_RESOURCE_RETURNMODE,
IRP_OUTCALL_DIALTYPE, IRP_OUTCALL_CCALEVEL,
IRP_OUTCALL_ANSDET, and IRP_OUTCALL_MAXRINGS [see
IrPARAMETERS(4IRAPI)] affect operation of irCall.
IRP_RESOURCE_RETURNMODE indicates what to do when resources
are not immediately available. IRP_OUTCALL_DIALTYPE defines
type of dialing to be used. Dialing types supported are
IRD_DIALTYPE_DP (dial pulse), IRD_DIALTYPE_TT (touch tone)
and IRD_DIALTYPE_MF (multiple frequency; for future use
only). IRP_OUTCALL_CCALEVEL specifies the CCA level
(IRD_BLIND_CCA, IRD_SIMPLE_CCA, IRD_FULL_CCA) to be used for
CCA. Blind CCA does no call classification. Simple CCA is
done on the telephony board itself while full CCA requires
an SP card. IRP_OUTCALL_ANSDET indicates how to detect that
a call has been answered when Full CCA is being used.
IRP_OUTCALL_MAXRINGS specifies number of rings to wait for
an answer after dialing. If there is no answer within
IRP_OUTCALL_MAXRINGS number of rings, an IRE_CALL_DONE event
with an event modifier of IREM_NOANSWER is generated.
Existing values of these parameters can be retrieved using
irGetParam(3IRAPI) while a new value can be assigned to them
using irSetParam(3IRAPI). Default IRP_RESOURCE_RETURNMODE
is IRD_IMMEDIATE, IRP_OUTCALL_DIALTYPE is IRD_DIALTYPE_TT,
IRP_OUTCALL_CCALEVEL is IRD_BLIND_CCA, IRP_OUTCALL_ANSDET is
IRD_DEFAULT, and IRP_OUTCALL_MAXRINGS is 5.
WARNING: The parameters described above must be changed
before calling irCall or after receiving the IRE_CALL_DONE
event. Changing them while a call attempt is in progress
can lead to unexpected results.
Calling irStop(3IRAPI) aborts (if possible) a call attempt
that is in in the IRS_CALL_PENDING state after irCall has
returned IRR_PENDING. Applications can also call irStop
then irDisconnect(3IRAPI) to stop a call attempt in the
IRS_CALLING state after irCall has returned IRR_OK (but
before the IRE_CALL_DONE event is received). Depending on
the telephony type, the irStop may not be able to terminate
the call attempt before the IRE_CALL_DONE event is returned.
The irDisconnect(3IRAPI) function must be called to ter-
minate a call after the IRE_CALL_DONE event has occurred.
The application must call irDisconnect before attempting
further calls even if the modifier to IRE_CALL_DONE indi-
cates that the call was not completed (IREM_BUSY, etc.) or
that an error occurred (IREM_ERROR). The application must
also call irDisconnect before attempting further calls after
receiving an IRE_DISCONNECT event. The IRAPI library
automatically performs the irDisconnect when a channel is
being de-initialized with irDeinit(3IRAPI) or
irReturn(3IRAPI)
Invocations of irCall cannot be intermixed on the queue with
any other voice processing functions.
The channel will go to the IRS_CALL_PENDING library state if
waiting for CCA or other resources. It will go to the
IRS_CALLING library state while waiting for the
IRE_CALL_DONE event.
EVENT
Intermediate call results are returned to an application via
IRE_CALL_PROG or IRE_DISCONNECT_TONE events with event
modifiers that provide more information about the status of
the call. Final call results are returned to the applica-
tion via the IRE_CALL_DONE event with event modifiers that
report the disposition of the call. In some cases, addi-
tional IRE_CALL_PROG events may occur after the
IRE_CALL_DONE event.
An IRE_CALL_DONE event with an IREM_GLARE event modifier may
occur if there is already an incoming call on the cid. The
recommended action is to call irExecDefOwn with the
IRD_AD_STARTUP argument to release the channel and to then
allow the Application Dispatch process to pass the call to
an application that will answer the incoming call. In gen-
eral, the application receiving the IRE_CALL_DONE with
IREM_GLARE should attempt the outbound call on another chan-
nel.
An IRE_CALL_DONE event with an IREM_COT event modifier may
occur if SS7 continuity testing prevented the outbound call
from succeeding on the cid. In general, the application
receiving the IRE_CALL_DONE with IREM_COT should attempt the
outbound call on another channel. The current channel
should be released by calling irDeinit and continuity check-
ing will continue to occur on that channel. The IREM_COT is
not necessarily an indication of service affecting problems
within the voice system or it's connection to the SS7
switch, so no alarm should be generated by the application
receiving this event.
RETURN VALUE
IRR_OK is returned if irCall is successfully initiated.
IRR_PENDING is returned if resources are currently not
available and IRP_RESOURCE_RETURNMODE is not set to
IRD_IMMEDIATE.
IRR_FAIL is returned if an error occurs.
ERROR
irError is set as follows if an error occurs:
IRER_INVALID if the dial_string is too long or otherwise
invalid or if the cid is invalid
IRER_SYSERROR if a system call failure occurs (see
irSysError for additional information)
IRER_DRIVER_ERROR if a driver call failure occurs (see
irSysError for additional information)
IRER_BADSTATE if the channel is not in the IRS_IDLE library
state
IRER_RESOURCEBUSY if there are no resources available and
IRP_RESOURCE_RETURNMODE is set to IRD_IMMEDIATE
IRER_NORESOURCES if the CCA function has not been assigned
to any in-service resource card
IRER_RESTRICTED if the channel is restricted from using the
required resources
IRER_SERVICESTATE if the channel is not in the IRD_INACTIVE
service state
SEE ALSO
irDial(3IRAPI), irSetParam(3IRAPI), irInitCall(3IRAPI),
IrEVENTS(4IRAPI)
VERSION
This is version 3/14/01 of this man page.