(Page 1 of 1 in this chapter) Version


Appendix E

Migration from ADI to NCC


Introduction
The ADI service vs. the NCC service
Querying the Capabilities of a Protocol
Calls Vs. Lines
State Machine Changes
Line States Vs. Call States
Inbound Call State Machine Changes
Outbound Call State Machine Changes
Disconnecting and Releasing Calls
Transferring Calls
New Call Hold/Retrieve Functionality
Sending Protocol-Specific Arguments
NCC Counterparts for ADI Functions
Changes to adiGetContextInfo Function
New Functions
NCC Counterparts for ADI Events and Reasons
New Events
NCC Parameters Vs. ADI Parameters
NOCC

Introduction

The NCC service provides functions and services formerly performed by the call control portion of the ADI service API. The NCC service provides a much-extended, enhanced API for call control. If your application currently uses the ADI service for call control, consider migrating to the NCC service for better performance, new features, and more control over your application's call control functionality. This appendix explains how to migrate from ADI service call control functions to the NCC service.

The ADI service vs. the NCC service

The base model for the NCC service is the ADI service call control model, plus enhancements including new states, functions, and events. Thus you will find much similarity between the two APIs.

The following is a summary of major differences:

Querying the Capabilities of a Protocol

Under ADI, to determine whether a protocol supports a feature or not, the application must attempt to use the feature, and watch for error codes indicating that the feature is not supported by the protocol. Under NCC, the application can query for a list of the protocol's features using nccQueryCapability.

Once an application has started a protocol, it can query its capabilities. The functions the application can use are indicated in the mask returned by nccQueryCapability.

Calls Vs. Lines

In the ADI service call control model, a "call" represents a connection between two parties (or a connection in the making, or a former connection), and the trunk channel on which the connection resides. The states of both the channel and the connection are included in the same state machine.

The NCC service call control model introduces the concept of a "line", as separate from a "call":

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

State Machine Changes

The following changes have been made to the call control state machine:

Line States Vs. Call States

There are now two separate state machines, one for the line and one for each call on the line. States concerning the line are referred to as line states. States concerning a call on a line are referred to as call states.

A line can be in any of 5 separate line states: Uninitialized, Idle, Blocking, Out Of Service, or Active. A line is in Uninitialized line state until a protocol is started on the line. The line then enters Idle line state. The line enters Active line state when seizure is detected, or a call placement attempt is made (i.e., a call is initiated on the line). The line remains in Active line state as long as the call is Active. Note that if a call is placed on hold, or is disconnected, it is no longer considered Active. In this case, the line returns to Idle state.

A call has no state until it is incoming, or is being placed. If inbound, the call can be in one of 6 to 8 states (the number of possible states depends upon the protocol). If outbound, the call can be in one of five states.

Once a call is released, it is destroyed. It no longer has a state.

Refer to Section 2.6, NCC Service State Machines, for more information about state machines.

Inbound Call State Machine Changes

The following states have been added to the inbound call state machine:

The Accepting call state is now an optional state (not supported by some protocols).

Outbound Call State Machine Changes

The following states have been added to the outbound call state machine:

Disconnecting and Releasing Calls

An inbound call can no longer change from the Answering Call state or the Connected state directly to the Idle state. The call must pass through the Disconnected state first, before being released. Once a call is released, it has no state.

An outbound call must also pass through the Disconnected state, before being released. The only exception in this case is if the call cannot pass beyond the Outbound Initiated state, because a glare situation exists. In this case, the call is immediately released. NCCEVN_CALL_RELEASED is received by the application. The value field of this event is NCC_RELEASED_GLARE.

A call may become disconnected if:

When a call is disconnected, it enters the Disconnected state. NCCEVN_CALL_DISCONNECTED is returned to the application. The application must then release it using nccReleaseCall. This function destroys the call handle and releases all resources attached to the call.

A disconnected call is no longer considered Active. If there are no Active calls on the line, the line returns to Idle line state.

For more information about disconnecting and releasing calls, see Section 4.5.

Transferring Calls

Blind transfer is performed in much the same way under NCC as under ADI. Under NCC, use nccAutomaticTransfer. If the transfer succeeds, the application receives NCCEVN_CALL_DISCONNECTED, with reason code NCC_DIS_TRANSFER. The application should invoke nccReleaseCall for the call handle, to destroy the handle and release resources.

