Previous PageTable Of ContentsHomeIndexNext Page



3.2. Call Progress and Call Analysis

Call analysis consists of both pre-connect and post-connect information about the progress of the call. Pre-connect call progress determines the status of the call connection, that is, busy, no dial tone, no ringback, etc. Post-connect call analysis, which is also known as media type detection, determines the destination party's media type, that is, answering machine, fax, voice, etc.

NOTE:
In Global Call terminology, the term call analysis is used interchangeably with the term call progress.

The following sections discuss:

There are two methods available for call analysis when using DM3 boards: the Global Call method and the dx_dial( ) method.

The Global Call media detection method is especially useful for performing post-connect call analysis. When activated by setting the GCPR_MEDIADETECT parameter to GCPV_ENABLE for a particular channel, post-connect call analysis is performed as part of the gc_MakeCall( ) function's operation. The gc_MakeCall( ) function is used to place a call; the signal detector analyzes the incoming signals to perform call progress analysis.

After the normal gc_MakeCall( ) processing finishes and GCEV_CONNECTED event is sent, call analysis runs and generates a GCEV_MEDIADETECTED event that tells the application the result of the analysis (for example, FAX, PVD, or PAMD is detected).

The outcome of the analysis determines the events generated and the action that can be taken as follows:

NOTE:
The information above applies when using gc_MakeCall( ) in asynchronous or synchronous mode. However, in synchronous mode, since the gc_MakeCall( ) function must complete, the GCEV_MEDIADETECTED event is generated after the call is connected.

GCPR_MEDIADETECT and GCPR_CALLPROGRESS parameter settings for gc_SetParm( ) actually allow the application to specify whether pre- or post-connect call analysis or both should be activated. This method for achieving this is shown in Table 2.


Table 2. Global Call Call Progress Settings

 

GCPR_CALLPROGRESS=GCPV_DISABLE

GCPR_CALLPROGRESS=GCPV_ENABLE (default)

GCPR_MEDIADETECT=GCPV_DISABLE (default)

No call progress

Pre-connect call progress only

GCPR_MEDIADETECT=GCPV_ENABLE

No call progress

Full call progress

As can be seen in this table, the default behavior (GCPR_MEDIADETECT = GCPV_DISABLE) disables media detection but actually activates pre-connect call progress for CAS protocols. To enable full call progress analysis, set the GCPR_MEDIADETECT parameter to GCPV_ENABLE for the respective channel.

NOTE:
For this Global Call media detection to work, a voice device must be attached to the line device and properly routed. Failure to do so will cause subsequent outgoing call attempts to fail.

The GCPR_CALLPROGRESS parameter can be used to enable or disable pre-connect call progress. When combined with GCPR_MEDIADETECT, this allows the application to specify whether to use pre-connect call progress only or full call progress. If GCPR_CALLPROGRESS = GCPV_DISABLE, there will be no call progress at all, regardless of the setting of GCPR_MEDIADETECT.

Table 3 explains call analysis support via the Global Call interface. The table applies to DM3 CAS protocols with flexible routing clusters, provided that a voice device is attached to the network device. The table also applies to any fixed routing configuration regardless of the protocol. Check on a protocol-by-protocol basis, as some might not support call analysis at all.


Table 3. Call Analysis Support on DM3 Boards with CAS

Call Analysis Feature

Support on DM3

How Obtained/Notes

Busy

Yes

Upon DISCONNECT event, call gc_ResultValue( ).

No ringback

No

 

SIT

Yes

Upon DISCONNECT event, call gc_ResultValue( ).

No answer

Yes

Upon DISCONNECT event, call gc_ResultValue( ).

Cadence break

No

 

Discarded

No

 

NA

Yes

Use GCPR_MEDIADETECT parameter. Upon MEDIADETECTED event, call gc_GetCallInfo( ).

Unknown

Yes

Use GCPR_MEDIADETECT parameter. Upon MEDIADETECTED event, call gc_GetCallInfo( ).

