Global Call API for HMP on Windows Programming Guide — August 2006 57
Call State Models
established. This event changes the call to the Connected state. In the Connected state, the call is
connected to the called party and call charges begin.
When the call is answered (the remote end makes the connection), a GCEV_CONNECTED event
changes the call to the Connected state. In the Connected state, the call is connected to the called
party and call charges begin. The GCEV_CONNECTED event indicates successful completion of
the gc_MakeCall( ) function.
3.4.2.7 Overlap Sending
Note: This functionality applies to E1, T1 and ISDN technologies only.
In the Dialing state, if the remote side requests more information such as the destination address,
the GCEV_REQMOREINFO event is generated and the call transitions to the SendMoreInfo state.
The gc_SendMoreInfo( ) function is issued to send more information. If the remote side still
requests more information, the GCEV_REQMOREINFO event is generated again. Once the
remote side has received sufficient information, it indicates that the call is proceeding, and accepts
or answers the call. Some technologies, such as ISDN and SS7, do not have any messages or
signals to request more information. For such protocols, the application never gets the unsolicited
GCEV_REQMOREINFO event. In this case, the application may call the gc_SendMoreInfo()
function to send more information as it becomes available.
3.4.2.8 Call Failure
The following are two causes of call failures:
Call Rejection
When the remote end does not answer the call, a GCEV_DISCONNECTED event is
generated. This event is also generated when an inbound call arrives while the application is
setting up an outbound call, causing a “glare” condition. Unless the protocol specifies
otherwise, the incoming call takes precedence over the outbound call. When an asynchronous
gc_MakeCall( ) function conflicts with the arrival of an inbound call, all the resources need to
be released for the outbound call. Subsequently, the GCEV_DISCONNECTED event is
generated with a result value indicating that an inbound call took precedence. The
gc_DropCall( ) function must be issued after the GCEV_DISCONNECTED event is received.
If a gc_MakeCall( ) function is issued while the inbound call is being set up, the
gc_MakeCall( ) function fails. The inbound call event is held in the driver until the CRN of
the outbound call is released using the gc_ReleaseCallEx( ) function. After release of the
outbound CRN, the pending inbound call event is sent to the application. This behavior may be
modified by the individual protocol specification.
Task Failure
If the gc_MakeCall( ) cannot be completed successfully, a GCEV_TASKFAIL event or a
GCEV_DISCONNECTED event is sent to the application. The result value associated with the
event indicates the reason for the event. If the GCEV_TASKFAIL event is sent, then a problem
occurred when placing the call from the local end.