(Page 1 of 1 in this chapter) Version


Chapter 4

AG ISDN Call Control (NCC Service)


4.1 Introduction
4.2 Call Control Operations Supported By AG ISDN
4.3 NCC Service Call Control Model
4.3.1 Lines and Calls
4.3.2 NCC Service Events
4.3.3 Call Control States
4.4 Call Control API Summary
4.4.1 Call Control Functions and Solicited Events
4.4.2 Unsolicited Events
4.5 NCC Service State Machines
4.5.1 Line States
4.5.2 Call States
4.6 Retrieving Call Information
4.6.1 The NCC_CALL_STATUS Structure
4.6.2 NCC_ISDN_EXT_CALL_STATUS Structure
4.7 Digit Strings in Outbound Calls
4.8 Overlapped Sending/Receiving
4.8.1 Setting up Overlapped Sending/Receiving
4.8.2 Performing Overlapped Sending
4.8.3 Performing Overlapped Receiving
4.9 Sequence Diagrams
4.9.1 Inbound Calls
4.9.2 Outbound Calls
4.9.3 Overlapped Sending/Receiving
4.9.4 Disconnecting and Releasing
4.10 Using Extended Parameters
4.10.1 nccPlaceCall Extended Parameters
4.10.2 nccAnswerCall Extended Parameters
4.10.3 nccAcceptCall Extended Parameters
4.10.4 nccRejectCall Extended Parameters
4.10.5 nccDisconnectCall Extended Parameters
4.10.6 Receiving User-to-User Information (UUI)
4.11 Capability Mask

4.1 Introduction

If the Natural Call Control (NCC) service is active, and a protocol has been started on a line using nccStartProtocol, call control proceeds as described in the Natural Call Control Service Developer's Reference Manual. This chapter outlines NCC service call control from an AG ISDN point of view.

This chapter contains:

4.2 Call Control Operations Supported By AG ISDN

AG ISDN supports the following call control operations:
Operation

Supported?

Receiving inbound calls

Yes

Placing outbound calls

Yes

Releasing calls

Yes

Call blocking

Yes

Call transfer

No

Call hold/retrieve

No

4.3 NCC Service Call Control Model

This section introduces the NCC service call control model, and defines some key concepts.

4.3.1 Lines and Calls

The NCC service call control model differentiates between lines and calls:

Programmatically, a line is referenced using a line handle. The line handle is equivalent to the CTA context handle.

A call is referenced using a call handle. When a call handle is referenced in a function call, the line handle is referenced implicitly.

When a line event occurs, the event indication includes the line handle. When a call event occurs, the event indication includes both the line handle and call handle.

4.3.2 NCC Service Events

When performing call control functions, the NCC service processes events: both those that arrive from the network, and those that are generated in response to NCC service commands. The NCC service translates the network events into generic call control events. The names are defined in uppercase letters with an NCCEVN_ prefix. The network events fall into two classes: transitional and informational.

4.3.3 Call Control States

In the NCC service call control model, the state is the condition or status of a line or call. The model defines a set of specific states that a line or call can be in as long as it exists. For each state, a certain set of occurrences (e.g., a specific function call by the application, or actions by the remote party) is defined, which may cause the line or call to change to another state. Whenever a state change occurs, the application is notified by an event.

The NCC service call control model differentiates between line states and call states. A line can be in any of five possible states. A call on the line can be in any of 11 states.

To determine the current state of a call or line, the application can invoke status retrieval functions. For more information, see Section 4.11, Capability Mask.

The following table lists the line states, and descriptions for each. Figure 10 illustrates the line states, and shows events indicating transitions between them.
Line State

Description

Uninitialized

Initial state of line. Signifies that a protocol has not yet been started.

Idle

Signifies that no Active calls currently exist on the line. If there are any calls on the line, they are either held or in Disconnected call state. The line is now prepared to accept an incoming call or place an outbound call.

Active

Signifies that there is at least one Active call on this line.

Blocking

Signifies that all inbound and outbound calls are blocked.

Out of Service

Signifies that the network has placed the line out of service.

If all calls on a line are held or are in a Disconnected call state (i.e., all calls are inactive), the line state changes to Idle. If a call becomes Active on the line (i.e., a held call is retrieved or a new call comes in or is placed), the line state returns to Active.

The following is a list of call states, and descriptions for each. Figure 11 illustrates the call states, and shows events indicating transitions between them.
Call State

Description

Inbound Call States:

Seizure

First indication of a call that is being set up (seized). The event contains a call handle to identify the call for subsequent call-based functions.

Receiving Digits (optional)

Signifies that a set of one or more incoming digits can be expected in order to fully qualify the incoming call.

Incoming

Signifies that a call has been delivered from the network to the NCC service.

Accepting (optional)

Signifies that a call has been accepted by the application but has not yet been answered or rejected. When a call is in this state, the application can play media functions (such as playing a voice file) before connecting or rejecting the call.

Answering

Signifies that the NCC service is in the process of answering the call and establishing a connection.

Rejecting

Signifies that the NCC service is in the process of rejecting the inbound call.

Outbound Call States:

Outbound Initiated

Signifies that a call has been initiated.

Placing

Signifies that the line has been seized and that the network has allowed the call to be placed by the NCC service. In other words, glare has been resolved.

At this point, NCC initiates dialing.

Proceeding

(Optional) Signifies that the switch has accepted the call setup request and is in the process of attempting to ring the receiving end. Call progress analysis is begun.

Connected/Disconnected Call States:

Connected

Signifies that a connection now exists between the calling parties. The application can now use DSP resources if necessary.

Disconnected

Signifies that the connection no longer exists.

A disconnected call is no longer Active.

4.4 Call Control API Summary

The following section summarizes the CT Access functions needed to perform call control. For most of these functions, one or more events are returned in response to the command. These events are also described in this section. For detailed documentation of the functions, parameters and events, see the Natural Call Control Service Developer's Reference Manual.

There are two types of CT Access events associated with call control operations:

Certain NCC.START and NCC.X.ADI_ISDN.START parameters dictate whether certain informational call control events are generated. For detailed information about NCC.START parameters, refer to the Natural Call Control Service Developer's Reference Manual. For information about NCC.X.ADI_ISDN.START parameters, refer to Appendix B.

4.4.1 Call Control Functions and Solicited Events

The following table lists call control-related functions and associated events. For detailed documentation of the functions, parameters and events, refer to the Natural Call Control Service Developer's Reference Manual.
NCC Function

Description/Associated Events

nccAcceptCall

Directs the TCP to accept an incoming call without answering it. The application can then perform other operations before answering or rejecting the call. The application can accept a call using any of the following methods:

· NCC_ACCEPT_PLAY_RING: Play a ring tone.

· NCC_ACCEPT_QUIET: Accept call, but do not play tone or other audio.

