# ppxConnect

Makes simplex, duplex, or quad switch connections.

#### Prototype

DWORD ppxConnect ( CTAHD ctahd, PPX_MVIP_ADDR *talker, PPX_MVIP_ADDR *listener, PPX_CX_MODE mode )

Argument | Description
ctahd | Context handle returned by ctaCreateContext or ctaAttachContext.
talker | Pointer to a PPX_MVIP_ADDR structure. The structure is defined as follows: typedef struct { DWORD switch_number; DWORD bus; DWORD stream; DWORD timeslot; } PPX_MVIP_ADDR Refer to the Details section for a description of these fields.
listener | Pointer to a PPX_MVIP_ADDR structure.
mode | Connection mode: PPX_SIMPLEX, PPX_DUPLEX, or PPX_QUAD.

#### Return values

Return value | Description
SUCCESS |
CTAERR_DRIVER_ERROR | Underlying driver retrieved an unrecognized error. Call swiGetLastError to retrieve the MVIP device error code.
CTAERR_NOT_FOUND | talker or listener is not defined in the PPX configuration file.
CTAERR_OUT_OF_MEMORY | Unable to allocate memory.
CTAERR_SVR_COMM | Natural Access server communication error.
PPXERR_COMM_FAILURE | Problems were encountered when communicating with the PPX server.
PPXERR_DISABLED | Switch number specified has been disabled.
PPXERR_DRIVER_OPEN_FAILED | Driver open failed, or the driver DLL or device was not found.
PPXERR_INVALID_SWITCH | Switch number specified is inaccessible from the specified bus:stream:timeslot.
PPXERR_LISTENER_BUSY | Specified listener is assigned to another connection.
PPXERR_NO_PATH | Could not find a path from talker to the listener.
PPXERR_NOT_LISTENER | listener is incapable of receiving output from the connection.
PPXERR_NOT_TALKER | Specified talker is incapable of driving the output for the connection.
SWIERR_INVALID_STREAM | One or more of the specified streams is invalid.
SWIERR_INVALID_TIMESLOT | One or more of the specified timeslots is invalid.

#### Details

ppxConnect is a convenience function that wraps the functionality of ppxCreateConnection, ppxSetTalker, and ppxAddListeners. ppxConnect makes one-talker to one-listener connections. These connections use internal connection handles that cannot be accessed by the application. Listeners cannot be added to connections made by ppxConnect.

The PPX_MVIP_ADDR structure contains the following fields:

Field | Description
--- | ---
switch_number | Switch number of the board as defined in ppx.cfg.
bus | Acceptable values are: MVIP95_MVIP_BUS MVIP95_LOCAL_BUS
stream | The stream number of the listener/talker.
timeslot | The timeslot of the listener/talker.

Refer to Making one-talker, one-listener connections for more information.

#### See also

ppxDisconnect

#### Example

DWORD MyConnect( CTAHD ctahd, PPX_CX_MODE mode )
{
PPX_MVIP_ADDR listener, talker;
DWORD ret ;
talker.switch_number =0;
talker.bus = MVIP95_LOCAL_BUS;
talker.stream = 0;
talker.timeslot = 4;
listener.switch_number = 1 ;
listener.bus = MVIP95_LOCAL_BUS;
listener.stream = 5;
listener.timeslot = 4;
/*
* The passed-in "mode" has one of the following
* values:
*
* PPX_SIMPLEX, PPX_DUPLEX, or PPX_QUAD
*/
ret = ppxConnect( ctahd, &talker, &listener, mode );
return ( ret ) ;
}