8.2.1 Generation of Events for Blocking Alarms
Global Call alarms are classified as either blocking or non-blocking. Blocking alarms are alarms that cause the application to become blocked and potentially generate a GCEV_BLOCKED event when the alarm is set (the "alarm on" condition is detected). Subsequently, all blocking alarms generate a GCEV_UNBLOCKED event when the alarm clears (the "alarm off" condition is detected). Non-blocking alarms are alarms that do not cause the application to become blocked and do not generate a GCEV_BLOCKED or GCEV_UNBLOCKED event when the alarm is set or clears.
- Note: The gc_SetAlarmConfiguration( ) function can be used to change which alarms are blocking and which alarms are not blocking for a given alarm source object. To retrieve the status of the current alarm configuration, use gc_GetAlarmConfiguration( ). For more on changing the configuration of alarm source objects, see Section 8.2.3, "Configuration of Alarm Properties and Characteristics".
The GCEV_BLOCKED and GCEV_UNBLOCKED events are unsolicited events that are sent in addition to other Global Call events. The blocked and unblocked events do not require any application-initiated action. The blocked event is generated only for the first blocking condition detected. Subsequent blocking conditions on the same line device will not generate additional blocked events. Until all blocking conditions are cleared, the line device affected by the blocking condition (that is, the line device that received the GCEV_BLOCKED event) cannot generate or accept calls. When the line device has completely recovered from the blocking condition a GCEV_UNBLOCKED event is sent.
When a blocking condition occurs while a call is in progress or connected, any calls on the line device that is in the blocked condition are treated in the same manner as if a remote disconnection occurred: an unsolicited GCEV_DISCONNECTED event is sent to the application and the call changes to the Disconnected state. The result value retrieved for the event will indicate the reason for the disconnection, for example, an alarm condition occurred. Result values are retrieved by calling the gc_ResultValue( ) function, see Section 4.4, "Event Retrieval". The GCEV_BLOCKED event is also sent to the application to indicate that a blocking condition occurred; the gc_ResultValue( ) function can be called to retrieve the reason for the GCEV_BLOCKED event, as well.
The GCEV_BLOCKED and GCEV_DISCONNECTED events may arrive in any order. When the blocking condition(s) clears, an unsolicited GCEV_UNBLOCKED event is sent to the application indicating complete recovery from the blocking condition.
When a blocking condition occurs while a line device is in the Null, Disconnected, or Idle state, only the GCEV_BLOCKED event is sent since there is no call to disconnect. The call state does not change when a GCEV_BLOCKED or GCEV_UNBLOCKED event is sent to the application.
- Note: In the asynchronous mode, if a gc_WaitCall( ) function is pending when a GCEV_UNBLOCKED event is generated, the gc_WaitCall( ) function does not need to be reissued.
The GCEV_BLOCKED and GCEV_UNBLOCKED events are generated for blocking alarms at the trunk level and the channel level:
- Trunk Level
- When the Global Call API recognizes a blocking alarm on condition at the trunk level, a GCEV_BLOCKED event is generated for the trunk device, assuming that the trunk is open. A GCEV_BLOCKED event is also generated for all time slots currently open on the trunk device, assuming that the application is currently unblocked. The application will receive a GCEV_BLOCKED event only for the first alarm on condition for a particular line device.
- When the Global Call API recognizes a blocking alarm off condition at the trunk level, a GCEV_UNBLOCKED event is generated for the trunk device, assuming that the trunk is open. A GCEV_UNBLOCKED event is also generated for all time slots currently open on the trunk device, assuming there are no other blocking conditions on the line device. The application will receive a GCEV_UNBLOCKED event only for the last "alarm off" condition for a particular line device.
- Channel Level
- When the Global Call API recognizes a blocking alarm on condition at the channel level, a GCEV_BLOCKED event is generated for the channel, assuming that the application is currently unblocked. The application will receive a GCEV_BLOCKED event only for the first alarm on condition for the line device.
- When the Global Call API recognizes a blocking alarm off condition at the channel level, a GCEV_UNBLOCKED event is generated for the time slot, assuming there are no other blocking conditions on the line device. The application will receive a GCEV_UNBLOCKED event only for the last alarm off condition for the line device.
Note: When using Global Call with DM3 boards, alarms apply only a the trunk level. An alarm that occurs on a trunk applies to all channels on that trunk.
Click here to contact Telecom Support Resources
Copyright 2002, Intel Corporation