NAME IrEVENTS - IRAPI events SYNOPSIS #include <irapi.h> DESCRIPTION The event structure is used to pass information describing an event from IRAPI to the calling process. It is defined as: typedef struct ir_event { channel_id cid; int event_id; int tag; int event_mod1; int event_mod2; int event_mod3; int event_mod4; int event_text_len; void *event_text; } ir_event_t The ir_event modifiers are: cid Specifies the channel identifier associated with the event. This member is always included. Set this value to IRD_NULL if not applicable. event_id Indicates which event (IRE_*) occurred. These are symbolically defined and are listed below. This member is always included. tag Specifies an identifier passed by the appli- cation with the asynchronous routines. Its value is defined only when an event affects a previous request that includes the value tag. If no tag is associated with the event, tag is set to -1. event_modN Specifies up to four codes (event_mod1 through event_mod4) that provide more detailed information on the event. These members are not defined for all events. Any event modifiers not used are set to IREM_NULL. event_text_len Specifies the length of event_text. Set this value to 0 if it is not used. event_text Specifies a pointer to an area of arbitrary data whose interpretation is event dependent. IRAPI will set this value to IRD_NULL if it is not used. The contents of event_text will change after every call to irWCheck() or irWait() An IRAPI application should copy the contents event_text before calling these functions again. An IRAPI application must not otherwise manipulate this memory, i.e., it should not call free() or realloc() with this pointer. Note: The internal IRAPI event queue adds a null byte to the end of event_text data to ensure that strings stored in this buffer are null terminated. The actual size of the data pointed to by event_text is always event_text_len + 1. Events are used to inform the application about completion of activities, failures to complete an activity, intermedi- ate activity progress, network conditions, or caller input. An application can disable an event by masking it. To mask an event, an application would call irSetEvent() with the event action set to IRF_IGNORE. Events can be used to interrupt activities by setting the event action to an OR'd list of action flags. By default, most event actions are set to IRF_NOTIFY. Following is a list of IRAPI events and their associated modifiers. Each event includes whether it can masked or not. Event actions are set to IRF_NOTIFY by default. Excep- tions are noted where appropriate. IRE_ANSWER_DONE This event is non-maskable. This event indi- cates the completion of a request to answer a call via irAnswer(3IRAPI). IREM_COMPLETE This event modifier indicates that the answer completed suc- cessfully and the cid was put into a IRD_ACTIVE channel ser- vice state. In most cases event_mod2 will have the value of IREM_NULL, but event_mod2 might have the value of IRER_REDUNTANT indicating that the call had already been answered and this call to irAnswer was redundant. This could occur in the case of glare or other special cir- cumstances. It might also be a sign of a minor application error. For PRI, the event_text field will usually contain the message that reported the answer detection. Advanced PRI applications may wish to parse the message for additional information, but most applications will not need to. IREM_ERROR This event modifier indicates the request terminated due to error. event_mod2 (and possi- bly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. No change in channel service state occurred. IRE_BACKGROUND This event is maskable. This event indicates the results of a request to start background play on a particular channel. IREM_COMPLETE This event modifier indicates that the background play was initiated successfully. IREM_INTERRUPT This event modifier indicates that the background play was interrupted. This is likely due to a hardware failure or resource removal. IREM_ERROR This event modifier indicates the request terminated due to error. event_mod2 (and possi- bly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. No change in channel service state occurred. IRE_BOARD_DENY This event is non-maskable. A request to remove a board from service has been denied. This event is only expected by MTC and related processes that take boards out of service. The board that has been denied is identified by event_mod1. IRE_BOARD_GRANT This event is non-maskable. A request to remove a board from service has been granted. This event is only expected by MTC and related processes that take boards out of service. The board that has been granted is identified by event_mod1. IRE_CALL_DONE This event is non-maskable. This event indi- cates the request to make an outbound call via irCall(3IRAPI) completed. The tag for this event is the tag provided as an argument to irCall. Event modifiers are identical to those used for IRE_CALL_PROG. The distinc- tion between IRE_CALL_PROG and IRE_CALL_DONE is that IRE_CALL_DONE indicates that the irCall request has completed. IRE_CALL_PROG indicates intermediate events occur during the call whether a irCall is active or not. For PRI, the event_text field will usually contain the mes- sage that reported the call completion. Advanced PRI appli- cations may wish to parse the message for additional infor- mation, but most applications will not need to. IRE_CALL_PROG This event is maskable. This event occurs when a call progress tone or message has been detected. The tag for this event is unde- fined (most likely set to 0) since it is ambiguous as to what tag would apply to the event. For PRI, the event_text field may contain the message that reported the call progress. Advanced PRI applications may wish to parse the event_text field for additional information, but most applications will not need to. Event_mod1 for this event contains the specific tone or message received: IREM_RINGBACK This modifier to the IRE_CALL_PROG event occurs for each detected ring returned by the network. An IREM_RINGBACK is currently only expected with analog (tip/ring) chan- nels. When provided as a modifier to the IRE_CALL_DONE event, this means that the first audible ring was detected while IRP_OUTCALL_MAXRINGS was set to 0. WARNING: The audible ring heard by the called party may occur at a different time than the ringback provided via the network. If the called party answers the call on or before the first audible ring, it is possible that the VIS never receives a ringback from the network. Therefore, applica- tions that depend upon receiv- ing one or more IRE_CALL_PROG or IRE_CALL_DONE events with the IREM_RINGBACK modifier may fail to detect that the called party has answered the phone. IREM_ERROR This event modifier occurs if there is an error. event_mod2 (and possibly event_mod3) con- tain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for pos- sible values. If the event_id is IRE_CALL_DONE, the irCall request has been aborted and the service state may have been modified. If the event_id is IRE_CALL_PROG, an error has been detected and call completion analysis (if enabled) most likely has been stopped. The application should take appropriate recovery steps. IREM_DENY This event modifier indicates that the requested action failed as the necessary resources could not be obtained within the interval specified. This modifier is expected on an IRE_CALL_DONE when a pending request for CCA resources is denied after a timeout. event_mod2 may contain addi- tional information about the reason for the denial. IRER_RTU_BUSY indicates that the necessary Feature License did not become available within the specified timeout period. IRER_RESOURCE_BUSY indicates that the necessary resource did not become avail- able in the specified timeout period (but the Feature License was available). IREM_NULL indicates no further information about why the resource was not available. IREM_CCA_BUSY This event modifier indicates that CCA resources were depleted. This is slightly different than IREM_DENY in that it indicates the Resource Manager (RM) thought the CCA resources were available, but the CCA packfile thought that the SP circuit card was already fully used. IREM_CHAN_REMOVED This event modifier only applies to irInitCall or irIn- itCallGroup. It indicates that the channel used for an outbound call attempt has been removed for use by another process. When the event_id is IRE_CALL_DONE, the outbound call attempt has failed. When the event_id is IRE_CALL_PROG, the IRAPI library is automati- cally trying another channel in the group specified as an argument to irInitCallGroup. IREM_COT This event modifier indicats that an outbound call has failed since SS7 continuity checking needs to continue on the channel used for the out- bound call. When the IREM_COT modifier is received for an IRE_CALL_DONE event, the application should release the channel by calling irDeinit. In general, the application should attempt to place the outbound call on another channel. When the IREM_COT modifier is received for an IRE_CALL_PROG event, it means that irInitCallGroup encoun- tered interference from con- tinuity testing on one chan- nel, has automatically called irDeinit to release the chan- nel, and has gone ahead to attempt using another channel in the group. This event modifier is only expected on SS7 channels and does not by itself imply a problem in the voice system or connections to the switch. IREM_GLARE This event modifier indicates that an outbound call has failed since there is an incoming call on that channel. When the IREM_GLARE modifier is received for an IRE_CALL_DONE event, the recommended action is to call irExecDefOwn with a svc_type argument of IRD_AD_STARTUP to release the channel and then allow the Application Dispatch (AD) process to pass the call to an application to answer the incoming call. In gen- eral, the application should attempt to place the outbound call on another channel. When the IREM_GLARE modifier is received for an IRE_CALL_PROG event, it means that irInitCallGroup encoun- tered glare on one channel, has automatically called irEx- ecDefOwn to release the chan- nel back to AD, and has gone ahead to attempt using another channel in the group. For Tip/Ring channels, the event_mod2 value can be used to determine the type of glare condition that was encoun- tered. IREM_NO_DIALTONE indicates that no dialtone was detected within IRP_TR_GLARE_TIMEOUT seconds of going off-hook. IREM_TT indicates that a touch tone was received after going off- hook and before hearing dial- tone or dialing digits (the digit received is in event_mod3). When IREM_TT is reported, the digit will be placed on the input queue and an IRE_INPUT event will be queued up to follow this IRE_CALL_DONE event. If an irExecDefOwn is done, the new channel owner will unfor- tunately not get the IRE_INPUT event, but the input queue will contain the touch tone digit that was received. An event_mod2 of IREM_CALLINFO_ARRIVED indi- cates that call information arrived for the cid. The call information id is in event_mod3 and the irLBolt time the call information was received is in event_mod4. For T1, E1, and PRI channels, the event_mod2 value will be IREM_NULL since there is only one type of glare detection for those telephony types. IREM_GRANT This event modifier only applies to IRE_CALL_PROG and indicates that a pending request for CCA resources required for the call has been satisfied. The state is changing from IRS_CALL_PENDING to IRS_CALLING. IREM_REORDER This event modifier occurs if there is a reorder tone (fast busy). IREM_HIDRY This event modifier occurs when there is no line activity for 25 seconds after a call has been dialed. IREM_DIALTONE This event modifier indicates dial tone is detected. For ISDN PRI, the ISDN cause value is contained in event_mod2, otherwise event_mod2 is IREM_NULL. IREM_STUTTER_DIALTONE This event modifier indicates stutter dial tone is detected. IREM_MODEM This event modifier occurs if a modem tone is detected. IREM_DIALDONE This event modifier occurs when dial is complete during the irCall(3IRAPI). IREM_BUSY This event modifier occurs if a busy tone is detected. For ISDN PRI, the ISDN cause value is contained in event_mod2, otherwise event_mod2 is IREM_NULL. IREM_FAST_BUSY This event modifier occurs if "fast" busy tone is detected. For ISDN PRI, the ISDN cause value is contained in event_mod2, otherwise event_mod2 is IREM_NULL. IREM_ANSWER This event modifier occurs on answer detection (for example, voice energy or cessation of ringing detected). IREM_ANSWER_SUP This event modifier occurs on answer supervision from the switch. IREM_TT This event modifier applies only to IRE_CALL_DONE and indicates that a touch tone was detected (presumably indi- cating that the call was answered). IREM_NOANSWER This event modifier occurs when there is ringing, but no answer after IRP_OUTCALL_MAXRINGS. If IRP_OUTCALL_MAXRINGS is set to 0, IREM_RINGBACK occurs rather than IREM_NOANSWER. IREM_RING_STOPPED This event modifier occurs when cessation of ringing has been detected. This can gen- erally be considered a form of successful answer detection, but does not indicate that speech energy has been detected. This modifier currently only applies to LST1 or LSE1 (cessation of ringing on T/R channels is reported as an IRE_ENERGY event). IREM_HUNGUP This event modifier occurs if the orignal caller disconnects (hangs up) while the applica- tion is doing a transfer (via irFlash and irDial). IREM_TIMEOUT This event modifier occurs if there is no call classifica- tion after the timeout implied by IRP_OUTCALL_MAXRINGS. IREM_BLIND This event modifier indicates the completion of a blind call. IREM_USER1 This event modifier is reserved for customized appli- cations and currently is not implemented. IREM_USER2 This event modifier is reserved for customized appli- cations and currently is not implemented. IREM_PROT_PROV This event modifier indicates that there was an ISDN proto- col or provisioning error. The ISDN cause value is con- tained in event_mod2. IREM_INVALID_DIALSTRING This event modifier indicates that an outbound irCall or irDial failed due to an invalid dial string. IREM_ISDN_VACANT This event modifier indicates that there was an ISDN vacant code error. The ISDN cause value is contained in event_mod2. IREM_SIT This event modifier indicates special information tones and primarily applies to using Full CCA (that is, when IRP_OUTCALL_CCALEVEL parameter is set to IRD_FULL_CCA). It can occur occasionally without the use of Full CCA as described below. Event_mod2 can be: IREM_RO_INTRALATA Intralata reorder IREM_RO_INTERLATA Interlata reorder IREM_NC_INTRALATA Intralata no circuit IREM_NC_INTERLATA Interlata no circuit IREM_NC_INTL International no circuit IREM_VC Vacant code IREM_IC Intercept This event modifier can also be reported on Tip/Ring channels without use of Full CCA. In that case, it represents a non-SIT inter- cept tone (such as the one used by most AT&T PBX's to indi- cate that an invalid exten- sion was dialed). IREM_FUTURE Future, reserved IREM_FF Foreign failure (international) IREM_OTHINTL International other IREM_OTHDOM Domestic other IREM_OTHINEF Ineffective other IREM_UNKNOWN Unknown SIT type IRE_CHAN_DENY This event is non-maskable. This event indi- cates the failed allocation of a channel to a process as a result of a call to irInit(3IRAPI3), irForceInit(3IRAPI) or irInitGroup(3IRAPI) which returned IRR_PENDING. After receiving the event, processes should stop using the channel_id returned from one of these functions as it is invalid. The event element cid is set to IRD_NULL. If the event is the result of either irInit(3IRAPI) or irForceInit(3IRAPI), event_mod1 is set to the channel number requested and event_mod2 is set to IRD_INVALID. If the event is the result of irInitGroup(3IRAPI), event_mod1 is set to IRD_INVALID and event_mod2 is set to the group number requested. IRE_CHAN_GRANT This event is non-maskable. This event indi- cates a channel has been allocated success- fully to a process as a result of a call to irInit(3IRAPI3), irForceInit(3IRAPI) or irInitGroup(3IRAPI) which returned IRR_PENDING. IRE_CHAN_IS_DONE This event is non-maskable. This event indi- cates a request to place a channel in-service via irChanIS(3IRAPI) completed. IREM_COMPLETE This event modifier indicates that the request completed successfully and the cid was put into a IRD_INACTIVE chan- nel service state. IREM_ERROR This event modifier indicates the request terminated due to error. event_mod2 (and possi- bly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IRE_CHAN_OOS_DONE This event is non-maskable. This event indi- cates a request to place a channel out-of- service via irChanOOS(3IRAPI) completed. IREM_COMPLETE This event modifier indicates that the request completed successfully and the cid was put into a IRD_CHAN_OOS chan- nel service state. IREM_ERROR This event modifier indicates the request terminated due to error. event_mod2 (and possi- bly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. No change in channel service state occurred. For PRI, the event_text field will usually contain the mes- sage that reported the failure to remove the channel from service. Advanced PRI appli- cations may wish to parse the message for additional infor- mation, but most applications will not need to. IRE_CHAN_REMOVED This event is not maskable. This event occurs when a channel is taken away from a process. This can happen if the maintenance process (MTC) removes a channel due to a user request or a system hardware error, or when another process requests a channel. When and how channels are removed from a process may be controlled to some extent by setting the IRP_CHAN_NEGOTIATION parameter. See irInit(3IRAPI) and IrPARAMETERS(4IRAPI). The channel number is returned as event_mod1. An application receiving this event should dis- continue all use of the cid that was associ- ated with the channel. The channel is deini- tialized automatically, therefore irDeinit() should not be called by the application. IRE_CHAN_REQUESTED This event is maskable. This event occurs when a process requests a channel from an application with the IRP_CHAN_NEGOTIATION set to IRD_CONDITIONAL. The process receiving the event may choose to release the channel immediately via irDeinit(3IRAPI), complete the call and/or do any post call processing and release the channel, or completely ignore the event, thereby denying ownership to the requesting process. IRE_CLOCK This event is maskable for cid based timers only. This event occurs every time a predesignated number of clock time units have elapsed (timeout interval). The irStartTimer(3IRAPI) function is used to specify the time interval between successive clock events on a given cid. The irStartPTimer(3irPAI) function is used to specify the time interval between successive clock events on a process wide basis. The subsequent IRE_CLOCK event has a valid cid element only for timers started with irStartTimer(3IRAPI) but not irStartPTimer(3IRAPI). See irTimer(3IRAPI). IRE_DEFOWNER This event is non-maskable. This event indi- cates that a channel has just been returned to its default owner. event_mod1 indicates the channel number. IRE_DEINIT_DONE This event is maskable. This event, by default, is set to IRF_IGNORE. This event indicates that a channel has been idled and released to the default owner or parent pro- cess after execution of irDeinit(3IRAPI). Note that the cid element in the event structure is set to IRD_NULL since there is no longer a cid associated with the channel. event_mod1 contains the channel number released. tag contains the tag passed to irDeinit or irReturn. This event is not generated if the calling process never had ownership of the channel. This would be the case if a process attempted to gain ownership of a channel via irInit(3IRAPI) and received an IRR_PENDING return code, thereby placing the channel in the IRS_INIT_PENDING state. If the channel is released via irDeinit(3IRAPI) prior to receiving an IRE_CHAN_GRANT, the release is immediate and no IRE_DEINIT_DONE event is generated. IRE_DENY This event is non-maskable. This event indi- cates a request for some resource was denied after a resource request timeout. event_mod1 may contain additional information about the reason for the denial. IRER_RTU_BUSY indicates that the necessary Feature License did not become available within the specified timeout period. IRER_RESOURCE_BUSY indicates that the neces- sary resource did not become available in the specified timeout period (but the Feature License was available). IREM_NULL indicates no further information about why the resource was not available. This event applies to some but not all func- tions returning IRR_PENDING where the pending resource was not granted after the timeout interval specified in IRP_RESOURCE_RETURNMODE. The mutually exclusive functions result in a DONE event (for example, IRE_CALL_DONE) with an event modifier of IREM_DENY rather than this separate IRE_DENY event. IRE_DIAL_DONE This event is non-maskable. This event indi- cates a request to dial a string via irDial completed. IREM_COMPLETE This event modifier indicates a dial request completed suc- cessfully. IREM_ERROR This event modifier indicates the request terminated due to error. event_mod2 (and possi- bly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IRE_DISCONNECT This event is non-maskable. This event occurs when disconnect is detected on a chan- nel, but is not guaranteed to be generated for all telephony interface types. The event modifiers are a subset of those used for IRE_CALL_PROG or IREM_NULL. By default, the event mask is set to inter- rupt outbound calls, and all play, say, and record activity when this event occurs [event mask set to (IRF_NOTIFY | IRF_CALLINTR | IRF_PLAYINTR | IRF_RECINTR | IRF_SAYINTR). Since this event is not generated for all telephony interface types, an application using those telephony interface types should not depend on receiving an IRE_DISCONNECT for all cases of the remote end terminating a call. In particular, a T/R interface does not have a reliable means of detecting a discon- nect that is independent of the application. Depending on the application, a disconnect on a T/R interface may be indicated by an IRE_WINK event or an IRE_CALL_PROG event with an event modifier of IREM_DIALTONE, IREM_STUTTER_DIALTONE, IREM_REORDER, IREM_BUSY, or IREM_RINGBACK. The application must determine whether such events represent a disconnect or normal activity as part of an irCall, irDial, or irFlash. For PRI, the event_text field will usually contain the message that reported the call disconnect. Advanced PRI applications may wish to parse the message for additional information, but most applications will not need to. IRE_DISCONNECT_DONE This event is non-maskable. This event indi- cates a request to disconnect a call via irDisconnect(3IRAPI) completed. IREM_COMPLETE This event modifier indicates the request to disconnect the call completed successfully. The channel service state has changed to IRD_INACTIVE. IREM_ERROR This event modifier indicates the request terminated due to error. event_mod2 (and possi- bly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. For PRI, the event_text field may contain the message that reported the failure to disconnect properly. Advanced PRI applications may wish to parse the message for addi- tional information, but most applications will not need to. IRE_DISCONNECT_TONE This event is maskable. This event, by default, is set to IRF_IGNORE. If the IRE_DISCONNECT_TONE event is set to IRF_NOTIFY (see irSetEvent(3IRAPI)), then an application may receive this event (based on the values specified in the irAPI.rc(4IRAPI) file) instead of receiving the corresponding IRE_CALL_PROG event when a ringing, busy, reorder, dialtone, or stutter dialtone call progress tone has been detected. Applica- tions which have enabled this event should, in general, treat it as an IRE_DISCONNECT event. This event currently only occurs on analog (tip/ring) channels. If an applica- tion is performing outcalling by using irAnswer(3IRAPI) instead of irCall(3IRAPI) or is doing blind outbound calls with irCall(3IRAPI), then it may receive an IRE_DISCONNECT_TONE event that should not be considered a disconnect event. Such applica- tions should either set the IRF_IGNORE flag or treat the IRE_DISCONNECT_TONE appropri- ately based on the current state of the call. The tag for this event is undefined (most likely set to 0) since it is ambiguous as to what tag would apply to the event. Event_mod1 for this event contains the specific tone received: IREM_RINGBACK This modifier to the IRE_DISCONNECT_TONE event occurs for each detected ring returned by the network. IREM_REORDER This event modifier occurs if there is a reorder tone (fast busy). IREM_DIALTONE This event modifier indicates dial tone is detected. IREM_STUTTER_DIALTONE This event modifier indicates stutter dial tone is detected. IREM_BUSY This event modifier occurs if a busy tone is detected. IRE_ECHO_START This event is non-maskable. This event indi- cates the results of an attempt to start echo cancellation via irStartEcho(3IRAPI). IREM_COMPLETE This event modifier indicates the request to start the echo canceler completed success- fully. The channel is ready to do speech recognition while prompting. IREM_ERROR This event modifier indicates the request to start the echo canceler failed. event_mod2 contains the error code and event_mod3 may contain supple- mental error code information. IREM_DENY This event modifier indicates the request to start echo can- cellation failed due to echo cancellation resources not being available in the number of milliseconds specified in IRP_RESOURCE_RETURNMODE when irStartEcho(3IRAPI) was exe- cuted. event_mod2 may contain additional information about the reason for the denial. IRER_RTU_BUSY indicates that the necessary Feature License did not become available within the specified timeout period. IRER_RESOURCE_BUSY indicates that the necessary resource did not become avail- able in the specified timeout period (but the Feature License was available). IREM_NULL indicates no further information about why the resource was not available. IRE_ECHO_STOP This event is non-maskable. This event indi- cates that echo cancellation has been stopped. IREM_COMPLETE This event modifier indicates echo cancellation has been successfully stopped. This is the normal result of stopping echo cancellation via irStopEcho(3IRAPI). IREM_ERROR This event modifier indicates echo cancellation has been stopped due to an error. event_mod2 (and possibly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. When event_mod2 is IRER_RESOURCE_REMOVED, it indicates that echo cancella- tion resources were forcibly removed by a maintenance pro- cess. IRE_ENERGY This event is maskable. This event occurs when speech energy is detected on the channel while irStartSpeechED is active. event_mod1 contains the original event channel number. event_mod2 contains the original event recipient's qkey value. For historical reasons, it may also occur when cessation of ringing is detected by a T/R card while irStartSpeechID is inactive. In the future, a different event may represent cessation of ringing (eg. IRE_CALL_DONE or IRE_CALL_PROG with IREM_RING_STOPPED modifier). IRE_EVENT_MONITOR This event is non-channel based and is there- fore non-maskable. This event indicates that an event specified for monitoring via irEventMonitor(3IRAPI) has occurred. event_text contains a pointer to the event being monitored. Beware that any pointer values in the monitored event are only valid within the context of the process receiving the original event at the time the event is reported. IRE_EXCEPTION This event is not maskable. This event occurs when an asynchronous failure happens and must be reported to the application so the application may take appropriate action, i.e., terminate the call. Event_mod1 indi- cates the class of error as follows: IREM_BRIDGE This event modifier indicates a card does not have enough resources to complete a bridge request made to it. Event_mod2 indicates the chan- nel number that could not be bridged. Event_mod3 indicates the reason for the failure. Event_mod4 indicates the number of IRE_EXCEPTION events the application has been sent so far. IREM_RESOURCE This event modifier indicates a card does not have enough resources to complete a timeslot connect request made to it. Event_mod2 indicates the channel number of the timeslot connect request. Event_mod3 indicates the rea- son for the failure. Event_mod4 indicates the number of IRE_EXCEPTION events the application has been sent so far. IRE_EXEC This event is not maskable. This event occurs when an application has been irExec(3IRAPI)'ed or irSubProg(3IRAPI)'ed on a channel. event_mod1 is the channel number. event_mod2 is IREM_SUBPROG if the event is the result of an irSubProg(3IRAPI) call, or IREM_EXEC if the event is the result of an irExec(3IRAPI) call. Applications are expected to irInit(3IRAPI) the channel after receiving this event. After successful ini- tialization of the channel, the exec buffer may be accessed though the IRP_EXEC_BUF parameter. IRE_EXTERNAL This event is maskable. This event occurs when another process sends an event to the IRAPI with irPostEvent(3IRAPI). event_text_len contains the length of event_text. event_text points to the message header ( struct mbhdr ) and data passed by irPostEvent(3IRAPI). See irPostEvent(3IRAPI) for details. IRE_FAXPRINT_DONE This event is non-maskable. This event indi- cates that a FAX print has completed. Event_mod1 indicates the reason for the FAX print completion as follows: IREM_COMPLETE The FAX print request com- pleted successfully. IREM_ERROR The FAX print request ter- minated due to error. event_mod2 contains error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IREM_STOPPED The request was terminated due to irStop(3IRAPI) or an event interrupt. IREM_DENY The request was terminated due to a timeout on waiting for FAX print resources. event_mod2 may contain addi- tional information about the reason for the denial. IRER_RTU_BUSY indicates that the necessary Feature License did not become available within the specified timeout period. IRER_RESOURCE_BUSY indicates that the necessary resource did not become avail- able in the specified timeout period (but the Feature License was available). IREM_NULL indicates no further information about why the resource was not available. For IREM_COMPLETE, IREM_ERROR, and IREM_STOPPED, event_mod3 contains the number of pages printed, event_mod4 contains the number of bytes printed, event_text contains the job_id for this job as a character string and event_text_len, is its length. IRE_FAXPRINT_PROG This event is maskable. This event indicates that a FAX job ID is now available. The job ID is a character string of length event_text_len pointed to by event_text. The size of the job ID will be at most IRD_FAX_JOB_ID_LENGTH characters. Event_mod1 indicates the validity of the job ID as fol- lows: IREM_NULL Job ID is valid. IREM_ERROR Job ID is not valid. Expect a subsequent failure mode IRE_FAXPRINT_DONE. IREM_STOPPED Job ID is not valid. This event will result if irStop(3IRAPI) was called or an event inter- rupting FAX print was received. Expect a subsequent IRE_FAXPRINT_DONE with the IREM_STOPPED modifier. IRE_FAXRECORD_DONE This event is non-maskable. This event indi- cates that a FAX record has completed. The number of bytes recorded is available from irGetVCount(3IRAPI). Event_mod1 indicates the reason for the FAX record completion as follows: IREM_COMPLETE The FAX record request com- pleted successfully. IREM_ERROR The FAX record request ter- minated due to error. event_mod2 contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IREM_PARTIAL The FAX record request com- pleted prematurely due the reason indicated in event_mod2. IREM_STOPPED The request was terminated via user request ( irStop(3IRAPI)) or event interrupt. IREM_DENY The request was terminated due to a timeout on waiting for FAX record resources. For IREM_COMPLETE, IREM_ERROR, IREM_PARTIAL, and IREM_STOPPED, event_mod3 contains the number of pages recorded, event_mod4 contains the number of bytes recorded, event_text con- tains the remote tsi as a character string and event_text_len, is its length. IRE_FAX_TONE This event is maskable. This event indicates that FAX tone has been detected. event_mod1 contains either IRF_CNG or IRF_CED for the type of tone detected. FAX tone detection is turned on. event_mod3 contains the duration of the CNG tone in milliseconds. CNG tone duration may be used to truncate a voice file recorded at the time CNG tone is detected. The duration indicated in event_mod3 should be truncated from the end of the file (see F_FREESP). Note that event_mod2 is unused, event_mod3 is used instead for backward compatibility reasons. IRE_FLASH_DONE This event is non-maskable. This event indi- cates a request to perform a hook flash. IREM_COMPLETE This event modifier indicates the request completed success- fully. IREM_ERROR This event modifier indicates the request terminated due to an error. event_mod2 (and possibly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IRE_GRANT This event is maskable. This event indicates a request to reserve one or more resources has been granted. This is a possible subse- quent event for any function returning IRR_PENDING. IRE_INPUT This event is maskable. This event occurs when any input is detected. Event_mod1 can be: IREM_TT For touch-tone input: event_mod2 contains the touch-tone digit [see IrDIALSTRINGS(4IRAPI)], event_mod3 contains the sequence number, event_mod4 contains the lbolt time when the touch-tone was received. The tag event structure field is not valid for IRE_INPUT with the IREM_TT modifier. NOTE: In the unlikely case of glare being detected on Tip/Ring channels by touch- tones being received before dialing an outbound call, it is possible for an application to miss the first IRE_INPUT event when an IRE_CALL_DONE event with IREM_GLARE and IREM_TT modifiers causes the prior channel owner to call irExecDefOwn. The digit received will however be on the input queue. IRE_INPUT_DONE This event is maskable. This event occurs when the specified input parameters are satisfied. That is, input exists on the input queue such that a delimiter character has been received, a specified number of characters have been received, or an input timeout has occurred. Note that IRE_INPUT_DONE may or may not be associated with a IRE_INPUT event. If parameters are modified such that the current state of the input queue meets the conditions specified in the parameters, a IRE_INPUT_DONE event is generated by the next call to irWait(3IRAPI). The tag field of the event structure has no meaning for this event. Possible values for event_mod1 include: IREM_INPUT_LENGTH This event modifier occurs when the number of input char- acters as specified in IRP_INPUT_LEN has been reached. IREM_INPUT_DELIM This event modifier occurs when the input string delimit- ing character string as speci- fied in IRP_INPUT_DELIM1 and IRP_INPUT_DELIM2 is received. event_mod2 marks the position in the input queue where the delimiter matches the input. IREM_TT_PRE This event modifier occurs when the IRP_TT_PRETIME inter- val elapses after issuing irStartTTTimer(3IRAPI) and no input is detected. IREM_TT_INTER This event modifier occurs when the IRP_TT_INTERTIME interval elapses after the most recent input is received. IREM_RECOG For speech or dial pulse recognition input: event_mod2 indicates the disposition of the recognition, either IREM_COMPLETE or IREM_ERROR. If IREM_COMPLETE, event_mod3 contains the number of charac- ters placed on the input queue as a result of this event, and event_mod4 indicates the recognizer. If IREM_ERROR, event_mod3 (and possibly event_mod4) contains the error codes for failure. [NOTE: The error codes are shifted down by one modifier from the loca- tions described in IrERRORS(4IRAPI).] When recognition input is received, the tag field of the event structure contains the value of the tag used with irStartRecog(3IRAPI). Note that receiving this event automatically turns off the recognizer. IREM_RECOG_PRE This event modifier occurs when the IRP_RECOG_PRETIME interval elapses after issuing irStartRecogTimer(3IRAPI) and no input is detected. IREM_RECOG_INT This event modifier occurs when the IRP_RECOG_INTTIMER interval elapses since the most recent utterance or dial- pulse has been detected. Similar to IREM_RECOG, event_mod2 indicates the disposition of the recogni- tion, either IREM_COMPLETE or IREM_ERROR. If IREM_COMPLETE, event_mod3 contains the number of characters placed on the input queue as a result of this event, and event_mod4 indicates the recognizer. If IREM_ERROR, event_mod3 (and possibly event_mod4) contains the error codes for failure. IRE_INTERRUPT This event is non-maskable. This event indi- cates that while a process was waiting in irWait(3IRAPI), it was interrupted by a UNIX signal or some other interrupt. This event may be used by a process to alert the process of an interrupt. For example, by setting signals, a process may force an exit from irWait(3IRAPI) at appropriate times. IRE_LOOP This event is maskable. This event occurs when there is a change in loop current such that the presence of loop current is detected. This event, by default, is set to IRF_IGNORE. IRE_NETWORK_ERROR This event is non-maskable. This event indi- cates an error has been detected by the tele- phone network or network interface card. In most cases, the application should call irDeinit to attempt to recover from the prob- lem. Additional information about the error can be found in event_mod2. When this error occurs for a PRI channel, event_mod2 contains the ISDN cause value or the SP PRI error code. When this error occurs for an E1, T1, LSE1, or LST1 channel, event_mod2 generally contains the T1 driver error number. When this error occurs for an ASAI channel, event_mod2 contains IREM_HUNGUP when the ANI or DNIS value has changed between the first NEWCALL event and the attempt to answer the call with irAnswer (this generally indicates the first of two callers hung up before the call was answered). This event might be preceded by an IRE_ANSWER_DONE, IRE_CALL_DONE, IRE_CHAN_OOS_DONE, or IRE_DISCONNECT_DONE with an event modifier of IREM_ERROR. If so, the application may have already called irDeinit(3IRAPI) by the time that this event is received by the application. No harm is expected if the application makes a redundant call to irDeinit. This likely results in a return of IRR_FAIL with irSysError set to IRER_BADSTATE. For PRI, the event_text field may contain the message that reported the network error. Advanced PRI applications may wish to parse the message for additional information, but most applications will not need to. IRE_NEWCALL This event is non-maskable. This event indi- cates a new call has come in on a channel. An application that is exec-ed by the AD pro- cess as a result of a new call sees this event as the first message after doing irInit. Most applications can safely ignore this IRE_NEWCALL since the application is probably written to answer the incoming call. If the IRE_NEWCALL is received after discon- necting from a call, the event indicates that a second incoming call has arrived. Most applications can deal with the second IRE_NEWCALL by doing a irDeinit on the chan- nel to allow AD to assign the call to the proper application. If the irDeinit happens automatically by other means, the second IRE_NEWCALL can also be ignored. For PRI, the event_text field will usually contain the message that reported the incom- ing call. Advanced PRI applications may wish to parse the message for additional informa- tion, but most applications will not need to. IRE_NOLOOP This event is maskable. This event occurs when there is a change in loop current such that no loop current is detected. IRE_NULL This event is non-maskable. No event has occurred. The IRE_NULL event is generated when irCheck(3IRAPI) is called with no event queued. IRE_PLAY_DONE This event is non-maskable. This event indi- cates that play has completed. The amount of time played is available from irGetVCount(3IRAPI). Event_mod1 indicates the reason for the play completion as fol- lows: IREM_COMPLETE The play request completed successfully. IREM_TALKOFF The play request was talked off by caller input. If the talkoff was due to an invalid sequence number, then event_mod2 will be set to IREM_SEQNO. Otherwise, event_mod2 will be set to IREM_NULL. IREM_STOPPED The play request was stopped via a software message such as irStop. IREM_NODATA The play request specified contained no data. This event modifier indicates that voice file descriptor(s) were repo- sitioned via irLSeek(3IRAPI) to the end of the file(s). IREM_ERROR The play request terminated due to error. event_mod2 (and possibly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IREM_HUNGUP Thie play request was abruptly terminated by the caller hanging up the phone. IREM_DENY The request was terminated due to a timeout on waiting for play resources. event_mod2 may contain additional infor- mation about the reason for the denial. IRER_RTU_BUSY indicates that the necessary Feature License did not become available within the specified timeout period. IRER_RESOURCE_BUSY indicates that the necessary resource did not become available in the specified timeout period (but the Feature License was available). IREM_NULL indi- cates no further information about why the resource was not available. IRE_PLAY_PROG This event is maskable. By default, this event is set to IRF_IGNORE. When repeated play functions [irPlay(3IRAPI), irFPlay(3IRAPI), irBPlay(3IRAPI)] are queued, a single IRE_PLAY_PROG event occurs when each intermediate play is finished, except for the last one. The last event generates an IRE_PLAY_DONE. Access irGetVCount(3IRAPI) to determine the time played after each inter- mediate play completes. IRE_PRI_MSG This event is maskable. This event reports PRI messages that were not internally pro- cessed by the IRAPI library (messages that were internally processed are reported via event_text for IRE_ANSWER_DONE, etc). Typi- cally this event will be seen for PRI mes- sages such as FACILITY, FAC_ACK, FAC_REJ, REGISTER, etc. Most applications can safely ignore this event. Advanced PRI applications may need to deal with this event to handle special signaling messages provided by the switch. IRE_RECOGNIZING This event is maskable. This event informs the application that a recognizer has deter- mined it has valid input, but before the recognition has completed. event_mod1 indi- cates the recognizer. An application can, for example, turn off all other recognizers that may be running on the same input, and allowing the recognizing recognizer to con- tinue. IRE_RECORD_BUF This event is non-maskable. This event informs the application that a buffer of recorded speech has been placed in the area pointed to by buf, buf is provided from an earlier call to irBRecord [see irRecord(3IRAPI)]. event_mod1 contains the number of bytes copied to the area pointed to by buf. The event tag is set to the tag used in the call to irBRecord. IRE_RECORD_DONE This event is non-maskable. This event indi- cates that the requested voice record com- pleted. The amount of time recorded is available from irGetVCount(3IRAPI). The event_mod1 modifiers are as follows: IREM_COMPLETE The record request completed due to recording count mil- liseconds of speech where count was specified via the irRecord function. IREM_TALKOFF The record request terminated due to caller input. IREM_STOPPED The record request stopped via a software message resulting from irStop. IREM_SILENCE The record request terminated due to silence detection. IREM_ERROR The record request terminated due to error. event_mod2 (and possibly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IREM_DENY The record request timed out while waiting for record resources. event_mod2 may contain additional information about the reason for the denial. IRER_RTU_BUSY indi- cates that the necessary Feature License did not become available within the specified timeout period. IRER_RESOURCE_BUSY indicates that the necessary resource did not become available in the specified timeout period (but the Feature License was available). IREM_NULL indi- cates no further information about why the resource was not available. IREM_HUNGUP The play request was abruptly terminated by the caller hanging up the phone. IRE_REPORT_DISK This event is non-maskable. This event is generated in response a call to irSPDReportDisk(3IRAPI). For this event, cid is not defined. Event_mod1 contains the number of purchased logical blocks available, event_mod2 contains the total number of pur- chased logical blocks in the speech file- system(s), and event_mod3 contains the number of bytes in each block. IRE_RESERVE_DISK This event is non-maskable. This event is generated in response to a call to irSPDReserveDisk(3IRAPI). For this event, cid is not defined. Event_mod1 indicates the disposition of the request as follows: IREM_COMPLETE The specified number of bytes was successfully reserved. The path-name of the file- system where the specified number of bytes was reserved is indicated in event_text. IREM_ERROR The request could not be satisfied due to insufficient space. IRE_RESERVE_DONE This event is non-maskable. This event indi- cates that a irPhReserve has completed. IREM_COMPLETE The request has been completed successfully. IREM_ERROR The request terminated due to error. event_mod2 (and possi- bly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IRE_RETURN This event is non-maskable. This event indicates that a irSubProg has completed. IREM_COMPLETE The request has been completed successfully. event_mod2 con- tains a return code passed by the called application through the value argument of irReturn(3IRAPI) . tag con- tains the tag passed to irSub- Prog. IREM_ERROR The request terminated due to error. event_mod2 (and possi- bly event_mod3) contain error code values that may help resolve the problem. See IrERRORS(4IRAPI) for possible values. IRE_RESOURCE_REMOVED This event is maskable. This event occurs when a explicitly reserved dynamic resource is removed from a channel due to a mainte- nance process. If the resource was currently being used, the activity making use of it is stopped automatically. event_mod1 contains the resource capability and event_mod2 con- tains the implementation. See IrRESOURCES(4IRAPI). This event does not occur when implicitly allocated resources are removed by a mainte- nance process. Instead, the application should expect to receive the associated done or stop event with event modifiers of IREM_ERROR and IRER_RESOURCE_REMOVED. (for example, see IRE_PLAY_DONE and IRE_ECHO_STOP). IRE_REVERSE This event is maskable. This event is reserved for future use to indicate that current reversal has been detected on a chan- nel. IRE_SAY_DONE This event is non-maskable. This event indi- cates that the request for TTS was completed. The same event_mod1 modifiers apply for IRE_SAY_DONE as were used for IRE_PLAY_DONE. The number of bytes played is available irGetVCount(3IRAPI) ( for the IRD_SWTTS implementation of the IRC_TTS resource only). The vcount value is also available in event_mod4. IRE_SAY_PROG This event is maskable. By default, this event is set to IRF_IGNORE. When repeated text to speech functions [irSay(3IRAPI), irFSay(3IRAPI), irBSay(3IRAPI)] are queued, a single IRE_SAY_PROG event occurs when each intermediate say is finished, except for the last one. The last event generates an IRE_SAY_DONE. Access irGetVCount(3IRAPI) to determine the number of bytes played after each intermediate say completes. The vcount value is also available in event_mod4. NOTE: This event is only applicable when using the IRD_SWTTS implementation of the IRC_TTS resource (see IrRESOURCES(4IRAPI)). IRE_LANGID_DONE This event is maskable. By default, this event is set to IRF_NOTIFY. This event indi- cates the request to identify a language completed. The event_mod1 modifiers are as follows: IREM_COMPLETE The language identification request completed success- fully. Event_mod2 is the recognized language and sub- language of the text contained in the buffer or file. The values will be valid Microsoft Speech API 4.0 language iden- tifiers. Currently, the Ler- nout & Hauspie language recog- nizer will only detect sub- languages in written text for German (Standard or Swiss) and Portuguese (Standard and Bra- zilian). The language and sub-language are encoded as follows: Bits 0 to 9 - language as identified in the SAPI 4.0 specification and as supported by the Lernout & Hauspie Language Recognition engine. unknown 0x00 Afrikaans 0x36 Albanian 0x1c Arabic 0x01 Basque 0x2d Bulgarian 0x02 Catalan 0x03 Chinese 0x04 Croatian 0x1a Czech 0x05 Danish 0x06 Dutch 0x13 English 0x09 Estonian 0x25 Finnish 0x0b French 0x0c German 0x07 Greek 0x08 Hebrew 0x0d Hungarian 0x0e Illegal name 0x1a Italian 0x10 Japanese 0x11 Korean 0x12 Lithuanian 0x27 Malaysian 0x3e Polish 0x15 Portuguese 0x16 Rumanian 0x18 Russian 0x19 Spanish 0x0a Swedish 0x1d Thai 0x1e Turkish 0x1f Vietnamese 0x2a Bits 10 to 15 - sub-language For German: standard 0x0400 Swiss 0x0800 For Portuguese: European 0x0800 Brazilian 0x0400 Event_mod3 indicates the character code for the given file or buffer of text. Character code is a platform-specific encoding of a character set, such as a certain platform/code page. For example, MS-DOS code page 437, MS-DOS code page 850, and MS Win- dows code page 1252 have their own unique character codes for many ISO Latin-1 charac- ters. Value Character Code 0 - 9 Illegal 10 Macintosh 11 MS-DOS, primary code page 12 MS-DOS, secon- dary code page 13 3MS-Windows 14 ISO 15 Illegal 16 KOI-8-r (??) Event_mod4 indicates the character set for the given file or buffer of text. Character set is a platform-independent encoding scheme; for example, ISO Latin-1, Unicode, or Shift-JIS. Value Character Set 0-1 Illegal 2 Shift JIS 3 Unicode 4 EUCF 5 EUCP 6 JIS 7 Big Five (Trad- itional Chinese) 8 GB-2312-80 (Simplified Chinese) 9 KS C 5601-1992 (Korean) 10-15 Illegal 16 ISO 8859 - 1 17 ISO 8859 - 2 18 ISO 8859 - 3 19 ISO 8859 - 4 20 ISO 8859 - 5 21 ISO 8859 - 6 22 ISO 8859 - 7 23 ISO 8859 - 8 24 ISO 8859 - 9 25 Vietnamese IR 180 26-30 Illegal 31 Thai IR 166 32 Vietnamese VIQR IREM_ERROR The language identification request failed. event_mod2 and event_mod3 may contain additional information about the reason for the failure. NOTE: This event is applicable only when using the IRD_SWTTS implementation of the IRC_TTS resource (see IrRESOURCES(4IRAPI)). IRE_SOFTDISC The default event mask for this event is IRF_DEINIT. The channel cid will automati- cally be released (irDeinit(3IRAPI)) when this event is received unless the default event mask is changed. This event is gen- erated by another process using the irInterrupt(3IRAPI) function and generally indicates that the application should ter- minate and irDeinit(3IRAPI) the channel. event_mod1 through event_mod3 are set to the arg1 through arg3 arguments to irInterrupt(3IRAPI), respectively. Note: When this event is sent to TSM, it gen- erates a ESOFTDISC event (see event() instruction) for the script application. IRE_SOFTINT The default event mask for this event is IRF_IGNORE. The event will be ignored unless the default mask is reset. This event is generated by another process using the irInterrupt(3IRAPI) function. event_mod1 through event_mod3 are set to the arg1 through arg3 arguments to irInterrupt(3IRAPI), respectively. Note: When this event is sent to TSM, it gen- erates a EDIPINT event (see event() instruc- tion) for the script application. IRE_TS_DONE This event is non-maskable. This event indi- cates an activity on a time slot completed. event_mod1 contains the time slot for which the activity was started. event_text points to an event structure (ir_event_t) containing the IRE_<activity>_DONE event. For example, if voice play was started, event_text points to an ir_event_t structure containing a IRE_PLAY_DONE event and all of its associated modifiers. IRE_WINK This event is maskable. Occurs when a wink is detected on a channel. This generally indicates that the network has disconnected an active call on a T/R channel. IRE_USER[1-5] These events are maskable. These events are, by default, set to IRF_IGNORE and may be used for future extensibility. CAVEATS The IREM_USER1 and IREM_USER2 event modifiers to IRE_CALL_PROG are used for customized tones, and may not be supported by both Intuity and Intuity Conversant. The mechanism for recognizing these customized tones is beyond the scope of IRAPI. These event modifiers provide a hook for IRAPI to be able to report the detection of them, once recognized. IREM_USER3, IREM_USER4 or IREM_USER5 may be used for future extensibility. SEE ALSO IrERRORS(4IRAPI) VERSION This is version 3/14/01 of this man page.