Supervised transfer is performed differently under NCC. The calls involved in the transfer can be any two calls currently in the Connected call state on the line. One of the calls must be on hold. To complete a supervised transfer, invoke nccTransferCall with the handles of the two calls. If the transfer complete successfully, the application receives two NCCEVN_CALL_DISCONNECTED events, one for each call. The application should call nccReleaseCall for each call handle, to destroy the handle and release resources.

The application can invoke nccQueryCapability to determine if the current protocol supports supervised and/or automatic call transfer.

For more information about call transfer, see Section 5.3.

New Call Hold/Retrieve Functionality

Under ADI, if a protocol supported Call Hold/Retrieve, the call hold or retrieve command was sent using adiSetExtendedArgs. The NCC service performs these operations using two new functions: nccHoldCall and nccReleaseCall. These functions may be used only if a call is in the Connected call state, unless the NCC_CAP_HOLD_IN_ANY_STATE capability bit is set in the structure returned via the nccQueryCapability function. For more information, see Section 5.2.

Sending Protocol-Specific Arguments

Under ADI, to send protocol-specific information with a function invocation, the application called adiSetExtendedArgs. Under NCC, extended arguments can be sent in three ways:

For more information about sending protocol-specific information, see Chapter 7.

NCC Counterparts for ADI Functions

Most of the functions, events and parameters in the NCC service have names similar to their functional counterparts in the ADI service, except that they begin with the letters "NCC". For example: nccStartProtocol; NCCEVN_START_PROTOCOL_DONE; NCC.START.eventmask. In most cases, functions, events and parameters in the two services which have similar names operate similarly.

Functions in the two services differ mainly in the arguments that can be passed to them. For example, in the NCC service, a pointer can be sent with most functions referencing a structure containing protocol-specific extended arguments. (In the ADI service, extended arguments are set up using adiSetExtendedArgs, and are passed with the next call control function invocation.)

The following table gives NCC counterparts for ADI functions, and describes the differences:
ADI Function

NCC Counterpart

Description of Differences

adiAcceptIncomingAddress

(Implemented differently under NCC)

Under NCC, incoming digits change the call state to Receiving Digits. At any time while the call is in this state, the application can call nccAcceptCall, nccAnswerCall or nccRejectCall, depending upon the incoming digits.

adiAnswerCall

nccAnswerCall

nccAnswerCall takes a call handle instead of a context handle. It also takes an additional argument pointing to a protocol-specific answer parameter structure.

adiBlockCalls

nccBlockCalls

nccBlockCalls takes an additional argument pointing to a protocol-specific call blocking parameter structure. Successful completion of this function indicates that the line has changed to Blocking line state.

adiGetCallStatus

nccGetCallStatus, nccGetExtendedCallStatus, nccGetLineStatus

nccGetCallStatus returns the NCC_CALL_STATUS structure, containing protocol-independent information about a call. This function takes a call handle.

nccGetExtendedCallStatus returns a protocol-specific call status structure. This function takes a call handle.

nccGetLineStatus returns an NCC_LINE_STATUS structure containing information about the current line state. This function takes a context handle.

adiPlaceCall

nccPlaceCall

nccPlaceCall takes additional arguments: the calling address (caller ID); a pointer to a protocol-specific parameter structure; and the call handle to assign to the successfully initialized call. Another pointer references a structure containing the connectmask and disconnectmask. This structure references another containing call progress parameters.

adiPlaceSecondCall

Supervised transfer is implemented very differently under NCC. For details, see "Transferring Calls" above.

adiRejectCall

nccRejectCall

This function takes a call handle instead of a context handle. It also takes an additional argument pointing to a protocol-specific extended argument structure. Rejecting a call changes its call state to Rejecting. The application can then disconnect the call using nccDisconnectCall, and then release the call with nccReleaseCall.

adiReleaseCall

nccDisconnectCall, nccReleaseCall

These functions take call handles instead of context handles. They each also optionally take an additional argument pointing to a protocol-specific extended argument structure.

nccReleaseCall releases resources associated with a call, and destroys the call handle. It is invoked after the call is in Disconnected call state.

When a call is released, it is no longer in any state.

adiReleaseSecondCall

(Not needed under NCC)

Supervised transfer is implemented very differently under NCC. For details, see "Transferring Calls" above.

adiSetBilling

nccSetBilling

This function takes a call handle instead of a context handle. It also takes an additional argument pointing to a protocol-specific extended argument structure.

adiSetExtendedArgs

nccSendCallMessage, nccSendLineMessage

Under NCC, extended arguments can be sent in three ways:

· A pointer to an extended parameter structure can be included in almost every call control function invocation.