· NCC_ACCEPT_USER_AUDIO: The application plays a recorded message. If remote party disconnects, the TCP interrupts the message.

Associated Events:

· NCCEVN_ACCEPTING_CALL: The TCP is accepting the call, using the specified method. The call state changes to Accepting.

· NCCEVN_CALL_DISCONNECTED: A DISCONNECT message was received from the network, indicating that the remote party has hung up. The event value field contains the reason. The call state changes to Disconnected.

· NCCEVN_REJECTING_CALL: The application failed to invoke nccAnswerCall, nccAcceptCall, or nccRejectCall within the period specified in the protocol's NCC.START.waitforpctime parameter. The call is automatically rejected, and enters the Rejecting call state. The event value field contains NCC_REJECT_HOST_TIMEOUT. A tone is played to the network.

The NCC.X.ADI_ISDN.START.flags parameter controls which TCP messages are sent when nccAcceptCall is invoked. By default, a PROGRESS message is sent to the network.

nccAnswerCall

Directs the TCP to answer a call after a specified number of rings.

Associated Events:

· NCCEVN_ANSWERING_CALL: The TCP is answering. The call enters the Answering call state. First an ALERT message is sent to the network. Then the TCP plays the number of rings specified in the nccAnswerCall call. Then a CONNECT message is sent to the network.

· NCCEVN_CALL_CONNECTED: The CONNECT message was acknowledged by the network, and the connection is established. The call state changes to Connected.

· NCCEVN_CALL_DISCONNECTED: A DISCONNECT message was received from the network, indicating that the remote party has hung up. The event value field contains the reason. The call state changes to Disconnected.

· NCCEVN_REJECTING_CALL: The application failed to invoke either nccAnswerCall, nccAcceptCall, or nccRejectCall within the period specified in the protocol's NCC.START.waitforpctime parameter. The call is automatically rejected, and enters the Rejecting call state. The event value field contains NCC_REJECT_HOST_TIMEOUT. A tone is played to the network.

nccAutomaticTransfer

Not supported under AG ISDN.

nccBlockCalls

Requests the TCP to block all incoming calls, using one of these methods:

· NCC_BLOCK_REJECTALL: The TCP behaves as though the application has responded to each call with nccRejectCall. AG ISDN allows two protocol-specific reject modes when NCC_BLOCK_REJECTALL is used. The NCC.X.ADI_ISDN.START_EXT.blockrejectmode parameter selects the mode: 0=reject immediate, 1=reject playing busy tone

· NCC_BLOCK_OUT_OF_SERVICE: A service request to block calls is sent to the remote end. If this request is confirmed, all subsequent incoming calls are rejected by the switch.

Blocking takes place as soon as there are no calls on the line (i.e., the line state is Idle). The line state changes to Blocking. The line remains in this state, and all calls are blocked on the line until nccUnBlockCalls is called.

Note: The application should not call nccUnBlockCalls until it has received the NCCEVN_CALLS_BLOCKED event (see below).

Associated Event:

· NCCEVN_CALLS_BLOCKED: The request has been granted. The line enters Blocking line state. The line remains in the blocked state until nccUnBlockCalls is called.

NCCEVN_CALLS_BLOCKED can also be received as an unsolicited event. See Section 4.4.2 for more information.

· NCCEVN_BLOCK_FAILED: The network failed to respond to the request. The line remains in its current state. The event value field contains a reason code for failure to block the line.

· NCCEVN_CALLS_UNBLOCKED: The switch rejected the request to put the line out of service. The line remains in its current state.

nccDisconnectCall

Disconnects a call that is connected to the network. The function may also be used to abandon outbound call placement.

Associated Event:

· NCCEVN_CALL_DISCONNECTED: Generated after the protocol has performed the network procedures for disconnecting the call from the network. The call state changes to Disconnected.

nccGetCallStatus

Retrieves the current status of the call (such as caller ID information, if available). For more information, see Section 4.6.1.

Associated Events: None.

nccGetExtendedCallStatus

Retrieves protocol-specific status information for a call. For more information, see Section 4.6.2.

Associated Events: None.

nccGetLineStatus

Gets current status of line, in NCC_LINE_STATUS.

Associated Events: None.

nccHoldCall

Not supported by AG ISDN.

nccPlaceCall

Places a call to a specified number, using call placement parameters specified in NCC_PLACECALL_PARMS. The call enters the Outbound Initiated state.

Associated Events:

· NCCEVN_PLACING_CALL: This event is generated after the TCP has seized the trunk, and an acknowledgment has been received from the network. (This implies that glare has been resolved and call collision will not occur.) The TCP is dialing the digits. The network is sent a SETUP message. The call is now in the Placing call state.

The event also indicates that a B channel has been chosen for the call. This is useful when the TCP is running in Non-Exclusive Mode (see Chapter 6). The stream and timeslot for this channel can be determined by calling nccGetCallStatus.

· NCCEVN_CALL_PROCEEDING: The switch has accepted the call setup. The call enters Proceeding state.

The NCC.X.ADI_ISDN.START_EXT.startCP parameter determines if call progress analysis is enabled (default) or disabled.

· NCCEVN_REMOTE_ALERTING: The network has sent an ALERTING message, indicating that the remote party is being alerted of the call, or that a ring tone has been detected.

· NCCEVN_REMOTE_ANSWERED: The network has sent a CONNECT message, indicating that the remote party has answered.

· NCCEVN_CALL_CONNECTED: The call satisfies the connectmask requirements set in the NCC_PLACECALL_PARMS structure. Usually, this is when a CONNECT message is received by the network; however, it could be due to other factors, depending on the connection criteria specified. (The event value field indicates the reason.) The call is now in the Connected call state. The application can now play and record voice files, and generate and detect DTMF tones.

· NCCEVN_CALL_DISCONNECTED: The call has entered the Disconnected call state, because:

· A release event was received from the network, or

· A busy, reorder, ring-no-answer, or Special Information Tone (SIT) has been detected, or

· The call fits the disconnection criteria specified in the disconnectmask parameter in the NCC_PLACECALL_PARMS structure. By default, this is when a DISCONNECT message is received by the network. The event value field contains the condition that fit the disconnection criteria. This is a race condition.

· NCCEVN_INCOMING_CALL: A call is arriving on the B channel. Call placement is aborted. This message occurs when a SETUP is received. This is a race condition.

· NCCEVN_PROTOCOL_EVENT: an ISDN PROGRESS message has been received. The event value field contains 0x9F0E000. The application receives this event if ISDN_REPORT_PROGRESS bit is set in the NCC.X.ADI_ISDN.START.EXT.ISDNeventmask parameter.

nccRejectCall

Directs the TCP to reject an incoming call using one of the following methods:

· NCC_REJECT_PLAY_BUSY

· NCC_REJECT_PLAY_REORDER

· NCC_REJECT_USER_AUDIO

