# Setting up RFC 2833 capabilities

To implement RFC 2833 compliant inband DTMF carriage, perform the following tasks:

Step | Action
1 | Specify an appropriate Resource keyword string in the CG board keyword file that appropriately configures the board resources needed to support RFC 2833 capabilities.
2 | Start a protocol on the context that is associated with the voice channel, and specify appropriate mediamask parameters to support DTMF detection in the voice channel instead of the DS0 endpoint.
3 | Specify settings in the MSPP channel address and parameter structures at voice channel create time that enable and configure RFC 2833 capabilities.

Before you implement RFC 2833 compliant inband DTMF carriage on a particular CG board, specify Resource settings in the associated board keyword file that identify the necessary board resources. The following example shows an OAM board keyword string that specifies DPFs to support RFC 2833 compliant inband DTMF carriage (shown in bold). These DPFs are combined using the OR operator with DPFs that do not support inband RFC 2833 capabilities so that the board can support both modes of operation.

Resource[0].Definitions = (f_echo_v3.ln20_apt25 &\
((dtmf.det_sil_clrdwn_ced &\
((f_g711.cod_rfc2833 & f_g711.dec_rfc2833) | \
(f_g729a.cod_rfc2833 & f_g729a.dec_rfc2833) | \
(f_g723.cod_rfc2833 & f_g723.dec_rfc2833) | \
f_faxt38.relay))| \
(dtmf.det_all & \
((f_g711.cod & f_g711.dec)| \
(f_g729a.cod & f_g729a.dec) | \
(f_g723.cod & f_g723.dec) | \
f_faxt38.relay)))) |

As the example shows, the DPFs that support RFC 2833 capabilities end with the string _rfc2833. When you use oamsys to configure the board, the CG board resource manager calculates resources based on two different scenarios: RFC 2833 capabilities enabled (bold), or RFC 2833 capabilities disabled. For more information about CG board resource management, refer to Configuring CG board resources or to the CG board manual.

Before you can create an MSPP channel create a Natural Access context with ctaCreateContext. When enabling RFC 2833 compliant inband DTMF carriage, you must also use nccStartProtocol to start a protocol on the context. When invoking nccStartProtocol, specify NCC parameters that reserve DSP resources required for call control operations performed on that context. This determines the functionality available for calls associated with the context.

To implement inband DTMF carriage, specify bits for the NCC.X.ADI_START.mediamask parameter that enable cleardown detection, silence detection, and echo cancellation. You can specify appropriate mediamask parameters by using any (or a combination of) the following mediamask settings:

Bit setting | Description
NCC_CC_RESVSILENCE1 | Reserves silence detection.
NCC_CC_RESVCLRDWN | Reserves clear down detection.
NCC_CC_AUTOECHO | Starts echo canceller.

For example, the following sample code shows how to define a flag that specifies appropriate mediamask settings to support RFC 2833 compliant inband DTMF carriage:

if (pCmdLineParms->bEnableInBandDtmf)
{
startparms.mediamask =
NCC_CC_RESVSILENCE | NCC_CC_RESVCLRDWN | NCC_CC_AUTOECHO;
/* Mediamask for inband DTMF carriage (RFC 2833) */
}
else
{
startparms.mediamask =
NCC_CC_RESVDTMF | NCC_CC_RESVSILENCE |NCC_CC_RESVCLRDWN |
NCC_CC_AUTODTMF | NCC_CC_AUTOECHO;
/* Mediamask for conventional DTMF carriage */
}