PVD

Yes

Use GCPR_MEDIADETECT parameter. Upon MEDIADETECTED event, call gc_GetCallInfo( ).

PAMD

Yes

Use GCPR_MEDIADETECT parameter. Upon MEDIADETECTED event, call gc_GetCallInfo( ).

Fax

Yes

Use GCPR_MEDIADETECT parameter. Upon MEDIADETECTED event, call gc_GetCallInfo( ).

In progress

Yes

Use GCPR_MEDIADETECT parameter. Upon MEDIADETECTED event, call gc_GetCallInfo( ).

Note that the call analysis time-out parameters values apply, and they are configurable by the user. (They cannot be changed at runtime.) The parameters are CaSignalTimeout, CaAnswerTimeout, and CaPvdTimeout; their values are found in the CHP section of the configuration (.config) file. However, they apply only to post-connect call analysis and are not used until the call moves from an initiated to a Proceeding, Alerting, or Connected state.

Another option for call analysis is provided by the voice API, which provides post-connect call analysis on DM3 boards through the dx_dial( ) function. Note that the Global Call method and the dx_dial( ) method are mutually exclusive, so you must choose one or the other.

The gc_GetCallInfo( ) function is used immediately following the receipt of a GCEV_CONNECTED event to retrieve this post-connect information notifying of the media type of the answering party. See the Global Call API Library Reference for more information.

Call analysis tones such as dial tone, ringback, busy, and fax are defined either in the firmware (Global Tone Detection and Global Tone Generation), or in the country dependent parameters (.cdp) file, or a combination of both. Tones defined in the firmware can be enabled or disabled by configuring parameters in the DX_CAP (call analysis parameter) data structure. Similarly, the DX_CAP data structure can be used to configure the voice detection algorithm that distinguishes answering machine or human speech. The default parameter values defined in the DX_CAP data structure can be changed by the gc_LoadDxParm( ) function to fit the needs of your application. For a detailed description of enhanced call analysis (PerfectCall) and how to use call analysis, see the Voice API Programming Guide for your operating system. For a detailed description of the gc_LoadDxParm( ) function, see the Global Call API Library Reference.

Some example uses of call progress tones are as follows:

PDK protocols configure default call analysis operation through the use of two Protocol Service Layer (PSL) parameters in the protocol .cdp file (the parameter names are different for DM3 and Springware boards):

When call progress or media detection support PSL parameters are specified as pass-through values in the .cdp file, the application is permitted to define call analysis settings, for example via gc_MakeCall( ) when using Global Call. More specifically:

On Springware boards, PDK protocols support call analysis via the gc_MakeCall( ) function, which uses the flags parameter in the PDK_MAKECALL_BLK structure to determine if call progress and/or media type detection are enabled on a per call basis. The two flags are NO_CALL_PROGRESS and MEDIA_TYPE. The default values are such that call progress is enabled and media type detection is disabled, but the bits in the flags parameter can be changed to enable/disable call progress and/or media type detection as required. If this method is used for media detection, the application must receive a GCEV_CONNECTED event before the gc_GetCallInfo( ) function can be used to get information about the type of connection. Even after the GCEV_CONNECTED event is received, the call information may not be available. Consequently, the application may need to poll for the information.

On DM3 and Springware boards, PDK protocols also support a more preferred method of call progress configuration using the gc_SetParm( ) function. The parameters used to specify call progress in this case are GCPR_MEDIADETECT (DM3 only) and GCPR_CALLPROGRESS (see Table 2. Global Call Call Progress Settings). When this method is used to enable media type detection, a GCEV_MEDIADETECTED event is returned to the application on media type detection so that the gc_GetCallInfo( ) function can be used immediately to get information about the type of connection, that is, the application does not have to wait for a GCEV_CONNECTED event.