· NCC_REJECT_PLAY_RINGTONE

Associated Events:

· NCCEVN_REJECTING_CALL: The reject sequence has started, or the application has failed to invoke nccAnswerCall, nccAcceptCall, or nccRejectCall within the period specified in the protocol's NCC.START.waitforpctime parameter. The event value field contains the rejection method code, or NCC_REJECT_HOST_TIMEOUT if the host timed out.

· NCCEVN_CALL_DISCONNECTED: The remote party hung up. Either a DISCONNECT or a RELEASE message has been received from the network. This is a race condition.

Optionally, you can invoke nccDisconnectCall to cause the TCP to actively clear a rejected call, by sending a DISCONNECT message to the network. No tone is played in this case.

nccReleaseCall

Directs the TCP to release a disconnected call (a call in the Disconnected call state).

To release a call, the application must first bring it to the Disconnected state by invoking nccDisconnectCall.

Associated Events:

· NCCEVN_CALL_RELEASED: The call has been released. A DISCONNECT message was sent to the network, and a RELEASE was received.

nccRetrieveCall

Not supported by AG ISDN.

nccSendCallMessage

Not supported by AG ISDN.

nccSendDigits

Continues the process of sending digits to place an outbound call (for protocols that support overlapped sending of digits). For more information, see Section 4.8.

Associated Events: None.

nccSendLineMessage

Not supported by AG ISDN.

nccSetBilling

Not supported by AG ISDN.

nccStartProtocol

Starts a TCP.

Associated Events:

· NCCEVN_STARTPROTOCOL_DONE: The function has finished. The event value field indicates if the TCP started successfully:

CTA_REASON_FINISHED: Successful completion.

NCCREASON_OUT_OF_RESOURCES: On AG Quad boards using resource management, indicates that the nccStartProtocol parameter mediamask was not set to 0. The application must restart the TCP with the mediamask value in the NCC.ADI_START.CALLCTL structure set to 0.

nccStopProtocol

Stops the protocol, uninitializes the line.

Associated Events:

· NCCEVN_STOPPROTOCOL_DONE: Indicates that the TCP has been halted. The value field is set to CTA_REASON_FINISHED. The line state has successfully changed to Uninitialized. It can no longer be used to accept and/or place calls.

· NCCEVN_CALL_RELEASED: A call that was on the line was released before the protocol was stopped.

nccTransferCall

Not supported by AG ISDN.

nccUnBlockCalls

Requests the TCP to stop blocking calls.

Associated Events:

· NCCEVN_CALLS_UNBLOCKED: The request to unblock the line is granted. The line state changes to Idle.

· NCCEVN_UNBLOCK_FAILED: The event value field contains reason code for the failure.

· NCCEVN_CALLS_BLOCKED: The switch rejected the request to put the line back into service. The line stays in the Blocking state.

Note: The application should not call nccBlockCalls again until it has received the NCCEVN_CALLS_UNBLOCKED event.

4.4.2 Unsolicited Events

The following table lists call control-related unsolicited events:
Event

Description

NCCEVN_BILLING_INDICATION

Not supported by AG ISDN.

NCCEVN_CALL_DISCONNECTED

Caller is disconnected from remote party.

nccDisconnectCall was invoked, call is now disconnected from the network.

value contains reason as to why disconnect occurred.

Transition to call Disconnected call state.

NCCEVN_CALL_PROCEEDING

The switch has accepted the call setup. The receiving side is being rung. (Note that this is a secondary and subsequent event generated due to call to nccPlaceCall.)

Transition to Proceeding call state.

NCCEVN_CALL_STATUS_UPDATE

A call status information event has been received by CT Access. This may include billing information for outgoing calls.

Upon receiving this event, the application can call nccGetCallStatus to analyze the relevant fields in the NCC_CALL_STATUS structure.

NCCEVN_CALLS_BLOCKED

This event can be received unsolicited after nccStartProtocol returns NCCEVN_STARTPROTOCOL_DONE, if the application blocks a channel with NCC_BLOCK_OUT_OF_SERVICES mode and then restarts the protocol. To restore the normal operational mode, the application should call nccUnblockCalls to unblock the channel.

This event can also be solicited, using nccBlockCalls. See Section 4.4.1 for more information.

NCCEVN_CAPABILITY_UPDATE

Protocol capabilities have changed. The application can call nccQueryCapability to determine the current set of protocol capabilities.

NCCEVN_EXTENDED_CALL_
STATUS_UPDATE

Call status made available via nccGetExtendedCallStatus has been updated.

value contains an indicator showing the kind of information that has been received.

NCCEVN_INCOMING_CALL

The TCP has handled the setup of an incoming call, and is now waiting for the application to decide if the call must be answered, accepted, or rejected. The call is now in Incoming call state.

The application may call nccGetCallStatus to retrieve information on the incoming call. The application may then answer, accept, or reject the call as needed within the period of time specified by the NCC.START.waitforPCtime parameter (usually several seconds).

NCCEVN_LINE_IN_SERVICE

The network has placed the line in service (was out of service).

Transition to Idle line state.

Protocol may optionally report more details in the value field.

NCCEVN_LINE_OUT_OF_SERVICE

The called party is blocking the line, or the line and its associated hardware are not configured properly. The TCP will not accept commands until the line comes back into service again. Then the TCP returns to the Idle state, and generates an NCCEVN_LINE_IN_SERVICE event.

Transition to Out of Service line state.

Protocol may optionally report more details of the event in the value field.

NCCEVN_PROTOCOL_ERROR

Received if the application tries to execute functions which are not applicable for the current state, or if a certain function is not supported by a variant. The value field qualifies the event.

NCCEVN_PROTOCOL_EVENT

Received if the PROGRESS message was delivered by the network. The NCC.X.ADI_ISDN.START_EXT.ISDNeventmask parameter determines if this event is generated. The value field qualifies the event. No state change takes place.

NCCEVN_RECEIVED_DIGIT

With AG ISDN protocols, you can configure the TCP so that when it receives digits during an incoming call, it sends digits to the application one by one as they arrive (overlap receiving). If the TCP is configured this way, this event indicates that a digit has arrived. The event value field is set to the value of the digit (a char).

Call state changes to Receiving Digits, if it is not already in that state.

NCCEVN_REJECTING_CALL

(solicited) nccRejectCall invoked, call is now being rejected.

(unsolicited) Application has failed to answer, accept or reject the call in a timely fashion. Call automatically rejected.

In both cases, expect NCCEVN_CALL_DISCONNECTED.

value field contains qualifier for why call is being rejected.

Transition to Rejecting call state.

NCCEVN_SEIZURE_DETECTED

The line has been seized by an external entity for an incoming call. It is the beginning of the call setup process for an incoming call.

Transition to Seizure call state.

4.5 NCC Service State Machines

