42 Global Call API for HMP on Windows Programming Guide — August 2006
Call State Models
The following sections describe the asynchronous inbound call processes.
3.4.1.2 Channel Initialization
To establish calls, the following conditions must be met:
• The condition of the line device must be unblocked. When a channel is initially opened, the
initial condition of a line device is blocked. A “blocking” condition on a line device is
indicated by the reception of a GCEV_BLOCKED event and an “unblocking” condition on a
line device is indicated by the reception of a GCEV_UNBLOCKED event. The
GCEV_BLOCKED and GCEV_UNBLOCKED events are sent as unsolicited events to the
application in response to blocking alarms. GCEV_BLOCKED and GCEV_UNBLOCKED
events are related to layer 1 alarms, as well as to channel states (service status in T1 ISDN, bit
states in CAS). GCEV_BLOCKED and GCEV_UNBLOCKED are used as what might be
termed flow-control events within the application. For more information on blocking alarms
and the GCEV_BLOCKED and GCEV_UNBLOCKED events, see Section 4.3, “Blocked and
Unblocked Event Handling”. When the condition of the line device is unblocked, the line
device is ready for establishing calls.
• The call state of the channel must be in the Null state. This is the initial call state of a line
device when it is first opened. This state is also reached when a call is released or after the
channel is reset.
If the above conditions are met, the application or thread must issue a gc_WaitCall( ) function in
the Null state to indicate readiness to accept an inbound call request on the specified line device. In
the asynchronous mode, the gc_WaitCall( ) function must be called only once after the line device
Null (GCST_NULL)
Not Maskable
Previous: Idle
Next: gc_WaitCall( ) ->
Null state
gc_ResetLineDev( ) ->
Null state
GCEV_OFFERED ->
Offered state
GCEV_DETECTED ->
Detected state
gc_WaitCall( ) GCEV_DETECTED,
GCEV_OFFERED
Offered (GCST_OFFERED)
Not Maskable
Previous: Null, Detected
Next:
GCEV_ANSWERED ->
Connected state
GCEV_ACCEPT ->
Accepted state
GCEV_CALLPROC ->
CallRouting state
GCEV_MOREINFO ->
GetMoreInfo state †
GCEV_DISCONNECTED ->
Disconnected state
GCEV_DROPCALL ->
Idle state
gc_CallAck( ),
gc_AnswerCall( ),
gc_AcceptCall( ),
gc_DropCall( )
GCEV_DISCONNECTED,
GCEV_DROPCALL,
GCEV_ACCEPT,
GCEV_ANSWERED,
GCEV_MOREINFO †,
GCEV_CALLPROC
Table 6. Asynchronous Inbound Call State Transitions
State Description Previous/Next State
Valid Call State
Transition
Functions
Call Transition Events
† Applies to E1, T1 and ISDN technology only.