· nccSendCallMessage sends protocol-specific call messages to the protocol.

· nccSendLineMessage sends protocol-specific line messages to the protocol.

adiStartProtocol

nccStartProtocol

This function is called when the line is in Uninitialized line state. Successful starting of a protocol changes the line to Idle line state.

nccStartProtocol has three pointers. One references a protocol-independent parameter structure containing generic NCC protocol-starting parameters. The other two pointers reference manager-specific and protocol-specific protocol-starting parameter structures.

adiStopProtocol

nccStopProtocol

Successful execution of this command causes the line state to change to Uninitialized.

adiTransferCall

nccAutomaticTransfer

nccAutomaticTransfer takes a call handle instead of a context handle. It also takes additional arguments pointing to protocol-specific parameter structures.

adiUnBlockCalls

nccUnBlockCalls

nccUnBlockCalls takes an additional argument pointing to a protocol-specific call blocking parameter structure. Successful completion of this function indicates that the line has changed from Blocking line state to Idle line state.

(Protocol-specific operation, activated using extended arguments)

nccHoldCall

New function, not included in ADI. In some protocols under ADI, call hold/retrieve was implemented using extended arguments.

(Protocol-specific operation, activated using extended arguments)

nccRetrieveCall

New function, not included in ADI. In some protocols under ADI, call hold/retrieve was implemented using extended arguments.

Changes to adiGetContextInfo Function

When using the Natural Call Control service, the adiGetContextInfo function does not fill in the tcpname field of the context information structure. To retrieve this information, the application must call nccGetLineStatusInfo, and look at the protocol field of the NCC_LINE_STATUS structure, as shown in this sample code:

    NCC_LINE_STATUS nccinfo;
unsigned ret;

ret = nccGetLineStatus( ctahd, &nccinfo, sizeof( nccinfo ), NULL, 0 );

if ( ret != SUCCESS )
return ret;

printf("Protocol = %s\n", nccinfo.protocol );
For more details about retrieving line status information, refer to Section 6.2, Getting Line Status Information.

New Functions

The following table lists new functions that do not have direct counterparts in ADI. For more information about these functions, see Chapter 8.
Function

Description

nccGetExtendedCallStatus

Retrieves protocol-specific call control status information for a call.

nccGetLineStatus

Retrieves status information for a line.

nccHoldCall

Puts a call on hold.

nccQueryCapability

Queries capabilities of the current protocol.

nccRetrieveCall

Retrieves a held call.

nccSendCallMessage

Protocol-specific escape mechanism to send a message to a call.

nccSendDigits

Sends digits in overlapped sending mode.

nccSendLineMessage

Protocol-specific escape mechanism to send a message to a line.

nccTransferCall

Completes supervised transfer of two calls.

NCC Counterparts for ADI Events and Reasons

Changes to the call control state machine include new events and reason codes, and new definitions for existing ones. Some events, such as NCCEVN_SEIZURE_DETECTED, are now transitional events. We recommend you thoroughly study the table of event definitions in Section 2.4.

The following table provides NCC counterparts for all ADI call control-related events and reason codes:
ADI Value

Purpose (ADI)

size

NCC Value

NCC Purpose

ADIEVN_ACCEPTING_CALL

NCCEVN_ACCEPTING_CALL

ADI_ACCEPT_PLAY_RING

Play a ring

NCC_ACCEPT_PLAY_RING

Play a ring

ADI_ACCEPT_QUIET

Play nothing

NCC_ACCEPT_PLAY_SILENT

Play nothing

ADI_ACCEPT_USER_AUDIO

Let user supply audio to play

NCC_ACCEPT_USER_AUDIO

Let user supply audio to play

ADIEVN_ANSWERING_CALL

NCCEVN_ANSWERING_CALL

ADIEVN_BILLING_PULSE

NCCEVN_BILLING_INDICATION

ADIEVN_BILLING_SET

NCCEVN_BILLING_SET

ADI_BILLINGRATE_DEFAULT

Billing set to network default value

NCC_BILLINGSET_DEFAULT

Billing set to network default value

ADI_BILLINGRATE_FREE

Call is free

NCC_BILLINGSET_FREE

Call is free

ADIEVN_CALL_CONNECTED

NCCEVN_CALL_CONNECTED

ADI_CON_ANSWERED

Call answered via nccAnswerCall

NCC_CON_ANSWERED

Call answered via nccAnswerCall

ADI_CON_CED

Outbound CED detected

NCC_CON_CED

Outbound CED detected

ADI_CON_DIALTONE_DETECTED