When the gc_GetCallInfo( ) function is used to retrieve information about the detected media type, the info_id parameter to the gc_GetCallInfo( ) function must be CONNECT_TYPE. See the gc_GetCallInfo( ) function description for a list of the values that may be returned when the info_id parameter is CONNECT_TYPE.

Whether a positive media detection result is sufficient to signal a call state change to the CONNECTED state is dependent upon the specific PDK protocol. For example, in PDK protocols where CAS signaling is required for identifying a connection, a signaling bit change must be received before signaling a CONNECTED call state change. For increased flexibility, a separate .cdp file parameter, CDP_Connect_Upon_Media, may be defined in the associated parameter file and used inside the protocol to enable the protocol to perform a call state change to the Connected state immediately upon positive media detection. This parameter is mostly of interest to T-1 protocols.

On Springware boards, call analysis and progress tones are mapped to US specified tones by default. PDK protocols also permit call analysis and progress tones to be customized for non-US defaults via PSL_TONE_CP_xxx (where xxx is the call analysis tone type, that is BUSY, RINGBACK, etc.) parameters as specified in the protocol .cdp file.

The format of a tone definition in the .cdp file is as follows:

There are two basic types of tone detection for both single and dual tones: edge detection and cadence detection.

Tone detection using the edge detection algorithm provides notification either when the energy in the specified frequency band(s) exceeds the threshold (leading-edge detection) or no longer exceeds the threshold (trailing-edge detection). Edge detection is identified by assigning a value of zero (0) to the On Time parameter. See Table 4 below.

Tone detection using the cadence detection algorithm provides notification when the energy in the specified frequency band(s) exceeds threshold and meets the timing requirements of the specified ring cadence. Cadence detection, like edge detection, can provide notification either when the cadence completes the specified number of cycles (Repeat Count parameter) or when the cadence ceases after ringing the specified number of cycles. Cadence detection is identified by assigning a non-zero value to the On Time parameter.

Another tone detection feature is the ability to debounce the leading edge of the tone. Rather than notifying the protocol immediately when the leading edge of the tone is detected, the protocol can specify to wait for a period of time (debounce time) before the tone signal is delivered to the protocol, that is, debouncing. This type of tone detection can be specified in the tone template as:

NOTE:
Many Springware boards cannot detect dual tones with frequency components closer than 65 Hz. In these instances, use a single tone template with the specified frequency band (that is, Frequency1 +/- Frequency1 Deviation) encompassing both dual tone ranges.

The meaning of each argument of a tone definition is explained in Table 4.


Table 4. TONE_t Signal Definition Parameters

Parameter Number

Name

Description

Detect/
Generate

Edge/
Cadence Detection

1

Frequency 1

Frequency of first tone (in Hz)

Detect, Generate

Edge, Cadence

2

Frequency 1 Deviation

Frequency deviation for first tone (in Hz)

Note: The minimum recommended value for this parameter is 50.

Detect

Edge, Cadence

3

Frequency 2

Frequency of second tone (in Hz)

Detect, Generate

Edge, Cadence

4

Frequency 2 Deviation

Frequency deviation for second tone (in Hz)

Note: The minimum recommended value for this parameter is 50.

Detect

Edge, Cadence

5

Amplitude 1

Amplitude of first tone (in dB)

Generate

Neither

6

Amplitude 2

Amplitude of second tone (in dB)

Generate

Neither

7

On Time

On duration (in milliseconds)

Note: The minimum recommended value is 50.

Detect, Generate

Cadence

8

On Time Deviation

On time deviation (in milliseconds)

Note: The minimum recommended value is 50.

Detect

Cadence

9

Off Time

Off duration (in milliseconds)

Note: The minimum recommended value is 50.

Detect, Generate

Cadence

10

Off Time Deviation

Off time deviation (in milliseconds)

Note: The minimum recommended value is 50.

Detect

Cadence

11

Mode

