Table of Contents Index NMS Glossary Previous Page Next Page (Page 10 of 69 in this chapter) Version


adiGetBoardSlots

Description

Returns the MVIP timeslots configured for the given board.

Prototype

DWORD adiGetBoardSlots ( CTAHD ctahd,
unsigned board,
unsigned mode,
unsigned maxslot,
ADI_TIMESLOT *slotlist,
unsigned *numslots )

ctahd CTA context handle returned by ctaCreateContext.

board Board number as specified in the configuration file.

mode Specifies stream capability, which can be either ADI_FULL_DUPLEX (both voice and signaling streams) or ADI_VOICE_DUPLEX (voice only).

maxslot Maximum number of entries in slotlist array.

slotlist Pointer to the ADI_TIMESLOT array, defined as:

typedef struct
{
       BYTE  stream ;
       BYTE  slot ;
} ADI_TIMESLOT ;

 

numslots Returned number of entries.

Return Values

Events

None.

Details

This function queries the available MVIP stream:slot pairs configured for a given board.

The ctahd argument is used to access the CTA context on which the ADI service was opened. The ADI service can be opened in driver-only mode if desired. In this case, no actual board resources will be reserved. Set the board field in the MVIP_ADDR structure passed to ctaOpenServices to ADI_AG_DRIVER_ONLY. This function will also work with a CTA context that has the ADI service opened on actual MVIP streams and timeslots.

If mode is zero (0), the slots returned are the DSP addresses that correspond to actual trunks, whether or not they are actually connected.

For example, if an AG-8 board is partially populated, only the slots that contain line interfaces will be returned. If an AG Dual T board is configured as two primary rate trunks, timeslots 0 - 22 and timeslots 24 - 46 will be returned.

Note: The DSPs are automatically connected to the trunk if the telephony bus is not enabled.

If mode is not zero (0), the function returns only those streams capable of supporting the given mode. The base stream for the given mode is returned in the ADI_TIMESLOT stream field.

Examples:

For details concerning MVIP addressing, refer to the Switching Service Developer's Reference Manual and to Getting Started with MVIP Switching.

The maxslot argument is the number of ADI_TIMESLOTs in the application supplied slotlist array. The ADI service returns the number of ADI_TIMESLOTs written to the slotlist in the numslots variable. This value will be in the range zero to maxslot inclusive.

Note: If maxslot is zero and slotlist is NULL, numslots returns the actual number of slots without copying any data.

adiGetBoardSlots can be used in conjunction with adiGetBoardInfo to dynamically configure an application's contexts. ctaOpenServices is called with a board number and MVIP stream:slot to open the ADI service. The application can retrieve a complete list of configured stream:slot pairs for any AG board with adiGetBoardSlots.

Example


#define MAX_SLOTS 256
void myShowBoardSlots( CTAHD ctahd, unsigned board )
{
    ADI_TIMESLOT slotlist [MAX_SLOTS];  /* Returned array of timeslots */
    int ret;
    unsigned stream, slot1, slot2, prevslot, numslots;

    /* Read the MVIP configuration for the board.                        */
    ret = adiGetBoardSlots( ctahd, board, ADI_VOICE_DUPLEX,
                            MAX_SLOTS, slotlist, &numslots );
    if( ret == SUCCESS )
    {
        /* The ADI_TIMESLOT information contains 'stream:slot' pairs.
         * Print the information as 'stream:slot0..slotN' ranges.
   */
        unsigned i = 0;
        while( i < numslots )
        {
            /* store stream and starting slot                          */
            stream = slotlist[i].stream;
            slot1  = slotlist[i].slot;
            prevslot = slot1;

            while( ++i < numslots &&             /* find ending slot   */
                   slotlist[i].stream == stream &&
                   slotlist[i].slot   == prevslot+1 )
                prevslot++;
            slot2 = slotlist[i-1].slot;          /* store ending slot  */

            printf( "%2d:%d", stream, slot1 );
            if( slot2 != slot1 ) printf("..%d", slot2 );
            puts( "" );
        }
    }
    else if( ret == CTAERR_INVALID_BOARD )
        printf( "There is no board # %d.\n", board );
    else
        /* unexpected error                                              */
        printf( "Error %x getting board # %d information.\n", ret, board );
}



Table of Contents Index NMS Glossary Previous Page Next Page (Page 10 of 69 in this chapter) Version


Want to send us feedback on our documentation? Email: Tech_Pubs@nmss.com
Copyright © 2000, Natural MicroSystems, Inc. All rights reserved.