Outbound CP dialtone (may be DISA)

NCC_CON_DIALTONE_DETECTED

Outbound CP dialtone (may be DISA)

ADI_CON_PROCEEDING

Do not run call progress

NCC_CON_PROCEEDING

Do not run call progress

ADI_CON_RING_BEGIN

Outbound ring detected

NCC_CON_RING_BEGIN

Outbound ring detected

ADI_CON_RING_QUIT

Outbound ring stop (soft speaker)

NCC_CON_RING_QUIT

Outbound ring stop (soft speaker)

ADI_CON_SIGNAL

NCC_CON_SIGNAL

Connect by out-of-band signal

ADI_CON_SIT_DETECTED

Outbound SIT detected

NCC_CON_SIT_DETECTED

Outbound SIT detected

ADI_CON_TIMEOUT

Outbound timeout

NCC_CON_TIMEOUT

Outbound timeout

ADI_CON_VOICE_BEGIN

Outbound voice detected

NCC_CON_VOICE_BEGIN

Outbound voice detected

ADI_CON_VOICE_END

Outbound voice ended

NCC_CON_VOICE_END

Outbound voice ended

ADI_CON_VOICE_EXTENDED

Outbound voice extended

NCC_CON_VOICE_EXTENDED

Outbound voice extended

ADI_CON_VOICE_LONG

Outbound voice long

NCC_CON_VOICE_LONG

Outbound voice long

ADI_CON_VOICE_MEDIUM

Outbound voice medium

NCC_CON_VOICE_MEDIUM

Outbound voice medium

ADIEVN_CALL_DISCONNECTED

NCCEVN_CALL_DISCONNECTED

ADI_DIS_BUSY_DETECTED

"Place call" got busy tone

NCC_DIS_BUSY

"Place call" got busy tone

ADI_DIS_CED

"Place call' got CED detected

NCC_DIS_CED

"Place call" got CED detected

ADI_DIS_CLEARDOWN_TONE

In-band remote disconnect

NCC_DIS_CLEARDOWN_TONE

In-band remote disconnect

ADI_DIS_DIAL_FAILURE

Dial failed

NCC_DIS_DIAL_FAILURE

Dial failed

ADI_DIS_DIALTONE_DETECTED

"Place call" got dialtone after dial

NCC_DIS_DIALTONE

"Place call" got dialtone after dial

NCC_DIS_GLARE

Glare detected

ADI_DIS_HOST_TIMEOUT

Host did not respond in time

NCC_DIS_HOST_TIMEOUT

Host did not respond in time

ADI_DIS_NO_CS_RESOURCE

No CS resource to place call

NCC_DIS_NO_CS_RESOURCE

No CS resource to place call

ADI_DIS_NO_DIALTONE

No dialtone to dialing out (LPS)

NCC_DIS_NO_DIALTONE

No dialtone to dialing out (LPS)

ADI_DIS_NO_LOOP_CURRENT

No loop current to dial out (LPS)

NCC_DIS_NO_ACKNOWLEDGEMENT

Acknowledgement of the initiation of an outbound call was not detected. This mapping is used for protocols other than loop start that currently report ADI_DIS_NO_LOOP_ CURRENT, and do not have a protocol-specific NO_ACKNOWLEDGEMENT value.

ADI_DIS_NO_LOOP_CURRENT

No loop current to dial out (LPS)

NCC_DIS_NO_LOOP_CURRENT

No loop current to dial out (LPS)

ADI_DIS_NO_WINK

No wink when dialing out

NCC_DIS_NO_ACKNOWLEDGEMENT

Acknowledgement of the initiation of an outbound call was not detected.

NCC_DIS_PROTOCOL_ERROR

Disconnected on protocol error

ADI_DIS_REJECT_REQUESTED

Call disconnected via adiRejectCall

NCC_DIS_REJECT_REQUESTED

Call disconnected via nccRejectCall

ADI_DIS_REMOTE_ABANDONED

Loop-start inbound stopped ringing

NCC_DIS_REMOTE_ABANDONED

Loop-start inbound stopped ringing

ADI_DIS_REMOTE_NOANSWER

"Place call" got no answer

NCC_DIS_REMOTE_NOANSWER

"Place call" got no answer

ADI_DIS_REORDER_DETECTED

"Place call" got reorder tone

NCC_DIS_CONGESTION

"Place call" got reorder tone

ADI_DIS_RING_BEGIN

"Place call" got ring begin

NCC_DIS_RING_BEGIN

"Place call" got ring begin

