This topic specifies the layout of the following information elements (IEs) that are contained in the events passed between the application and NMS TUP:
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;
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;
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.
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 |
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 |
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) |
Contains a raw 16-bit piece of charging information.
typedef struct chgInfo
{
TupElmtHdr eh; /* element header */
U16 info;
U16 spare1;
} ChargeInfo;
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 |
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 |
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.
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 |
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.
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].
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 |
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.