PREV TOC HOME INDEX NEXT


1.7.12. Send a Non-Call State Related ISDN Message

The GCIS_EXID_SNDMSG extension ID is supported when using Springware boards only. When using DM3 boards, a non-call state related ISDN message can be sent using the gc_SndMsg( ) function.

The GCIS_EXID_SNDMSG extension ID is used to send a non-Call State related ISDN message to the network over the D channel, while a call exists. The data is sent transparently over the D channel data link using the LAPD (Layer 2) protocol.

For BRI, this extension function is used to invoke supplemental services, such as Called/Calling Party Identification, Call Transfer, and Message Waiting. The services are invoked by sending Facility Messages or Notify Messages to the switch. Upon receipt of the message, the network may return a NOTIFY message to the user. The NOTIFY messages can be retrieved by calling the gc_GetCallInfo( ) function. For more information on invoking supplemental services, see Appendix C, "BRI Supplemental Services".

Note: The message must be sent over a channel that has a call reference number assigned to it.

Parameter

Input

target_type GCTGT_GCLIB_CRN
target_id call reference number (CRN) of the call
ext_id GCIS_EXID_SNDMSG
parmblkp pstruct member of parmblkp should point to the memory block containing integer (msg_type) followed by the IE_BLK data structure. Table 4, below, provides a list of possible values for msg_type. For a description of the IE_BLK data structure, please refer to Section 5.1, IE_BLK. Also see the example code for details.

set_id - GCIS_SET_SNDMSG

parm_id - GCIS_PARM_SNDMSGTYPE

values -

All protocols:

    • SndMsg_Information
    • SndMsg_Congestion
    • SndMsg_UsrInformation
    • SndMsg_Facility
    • SndMsg_FacilityACK
    • SndMsg_FacilityREJ
    • SndMsg_Notify
    • SndMsg_ServiceAck
    • SndMsg_Status
    • SndMsg_StatusEnquiry
    • SndMsg_GlobalStatus

DPNSS only:

    • SndMsg_Divert
    • SndMsg_Intrude
    • SndMsg_NSI
    • SndMsg_Transfer
    • SndMsg_Transit

Custom BRI 5ESS only:

    • SndMsg_Drop
    • SndMsg_DropAck
    • SndMsg_DropRej
    • SndMsg_Redirect

value_type - int


set_id - GCIS_SET_IE

parm_id - GCIS_PARM_IEDATA


values - user provided


value_type - char array, length should not exceed MAXLEN_IEDATA

mode EV_SYNC

Table 4. Possible Values for msg_type 

All Protocols

Custom BRI 5ESS only

DPNSS only

SndMsg_Congestion SndMsg_Drop SndMsg_Divert
SndMsg_Facility SndMsg_DropAck SndMsg_Intrude
SndMsg_FacilityAck SndMsg_DropRej SndMsg_NSI
SndMsg_FacilityRej SndMsg_Redirect SndMsg_Transfer
SndMsg_Information
SndMsg_Transit
SndMsg_Notify

SndMsg_Status

SndMsg_StatusEnquiry

SndMsg_UsrInformation

Descriptions of the message types for DPNSS are provided in Appendix D, "IEs and ISDN Message Types for DPNSS".

Example

int extSndMsg (CRN crn)
{
        GC_PARM_BLKP parm_blkp = NULL, ret_blkp = NULL;
        unsigned long mode;
        int ret_val = 0;
        GC_INFO  t_Info;
        unsigned char ie_data[255];
        int msg;
        unsigned char length; 
        msg = SndMsg_Notify;
        gc_util_insert_parm_ref( &parm_blkp, GCIS_SET_SNDMSG, 
                GCIS_PARM_SNDMSGTYPE, sizeof( int ), &msg); 
        InitSndMsgBlk (ie_data, msg, &length);
        gc_util_insert_parm_ref( &parm_blkp, GCIS_SET_IE, GCIS_PARM_IEDATA,
                length, ie_data); 
        mode = EV_SYNC; 
        ret_val = gc_Extension( GCTGT_GCLIB_CRN, crn,
               GCIS_EXID_SNDMSG, parm_blkp, &ret_blkp, mode);
        if ( ret_val )
        {
               ret_val = gc_ErrorInfo(&t_Info);
               if (ret_val == GC_SUCCESS) {
                        printf("gc_ErrorInfo() successfully called\n");
                        PrintGC_INFO(&t_Info); 
               } else {
                        printf("gc_ErrorInfo() call failed\n");
               }
        }  
       	 	gc_util_delete_parm_blk( ret_blkp );
        gc_util_delete_parm_blk( parm_blkp );
        return ret_val;
} 
static void InitSndMsgBlk (unsigned char *ie_blk_ptr, int msgtype, unsigned char *lenp)
{
         switch (msgtype)
         {
         case SndMsg_Notify:              /* Notify */
             *lenp = 3;
             ie_blk_ptr[0] = 0x27;   /* Notify Indicator IE (0x27) */
             ie_blk_ptr[1] = 0x01;   /* IE Length */ 
             ie_blk_ptr[2] = 0x81;   /* user resumed */
             break; 
         case SndMsg_Status:  
             *lenp  = 0x07; 
             ie_blk_ptr[0] = 0x08; /*cause IE*/ 
             ie_blk_ptr[1] = 0x02; /*length*/  
             ie_blk_ptr[2] = 0x80; /**/ 
             ie_blk_ptr[3] = 0x1F; /*cause value*/   
             ie_blk_ptr[4] = 0x14; /*call state IE*/  
             ie_blk_ptr[5] = 0x01; /*length*/  
             ie_blk_ptr[6] = 0x0A; /*call state*/   
             break; 
         default:
             break;
         }
         return;
} 

PREV TOC HOME INDEX NEXT

Click here to contact Telecom Support Resources

Copyright 2003, Intel Corporation
All rights reserved
This page generated January, 2003