ADI_DIS_RING_STUCK

Incoming ring stuck too long

NCC_DIS_INCOMING_FAULT

A fatal fault occurred during the setup of an incoming call. This mapping is used for protocols that do not have a protocol-specific DIS_INCOMING_FAULT value.

ADI_DIS_RING_QUIT

"Place call" got ringstop (soft speaker)

NCC_DIS_RING_QUIT

"Place call" got ringstop (soft speaker)

ADI_DIS_SIGNAL

Out-of-band remote disconnect

NCC_DIS_SIGNAL

Normal out-of-band remote disconnect.

NCC_DIS_SIGNAL_UNASSIGNED_NUMBER

A signal or message was detected, meaning that the called number is not allocated

NCC_DIS_SIGNAL_UNKNOWN

An unspecified disconnect signal or message was detected

ADI_DIS_SIT_DETECTED

"Place call" got SIT tone

NCC_DIS_SIT_DETECTED

"Place call" got SIT tone

ADI_DIS_TIMEOUT

"Place call" got timeout

NCC_DIS_TIMEOUT

"Place call" got timeout

ADI_DIS_TRANSFER

Transfer completed

NCC_DIS_TRANSFER

Transfer completed

ADI_DIS_VOICE_BEGIN

"Place call" got voice detected

NCC_DIS_VOICE_BEGIN

"Place call" got voice detected

ADI_DIS_VOICE_END

"Place call" got voice ended

NCC_DIS_VOICE_END

"Place call" got voice ended

ADI_DIS_VOICE_EXTENDED

"Place call" got voice extended

NCC_DIS_VOICE_EXTENDED

"Place call" got voice extended

ADI_DIS_VOICE_LONG

"Place call" got voice long

NCC_DIS_VOICE_LONG

"Place call" got voice long

ADI_DIS_VOICE_MEDIUM

"Place call" got voice medium

NCC_DIS_VOICE_MEDIUM

"Place call" got voice medium

ADIEVN_CALL_PROCEEDING

NCCEVN_CALL_PROCEEDING

ADIEVN_CALLS_BLOCKED

NCCEVN_CALLS_BLOCKED

ADI_CC_BLOCK_MAKEBUSY

Assert reverse make busy

ADI_CC_BLOCK_REJECTALL

Do not answer subsequent calls

NCC_BLOCK_REJECTALL

Do not answer subsequent calls

NCC_BLOCK_OUT_OF_SERVICE

Calls blocked by request of network

ADIEVN_CALL_RELEASED

NCCEVN_CALL_RELEASED

NCC_RELEASED_GLARE

Outbound call released because incoming call was detected

NCC_RELEASED_ERROR

Outbound call released because an error occurred

ADIEVN_CALLS_UNBLOCKED

NCCEVN_CALLS_UNBLOCKED

ADIEVN_OUT_OF_SERVICE

NCCEVN_LINE_OUT_OF_SERVICE

ADI_CC_OOS_DIGIT_TIMEOUT

DID, timed out waiting for digits

NCC_OUT_OF_SERVICE_DIGIT_TIMEOUT

DID, timed out waiting for digits

ADI_CC_OOS_NO_LOOP_CURRENT

No loop current to place calls

NCC_OUT_OF_SERVICE_NO_LOOP_CURRENT

No loop current to place calls

ADI_CC_OOS_PERM_SIGNAL

Timed out waiting for remote end

NCC_OUT_OF_SERVICE_PERM_SIGNAL

Timed out waiting for remote end

ADI_CC_OOS_REMOTE_BLOCK

Remote end is blocking calls

NCC_OUT_OF_SERVICE_REMOTE_BLOCK

Remote end is blocking calls

ADI_CC_OOS_WINK_STUCK

OGT, wink is too long

NCC_OUT_OF_SERVICE_WINK_STUCK

OGT, wink is too long

NCC_OUT_OF_SERVICE_NO_DIGITS

No digits received after seizure

NCC_OUT_OF_SERVICE_LINE_FAULT

Line in inappropriate state

ADIEVN_IN_SERVICE

NCCEVN_LINE_IN_SERVICE

ADIEVN_INCOMING_CALL

NCCEVN_INCOMING_CALL

ADIEVN_PLACING_CALL

NCCEVN_PLACING_CALL

ADIEVN_PROTOCOL_ERROR,

ADIEVN_SEQUENCE_ERROR

NCCEVN_PROTOCOL_ERROR

ADI_CC_ERR_BAD_DIALSTRING

Invalid formatting of dial string

