(Page 1 of 1 in this chapter)


Chapter 6

Messaging API Data Structures


6.1 Introduction
6.2 Messaging Structures
6.2.1 ISDN_MESSAGE Structure
6.2.2 ISDN_PACKET Structure
6.3 Protocol Parameter Structures
6.3.1 ISDN_PROTOCOL_PARMS_Q931CC Structure
6.3.2 ISDN_PROTOCOL_PARMS_LAPD Structure
6.3.3 ISDN_PROTOCOL_PARMS_CHANNELIZED

6.1 Introduction

AG ISDN uses data structures to configure the ISDN protocol stack, send messages to the protocol stack, and receive messages from the protocol stack. This chapter presents the AG ISDN data structures in detail.

These data structures are defined in the isdnparm.h header file.

6.2 Messaging Structures

The following section describes the structures used to convey messages and message data between the ISDN protocol stack and the application: ISDN_MESSAGE and ISDN_PACKET.

For more information on sending and receiving AG ISDN messages, refer to Chapter 2.

6.2.1 ISDN_MESSAGE Structure

A pointer to the ISDN_MESSAGE structure is passed to isdnSendMessage in the message argument. In this structure, the application specifies the NAI and the connection id of the call that the message concerns. Also specified is the message to be sent, expressed using one of the message primitives documented in Chapter 8. (The message primitive appears in the code field in this structure.)

When the ISDN_PACKET structure is received by the application, it contains a pointer to an ISDN_MESSAGE structure containing message data. For more information, see Section 6.2.2, ISDN_PACKET Structure.

ISDN_MESSAGE is defined as follows:

typedef struct ISDN_MESSAGE
{
nai_t nai; /* Network access interface index */
ent_id_t from_ent; /* Message source */
ent_id_t to_ent; /* Message destination */
sapi_t to_sapi; /* Destination Service Access Point */
union {
add_t conn_id; /* Connection identifier for the ACU layer */
add_t crv; /* Call Reference value for the NS layer. Not used */
add_t ces; /* Connection Endpoint suffix (DL later upper half */
add_t tei; /* Terminal Endpoint id (DL layer lower half). Not used */
add_t chani; /* Physical layer channel identifier. Not used */
} add;
code_t code; /* Primitive code unique only between two entities */
WORD inf0; /* Information location 0 */
WORD inf1; /* Information location 1 */
WORD inf2; /* Information location 2 */
WORD inf3; /* Information location 3 */
WORD inf4; /* Information location 4 */
WORD data_size; /* Size of data to follow */
WORD pad; /* Pad */
DWORD userid; /* User ID */
} ISDN_MESSAGE;

6.2.2 ISDN_PACKET Structure

When a message is sent from the protocol stack to the application, it is sent in an ISDN_PACKET structure. ISDN_PACKET contains an ISDN_MESSAGE structure (containing the message), and a data area containing the message header. A pointer to the ISDN_PACKET structure is included in the CTA_EVENT structure returned by ctaWaitEvent.

For more information about receiving ISDN messages, see Section 3.5.1, About Network Access Identifiers (NAIs).

ISDN_PACKET is defined as follows:

typedef struct ISDN_PACKET
{
    ISDN_MESSAGE message;     /* ISDN message identification information */
    BYTE data[4];             /* Data included in packet (>=0 */
} ISDN_PACKET;

6.3 Protocol Parameter Structures

This section lists the data structures passed to isdnStartProtocol. The parms argument points to one of these parameter structures, depending upon the stack mode the ISDN protocol stack is to run in:
For...

Specify...

ACU stack mode

ISDN_PROTOCOL_PARMS_Q931CC

LAPD stack mode

ISDN_PROTOCOL_PARMS_LAPD

NCC stack mode

ISDN_PROTOCOL_PARMS_CHANNELIZED

Refer to Chapter 8 for more information on the default values of these parameters.

6.3.1 ISDN_PROTOCOL_PARMS_Q931CC Structure

This data structure configures the protocol stack for Q.931 call control. A pointer to this structure is passed as an argument to isdnStartProtocol. Refer to Appendix C for more information on the default values of the parameters in this structure.

The structure is defined as follows:

