# Creating MSPP endpoints

An MSPP endpoint provides entry and exit points through which data can flow across a Fusion gateway. Endpoints perform the following operations with the data that passes through them:

- Incoming data: Translate data between a network transport format (for example, RTP or DS0) and the Dialogic media transport format, so that MSPP channels can receive the data, process it, and pass it on.

- Outgoing data: Translate processed data between the Dialogic media transport format and a network transport format so that the data can be transferred to the network.

The MSPP API provides a standard set of endpoints from which to build MSPP connections. Each type of endpoint is capable of sending and receiving data to and from a particular network-specific format.

Available endpoint types include:

Endpoint | Description
DS0 | Receive and send data to and from a PCM source (for example, a PSTN).
RTP IPv4 | Receive and send data (time stamped with RTP header) to and from the IPv4 network. Endpoints can be simplex or duplex.
RTP IPv6 | Receive and send data (time stamped with RTP header) to and from the IPv6 network. Endpoints can be simplex or duplex.
TPKT | Receive and send data to and from an IP network while multiplexing and de-multiplexing packets according to the ThroughPacket algorithm. For more information about ThroughPacket multiplexing, refer to the Dialogic® NaturalAccess™ Fusion VoIP API Developer's Manual.
T38UDP | Receive and send data to and from the IP network for T.38 fax channels.

## Using mspCreateEndpoint to create endpoints

Applications create MSPP endpoints by invoking mspCreateEndpoint. This function requires a ctahd that has been used to open an MSPP API instance (refer to Opening MSPP API instances).

When using mspCreateEndpoint, applications specify the board number on which to create the endpoint, a filter ID that indicates the type of endpoint to create, and the timeslot used to open the MSPP API on the context. The application then specifies an address structure and a parameter structure.

The address structure provides basic configuration information about the endpoint, usually the source and destination address for transferred data. The parameter structure specifies the features that are available on the MSPP endpoint.

The following table provides an overview of the information provided with mspCreateEndpoint for different types of MSPP endpoints (RTP IPv4 and RTP IPv6 endpoints are available in simplex and full duplex form):

Endpoint type | Address structure | Parameter structure
DS0 | Board number Timeslot | Type of data transmission: voice or fax
RTP IPv4 | Board number Source UDP port and IPv4 address Destination UDP port and IPv4 address Board interface number For simplex endpoints, some of these fields are left NULL because they are inapplicable (for example, the Destination address field is irrelevant for simplex receive endpoints). | IPv4 type of service information Number of frames assembled in each packet payload RTP timestamp frequency RTCP session parameters Types of unsolicited events the endpoint returns
RTP IPv6 | Board number Source UDP port and IPv6 address Destination UDP port and IPv6 address Board interface number For simplex endpoints, some of these fields are left NULL because they are inapplicable (for example, the Destination address field is irrelevant for simplex receive endpoints). | Traffic class of the IP packets transferred through the endpoint Flow label Number of frames assembled in each packet payload RTP timestamp frequency RTCP session parameters Types of unsolicited events the endpoint returns
TPKT | Board number IPv6 is not currently supported. | Remote and local session ID Destination gateway IPv4 address Vocoder type
T38UDP | Board number Source port and IPv4 address Destination port and IPv4 address IPv6 is not currently supported. | IFP decoder parameters IFP encoder parameters UDPTL decoder parameters UDPTL encoder parameters

When an application creates MSPP endpoints, the MSPP API returns a unique endpoint object handle (ephd) that the application can use to configure and control the endpoint.

When an application creates MSPP endpoints with mspCreateEndpoint, it uses an address structure to specify the address information associated with the endpoint. The following example shows the DS0_ENDPOINT_ADDR structure:

typedef struct tag_DS0_ENDPOINT_ADDR
{
/* Address attributes */
INT32 nTimeslot; /* Timeslot address */
} DS0_ENDPOINT_ADDR;

While creating MSPP endpoints, applications also specify parameter structures that define endpoint behavior. The following example shows the DS0_ENDPOINT_PARMS structure:

typedef struct tag_DS0_ENDPOINT_PARMS
{
DWORD size
MSP_MEDIA media;
} DS0_ENDPOINT_PARMS;

The DS0_ENDPOINT_PARMS structure defines whether the DS0 endpoint transfers data in voice or fax mode. Parameter structures for RTP, TPKT, and T38UDP endpoints contain considerably more information.

When creating an endpoint, the application can specify the value 0xFFFF for 16-bit values or 0xFFFFFFFF for 32-bit values (or -1 in decimal format) to accept the default value for any parameters within the endpoint parameter structure. Otherwise, the MSPP API expects the application to provide valid settings for each parameter in the endpoint parameter structure.

When the endpoint is connected, it processes data according to the settings specified when it was created.

For more information, refer to Overview of endpoint structures.

## Disabling and enabling MSPP endpoints

By default, when an application creates an endpoint, the endpoint is enabled and ready to transfer information between the network and an MSPP channel. However, the application can use mspDisableEndpoint to halt the flow of data through a particular endpoint. Although it usually makes more sense to stop the flow of data by disabling the channel that connects two endpoints, mspDisableEndpoint can also be used to interrupt the flow of data through an MSPP connection.

Applications can restart the flow of data through an enabled endpoint by invoking mspEnableEndpoint.