(None)

ADI_CC_ERR_DIGIT_TIMEOUT

Timeout in digit reception

NCC_PROTERR_DIGIT_TIMEOUT

Timeout in digit reception

ADI_CC_ERR_EXTRA_DIGITS

DID: more digits received than expected

NCC_PROTERR_EXTRA_DIGITS

DID: more digits received than expected

ADI_CC_ERR_FALSE_SEIZURE

DID: seized, then gone before digits LPS: Ring stopped before incoming call event

NCC_PROTERR_FALSE_SEIZURE

Event received when seizure has been aborted

ADI_CC_ERR_INVALID_DIGIT

Invalid compelled digit received

NCC_PROTERR_INVALID_DIGIT

Invalid compelled digit received

ADI_CC_ERR_NO_CS_RESOURCE

Call setup resource unavailable

NCC_PROTERR_NO_CS_RESOURCE

Call setup resource unavailable

ADI_CC_ERR_NOT_SUPPORTED

Generic: last command unsupported

NCC_PROTERR_CAPABILITY_ERROR

Generic: last command unsupported

ADI_CC_ERR_PREMATURE_ANSWER

OGT: answer before all digits given

NCC_PROTERR_PREMATURE_ANSWER

OGT: answer before all digits given

NCC_PROTERR_TIMEOUT

A timeout has occurred

NCC_PROTERR_BAD_CALLERID

Caller ID information was incorrect

NCC_PROTERR_COMMAND_OUT_OF_
SEQUENCE

Command made when call/line in wrong state

NCC_PROTERR_EVENT_OUT_OF_SEQUENCE

Event received when call/line in inappropriate state

ADI_CCDBG_CID_ERROR

size contains actual error, CID line error:

ADI_REASON_BAD_STOP_BIT,

ADI_REASON_DROP_IN_DATA,

ADI_REASON_BAD_PARITY,

ADI_REASON_BAD_CRC,

ADI_REASON_BAD_CHECKSUM

actual error

(None), CID value codes defined instead of being placed in size field

ADI_CCDBG_DTMF

DTMF digit

digit

(None)

ADI_CCDBG_MF

MF digit

digit

(None)

ADI_CCDBG_PULSE_DIGIT

Pulse digit

digit

(None)

ADI_CCDBG_R2FORWARD

MFC-R2 FWD

digit

(None)

ADI_CCDBG_R2BACKWARD

MFC-R2 BACK

digit

(None)

ADI_CCDBG_RING_BEGIN

Leading edge

(None)

ADI_CCDBG_RING_END

Ring end after qualified

(None)

ADI_CCDBG_RING_FALSE

Disqualified

(None)

ADI_CCDBG_RING_OK

Qualified as a good ring

(None)

ADI_CCDBG_RINGTONE

Ring tone during "place call", size contains ring count

ring count

(None)

ADI_SEQ_ERR_CALLS_BLOCKED

Command in Blocking state

(None)

(None)

ADI_SEQ_ERR_NOT_SUPPORTED

Unsupported function requested

(None)

(None)

ADI_SEQ_ERR_WRONG_STATE

Command was issued in wrong state

(None)

(None)

ADIEVN_INCOMING_DIGIT

NCCEVN_RECEIVED_DIGIT

ADIEVN_PROTOCOL_EVENT

NCCEVN_PROTOCOL_EVENT

ADIEVN_REJECTING_CALL

NCCEVN_REJECTING_CALL

ADI_REJ_FORCE_IMMEDIATE

Reject by forcing call termination

(None)

(None)

ADI_REJ_HOST_TIMEOUT

Rejecting inbound with default tone because PC did not respond in time

NCC_REJECT_HOST_TIMEOUT

Rejecting inbound with default tone because PC did not respond in time

ADI_REJ_PLAY_BUSY

Reject inbound with busy (if able)

NCC_REJECT_PLAY_BUSY

Reject inbound with busy (if able)

ADI_REJ_PLAY_REORDER

Reject inbound with reorder (if able)

NCC_REJECT_PLAY_REORDER

Reject inbound with reorder (if able)

ADI_REJ_PLAY_RINGTONE

Reject inbound with ringtone(if able)

NCC_REJECT_PLAY_RINGTONE

Reject inbound with ringtone(if able)

ADI_REJ_USER_AUDIO

Reject inbound with user audio (if able)

NCC_REJECT_USER_AUDIO

Reject inbound with user audio (if able)

ADIEVN_REMOTE_ALERTING

NCCEVN_REMOTE_ALERTING

