
Global Call API for HMP on Windows Programming Guide — August 2006 43
Call State Models
is opened using the gc_OpenEx( ) function. However, if the gc_ResetLineDev( ) function was
issued, gc_WaitCall( ) must be reissued. In asynchronous mode, it is not necessary to issue
gc_WaitCall( ) again after a call is released.
Note: After gc_WaitCall( ) is issued to wait for incoming calls on a line device, it is possible to use
gc_makeCall( ) to make an outbound calls on that line device.
3.4.1.3 Call Detection
The inbound call from the network is received on the line device specified in the gc_WaitCall( )
function, but the call has not been offered to the application. The technology call control layer
typically sends an acknowledgement to the remote side. In some configurations, this
acknowledgement can also be sent by the application when the call is offered. At this stage, the call
is being processed, which typically involves allocating resources or waiting for more information.
The GCEV_DETECTED event is generated, if enabled. If the GCEV_DETECTED event is
generated, a new CRN is assigned to the incoming call. This event is for informational purposes to
reduce glare conditions as the application is now aware of the presence of a call on the channel.
Note: When developing applications, if the GCEV_DETECTED event is not supported, a
GCEV_DISCONNECTED event is only received if the host application already received the
GCEV_OFFERED event before the remote side disconnects.
3.4.1.4 Call Offered
When an incoming call is received in en-bloc mode, where all the information required is available,
the call is offered to the application by generating an unsolicited GCEV_OFFERED event
(equivalent to a “ring detected” notification). This GCEV_OFFERED event causes the call to
change to the Offered state. In the Offered state, a CRN is assigned as a means of identifying the
call on a specific line device. If a GCEV_DETECTED event was generated before the
GCEV_OFFERED event, the same CRN is assigned as the one assigned when the
GCEV_DETECTED event was generated.
When using E1, T1 and ISDN technology, if the incoming call does not have sufficient
information, the call is offered to the application when all the required information is received. If
the technology is configured to accept minimum information, the call is offered to the application
when the specified minimum amount of information is received. In this case, the application must
request additional information if required. See Section 3.4.1.8, “Overlap Receiving” for more
information.
A call proceeding indication can be sent by the technology call control layer, or by the application
by issuing the gc_CallAck(GCACK_SERVICE_PROC) function. Otherwise, the application can
accept or answer the call by issuing the gc_AcceptCall( ) or gc_AnswerCall( ) functions,
respectively.
Note: When developing applications, if the GCEV_DETECTED event is not supported, a
GCEV_DISCONNECTED event is only received if the host application already received the
GCEV_OFFERED event before the remote side disconnects.