Information elements (IEs)

This topic specifies the layout of the following information elements (IEs) that are contained in the events passed between the application and NMS TUP:

Element header

Each information element contains an element header as the first field in the structure. The element header consists of the presence indicator for the entire information element.

typedef struct tupelmtHdr  /* element header   */
{
    Bool pres;             /* present          */
    U8 spare1;             /* for alignment    */
    U16 spare2;            /* for alignment    */
} TupElmtHdr;

Token string

Consists of the presence indicator for the entire token string, a length field, and the string itself.

typedef struct tuptknStr   /* token string         */
{
    U8 spare0;             /* present flag         */
    U8 len;                /* length               */
    U16 spare1;            /* for alignment        */
    U8 val[(TUP_MF_SIZE_TKNSTR + 4) & 0xffc];
                           /* string               */
} TupTknStr;

Address signals

Contains the address signals of a called number.

typedef struct addrSignals
{
    TupElmtHdr eh;         /* element header */
    TupTknStr addrSigs;
} AddrSigs;

The addrSigs field is coded the same as in the LineID information element.

Answer type information

Contains the type of answer message to send or the type received.

typedef struct ansType
{
    TupElmtHdr eh;    /* element header  */
    U8 answerType;
    U8 spare2;
    U16 spare1;
} AnswerType;

 

answerType is coded to one of the following:

Hex

Message

0x0

ANU_NO_CHARGE

0x1

ANU_CHARGE

0x2

ANU_UNQUALIFIED


Automatic congestion level

Indicates that a particular level of congestion exists at the sending exchange.

typedef struct autoCongLvl
{
    TupElmtHdr eh;     /* element header     */
    U8 auCongLvl;      /* congestion level   */
    U8 spare2;
    U16 spare1;
}TupAutoCongLvl;

 

The auCongLvl field is coded to one of the following values:

Hex

Message

0x0

TUPACLVL_LVL1

0x1

TUPACLVL_LVL2


Calling party category

Contains the category of the calling party.

typedef struct callPartyCategory
{
    TupElmtHdr eh;       /* element header */
    U8 callPartyCat;
    U8 spare2;
    U16 spare1;
} CallPartyCat;

 

The callPartyCat field is coded to one of the following values:

Hex

Message

0x0

UNKNOWN_SOURCE

0x1

OPERATOR_FRENCH

0x2

OPERATOR_ENGLISH

0x3

OPERATOR_GERMAN

0x4

OPERATOR_RUSSIAN

0x5

OPERATOR_SPANISH

0x6

MUT_AGREE_CHINESE

0x7

MUT_AGREEMENT

0x8

MUT_AGREE_JAPANESE

0x9

NATIONAL_OPERATOR

0x0a

ORDINARY_TOLL_CALLER

0x0b

PRIORITY_TOLL_CALLER

0x0c

DATA_CALL

0x1d

TEST_CALL

0xf

PAY_PHONE (not supported in China)

0x10

ORDINARY_NO_CHG (China only)

0x11

ORDINARY_PERIODIC (China only)

0x12

ORDINARY_METER_IMMED (China only)

0x13

ORDINARY_PRINTER_IMMED (China only)

0x14

PRIORITY_NO_CHG (China only)

0x15

PRIORITY_PERIODIC (China only)

0x18

ORDINARY_LOCAL (China only)


Charge information

Contains a raw 16-bit piece of charging information.

typedef struct chgInfo
{
    TupElmtHdr eh;    /* element header  */
    U16 info;
    U16 spare1;
} ChargeInfo;

Closed user group interlock code

Identifies a closed user group within a network.

typedef struct clsedUserGrp
{
    TupElmtHdr eh;       /* element header   */
    U8 grpInd;           /* group indicator  */
    U8 spare2;
    U16 spare1;
    U32 interlockCode;   /* interlock Code   */
} ClosedUserGroup;

 

The fields are encoded as follows:

Field

Description

interlockCode

32-bit binary code assigned by the network administrator.

grpInd

Set to one of the following values:

0x00 = CUG_ORDINARY_CALL

0x01 = CUG_SUCCESSFUL_CHECK

0x02 = CUG_ACCESS_ALLOWED

0x03 = CUG_ACCESS_NOT_ALLOWED


Initial address indicator

Contains an indicator of the caller:

typedef struct iamMessageInd
{
    TupElmtHdr eh;      /* element header  */
    U16 msgInd;         /* indicator       */
    U16 spare1;
} IAMMessageInd;

 

The msgInd field is coded by using OR to combine one or more of the following values:

Hex

Message

0x000

IAM_MI_LOCAL_SUBSCRIBER

0x002

IAM_MI_NATIONAL

0x003

IAM_MI_INTERNATIONAL

0x000

IAM_NO_SATELLITE

0x004

IAM_ONE_SATELLITE

0x000

IAM_MI_CONT_CHECK_NOT_REQ

0x010

IAM_MI_CONT_CHECK_REQ

0x020

IAM_MI_CONT_CHECK_PERFORMED_PREVIOUS

0x040

IAM_MI_OUT_ECHO_SUPP_INCLUDED

0x080

IAM_MI_IN_CALL_INTERNATIONAL

0x100

IAM_MI_REDIRECTED_CALL

0x200

