Returns information about the capabilities of the device driver and the switch controlled by it.
DWORD swiGetSwitchCaps ( SWIHD swihd, SWI_SWITCHCAPS_ARGS *args, SWI_LOCALDEVICE_DESC localdevs[], unsigned maxcount)
Argument |
Description |
swihd |
|
args |
Pointer to a switch capabilities parameter structure for the device driver information: typedef struct Refer to the Details section for a description of these fields. |
localdevs |
Array that receives the number of timeslots and the device type of each local stream. The SWI_LOCALDEVICE_DESC structure is: typedef struct Refer to the Details section for a description of these fields. |
maxcount |
Maximum number of elements in the localdevs array. |
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 |
swihd is not a valid switch handle. |
CTAERR_SVR_COMM |
Communication error in the server environment. |
swiGetSwitchCaps queries the device driver and returns the capabilities of the device driver and the switch block. Use this function any time after opening a switch block.
The SWI_SWITCHCAPS_ARGS structure contains the following fields:
Field |
Description |
---|---|
dvrrevision |
Revision level of the device driver multiplied by 100 (decimal). |
domain |
Domain of a switch block. A switch block's domain indicates which MVIP streams have full-duplex connections to the switch block. The representation of these streams is a bit field. If a full-duplex connection to the switch block is supported, the corresponding bit in the domain parameter is set to one. Bit 0 indicates whether the switch block supports a full-duplex connection to HDS0 (MVIP-95).
In the context of MVIP-95 hardware implementations, bits 0 through 23 indicate the switch block's support for full-duplex connections with HDS0 through HDS23. A full-duplex connection means that an MVIP HDS stream can provide both input to the switch block and output from the switch block.
The domain of all MVIP-95 standard-compliant switches is 1111 1111 1111 1111 (0xFFFF). |
routing |
Switch block's half-duplex routing capabilities. The representation of these capabilities is a bit field. When the switch block has a routing capability, the bit is set to 1. Refer to the next table for more information on bits and routing capabilities. |
blocking |
Switch block's possible blocking. Blocking means that a switch block is unable to provide all possible connections. A bit field represents where blocking is possible; a value of 1 signifies this possible restriction. The bit field for the blocking parameter has the same meaning as the bit field for the routing parameter. |
swstandard |
MVIP software standard to which the device driver conforms. The acceptable value is MVIP95_STANDARD_MVIP95. |
swstdrevision |
Revision of the software standard to which the device driver conforms multiplied by 100 (decimal). |
hwstandard |
NMS boards return MVIP95_STANDARD_HMVIP. |
hwstandardrevision |
Revision of the hardware standard controlled by the device driver multiplied by 100 (decimal). |
numlocalstreams |
Number of streams on the local bus side of the switch block. This number includes both the data and signaling streams for network devices such as T1 framers. |
The following table presents the correspondence of bits in the bit field to the switch block's half-duplex routing capabilities:
Bit |
Half-duplex routing capability |
---|---|
0 |
Even-numbered CT_D stream to odd-numbered CT_D stream. |
1 |
Odd-numbered CT_D stream to even-numbered CT_D stream. |
2 |
Even-numbered CT_D stream to even-numbered CT_D stream. |
3 |
Odd-numbered CT_D stream to odd-numbered CT_D stream. |
4 |
Even-numbered CT_D stream to local. |
5 |
Local to odd-numbered CT_D stream. |
6 |
Odd-numbered CT_D stream to local. |
7 |
Local to even-numbered CT_D stream. |
8 |
Local to local. |
The SWI_LOCALDEVICE_DESC structure contains the following fields:
Field |
Description |
---|---|
timeslots |
Number of timeslots on the local stream. |
deviceid |
Device identifier of the local stream. |
Refer to Querying switch capabilities for more information.
If CTAERR_DRIVER_ERROR is returned, call swiGetLastError to retrieve the MVIP device error code.
swiDisableOutput, swiGetLocalStreamInfo, swiGetLocalTimeslotInfo, swiGetOutputState, swiMakeConnection, swiMakeFramedConnection, swiResetSwitch, swiSampleInput, swiSendPattern
void myPrintSwitchCaps(SWIHD hd)
{
SWI_SWITCHCAPS_ARGS cp;
SWI_LOCALDEV_DESC *localdevs;
swiGetSwitchCaps(hd, &cp, NULL, 0);
localdevs = (SWI_LOCALDEV_DESC *)malloc(
sizeof(SWI_LOCALDEV_DESC)*cp.numlocalstreams);
swiGetSwitchCaps(hd, &cp, localdevs, cp.numlocalstreams);
printf("Driver Software Std. %s Rev. %2.f\n",
((cp.swstandard == MVIP95_STANDARD_MVIP95)? "MVIP-95" :
"other"),
(float)cp.swstdrevision/100.0);
printf("Hardware Std. %s Rev. %2.f.\n",
((cp.hwstandard == MVIP95_STANDARD_HMVIP)? "HMVIP" :
"other"),
(float)cp.hwstdrevision/100.0);
printf("Driver Rev. %.2f\n", (float)cp.dvrrevision/100.0);
printf(" Domain %04X, Routing %04X, Blocking %04X.\n",
cp.domain, cp.routing, cp.blocking );
if( cp.numlocalstreams > 0 )
{
DWORD i;
printf("Supports %d local streams:\n\t",
cp.numlocalstreams );
for( i=0; i<cp.numlocalstreams; i++ )
printf( "%2d ", i+16 );
printf("with\n\t");
for( i=0; i<cp.numlocalstreams; i++ )
printf( "%2d ", localdevs[i].timeslots );
printf("timeslots respectively.\n");
}
free(localdevs);
}
The output would be:
Driver Software Std. MVIP-95 Rev. 0.00, Hardware Std. H.110 Rev. 0.
Driver Rev. 17.00, Domain FFFF, Routing 01FF, Blocking 00FF.
Supports 4 local streams:
16 17 18 19 with
24 24 32 32 timeslots respectively.