The NCC service call control model differentiates between line states and call states. The following sections describe NCC service line state and call state machines.

4.5.1 Line States

The following table lists the line states. Associated with each state are one or more transitional events, which indicate transition into the state. These are noted in the table.

An application can use nccGetLineStatus to determine the state of a line.
Line State

Description

Active

Entered via the NCCEVN_SEIZURE_DETECTED event, when a call is coming in.

Also can be entered via the NCCEVN_CALL_RETRIEVED event, which means a call has become Active and that the line has reentered the Active line state.

Blocking

Entered via the NCCEVN_CALLS_BLOCKED event, solicited by nccBlockCalls.

Idle

Entered via the NCCEVN_START_PROTOCOL_DONE event, solicited by nccStartProtocol.

Entered via the NCCEVN_CALLS_UNBLOCKED event, which is solicited by nccUnblockCalls.

Entered via the NCCEVN_LINE_IN_SERVICE event (an unsolicited event).

Entered from the Active state, via an NCCEVN_CALL_HELD or NCCEVN_CALL_DISCONNECTED event. These events mean that a call has been placed on hold or is disconnected, and is therefore not Active. When no calls are Active on a line, the line enters Idle line state.

Out of Service

Entered via the NCCEVN_LINE_OUT_OF_SERVICE event, which is an unsolicited event.

Uninitialized

Initial state of line. When the NCC service is opened on a CT Access context, the line handle (signified by the CT Access handle) has been created in an uninitialized state.

Entered via the NCCEVN_STOP_PROTOCOL_DONE event, which is solicited by nccStopProtocol.

Figure 10 shows the line states, and events indicating transitions between them:

Figure 10. NCC Line State Diagram

4.5.2 Call States

The following table lists the call states. Associated with each state are one or more transitional events, which indicate transition into the state. These are noted in the table.

Some call states are optional. A call only enters an optional call state, and the event indicating the transition is generated only if the proper parameter enabling or disabling the event is set. For more information about parameters, see the Natural Call Control Service Developer's Reference Manual.

The application can use nccGetCallStatus to determine the state of a call.
State

Description

Accepting (optional)

Entered via the NCCEVN_ACCEPTING_CALL event in response to invocation of nccAcceptCall.

The NCC_CAP_ACCEPT_CALL indicator in the capabilitymask returned by nccQueryCapability indicates if the protocol supports this state.

Answering

Entered via the NCCEVN_ANSWERING_CALL event in response to invocation of nccAnswerCall.

Connected

Entered via an unsolicited NCCEVN_CALL_CONNECTED event after a call has been successfully answered by the remote party, or the NCCEVN_CALL_CONNECTED call control connectmask conditions have occurred on an outbound call (e.g. connect on Proceeding)

Disconnected

Entered from any state via an unsolicited NCCEVN_CALL_DISCONNECTED event.

Entered via a solicited NCCEVN_CALL_DISCONNECTED event, following the invocation of nccDisconnectCall. The NCC_CAP_DISCONNECT_IN_ ANY_STATE indicator in the capabilitymask returned by nccQueryCapability indicates in which call states the application can initiate a disconnect.

Incoming

Entered via NCCEVN_INCOMING_CALL event.

Outbound Initiated

Entered by attempting to place a call using nccPlaceCall. No event gets you here.

Placing

Entered via NCCEVN_PLACING_CALL event in response to invocation of nccPlaceCall.

Proceeding

An NCCEVN_CALL_PROCEEDING event indicates that the call has entered this state.

Receiving Digits (optional)

