Switching Service Developer's Reference Manual (6421-10): Alphabetical Function Reference
(Page 23 of 28 in this chapter)
swiMakeFramedConnection
Description
- Connects inputs to outputs with identical throughput delay for all connections.
Prototype
- DWORD swiMakeFramedConnection ( SWIHD swihd,
SWI_TERMINUS input[],
SWI_TERMINUS output[],
unsigned count)
- swihd Handle returned by swiOpenSwitch.
- input Array of terminus structures for the input side of the connection. The terminus structure is:
typedef struct
{
DWORD bus;
DWORD stream;
DWORD timeslot;
} SWI_TERMINUS;
- See swiMakeConnection for a description of these fields.
- output Array of terminus structures for the output side of the connection.
- count Number of elements in the input array and in the output array.
Return Values
Events
Details
- This function makes connections between the corresponding elements of the output terminus array and the input terminus array.
- The type of connection is identical to swiMakeConnection except that all connections ever made on the same switch device with this function have the same constant throughput delay.
- swiMakeFramedConnection may be used to make a single high bandwidth connection using multiple timeslots where the data must be synchronized across the timeslots. This function ensures there is identical throughput delay across all timeslots.
- This function returns CTAERR_FUNCTION_NOT_AVAIL if framed connections are not supported.
- This function is specific to MVIP-95. Calling this function on an MVIP-90 driver will return CTAERR_FUNCTION_NOT_AVAIL.
Note: It is important to disable an output when the connection or pattern is no longer required. Leftover connections or patterns can cause unpredictable behavior in the application.
- Refer to Section 4.2, Making Connections for more information.
- If CTAERR_DRIVER_ERROR is returned, call swiGetLastError to retrieve the MVIP device error code.
See Also
- swiDisableOutput, swiGetLastError, swiGetOutputState, swiGetSwitchCaps, swiMakeConnection, swiResetSwitch, swiSampleInput, swiSendPattern
Example
#define SIMPLEX 0
#define DUPLEX 1
void myMakeFramedConnection(SWIHD hd, SWI_TERMINUS input,
SWI_TERMINUS output,
unsigned count, DWORD mode)
{
unsigned i;
DWORD duplex = 0;
SWI_TERMINUS *outputs, *inputs;
if (mode == DUPLEX)
duplex = 1;
inputs = (SWI_TERMINUS *)malloc(sizeof(SWI_TERMINUS)*count);
outputs = (SWI_TERMINUS *)malloc(sizeof(SWI_TERMINUS)*count);
for (i = 0; i < count; i++)
{
inputs[i].bus = input.bus;
inputs[i].stream = input.stream;
inputs[i].timeslot = input.timeslot + i;
outputs[i].bus = output.bus;
outputs[i].stream = output.stream;
outputs[i].timeslot = output.timeslot + i;
}
swiMakeFramedConnection(hd, inputs, outputs, count);
if( duplex )
{
for (i = 0; i < count; i++)
{
inputs[i].stream = inputs[i].stream + 1;
outputs[i].stream = outputs[i].stream - 1;
}
swiMakeFramedConnection(hd, outputs, inputs, count);
}
}
(Page 23 of 28 in this chapter)
tech_support@nmss.com
Copyright © 1997, Natural MicroSystems, Inc. All rights
reserved.