# Starting CAS protocols

Before starting a CAS protocol, the application must initialize Natural Access and obtain context handles
. The TCP parameters are automatically loaded during initialization. For information about initializing Natural Access and obtaining context handles, refer to the Natural Access Developer's Reference Manual.

This topic provides the following information:

- Using nccStartProtocol

- Using CAS protocols

## Using nccStartProtocol

When a context is open and the TCP parameters are loaded, the application can start a protocol on that context according to the loaded parameters (see Configuring TCPs). Invoke nccStartProtocol to start a TCP. After a TCP is started on a context, the application can use call control functions to place and answer calls on that context.

Note: To start a TCP from within an application, the TCP must have been downloaded to the board during system initialization. The configuration utility downloads all TCPs specified in the board keyword file. For more information about the board keyword file, see Configuring NMS boards.

nccStartProtocol requires a TCP name as one of its arguments. CAS TCPs include the following:

Protocol | TCP name
--- | ---
Analog loop start | lps0
Australian P2 | ap20
EL7 | el70
European digital CAS | euc0
Feature group D | fgd0
Digital ground start | gds0
MELCAS | mel0
MF-Socotel | mfs0
Multi-frequency compelled R2 | mfc0
NEC PBX | nec0
Off-premises station | ops0
Operator workstation | sta0
Pulsed E and M | eam0
Signaling system 5 | ss50
System R1.5 (inbound calls) | r150
System R1.5 (outbound calls) | r151
Wink start (digital and analog) | wnkx (x=0,1)

After the application calls nccStartProtocol, it receives NCCEVN_STARTPROTOCOL_DONE. If the TCP is started successfully, the event value field contains CTA_REASON_FINISHED. Otherwise, the value field contains a reason code that describes the error that occurred.

If your application terminates, all channels associated with the application are terminated, the TCP shuts down, and the bit pattern specified in the IdleCode statement in the board keyword file is signaled on the line.

## Using CAS protocols

On AG boards, DSP functions started by the TCP (for example, DTMF detection) cannot be active while calls are in the connected state. For this reason, when calling nccStartProtocol, the value of the NCC service parameter mediamask (in the NCC.X.ADI_START_PARMS structure) must be set to 0.

If mediamask is not set to 0, the TCP does not start and the application receives the NCCEVN_STARTPROTOCOL_DONE event with the reason NCC_REASON_OUT_OF_RESOURCES. The application must then set mediamask to zero before starting the protocol again.

For information about NCC.X.ADI_START parameters, refer to NCC call control parameters.

For information about managing DSP resources on CG boards, refer to the appropriate board installation manual.