ppxDisconnect

Disconnects an existing simplex, duplex, or quad connection.

Prototype

DWORD ppxDisconnect ( 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_INVALID_HANDLE

ctahd is not a valid context handle.

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_CONN_OWNERSHIP

listener is in a connection not owned by the calling connection or the initial connection was nailed up.

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_NOT_CONNECTED

listener is not receiving output from the talker.

PPXERR_NOT_LISTENER

listener is incapable of receiving output from 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

ppxDisconnect disconnects a talker from a listener that was previously connected through ppxConnect. All intervening timeslots are freed.

The context must own the connection in order to disconnect.

If talker = NULL, the listener is disconnected (output disabled).

ppxDisconnect can also be used to disconnect any nailed up connections specified in the PPX configuration file as long as the connections were not specified with the NAILED keyword. Verify that no application is using the connection before disconnecting.

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

Stream number of the listener/talker.

timeslot

Timeslot of the listener/talker.


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

See also

ppxRestoreConnections

Example

DWORD MyConnectDisconnect( CTAHD ctahd, PPX_CX_MODE mode, BOOL MakeConn )
{
    PPX_MVIP_ADDR listener, talker;
    DWORD ret ;
    
    talkers.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, PPX_QUAD
      */
    if ( MakeConn == TRUE )
   
       ret = ppxConnect( ctahd, &talker, &listener, mode );
    
    else
    
       ret = ppxDisconnect( ctahd, &listener, &talker, mode );
    
   return ( ret ) ;
}