Table of Contents Index NMS Glossary Previous Page Next Page Version


Chapter 4

NMS ISDN Call Control (NCC Service)


4.1 Introduction
4.2 Call Control Operations Supported By NMS 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 The 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 Setting up Overlapped Sending 81

Setting up Overlapped Receiving 81

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 nccSendDigits Extended Parameters
4.10.7 Receiving User-to-User Information (UUI)
4.11 Capability Mask

4.1 IntroductionTop of Page

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 NMS ISDN point of view.

This chapter contains:

· Brief descriptions of NCC service functions and associated events, when used with NMS ISDN.

· Descriptions of the structures returned by nccGetCallStatus and nccGetExtendedCallStatus, when NMS ISDN is active.

· An explanation of how to send extended call information with call control messages.

4.2 Call Control Operations Supported By NMS ISDNTop of Page

NMS 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 ModelTop of Page

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

4.3.1 Lines and CallsTop of Page

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

· A line is a logical representation of a channel on a trunk.

· A call is a connection between two parties (or a connection in the making, or a former connection) on a line. Multiple calls can exist simultaneously on a line. However, only one call at a time can be Active (for example, not disconnected or held).

Programmatically, a line is referenced using a line handle. The line handle is equivalent to the 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 EventsTop of Page

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.

· Transitional events are generated when the call or line state changes. They are generated because the NCC service needs the application to choose an action or acknowledge that an application command is proceeding.

· Informational events do not change the line or call state. For example, the protocol error event, NCCEVN_PROTOCOL_ERROR, provides information about abnormalities on the line including false seizure, too many incoming digits, or premature answer while dialing.