Entered via an unsolicited NCCEVN_RECEIVED_DIGIT event. Note that this event is generated only if the NCC.START.overlappedreceiving parameter is set (see the Natural Call Control Service Developer's Reference Manual).

The OVERLAPPED_RECEIVING bit in the capabilitymask returned by nccQueryCapability indicates if the protocol supports this state.

Rejecting

Entered via NCCEVN_REJECTING_CALL event in response to invocation of nccRejectCall, or as a result of not responding in time to an NCCEVN_INCOMING_CALL.

Seizure

Entered via an unsolicited NCCEVN_SEIZURE_DETECTED event.

Figure 11 shows the call states, and events indicating transitions between them:

Figure 11. NCC Call State Diagram

4.6 Retrieving Call Information

To get status information on a call, the application can:

Either of these synchronous functions can be invoked in any call state, as long as the line is in Active line state.

4.6.1 The NCC_CALL_STATUS Structure

nccGetCallStatus returns the NCC_CALL_STATUS structure:

typedef struct
{
 DWORD size;         /* No of bytes written to by callstatus    */
DWORD state; /* Current call state */
char calledaddr [NCC_MAX_DIGITS+1]; /* Called number address */
char callingaddr[NCC_MAX_DIGITS+1]; /* Calling number address */
char callingname[NCC_MAX_CALLING_NAME]; /* Calling name info */
DWORD pendingcmd; /* Last command not ack'ed by board */
DWORD held; /* Non--zero value when call is held */
DWORD direction; /* Indicates inbound or outbound call */
CTAHD linehd; /* Line handle on which call resides */
} NCC_CALL_STATUS;
The NCC_CALL_STATUS structure contains the following fields:
Field

Description

size

Number of bytes written at the address pointed to by the callstatus argument passed to nccGetCallStatus.

state

Current call state. Possible state values are:

NCC_CALLSTATE_INVALID

NCC_CALLSTATE_SEIZURE

NCC_CALLSTATE_RECEIVING_DIGITS

NCC_CALLSTATE_INCOMING

NCC_CALLSTATE_ACCEPTING

NCC_CALLSTATE_ANSWERING

NCC_CALLSTATE_REJECTING

NCC_CALLSTATE_CONNECTED

NCC_CALLSTATE_DISCONNECTED

NCC_CALLSTATE_OUTBOUND_INITIATED

NCC_CALLSTATE_PLACING

NCC_CALLSTATE_PROCEEDING

calledaddr

For inbound calls, the called party address.

For AG ISDN, the digits are formatted as follows:

d1dn * t1tn

where:

· d1dn are the digits, and

· t1tn are the subaddress digits, if available. If no subaddress is available, the * and t digits do not appear in the string.

callingaddr

For inbound calls, the calling party address - the Automatic Number Identification (ANI) digits.

For AG ISDN, the digits are formatted as follows:

a1an * s1sn

where:

· a1an are the ANI digits, and

· s1sn are the subaddress digits, if available. If no subaddress is available, the * and s digits do not appear in the string.

callingname

(Inbound calls) The name information of the caller, if provided.

pendingcmd

The last call control command issued that has not yet been acknowledged by the AG board. This field is set when a call control command is sent to the board, and cleared on the next event that corresponds to the acknowledgment of the pending command.

Values applicable to AG ISDN are:

(0) No command pending.
NCC_PENDINGCMD_ACCEPT_CALL
NCC_PENDINGCMD_ANSWER_CALL
NCC_PENDINGCMD_PLACE_CALL
NCC_PENDINGCMD_REJECT_CALL
NCC_PENDINGCMD_DISCONNECT_CALL
NCC_PENDINGCMD_RELEASE_CALL

held

Set to non-zero value when a call is held.

direction

Indicates inbound or outbound call. Possible values:

NCC_CALL_INBOUND

NCC_CALL_OUTBOUND

linehd

Line (context) handle on which the call resides.

Note: Most of these fields are not guaranteed to be filled during call setup. The values of these fields depend on the information associated with the incoming call, and on the protocol used to set up the call.

Each ISDN variant fills different fields in the NCC_CALL_STATUS structure at different times. The following table shows which fields are filled by which variant. Unless otherwise indicated, each field may be filled at any time.
Field

DMS

NI2

4ESS

5ESS

NTT

AU S

HKT

KOR

TWN

VN6

EUR

QSIG

size

x

x

x

x

x

x

x

x

x

x

x

x

state

x

x

x

x

x

x

x

x

x

x

x

x

calledaddr

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

callingaddr

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

pendingcommand

x

x

x

x

x

x

x

x

x

x

x

x

1 Field may be filled at the beginning of the call.

4.6.2 NCC_ISDN_EXT_CALL_STATUS Structure

The function nccGetExtendedCallStatus returns the NCC_ISDN_EXT_CALL_STATUS structure:

typedef struct
{
DWORD size; /* Size returned by nccGetExtendedCallStatus */
INT32 reason; /* NCC reason for returning to Idle */
DWORD stream; /* MVIP stream number */
DWORD timeslot; /* MVIP timeslot */
char callednumplan; /* Q.931 numbering plan ID if supported */
char callednumtype; /* Q.931 number type if supported */
char callingnumplan; /* Q.931 numbering plan ID if supported */
char callingnumtype; /* Q.931 number type if supported */
char callingpres; /* Q.931 caller ID presentation ind. */
char callingscreen; /* Q.931 ANI screening indicator */
char progressdescr; /* Q.931 progress descriptor */
char releasecause; /* Q.931 cause for call release */

char redirectingaddr[NCC_MAX_DIGITS+1]; /* Redirecting number */
char redirectingplan; /* Q.931 numbering plan ID if supported */
char redirectingtype; /* Q.931 number type if supported */
char redirectingpres; /* Q.931 redir number pres. indicator */
char redirectingscreen; /* Q.931 redir number screen indicator */
char redirectingreason; /* Reason for redirection */

char originalcalledaddr[NCC_MAX_DIGITS+1]; /* Original called nmb */
char origcalledplan; /* Q.931 numbering plan ID if supported */
char origcalledtype; /* Q.931 number type if supported */
char origcalledpres; /* Original called number pres. indicator */
char origcalledscreen; /* Q.931 redirecting number screen ind. */
char origcalledreason; /* Q.931 reason for redirection */

char UUI[NCC_ISDN_MAX_UUI + 1]; /* User to user information */

} NCC_ISDN_EXT_CALL_STATUS;
The following table describes the fields in the NCC_ISDN_EXT_CALL_STATUS structure. Note that not all fields are supported by all variants.

All parameter values are set to 0 by default. Possible values for the fields in this structure are defined in isdnval.h.

Note: Most of these fields are not guaranteed to be filled during call setup. The values of these fields depend on the information associated with the incoming call, and on the protocol used to set up the call.
Field

Description

size

Number of bytes written at the address pointed to by the status argument in nccGetExtendedCallStatus.

reason

Reason for the last disconnect. reason is 0 if the application initiated the disconnect. Otherwise, reason is the NCC disconnect value received in the NCCEVN_CALL_DISCONNECTED event.

stream

This field and timeslot together indicate the MVIP address of the B channel. Use if the TCP is in Non-Exclusive Mode (see Chapter 6).

timeslot

This field and stream together indicate the MVIP address of the B channel. Use if the TCP is in Non-Exclusive Mode (see Chapter 6).

callednumplan

Q.931 numbering plan of called address.

callednumtype

Q.931 numbering type of called address.

callingnumplan

Q.931 numbering plan of calling address.

callingnumtype

Q.931 numbering type of calling address.

callingpres

Q.931 presentation indicator for calling address.

callingscreen

Q.931 screening indicator for calling address.

progressdescr

Q.931 progress description in progress information element.

releasecause

Q.931 cause for call release.

redirectingaddr

The redirecting address.

redirectingplan

Q.931 numbering plan of redirecting address.

redirectingtype

Q.931 numbering type of redirecting address.

redirectingpres

Q.931 presentation indicator for redirecting address.

redirectingscreen

Q.931 screening indicator for redirecting address.

redirectingreason

Q.931 reason for redirection.

originalcalledaddr

Original called number (OCN).

origcalledplan

Q.931 OCN numbering plan.

origcalledtype

Q.931 OCN numbering type.

origcalledpres

Q.931 OCN presentation indicator.

origcalledscreen

Q.931 OCN screen indicator.

origcalledreason

Q.931 OCN reason for redirection.

UUI

User-to-user information (Up to 132 characters).

Each ISDN variant fills different fields in the NCC_ISDN_EXT_CALL_STATUS structure at different times. The following table shows which fields are filled by which variant. Unless otherwise indicated, each field may be filled at any time.
Field

DMS

NI2

4ESS

5ESS

NTT

AU S

HKT

KOR

TWN

VN6

EUR

QSIG

size

x

x

x

x

x

x

x

x

x

x

x

x

reason

x3

x3

x3

x3

x3

x3

x3

x3

x3

x3

x3

x3

stream

x

x

x

x

x

x

x

x

x

x

x

x

timeslot

x

x

x

x

x

x

x

x

x

x

x

x

callednumplan

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

callednumtype

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

callingnumplan

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

callingnumtype

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

callingpres

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

callingscreen

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

x1

progressdescr

x1,2,3

x1,2,3

x1

x1,2

x1,2,3

x1,3

x1,3

x1,2,3

x1,2,3

x1,2,3

x1,2,3

x1

releasecause

x3

x3

x3

x3

x3

x3

x3

x3

x3

x3

x3

x3

redirectingaddr

x1

x1

x1

x1

-

-

-

-

-

x1

-

-

redirectingplan

x1

x1

x1

x1

-

-

-

-

-

-

-

-

redirectingtype

x1

x1

x1

x1

-

-

-

-

-

x1

-

-

redirectingpres

x1

x1

x1

x1

-

-

-

-

-

x1

-

-

redirectingscreen

x1

x1

x1

x1

-

-

-

-

-

x1

-

-

redirectingreason

x1

x1

x1

x1

-

-

-

-

-

x1

-

-

originalcalledaddr

x1

-

-

-

-

-

-

-

-

-

-

-

origcalledplan

x1

-

-

-

-

-

-

-

-

-

-

-

origcalledtype

x1

-

-

-

-

-

-

-

-

-

-

-

origcalledpres

x1

-

-

-

-

-

-

-

-

-

-

-

origcalledscreen

x1

-

-

-

-

-

-

-

-

-

-

-

origcalledreason

x1

-

-

-

-

-

-

-

-

-

-

-

UUI

-

x1,2,3

x1,2,3

x1,3

x1,2,3

-

x1,3

x1,2,3

x1,2,3

x1,2,3

x1,2,3

x2,3

1 Field may be filled at the beginning of the call.

2 Field may be filled when the call is alerting.

3 Field may be filled when the call is released.

4.7 Digit Strings in Outbound Calls

Calling address (ANI) and DNIS information is passed in two separate digit strings in nccPlaceCall invocations:

  • The calling party information is passed in the callingaddr argument. The AG ISDN TCP expects this digit string to be formatted as follows:

    
    a1an * s1sn
    where:
    • a1an are the address of the party.

      
      
    • s1sn are the subaddress digits of the party, if used. If no subaddress is used, omit the * and s digits from the string.

    • 4.8 Overlapped Sending/Receiving

      Some variants of the AG ISDN protocol support overlapped sending and overlapped receiving: the ability to send and/or receive address digits one at a time.

      Section 4.11 lists the capabilities for each variant. If OVERLAPPED_SENDING is set, the variant supports overlapped sending. The application can determine whether a variant supports this capability by invoking nccQueryCapability. The NCC_CAP_OVERLAPPED_SENDING bit in the capabilitymask returned by this function indicates if the variant supports this capability.

      4.8.1 Setting up Overlapped Sending/Receiving

      If the ISDN variant supports overlapped sending or receiving, to use the features the application must change bits in the behavior parameter structures when starting the AG ISDN protocol stack. (For more information about these parameter structures, see the AG ISDN Messaging API Developer's Reference Manual.)

      Setting up Overlapped Sending

      To use the Overlapped Sending feature, the application must change a bit in the out_calls_behaviour parameter in the ISDN_PROTOCOL_PARMS_ CHANNELIZED structure when starting the AG ISDN protocol stack. The application must enable the CC_USER_SENDING_COMPLETE (0x0002) bit to prevent the stack from automatically setting the "Sending Complete" bit in the SETUP message.

      The ISDN daemon isdncta has a command line switch (-O) that sets this bit. Refer to Chapter 7 for more information.

      Setting up Overlapped Receiving

      To use the Overlapped Receiving feature, the application must change a bit in the in_calls_behaviour parameter in the ISDN_PROTOCOL_PARMS_CHANNELIZED structure when starting the AG ISDN protocol stack. The bit CC_TRANSPARENT_OVERLAP_RCV (0x0080) should be enabled. The ISDN daemon isdncta has a command line switch (-I) that sets this bit. Refer to Chapter 7 for more information.

      In addition, the overlappedreceiving parameter must be set in the NCC_START_PARMS structure (invoked when nccStartProtocol is called) in order to inform the TCP that Overlapped Receiving mode is requested by the application. By default, this parameter is set.

      Also the NCCEVN_RECEIVED_DIGIT event (indicating that a digit has arrived) is generated only if the NCC.START.overlappedreceiving parameter is set (see the Natural Call Control Service Developer's Reference Manual).

      4.8.2 Performing Overlapped Sending

      To begin performing overlapped sending, the application invokes nccPlaceCall, passing the first sequence of digits in the calledaddr argument. If more digits will follow, the digit string should end with a "~" character.

      After the application receives NCCEVN_PLACING_CALL, indicating that it has reached the Placing call state, it invokes nccSendDigits to send additional segments of the digit string. If a digit string sent by an invocation of nccPlaceCall or nccSendDigits is not the final one, the final character in the string should be a "~". The final digit string should not include the final "~" character:

      nccPlaceCall 72~
      nccSendDigits 57924~
      nccSendDigits 5~
      nccSendDigits 28

      Final digit string: 17257924528

      nccSendDigits may be called several times until all digits are sent, or the switch sends NCCEVN_CALL_PROCEEDING indicating that it has accepted the call setup. No digits can be sent after this point.

      4.8.3 Performing Overlapped Receiving

      An incoming call begins in the Seizure call state. When the first digit arrives, the application receives an NCCEVN_RECEIVED_DIGIT event. This places the call in Receiving Digits call state. Each subsequent NCCEVN_RECEIVED_DIGIT event indicates that another digit has been received. The call remains in the Receiving Digits call state until all digits are received, or the application calls an appropriate call control function (such as nccAcceptCall, nccAnswerCall etc.).

      As each digit is received, it is added to the calledaddr field in the NCC_CALL_STATUS structure. NCCEVN_INCOMING_CALL indicates that all digits have arrived.

      Note: If call collision (glare) occurs directly after the application has issued a command, NCCEVN_RECEIVED_DIGIT or NCCEVN_INCOMING_CALL may be returned before the confirmation event for the command (for example between nccAcceptCall and NCCEVN_ACCEPTING_CALL) since the event changes the call state from Receiving Digits to a new state.

      4.9 Sequence Diagrams

      This section contains diagrams depicting the normal exchange of commands and events between the network, the channelizer, the TCP, CT Access, and the application, during various NCC service call control operations.

      4.9.1 Inbound Calls

      Figure 12 is a sequence diagram for answering an inbound call using NCC functions:

      Figure 12. Sequence Diagram for Answering an Inbound Call

      
      
      Figure 13 illustrates rejection of an inbound call using NCC functions:

      Figure 13. Sequence Diagram for Rejecting an Inbound Call

      
      
      Figure 14 illustrates accepting an inbound call and then answering it using NCC functions:

      Figure 14. Sequence Diagram for Accepting and then Answering an Inbound Call

      
      
      Figure 15 illustrates accepting an inbound call and then rejecting it using NCC functions:

      Figure 15. Sequence Diagram for Accepting and then Rejecting an Inbound Call

      
      
      Figure 16 illustrates immediately rejecting an incoming call using NCC functions:

      Figure 16. Sequence Diagram for Immediately Rejecting an Inbound Call

      4.9.2 Outbound Calls

      Figure 17 illustrates placing an outbound call. Depending upon the switch variant, some of these intermediate messages may not occur, or may occur in a different order than shown here:

      Figure 17. Sequence Diagram for an Outbound Call

      4.9.3 Overlapped Sending/Receiving

      Figure 18 illustrates placing a call with overlapped sending of digits:

      Figure 18. Sequence Diagram for Placing a Call with Overlapped Sending

      
      
      Figure 19 illustrates handling an inbound call with overlapped receiving of digits:

      Figure 19. Sequence Diagram for Handling Overlapped Receiving of Digits

      4.9.4 Disconnecting and Releasing

      Figure 20 shows the command/event interchange for a network-initiated release:

      Figure 20. Sequence Diagram for Network-Initiated Release

      
      
      Figure 21 is a sequence diagram depicting the command and event interchange for an application-initiated release:

      Figure 21. Sequence Diagram for Application-Initiated Release

      
      

      4.10 Using Extended Parameters

      An application can send various types of ISDN-specific information during certain call control operations. This information includes address information, user-to-user information (UUI), and other values.

      When the NCC service is used, information is sent through extended parameter structures. An application can provide the extended parameter structures during the following operations:

      In each case, the information is sent when the function call is made.

      To specify the information to be sent:

      1. Fill one of the data structures specified below. To fill the data structure, use the macros specified with the structure. As the name for the pointer to the structure, use p_data.

        
        
      2. Specify the p_data structure as the void * argument in the appropriate function invocation.

      Not all fields in these data structures can be used at all times. The fields valid for a given message differ depending upon the network protocol variant used, and the actual ISDN message sent on the trunk in response to the function call. In each of the following sections, tables are given showing the fields valid for each network protocol variant. Note that the fields valid for a function depend not on the function itself, but on the ISDN message that the function sends on the trunk (e.g., SETUP, CALL PROCEEDING, and so on). For nccAnswerCall, nccAcceptCall, and nccRejectCall, the message sent by each function depends upon the setting of the NCC.X.ADI_ISDN.START_EXT.flags parameter. Refer to Appendix B for more information about AG ISDN TCP parameters.

      Note: Only one message of a given type (CALL PROCEEDING, PROGRESS, ALERTING, etc.) may be sent to the network. For example, if your application sets the NCC.X.ADI_ISDN.START_EXT.flags parameter such that a PROGRESS message is to be sent with the nccAcceptCall and nccRejectCall functions, and then calls both functions, only one PROGRESS message will be sent.

      4.10.1 nccPlaceCall Extended Parameters

      The following is the nccPlaceCall extended parameter structure for AG ISDN, and its substructures:

      typedef struct
      {
          DWORD size;                       /* Size of this structure           */
          char  uui[NCC_ISDN_MAX_UUI + 1];  /* UUI                              */
          CALLEDNUM      callednumber;      /* Called number substructure       */
          CALLINGNUM     callingnumber;     /* Calling number substructure      */
          REDIRECTINGNUM redirectingnumber; /* Redirecting number substructure  */
          WORD  service;                    /* Service                          */
          WORD  nsf_present;                /* NSF usage flag                   */
          WORD  nsf_service_feature;        /* Service or fiture is set in the  */
                                            /* coding field                     */
          WORD  nsf_facility_coding;        /* NSF coding                       */
      
      } PLACECALL_EXT;
      
      typedef struct
      {
        DWORD   size;                       /* Size of this structure         */
        WORD   plan;
           /* Q.931 numbering plan of calling address                                   */
        WORD  type
           /* Q.931 numbering type of calling address                  */
        WORD  screen       /* Q.931 ANI screening indicator*/
        WORD  presentation;
           /* Q.931 caller ID presentation indicator                  */
      
      } CALLING_NUM;
      
      typedef struct
      {
        DWORD   size;                       /* Size of called number                                                               */
        WORD   plan;
           /* Q.931 numbering plan of called address                                   */
        WORD  type
           /* Q.931 numbering type of called address                  */
      
      } CALLED_NUM;
      
      

      typedef struct
      {
        DWORD   size;                     /* Size of this structure                        */
        char   digits[33];       /* Redirecting address         */
        char  pad[3];       /* padding         */
        WORD  plan;
           /* Q.931 numbering plan of redirecting address              */
        WORD  type;
           /* Q.931 numbering type of redirecting address              */
        WORD  screen;
           /* Q.931 redirecting address screening indicator                 */
        WORD  presentation;
           /* Q.931 redirecting address presentation indicator                 */
        WORD  reason;
           /* Q.931 reason for redirection                 */
        WORD  pad[1]       /*padding        */
      
      } REDIRECTING_NUM;
      
      
      
      nccPlaceCall always causes a SETUP message to be sent on the trunk. The following table shows the fields in PLACECALL_EXT which are valid for each network variant:
      PLACECALL_EXT

      Field

      4ESS

      E10

      NI2

      DMS100

      ETSI

      VN6

      HKG

      AUSTEL1

      NTT

      KOREA

      TAIWAN

      QSIG

      uui

      x

      x

      x

      x

      x

      x

      x

      x

      callednumber

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      callingnumber

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      redirectingnumber

      x

      x

      x

      x

      service

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      nsf_present

      x

      nsf_service_feature

      x

      nsf_facility_coding

      x

      The following list describes the fields in the PLACECALL_EXT structure, and in substructures referenced by this structure. Allowed values for these fields are defined in isdnval.h.
      Field

      Description

      size

      Size of PLACECALL_EXT

      uui

      Pointer to a string with user-to-user information (132 chars max)

      callednumber

      Size of called number

      Q.931 numbering plan of called address

      Q.931 numbering type of called address

      callingnumber

      Size of calling number

      Q.931 numbering plan of calling address

      Q.931 numbering type of calling address

      Q.931 ANI screening indicator

      Q.931 caller ID presentation indicator

      redirectingnumber

      Size of redirecting address

      Redirecting address

      Q.931 numbering plan of redirecting address

      Q.931 numbering type of redirecting address

      Q.931 redirecting address screening indicator

      Q.931 redirecting address presentation indicator

      Q.931 reason for redirection

      service

      Service

      nsf_present

      Network-Specific Facilities usage flag

      nsf_service_feature

      Service or feature is set in the coding field

      nsf_facility_coding

      NSF service or feature ID

      4.10.2 nccAnswerCall Extended Parameters

      The following is the nccAnswerCall extended parameter structure for AG ISDN:

      typedef struct
      {
          DWORD size;                             /* Size of this structure */
          char uui [NCC_ISDN_MAX_UUI + 1];        /* UUI                    */
      
      } ANSWERCALL_EXT;
      
      
      nccAnswerCall generates an ALERTING message by default. The following table shows the fields in ANSWERCALL_EXT which are valid in this case for each network variant:
      ANSWERCALL_EXT

      Field

      4ESS

      E10

      NI2

      DMS100

      ETSI

      VN6

      HKG

      AUSTEL1

      NTT

      KOREA

      TAIWAN

      QSIG

      uui

      x

      x

      x

      x

      x

      x

      x

      By changing the setting of the NCC.X.ADI_ISDN.START_EXT.flags parameter, nccAnswerCall can be made to send a CALL PROCEEDING or PROGRESS message instead of the ALERTING message. No uui may be sent in this case.

      The following list describes the field in the ANSWERCALL_EXT structure.
      Field

      Description

      uui

      Pointer to a string with user-to-user information (132 chars max)

      4.10.3 nccAcceptCall Extended Parameters

      The following is the nccAcceptCall extended parameter structure for AG ISDN:

      typedef struct
      {
          DWORD size;                             /* Size of this structure */
          char uui [NCC_ISDN_MAX_UUI + 1];        /* UUI                    */
          WORD  cause;                            /* Cause value            */
          WORD  progressdescription;              /* Progress description   */
      
      } ACCEPTCALL_EXT;
      
      
      nccAcceptCall generates a PROGRESS message by default. The following table shows the fields in ACCEPTCALL_EXT which are valid in this case for each network variant:
      ACCEPTCALL_EXT

      Field

      (PROGRESS message)

      4ESS

      E10

      NI2

      DMS100

      ETSI

      VN6

      HKG

      AUSTEL1

      NTT

      KOREA

      TAIWAN

      QSIG

      uui

      Not sent

      cause

      x

      x

      x

      x

      x

      progressdescription

      x

      x

      x

      x

      x

      By changing the setting of the NCC.X.ADI_ISDN.START_EXT.flags parameter, nccAcceptCall can be made to send a CALL PROCEEDING or ALERTING message instead of the PROGRESS message. In the case of CALL PROCEEDING, no extended parameters can be sent. In the case of an ALERTING message, the UUI and progressdescription fields are valid for certain variants:
      ACCEPTCALL_EXT

      Field

      (ALERTING message)

      4ESS

      E10

      NI2

      DMS100

      ETSI

      VN6

      HKG

      AUSTEL1

      NTT

      KOREA

      TAIWAN

      QSIG

      uui

      x

      x

      x

      x

      x

      x

      x

      cause

      Not sent

      progressdescription

      x

      x

      x

      x

      x

      x

      x

      x

      The following list describes the fields in the ACCEPTCALL_EXT structure.
      Field

      Description

      size

      Size of ACCEPTCALL_EXT

      uui

      Pointer to a string with user-to-user information (132 chars max)

      cause

      Cause

      progressdescription

      Progress description

      4.10.4 nccRejectCall Extended Parameters

      The following is the nccRejectCall extended parameter structure for AG ISDN:

      typedef struct
      {
          DWORD size;                            /* Size of this structure       */
          char  uui [NCC_ISDN_MAX_UUI + 1];     /* UUI                          */
          WORD  cause;                            /* Disconnect cause (NCC value) */
          WORD  pad;
      
      } REJECTCALL_EXT;
      
      
      The following table shows the fields in REJECTCALL_EXT which are valid for each network variant:
      REJECTCALL_EXT

      Field

      4ESS

      E10

      NI2

      DMS100

      ETSI

      VN6

      HKG

      AUSTEL1

      NTT

      KOREA

      TAIWAN

      QSIG

      uui

      x

      x

      x

      x

      x

      x

      x

      x

      cause

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      nccRejectCall generates a PROGRESS message by default. If this message is sent, only the cause field is used.

      By changing the setting of the NCC.X.ADI_ISDN.START_EXT.flags parameter, nccRejectCall can be made to send a CALL PROCEEDING or ALERTING message instead of the PROGRESS message. With ALERTING, only the uui field is sent. With CALL PROCEEDING, no extended parameters can be sent.

      The following list describes the fields in the REJECTCALL_EXT structure.
      Fields

      Description

      size

      Size of REJECTCALL_EXT

      uui

      Pointer to a string with user-to-user information (132 chars max)

      cause

      Cause

      4.10.5 nccDisconnectCall Extended Parameters

      The following is the nccDisconnectCall extended parameter structure for AG ISDN:

      typedef struct
      {
          DWORD size;                             /* Size of this structure       */
          char  uui [NCC_ISDN_MAX_UUI + 1];     /* UUI                          */
          WORD  cause;                            /* Disconnect cause (NCC value) */
          WORD  pad;
      
      } DISCONNECTCALL_EXT;
      
      
      nccDisconnectCall generates a DISCONNECT message by default. The following table shows the fields in DISCONNECTCALL_EXT which are valid in this case for each network variant:
      DISCONNECTCALL_EXT

      Field

      4ESS

      E10

      NI2

      DMS100

      ETSI

      VN6

      HKG

      AUSTEL1

      NTT

      KOREA

      TAIWAN

      QSIG

      uui

      x

      x

      x

      x

      x

      x

      x

      cause

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      x

      The following list describes the fields in the DISCONNECTCALL_EXT structure.
      Field

      Description

      size

      Size of DISCONNECTCALL_EXT

      uui

      Pointer to a string with user-to-user info (132 chars max)

      cause

      Cause

      4.10.6 Receiving User-to-User Information (UUI)

      User-to-user information (UUI) may be presented to the application at any time during a call. When user-to-user information is received, an NCCEVN_EXT_CALL_STATUS_UPDATE event is generated. The value field contains CALL_STATUS_UUI.

      The UUI information is available in the NCC_ISDN_EXT_CALL_STATUS structure. (See Section 4.6.2 for a listing of this structure.) It can be retrieved using nccGetExtendedCallStatus.

      4.11 Capability Mask

      With the NCC service, an application can call nccQueryCapability to determine the capabilities of a protocol. nccQueryCapability returns a capabilitymask. For more information, see the NCC Service Developer's Reference Manual.

      Capabilities differ slightly from variant to variant. The capabilitymask also varies depending upon whether the stack is the NT or TE side. The following table shows which capabilities the capabilitymask indicates are supported by each variant:
      Variant

      NT/TE

      Capabilities

      CALLER_ID

      MEDIA_IN_SETUP

      DISCONNECT_IN_ANY_STATE

      HOLD_IN_ANY_STATE

      SEND_LINE_MESSAGE

      SEND_CALL_MESSAGE

      EXTENDED_CALL_STATUS

      AUTOMATIC_TRANSFER

      SUPERVISED_TRANSFER

      HOLD_CALL

      OVERLAPPED_SENDING

      SET_BILLING

      ACCEPT_CALL

      DMS

      NT:

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      NI2

      NT:

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      4ESS

      NT:

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      5ESS

      NT:

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      AUS1

      NT:

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      HKT

      NT:

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      KOR

      NT:

      x

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      x

      NTT

      NT:

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      TWN

      NT:

      x

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      x

      ETSI

      NT:

      x

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      x

      VN6

      NT:

      x

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      x

      QSI

      NT:

      x

      x

      x

      x

      x

      x

      TE:

      x

      x

      x

      x

      x

      x

      Note: When the stack is down, only EXTENDED_CALL_STATUS capabilities are enabled.



      (Page 1 of 1 in this chapter) Version


      tech_support@nmss.com
      Copyright © 1999, Natural MicroSystems, Inc. All rights reserved.