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 Section4.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
Table6. 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.