ADIEVN_REMOTE_ANSWERED

NCCEVN_REMOTE_ANSWERED

ADI_ANSW_MODEM

Due to modem detection

NCC_ANSWER_MODEM

Due to modem detection

ADI_ANSW_SIGNAL

Due to out-of-band signalling

NCC_ANSWER_SIGNAL

Due to out-of-band signaling

ADI_ANSW_VOICE

Due to voice detection

NCC_ANSWER_VOICE

Due to voice detection

ADIEVN_STATUSINFO_UPDATE

NCCEVN_CALL_STATUS_UPDATE

CALL_STATUS_BCHANNEL

(None)

B channel on which this call resides has been specified or moved

CALL_STATUS_BILLINGRATE

(None)

If billingrate exists, it is in the extended call status structure

CALL_STATUS_CALLINGADDR

NCC_CALL_STATUS_CALLINGADDR

Calling address has been updated (caller ID info)

CALL_STATUS_UUI

(None)

If UUI exists, it is in the extended call status structure

ADIEVN_SEIZURE_DETECTED

NCCEVN_SEIZURE_DETECTED

ADIEVN_START_PROTOCOL_DONE

NCCEVN_START_PROTOCOL_DONE

ADIERR_NOT_ENOUGH_RESOURCES

mediamask parameter not set correctly.

NCCREASON_OUT_OF_RESOURCES

mediamask parameter not set correctly.

ADIEVN_STOP_PROTOCOL_DONE

NCCEVN_STOP_PROTOCOL_DONE

New Events

The following is a table of new events that your application can expect, that do not have counterparts in ADI. All listed events are informational:
Event

Contains

Associated Function

Description

NCCEVN_BLOCK_FAILED

linehd,

value

nccBlockCalls

A request to block calls on a line failed.

NCCEVN_CALL_HELD

callhd

nccHoldCall,

nccAutomaticTransfer,

unsolicited

(solicited) nccHoldCall or nccAutomaticTransfer invoked, call is now held.

(unsolicited) The CPE has placed call on hold.

held field in call status structure is set to a non-zero value.

Call hold/retrieve is not supported by all protocols. NCC_CAP_HOLD_CALL in the capabilitymask returned by nccQueryCapability indicates if the current protocol supports this capability.

NCCEVN_CALL_RETRIEVED

callhd

nccHoldCall,

nccAutomaticTransfer,

unsolicited

(solicited) Application has retrieved a call it placed on hold and the network has agreed.

(unsolicited) Call retrieved via this unsolicited event.

held field in call status structure is set to zero.

Call hold/retrieve is not supported by all protocols. NCC_CAP_HOLD_CALL in the capabilitymask returned by nccQueryCapability indicates if the current protocol supports this capability.

NCCEVN_CAPABILITY_UPDATE

ctahd,

value

unsolicited

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

NCCEVN_EXTENDED_CALL_
STATUS_UPDATE

callhd,

value

unsolicited

Call status made available via nccGetExtendedCallStatus has been updated.

value contains the kind of information that has been received.

This event is generated only if the NCC_REPORT_STATUSINFO bit is set in the NCC.START.eventmask parameter (see Appendix D.)

Extended call status information is not available in all protocols. NCC_CAP_ EXTENDED_CALL_STATUS in the capabilitymask returned by nccQueryCapability indicates if the current protocol supports this event or not.

NCCEVN_HOLD_REJECTED

callhd

nccHoldCall

Request to put call on hold was rejected.

Call hold/retrieve is not supported by all protocols. NCC_CAP_HOLD_CALL in the capabilitymask returned by nccQueryCapability indicates if the current protocol supports this capability.

NCCEVN_RETRIEVE_REJECTED

callhd

nccRetrieveCall

Application has attempted to retrieve a call it placed on hold, but the network has not allowed it.

Call hold/retrieve is not supported by all protocols. NCC_CAP_HOLD_CALL in the capabilitymask returned by nccQueryCapability indicates if the current protocol supports this capability.

NCCEVN_UNBLOCK_FAILED

linehd,

value

nccUnBlockCalls

Request to unblock a line failed.

NCC Parameters Vs. ADI Parameters

Parameter structures are changed only minimally, however, they exist in different locations. The following is the convention for naming NCC parameters:

Going by the preceding conventions, existing parameter structures migrate from the following locations in ADI to NCC:
ADI Parameter

NCC Parameter

Purpose

ADI.PLACECALL

NCC.X.ADI_PLACECALL

ADIMGR-specific call placement parameters.