4.3.3 Call Control StatesTop of Page

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 (for example, 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.6.

The following table lists the line states, and descriptions for each. Line states are described in further detail in Section 4.5.
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 (for example, all calls are inactive), the line state changes to Idle. If a call becomes Active on the line (for example, 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. Call states are described in further detail in Section 4.5.
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 SummaryTop of Page

The following section summarizes the Natural Access functions needed to perform call control. For most of these functions, one or more events are returned in response to the invocation. 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 Natural Access events associated with call control operations:

· Solicited events, which signify acknowledgments from the API or the TCP, or occur as a consequence of some function call. These are summarized in Section 4.4.1.

· Unsolicited events, which can occur at any time, regardless of the application's current activities. Usually, unsolicited events indicate that something has happened on the line. These events are summarized in Section 4.4.2.

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 A.

4.4.1 Call Control Functions and Solicited EventsTop of Page

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.

Note: By default, a PROGRESS message is not sent to the network by nccAnswerCall.

· 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 NMS 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. NMS ISDN allows two protocol-specific reject modes when NCC_BLOCK_REJECTALL is used. The NCC.X.ADI_ISDN.START_EXT.blockrejectmode parameter determines 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. This method is only supported by the NI2, 4ESS and E10 variants.

Blocking takes place as soon as there are no calls on the line (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, indicating the reason for the failure. The line remains unblocked.

· 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 NMS ISDN.

nccPlaceCall

Places a call to a specified address, 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 fits 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 the 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 NMS ISDN.

nccSendCallMessage

Not supported by NMS 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 NMS ISDN.

nccSetBilling

Not supported by NMS 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: Indicates 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 and 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. The line 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 NMS 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 the reason code indicating the reason for the failure. The line remains blocked.

· 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 EventsTop of Page

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

Description

NCCEVN_BILLING_INDICATION

Not supported by NMS ISDN.

NCCEVN_CALL_DISCONNECTED

The caller was disconnected from the remote party.

value contains the reason why the disconnect occurred.

Indicates a transition to the Disconnected call state.

NCCEVN_CALL_PROCEEDING

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

Indicates a transition to the Proceeding call state.

NCCEVN_CALL_STATUS_UPDATE

A call status information event has been received by Natural 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 normal operation, the application should call nccUnblockCalls to unblock the channel.

The application will recieve this event after calling 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

The call status information. The application can call nccGetExtendedCallStatus to determine what has been changed.

The value field contains an indicator showing the kind of information that has been received:

· NCC_X_STATUS_INFO_UUI: the UUI field has changed.

· NCC_X_STATUS_INFO_PROGRESSDESC: the progress descriptor field has changed.

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 (the line was out of service).

Indicates a transition to the Idle line state.

The 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.

Indicates a transition to the Out of Service line state.

The 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 NMS 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).

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

NCCEVN_REJECTING_CALL

(Solicited) nccRejectCall was invoked, and the call is now being rejected.

(Unsolicited) The application has failed to answer, accept, or reject the call in a timely fashion. The call is automatically rejected.

In both cases, expect NCCEVN_CALL_DISCONNECTED.

The value field contains qualifier for why call is being rejected.

Indicates a transition to the 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.

Indicates a transition to the Seizure call state.

4.5 NCC Service State MachinesTop of Page

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 StatesTop of Page

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, which is 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 the 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 context, the line handle (signified by the CT Access handle) is 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:


chap48.gif

Figure 10. NCC Line State Diagram

4.5.2 Call StatesTop of Page

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 (for example, 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 the NCCEVN_INCOMING_CALL event.

Outbound Initiated

Entered by attempting to place a call using nccPlaceCall. Transition into this state is not indicated by any event.

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:
chap410.gif

Figure 11. NCC Call State Diagram

4.6 Retrieving Call InformationTop of Page

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

· Call nccGetCallStatus. This function returns an NCC_CALL_STATUS structure containing basic information about the call, such as the DID and ANI information, what the current call state is, etc.

· Call nccGetExtendedCallStatus. This function returns an NCC_ISDN_EXT_CALL_STATUS structure containing protocol-specific information about the call.

You can invoke either of these synchronous functions in any call state, as long as the line is in Active line state.

4.6.1 The NCC_CALL_STATUS StructureTop of Page

nccGetCallStatus returns the NCC_CALL_STATUS structure:

#define NCC_MAX_DIGITS 31

#define NCC_MAX_CALLING_NAME 63

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 NMS 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 NMS 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 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 NMS 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 The NCC_ISDN_EXT_CALL_STATUS StructureTop of Page

nccGetExtendedCallStatus returns the NCC_ISDN_EXT_CALL_STATUS structure. This structure consists of the following code:

#ifndef NCCXISDN_INCLUDED
#define NCCXISDN_INCLUDED
#include "nccadi.h"
#define NCC_ADI_ISDN_PARMID 0x1c011d
/* ISDN protocol event values */
#define ISDN_PROGRESS 0x9F0E0000 /* ISDN Progress event value */
#define NCC_IDSN_MAX_UUI 131
/* EXT_STATUS_INFO mask */
#define NCC_X_STATUS_INFO_UUI 0x01 /* UUI field has changed */
#define NCC_X_STATUS_INFO_PROGRESSDESCR 0x02 /* Progress descriptor
field has changed */
#define NCC_X_STATUS_INFO_CHARGE 0x03
typedef struct
{
DWORD size; /* Size returned by nccGetExtendedCallStatus */
INT32 reason; /* NCC reason for returning to Idle */
DWORD stream; /* stream number */
DWORD timeslot; /* 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 indicator */
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; /* Q.931 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 */

char origlineinfo; /* Originating line information */
char chargingmulti;
long chargingvalue;
char chargingtype; /* charging type */
char chargingperiod;
} 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 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 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).

origlineinfo

Origination line information.

chargingmulti

Charging multiplier.

chargingvalue

Charging value (number of units).

chargingtype

Charging type.

chargingperiod

Charging period (amount of time).

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

origlineinfo

chargingmulti

x3

chargingvalue

x3

chargingtype

x3

chargingperiod

x3

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 CallsTop of Page

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

· The called party information is passed in the calledaddr argument. The NMS ISDN TCP expects this digit string to be formatted as follows:

d1dn * t1tn

where:

- d1dn are the digits to dial.

- t1tn are the subaddress digits to dial, if needed. If no subaddress is used, omit the * and t digits from the string.

· The calling party information is passed in the callingaddr argument. The NMS 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/ReceivingTop of Page

Some variants of the NMS 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/ReceivingTop of Page

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 NMS ISDN protocol stack. (For more information about these parameter structures, see the NMS 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 NMS ISDN protocol stack. The application must enable the CC_USER_SENDING_COMPLETE (0x0002) bit to prevent the stack from automatically setting it in the SETUP message.

The ISDN daemon isdncta has command line switch -O (capital 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 NMS 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 SendingTop of Page

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.

For example:
nccPlaceCall 72~
nccSendDigits 57924~
nccSendDigits 5~
nccSendDigits 28

Final digit string: 7257924528

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 ReceivingTop of Page

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 DiagramsTop of Page

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

4.9.1 Inbound CallsTop of Page

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


chap40.gif

Figure 12. Sequence Diagram for Answering an Inbound Call


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


chap41.gif

Figure 13. Sequence Diagram for Rejecting an Inbound Call


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


chap42.gif

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:


chap43.gif

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


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


chap44.gif

Figure 16. Sequence Diagram for Immediately Rejecting an Inbound Call

4.9.2 Outbound CallsTop of Page

Figure 17 illustrates placing an outbound call.

Note: Depending upon the switch variant, some of the intermediate messages may not occur, or may occur in a different order than shown here.
chap45.gif

Figure 17. Sequence Diagram for an Outbound Call

4.9.3 Overlapped Sending/ReceivingTop of Page

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


chap411.gif

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


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


chap49.gif

Figure 19. Sequence Diagram for Handling Overlapped Receiving of Digits

4.9.4 Disconnecting and ReleasingTop of Page

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


chap46.gif

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:


chap47.gif

Figure 21. Sequence Diagram for Application-Initiated Release


4.10 Using Extended ParametersTop of Page

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:

· Call establishment (with nccPlaceCall)

· Call answering (with nccAnswerCall)

· Call accepting (with nccAcceptCall)

· Call rejection (with nccRejectCall)

· Call disconnect (with nccDisconnectCall)

· Call establishment (with nccSendDigits)

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. 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 (for example, 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 A for more information about NMS 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 ParametersTop of Page

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

#define NCC_ISDN_MAX_UUI 131

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 feature 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 */

} CALLINGNUM;

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 */

} CALLEDNUM;

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

Size of called number

callednumber.plan

Q.931 numbering plan of called address

callednumber.type

Q.931 numbering type of called address

callingnumber.size

Size of calling number

callingnumber.plan

Q.931 numbering plan of calling address

callingnumber.type

Q.931 numbering type of calling address

callingnumber.screen

Q.931 ANI screening indicator

callingnumber.presentation

Q.931 caller ID presentation indicator

redirectingnumber.size

Size of redirecting address

redirectingnumber.digits

Redirecting address

redirectingnumber.plan

Q.931 numbering plan of redirecting address

redirectingnumber.type

Q.931 numbering type of redirecting address

redirectingnumber.screen

Q.931 redirecting address screening indicator

redirectingnumber.presentation

Q.931 redirecting address presentation indicator

redirectingnumber.reason

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 ParametersTop of Page

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

#define NCC_ISDN_MAX_UUI 131

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 ParametersTop of Page

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

#define NCC_ISDN_MAX_UUI 131

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 ParametersTop of Page

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

#define NCC_ISDN_MAX_UUI 131

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 ParametersTop of Page

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

#define NCC_ISDN_MAX_UUI 131

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 nccSendDigits Extended ParametersTop of Page

The following is the nccSendDigits extended parameter structure for NMS ISDN and its substructure:

typedef struct

{

DWORD size; /* Size of this structure */

CALLEDNUM callednumer; /* Called number substructure */

} SENDDIGITS_EXT;

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 */

} CALLEDNUM;

nccSendDigits generates an INFORMATION message by default. The following table shows the fields in SENDDIGITS_EXT which are valid in this case for each network variant:
SENDDIGITS_EXT

Field

4ESS

E10

NI2

DMS100

ETSI

VN6

HKG

AUSTEL1

NTT

KOREA

TAIWAN

QSIG

callednumber

xx

x

x

x

t

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

Description

callednumber.size

Size of the SENDDIGITS_EXT structure

callednumber.plan

Q.931 numbering plan of called address

callednumber.type

Q.931 number type of called address

4.10.7 Receiving User-to-User Information (UUI)Top of Page

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 MaskTop of Page

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.



Table of Contents Index NMS Glossary Previous Page Next Page Version


Want to send us feedback on our documentation? Email: Tech_Pubs@nmss.com
Copyright © 2001, Natural MicroSystems, Inc. All rights reserved.