IAM_MI_DIGITAL_PATH_REQUIRED

0x400

IAM_MI_ALL_SS7_PATH


LineID

Contains the information necessary to identify the calling or called party.

typedef struct lineID   /* Called Party Number    */
{
    TupElmtHdr eh;      /* element header         */
    U8 addrInd;         /* nature of indicator    */
    U8 spare2;
    U16 spare1;
    TknStr addrSigs;    /* Address Signal         */
} LineID;

 

The fields in the LineID structure are encoded as follows:

Field

Description

addrInd

0x00 = TUPSUBSNUM   Subscriber number

0x02 = TUPNATNUM   Nationally significant number

0x03 = TUPINTNATNUM   International number

0x00 = TUPNOTRES   Number not restricted

0x04 = TUPRESTRICTED   Number is restricted

0x00 = TUPNOTINC   No indic incomplete number

0x08 = TUPINCOMPLETE   Number incomplete

addrSigs

Actual address digits.


 

addrSigs is encoded as follows:

Octet 1   

2nd address digit

1st (most significant) address digit

...

...

...

Octet n

m + 1th address digit or filler

mth address digit


 

Each digit is encoded with the following bit pattern:

Bit pattern

Digit

0000

0

0001

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

8

1001

9

1010

spare

1011

code 11

1100

code 12

1101

spare

1110

spare

1111

ST


TUPASCIItoADDR and TUPADDRtoASCII convert between ASCII format and this format.

Message indicator

Contains an address complete indicator or extended unsuccessful backward message (EUM) subscriber busy.

typedef struct messageInd
{
    TupElmtHdr eh;    /* element header  */
    U8 indicator;
    U8 spare2;
    U16 spare1;
} msgInd;

 

The indicator field for an ACM is coded by using OR to combine one or more of the following:

Hex

Message

0x00

ACM_COMPLETE

0x01

ACM_COMPLETE_CHARGE

0x02

ACM_COMPLETE_NO_CHARGE

0x03

ACM_COMPLETE_COINBOX

0x04

ACM_SUBSCRIBER_FREE

0x08

ACM_INCOMING_ECHO_SUPPRESSED

0x10

ACM_CALL_FORWARDED (not used)

0x20

ACM_ALL_SS7_PATH (not used)


 

The indicator field for an EUM is coded with the following:

Hex

Message

0x01

EUM_SUBSCRIBER_BUSY


Point code

Identifies a point code.

typedef struct pntCode    
{
    TupElmtHdr eh;    /* element header     */
    U32 pointCode;    /* Point Code         */
} PointCode;

 

Format of the pointCode field is in hexadecimal notation.

For 24-bit point codes, 0xABCDEF properly sets the 3 LSB of the field.

For 14-bit point codes, only the LSB and the six least significant bits of the next LSB are used.

Range information

Pertains to the number of circuits for which a group message has relevant information held in an 8-bit raw value:

typedef struct grmRange
{
    TupElmtHdr eh;       /* element header       */
    U8 range;
    U8 spare2;
    U16 spare1;
    U8 statusMap[256];   /* set if range != 0    */
} Range;

 

The range field is defined to be 0 (zero) for predefined groups. If the group is dynamic, the value must be one less than the number of circuits in the group. For example, if the group is 10 circuits, the range is 9. The statusMap bytes must be set to 0 (zero) or 1, depending on whether or not the action is taken on that circuit in the group. For 10 circuits, if you do not want to reset the eighth one, set all bytes to 1 except for the statusMap[7].

Response indicator

Contains a request or response indicator.

typedef struct respInd
{
    TupElmtHdr eh;         /* element header  */
    U8 indicator;
    U8 spare2;
    U16 spare1;
} RespInd;

 

The indicator field is calculated using OR to combine one or more of the following values. There are separate values for the information request (GRQ) and information response (GSM):

Hex

Message

0x01

GSM_CALLING_PARTY_CATEGORY

0x02

GSM_CALLING_LINE_ID

0x04

GSM_INCOMING_EXCH_ID

0x08

GSM_ORIG_CALLED_ADDRESS

0x10

GSM_OUTGOING_ECHO_SUPPRESSOR

0x20

GSM_MALICIOUS_CALL_ID

0x40

GSM_HOLD_INDICATOR

0x01

GRQ_CALLING_PARTY_CATEGORY

0x02

GRQ_CALLING_LINE_ID

0x04

GRQ_ORIG_CALLED_ADDRESS

0x08

GRQ_MALICIOUS_CALL_ID

0x10

GRQ_HOLD_INDICATOR

0x20

GRQ_OUTGOING_ECHO_SUPPRESSOR


Trunk ID

Contains the trunk ID for a call.

typedef struct trunkid
{
    TupElmtHdr eh;     /* element header        */
    U8 idType;         /* type of exch ID       */
    U8 spare2;
    U16 spare1;
    TknStr exchID;     /* exch ID               */
    TknStr trunkID;    /* trunk ID-not used     */
} TrunkID;

 

Set idType to one of the following:

Hex

Value

0x01

GSM_ID_TYPE_IND_POINT_CODE

0x02

GSM_ID_TYPE_IND_AVAIL_LINE_ID


 

The exchID field is coded with the digit values listed in the LineID information element or a point code, depending on the value of idType.

The trunkID field is not used.