Detection notification:

  1 for the onset of the tone. This specifies leading edge in edge detection mode and onset of cadence detection in cadence detection mode.

  0 for the termination of the tone. This specifies trailing edge in edge detection mode and the termination of the cadence after the specified number of cycles in cadence detection mode.

Detect

Edge, Cadence

12

Repeat Count

Repetition count (the number of repetitions on cycles)

Detect, Generate

Cadence

If TONE_x is previously defined, TONE_y may be set equal to TONE_x in the following manner:

The following are examples of tone declarations in a .cdp file:

NOTE:
The information in this section is applicable to Springware boards only. DM3 boards do not use ICAPI protocols.

Global Call call analysis uses GTD and timers. Some of the country dependent parameters (.cdp) files define tone templates for recognition of call progress tones. The tone IDs defined match the protocol parameter numbers (for example, parameter $103 creates tone ID # 103). See the Voice API Programming Guide for your operating system for information about working with and building tone templates.

Parameter $1, $6, or $13 in the .cdp file defines the maximum time (in seconds) for a call to be answered. Within that interval, a busy tone and ringback tone can be detected. If the timer expires, the GCEV_DISCONNECTED event is reported to the application.

Two separate busy tones can be defined to accommodate two different call progress failure tones (that is, busy and out-of-order). Busy tones are defined in parameters $103 and $104 using the following format:

Frequency is expressed in Hz; time duration is expressed in 10 ms units; unspecified values are set to 0. The deviation value for frequency 1 or 2 specifies the allowable variation in Hz. The %01 parameter relates to cadence detection. Cadence detection analyzes the audio signal on the line to detect a repeating pattern of sound (on time) and silence (off time). The deviation value for cadence detection is the allowable variation in 10 ms units. The %02 parameter specifies the number of times that the cadence on/off pattern must be detected before classifying the tone detected.

To comment out a tone template, insert a ";" (semicolon) as the first character in all three lines of the definition. If either of the busy tones is detected, the GCEV_DISCONNECTED event is reported to the application.

A ringback tone is defined in parameter $105 using the format defined above. The maximum allowable time between successive rings is defined in parameter $3 in 10 ms units. ICAPI starts a timer after receiving a ringback TONEOFF event. Typically, Connect is indicated by line signaling. However, if the network cannot indicate a Connect via line signaling, then Connect can be indicated if the next TONEON event does not arrive before the ICAPI timer expires.

To disable Connect detection, set parameter $3 to 0. Global Call will still be able to count the rings and report the GCEV_DISCONNECTED event if the maximum number of rings is reached. The maximum number of rings is set in parameter $1.

The ringback tone heard on any specific call depends on the specific CO that is serving the called party, not the local CO. If the ringback tone is not known, the recommendation is to remove this tone from the country dependent parameters (.cdp) file.

Only the call progress tone definitions in the .cdp file are used by the Global Call API. The R1 and R2 tone definitions are used only if you disable R2 MF support in the icapi.cfg file by setting the $17 parameter to 1.

The following are examples of the definitions of busy tones $103 and $104 and ringback tone $105 in the .cdp file:

See the Voice API Programming Guide for your operating system for information about using cadence, cadence detection, and tone definitions for determining the progress of outbound calls.

In addition, the following outbound parameters in the .cdp file may need to be modified when using these call progress tones:

After the .cdp file is modified as described above, whenever one of the defined conditions is detected on a channel, the gc_MakeCall( ) function is terminated with a busy, no answer, or time-out result/error value.

For some ICAPI protocols, certain parameters must be set in the .cdp file to ensure proper operation of the protocol. Refer to the Global Call Country Dependent Parameters (CDP) Reference for country dependent parameters that are most likely to be modified and for any required settings.

NOTE:
For ICAPI protocols, the filename specified after @0 in the .cdp file must also be specified in the country.c file used in Linux applications.

Previous PageTable Of ContentsTop Of PageIndexNext Page

Click here to contact Telecom Support Resources

Copyright 2002, Intel Corporation
All rights reserved
This page generated November, 2002