Table of Contents Index NMS Glossary Previous Page Next Page (Page 3 of 6 in this chapter) Version


isdnSendMessage

Description

Sends a message to the ISDN stack, with optional attached data.

Prototype

DWORD isdnSendMessage ( CTAHD ctahd,
ISDN_MESSAGE *message,
void *pdata,
unsigned size )

ctahd CTA context handle associated with a D channel, returned by ctaCreateContext.

message Pointer to ISDN_MESSAGE structure, 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 NS layer. Not used. */
add_t ces; /*Connection Endpoint suffix (DL layer upper 1/2) */
add_t tei;/*Terminal Endpoint ID, DL layer lower 1/2 Not used*/
add_t chani; /* Physical layer channel identifier. Not used.*/
} add;
code_t code; /*Primitive code unique only between 2 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, used for configurations*/
/* with duplicate NAI values only */
DWORD userid; /* User ID */
} ISDN_MESSAGE;
pdata Pointer to the message data (if any). The data is specific to the type of message specified in ISDN_MESSAGE.

size Size of data block referenced by pdata. size must match the data_size field in the ISDN_MESSAGE structure.

Return Values

Events

Details

This function sends a message with optional attached data to the ISDN subsystem. Any ISDN-specific command can be sent to any layer of the protocol stack using this function. The ISDN_MESSAGE structure contains the addressing information for the message.

The size field of the CTA event contains the user ID for the message, as specified in the userid field in ISDN_MESSAGE. This value is sent to distinguish between multiple messages sent to the protocol stack. ISDN_ USERID_ASYNC is reserved for events initiated by the protocol stack.

If multiple NAI values have not been defined, it is recommended to set nfas_group to 0.

See Also

isdnReleaseBuffer

Example

DWORD sample_send_message (CTAHD ctahd, int mycode)
{
CTA_EVENT event;
DWORD ret;
ISDN_MESSAGE imsg={0};
code_t code;
unsigned char idata[MAX_ISDN_BUFFER_SIZE];
unsigned datasize;
;
{
;
/*
** Protocol already started
*/
imsg.nai = 0;
imsg.nfas_group = 0
/*
** when using ACU, all messages should be directed
** to ENT_ACU and the ACU_SAPI within it.
** The from field should always be ENT_API.
*/
imsg.from_ent = ENT_API;
imsg.to_ent = ENT_CC;
imsg.to_sapi = ACU_SAPI;

/*
** The connection ID is the logical connection number.
** For ACU, the lowest unused connection ID value must be used.
*/
imsg.add.conn_id = myGetLowestConnectionId();

/*
** Build the contents of the message for place call, release call, etc.
** This should fill the idata with the message contents and return the
** used part of the data buffer in datasize argument and the code for the
** function requested (ACU_CONN_RQ, ACU_CLEAR_RQ, etc).
*/
myBuildMessage( mycode, idata, &datasize, &code);
imsg.datasize = datasize;
imsg.code = code;

/*
** Add an ISDN-specific user ID to identify this message if it fails:
*/
imsg.userid = myGetNextMessageId();

ret = isdnSendMessage( ctahd, &imsg, idata, datasize);
if( ret != SUCCESS)
{
ctaGetText(ctahd, ret, errortext, 40;
printf("SEND_FAIL: %s mg id=%x\n", errortext, imsg.userid );
return MY_ERROR_SEND_FAILED;
}
myWaitForEvent( ctahd, &event)
if( event.value != SUCCESS)
{
ctaGetText(ctahd, event.value, errortext, 40);
printf("SEND_FAIL: %s mg id=%x\n", errortext, imsg.userid );
return MY_ERROR_SEND_FAILED;
}
...
}


Table of Contents Index NMS Glossary Previous Page Next Page (Page 3 of 6 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.