NCC.X.ADI_ISDN(.PLACECALL_EXT)

Call placement parameters specific to ISDN.

NCC.X.ADI_CAS(.PLACECALL_EXT)

Call placement parameters specific to CAS protocols.

ADI.START

NCC.START

Generic NCC protocol starting parameters.

NCC.X.ADI_START

ADIMGR-specific protocol starting parameters.

ADI.DID

NCC.X.ADI_WNK

DID-specific protocol-starting parameters.

ADI.FDI

NCC.X.ADI_FGD

FDI-specific protocol-starting parameters.

ADI.GST

NCC.X.ADI_GDS

GST-specific protocol-starting parameters.

ADI.LPS

NCC.X.ADI_LPS

LPS-specific protocol-starting parameters.

ADI.OGT

NCC.X.ADI_WNK

OGT-specific protocol-starting parameters.

ADI.WNK

NCC.X.ADI_WNK

WNK-specific protocol-starting parameters.

ADI.ISDN

NCC.X.ADI_ISDN

ISDN-specific protocol-starting parameters.

Note: The above list does not account for all protocol-specific parameter structures supported by ADI call control or NCC. This only lists the standard protocols that were formerly defined in adidef.h, as a model by which protocol-specific parameters are mapped from one API to the other.

The following parameters not in the ADI.START parameters were added to the NCC.START parameter structure:
New NCC.START Parameter

Purpose

debugflag

Off (0) or on (non-zero). Used to report low-level debug events to the the application. Specification of which low-level events to report is left to the manager implementation.

waitforPCtime

Time protocol gives an application to respond to an NCCEVN_INCOMING_CALL event. This parameter was originally in ADI.GST and ADI.WNK.

overlappedreceiving

Determines if the protocol will receive digits in overlapped receiving mode.

The following NCC parameters were moved from a corresponding ADI parameter structure:
NCC Parameter

ADI Equivalent

Purpose

NCC.START.eventmask

ADI.START.callctl.eventmask

Determines whether or not certain events are sent to the application. For details, see Appendix D.

NCC.START.waitforPCtime

ADI.XXX.waitforPCtime

Time protocol gives an application to respond to a NCCEVN_INCOMING_CALL event

The following NCC.START parameters describe call progress tones in the target country.

callproggenerate.busyfreq1

Protocol-specific

First frequency of busy tone

callproggenerate.busyfreq2

Protocol-specific

Second frequency of busy tone

callproggenerate.busyofftime

Protocol-specific

Busy tone OFF time

callproggenerate.busyontime

Protocol-specific

Busy tone ON time

callproggenerate.busytonelevel

Protocol-specific

Busy tone amplitude

callproggenerate.dialtonefreq1

adi.dial.tonefreq1

First frequency of dialtone

callproggenerate.dialtonefreq2

adi.dial.tonefreq2

Second frequency of dialtone

callproggenerate.dialtonelevel

Protocol-specific

Dialtone amplitude

callproggenerate.dialtoneofftime1

Protocol-specific

Cadenced dialtone: first OFF time

callproggenerate.dialtoneofftime2

Protocol-specific

Cadenced dialtone: second OFF time

callproggenerate.dialtoneontime1

Protocol-specific

Cadenced dialtone: first ON time

callproggenerate.dialtoneontime2

Protocol-specific

Cadenced dialtone: second ON time

callproggenerate.fastbusyfreq1

Protocol-specific

First frequency of fast busy (reorder) tone

callproggenerate.fastbusyfreq2

Protocol-specific

Second frequency of fast busy (reorder) tone

callproggenerate.fastbusyofftime

Protocol-specific

Fast busy tone OFF time

callproggenerate.fastbusyontime

Protocol-specific

Fast busy tone ON time

callproggenerate.fastbusytonelevel

Protocol-specific

Fast busy tone amplitude

callproggenerate.ringfreq1

Protocol-specific

First frequency of ringback tone

callproggenerate.ringfreq2

Protocol-specific

Second frequency of ringback tone

callproggenerate.ringofftime1

Protocol-specific

Ringback tone first (or only) OFF time

callproggenerate.ringofftime2

Protocol-specific

Ringback tone second OFF time

callproggenerate.ringontime

Protocol-specific

Ringback tone ON time

callproggenerate.ringtonelevel

Protocol-specific

Ringback tone amplitude

NOCC

Natural Call Control does not support the NOCC protocol. If you need to use NOCC, continue using the ADI call control interface.



(Page 1 of 1 in this chapter) Version


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