Table of Contents Index NMS Glossary Previous Page Next Page Version


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 IntroductionTop of Page

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 StructuresTop of Page

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 StructureTop of Page

A pointer to the ISDN_MESSAGE structure is passed to isdnSendMessage in the message argument. In this structure, the application specifies the NAI, the NFAS group number (if duplicate NAI values are configured), 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 nfas_group; /* NFAS group number, if multiple NAI values are */
/* configured */
DWORD userid; /* User ID */
} ISDN_MESSAGE;

6.2.2 ISDN_PACKET StructureTop of Page

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 StructuresTop of Page

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

Channelized 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 StructureTop of Page

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 B 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 */
WORD t309; /* T309 in use flag */
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 */
/* any limitations. */
timer_val_t foo[24]; /* 24 is more then the rest, will align
the union on an 8 byte boundary. */
} timers;

/* Available services */
BYTE services_list[CC_MX_SERVICES+1];
BYTE bpad[2]; /* padding for 8 bytes alignment */
timer_val_t t101;
timer_val_t t102;
timer_val_t t198; /* Observation period for Frame error count */
WORD max_FEC_errors; /* Maximum number of FEC during t198 */



/* 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) */
WORD wpad[3]; /* padding for 8 bytes alignment */
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 */
BYTE bpad1[4]; /* padding for 8 bytes alignment */

/* Call control behaviour */
WORD in_calls_behaviour; /* Incoming calls behaviour */
WORD out_calls_behaviour; /* Outgoing calls behaviour */

/* Network signaling behavior */
WORD ns_behaviour;

/* Automatic call unit behaviour */
WORD acu_behaviour;
BYTE qsig_source_party_nb_type; /* Used for network node
addressing in SS */
BYTE qsig_source_type_of_nb; /* Used for network node
addressing in SS */
BYTE qsig_source_addr[CC_QSIG_MX_ADDR_SIZE+1];
BYTE aoc_s_presubscribed; /* On/Off, ON inidates na presubscribes
to service */
BYTE aoc_d_presubscribed; /* On/Off, ON inidates na presubscribes
to service */
BYTE aoc_e_presubscribed; /* On/Off, ON inidates na presubscribes
to service */
BYTE bpad2[1]; /* padding for 8 bytes alignment */
WORD nfas_group; /* NFAS group number if duplicate NAI values */
BYTE bpad3[2]; /* padding for 8 bytes alignment */
WORD rfu1; /* reserved for future use MUST BE 0 */
WORD rfu2; /* reserved for future use MUST BE 0 */
WORD w2pad[2]; /* padding for 8 bytes alignment */

} ISDN_PROTOCOL_PARMS_Q931CC;

6.3.2 ISDN_PROTOCOL_PARMS_LAPD StructureTop of Page

This data structure configures the protocol stack for LAPD. A pointer to this structure is passed as an argument to isdnStartProtocol. Refer to Appendix B 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 this structure */
timer_val_t t101;
timer_val_t t102;
timer_val_t t198; /* Observation period for Frame error count */
WORD rate; /* Data rate */
WORD max_FEC_errors; /* Maximum number of FEC during t198 */

/* 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 bpad[1]; /* for 8 bytes alignment */
/* size is now 32 bytes */
WORD nfas_group; /* NFAS group number if duplicate NAI values */
BYTE bpad1[2]; /* for 8 bytes alignment */
/* size is now 32 bytes */
} ISDN_PROTOCOL_PARMS_LAPD;

6.3.3 ISDN_PROTOCOL_PARMS_CHANNELIZEDTop of Page

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.



Table of Contents Index NMS Glossary Previous Page Next Page Version


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