typedef struct ISDN_PROTOCOL_PARMS_Q931CC
{
    DWORD size;                /* Size of the structure */
                               /*Nai when interfacing the physical layer */
                               /* should be the same as the `nai' */
    WORD rate;                 /*Data rate:ISDN_RATE_56K or ISDN_RATE_64K */
    WORD t309;                 /* T309 in use flag indicates if data link   */
                               /* release and establish timers are in       */
                               /* effect.                                   */
    union                       
    {                            /* These structures contain sets of values */
    timer_val_t at5[AT5_T_LAST]; /* for ISDN timers. The actual set used  */
    timer_val_t at9[AT9_T_LAST]; /* depends upon the country variant */
    timer_val_t dms[DMS_T_LAST]; /* specified with the `country' argument */ 
    timer_val_t ni1[NI1_T_LAST]; /* in the isdnStartProtocol call. The */
    timer_val_t ni2[NI2_T_LAST]; /* structures should be set to 0 in  */
    timer_val_t au1[AU1_T_LAST]; /* order to use the built-in defaults */
    timer_val_t hkt[HKT_T_LAST]; /* defined by the network signaling  */
    timer_val_t ntt[NTT_T_LAST]; /* layers of the ISDN protocol stack. */
    timer_val_t bt2[BT2_T_LAST]; /* */
    timer_val_t bv1[BV1_T_LAST]; /*CAUTION: The values of these timers  */
    timer_val_t ets[ETS_T_LAST]; /*         may be controlled by local  */
    timer_val_t qsi[QSI_T_LAST]; /*         regulatory authorities:   */
    timer_val_t swd[SWD_T_LAST]; /*         changing these values may */                                                                           
    timer_val_t tr6[TR6_T_LAST]; /*         invalidate regulatory */
    timer_val_t vn2[VN2_T_LAST]; /*         approvals. Check with the */
    timer_val_t vn3[VN3_T_LAST]; /*         local authority for more */    
    timer_val_t vn6[VN6_T_LAST]; /*         specific information on  */
    } timers;                    /*         any limitations. */

    /*
    ** Available services
    */
    BYTE services_list[CC_MX_SERVICES+1]; /* Set of ACU services required */
                                          /* by protocol stack */
    /*
    ** Framing timers
    */
    WORD max_FEC_errors;     /* Max number of framing errors allowed */
                             /* during the interval T198 */
    timer_val_t  t101;       /* ms of bad framing before disabling  */
                             /* sending D channel packets  */
    timer_val_t  t102;       /* ms of good framing before enabling  */
                             /* sending D channel packets  */
    timer_val_t  t198;       /* Observation period for frame error count */
    /*
    ** When to assign/remove a TEI
    */
    WORD tei_time_assignment;  /* TEI time assignment at: CONFIGURATION, */
                               /* NA ACTIVATION or USAGE time (isdndl.h) */
    WORD tei_time_removal;     /* TEI time removal at: NA DEACTIVATION, */
                               /* POWER DOWN (dlint.h) */
    BYTE tei[3];               /* tei values: */
                               /*   0      broadcast */
                               /*   1-63   Non automatic TEI assignment */
                               /*   127    Automatic TEI assignment */
    BYTE digitstoroute;        /* Number of digits needed to route when */
                               /* using overlap receiving */
    /*
    ** Call control behavior
    */
    WORD in_calls_behavior;    /* Bits describing incoming calls behavior */
    WORD out_calls_behavior;   /* Bits describing outgoing calls behavior */
    /*
    ** Network signaling behavior
    */
    WORD ns_behavior;       /* Bits describing network signaling behavior */
    /*
    ** Automatic call unit behavior
    */
    uchar qsig_source_party_nb_type; /* Used for network node addressing  */
                                     /* in SS */
    uchar qsig_source_type_of_nb;    /* Used for network node addressing  */
                                     /* in SS */
    uchar qsig_source_addr[CC_QSIG_MX_ADDR_SIZE+1];
    uchar aoc_s_presubscribed; /* On/Off, ON indicates na presubscribes */
                               /* to service */
    uchar aoc_d_presubscribed; /* On/Off, ON indicates na presubscribes */
                               /* to service */
    uchar aoc_e_presubscribed; /* On/Off, ON indicates na presubscribes */
                               /* service */
    WORD acu_behavior;         /* Bits describing ACU behavior */
    
    WORD rfu1;                 /* Reserved for future use. MUST BE = 0. */
    WORD rfu2;                 /* Reserved for future use. MUST BE = 0. */

} ISDN_PROTOCOL_PARMS_Q931CC;

6.3.2 ISDN_PROTOCOL_PARMS_LAPD Structure

This data structure configures the protocol stack for LAPD. A pointer to this structure is passed as an argument to isdnStartProtocol. Refer to Appendix C for more information on the default values of the parameters in this structure.

The structure is defined as follows:

typedef struct ISDN_PROTOCOL_PARMS_LAPD
{
    DWORD size;              /* Size of the structure */
    WORD rate;               /* Data rate: ISDN_RATE_56K or ISDN_RATE_64K */

    /*
    ** Framing timers
    */
    WORD max_FEC_errors;     /* Max number of framing errors allowed */
                             /* during the interval T198 */
    timer_val_t  t101;       /* ms of bad framing before disabling */
                             /* sending D channel packets */
    timer_val_t  t102;       /* ms of good framing before enabling */
                             /* sending D channel packets */
    timer_val_t  t198;       /* Observation period for frame error count */

    /*
    ** When to assign/remove a TEI
    */
    WORD tei_time_assignment;/* TEI time assignment at: CONFIGURATION, */
                             /* NA ACTIVATION or USAGE time (isdndl.h */
    WORD tei_time_removal;   /* TEI time removal at: NA DEACTIVATION, */
                             /* POWER DOWN (isdndl.h */
    BYTE tei[3];             /* tei values */
                             /*   0      broadcast */
                             /*   1-63   Non automatic TEI assignment */
                             /*   127    Automatic TEI assignment */
} ISDN_PROTOCOL_PARMS_LAPD;

6.3.3 ISDN_PROTOCOL_PARMS_CHANNELIZED

This data structure configures the protocol stack so it is accessible to the standard CT Access Natural Call Control API. A pointer to this structure is passed as an argument to isdnStartProtocol. The structure is identical to the ISDN_PROTOCOL_PARMS_Q931CC structure.

Note: The acu_behavior, ns_bahavior, in_calls_behavior, and out_calls_behavior fields in this structure are ignored when the stack is started in NCC stack mode.



(Page 1 of 1 in this chapter)


tech_support@nmss.com
Copyright © 1999, Natural MicroSystems, Inc. All rights reserved.