//=========================================
// 								 	     
// 									     
// 	Author:     Zane Yi				      
// 	Date:       2007.02.01			      
// 									      
//=========================================
#ifndef _ISUPMSG_H_
#define _ISUPMSG_H_

#include "isup_public.h"
#include "inc.h"


#define MAX_ISUP_MSG_LEN	256
#define MAX_ISUP_DIGIT		32	
#define	ISUP_STATUS_LEN		4

//**********************************************/
//* Message Value
//**********************************************/
#define TEST_CALL		0x0d//Test call

//**********************************************/
//* Message Type Codes 
//**********************************************/

#define M_ACM		0x06//Address complete(6)
#define M_ANM		0x09//Answer(9)
#define M_APP   0x41//Application transport message(65)
#define M_BLO		0x13//Blocking(19)
#define M_BLA		0x15//Blocking acknowledgement(21)
#define M_CPG		0x2c//Call progress(44)
#define M_CGB		0x18//Circuit/CIC group blocking(24)
#define M_CGBA	0x1a//Circuit/CIC group blocking acknowledgement(26)
#define M_CQM		0x2a//Circuit/CIC group query (national use)(42)
#define M_CQR		0x2b//Circuit/CIC group query response (national use)(43)
#define M_GRS		0x17//Circuit/CIC group reset(23)
#define M_GRA		0x29//Circuit/CIC group reset acknowledgement(41)
#define M_CGU		0x19//Circuit/CIC group unblocking(25)
#define M_CGUA	0x1b//Circuit/CIC group unblocking acknowledgement(27)
#define M_CRG		0x31//Charge information (national use)(49)
#define M_CFN		0x2f//Confusion(47)
#define M_CON		0x07//Connect(7)
#define M_COT		0x05//Continuity(5)
#define M_FAC		0x33//Facility (51)
#define M_FAA		0x20//Facility accepted(32)
#define M_FRJ		0x21//Facility reject(33)
#define M_FAR		0x1f//Facility request(31)
#define M_FOT		0x08//Forward transfer(8)
#define M_IDR		0x36//Identification request(54)
#define M_IRS		0x37//Identification response(55)
#define M_INF		0x04//Information (national use)(4)
#define M_INR		0x03//Information request (national use)(3)
#define M_IAM		0x01//Initial address(1)
#define M_LPA		0x24//Loop Back Acknowledgement(36)
#define M_NRM		0x32//Network resource management(50)
#define M_OLM		0x30//Overload(48)
#define M_PAM		0x28//Pass-Along(40)
#define M_REL		0x0c//Release(12)
#define M_RLC		0x10//Release complete(16)
#define M_RSC		0x12//Reset circuit/CIC(18)
#define M_RES		0x0e//Resume(14)
#define M_SGM		0x38//Segmentation(56)
#define M_SAM		0x02//Subsequent address(2)
#define M_SUS		0x0d//Suspend(13)
#define M_UBL		0x14//Unblocking(20)
#define M_UBA		0x16//Unblocking acknowledgement(22)
#define M_UCIC	0x2e//Unequipped CIC (national use)(46)
#define M_UPA		0x35//User Part Available(53)
#define M_UPT		0x34//User Part Test(52)
#define M_USR		0x2d//User-to-user information(45)

#define M_LOP   0x40//Loop Prevention(64)
#define M_PRI		0x42//Pre-release information message (66)

#define M_CVR   0xeb//Circuit validation response 
#define M_CVT   0xec//Circuit validation test 


//#define M_ADDCOMP         0x06   /* Address complete */
//#define M_ANSWER          0x09   /* Answer */
//#define M_BLOCK           0x13   /* Blocking */
//#define M_BLOCKACK        0x15   /* Blocking acknowledgement  */
//#define M_CALLMODCOMP     0x1d   /* Call modification completed */
//#define M_CALLMODREQ      0x1c   /* Call modification request */
//#define M_CALLMODREJ      0x1e   /* Call modification reject */
//#define M_CALLPROG        0x2c   /* Call progress */
//#define M_CIRGRPBLK       0x18   /* Circuit group blocking */
//#define M_CIRGRPBLKACK    0x1a   /* Circuit group blocking acknowledgement */
//#define M_CIRGRPQRY       0x2a   /* Circuit group query */
//#define M_CIRGRPQRYRES    0x2b   /* Circuit group query response */
//#define M_CIRGRPRES       0x17   /* Circuit group reset */
//#define M_CIRGRPRESACK    0x29   /* Circuit group reset acknowledgement */
//#define M_CIRGRPUBLK      0x19   /* Circuit group unblocking */
//#define M_CIRGRPUBLKACK   0x1b   /* Circuit group unblocking acknowledgement */
//#define M_CONFUSION       0x2f   /* Confusion */
//#define M_CONNCT          0x07   /* Connect */
//#define M_CONTINUITY      0x05   /* Continuity */
//#define M_CONTCHKREQ      0x11   /* Continuity Check Request */
//#define M_DELREL          0x27   /* Delayed Release */
//#define M_FACACC          0x20   /* Facility Accepted */
//#define M_FACREJ          0x21   /* Facility Rejected */
//#define M_FACREQ          0x1f   /* Facility Request */
//#define M_FWDTFER         0x08   /* Forward Transfer */
//#define M_INFORMTN        0x04   /* Information */
//#define M_INFOREQ         0x03   /* Information request */
//#define M_INIADDR         0x01   /* Intial Address */
//#define M_LOOPBCKACK      0x24   /* Loop back acknowledgement */
//#define M_OVERLOAD        0x30   /* Overload */
//#define M_PASSALNG        0x28   /* Pass-along */
//#define M_RELSE           0x0c   /* Release */
//#define M_RELCOMP         0x10   /* Release complete */
//#define M_RESCIR          0x12   /* Reset circuit */
//#define M_RESUME          0x0e   /* Resume */
//#define M_SUBADDR         0x02   /* Subsequent address */
//#define M_SUSPND          0x0d   /* Suspend */
//#define M_UNBLK           0x14   /* Unblocking */
//#define M_UNBLKACK        0x16   /* Unblocking acknowledgement */
//#define M_UNEQUIPCIC      0x2e   /* Unequiped Cicuit Identification Code */
//#define M_USR2USR         0x2d   /* User to user */
//
//#define M_CUGSELVALRSP    0x26   /* Clsd. usr. grp. sel. val. rsp. */
//#define M_CUGSELVALREQ    0x25   /* Clsd. usr. grp. sel. val. req. */
//#define M_CIRVALRSP       0xeb   /* Circuit validation response */
//#define M_CIRVALTEST      0xec   /* Circuit validation test */
//#define M_EXIT            0xed   /* Exit */
//#define M_FACINF          0x23   /* Facility information */
//#define M_FACDEACT        0x22   /* Facility deactivation */
//#define M_CIRRESERVE      0xea   /* Circuit Reservation */
//#define M_CIRRESACK       0xe9   /* Circuit Reservation Acknowledgement */
//#define M_FACIL           0x33   /* Facility  Message */
//#define M_IDENTREQ        0x36   /* Identification Request Message */
//#define M_IDENTRSP        0x37   /* Identification Response Message */
//#define M_NETRESMGT       0x32   /* Network Resource Management Message */
//#define M_USRPARTA        0x35   /* User Part Available Message */
//#define M_USRPARTT        0x34   /* User Part Test Message */
//#define M_MALCLLPRNT      0xff   /* Malicious call print */
//#define M_CHARGE          0x31   /* Charge Info */
//#define M_COM             0xe0   /* Call Offering Message */
//#define M_TRFFCHGE        0xfe   /* Tariff Change */
//#define M_CHARGEACK       0xfd   /* Charge Acknowledge */
//
//#define M_LOOPPRVNT       0x40   /* Loop Prevention */
//
//#define M_GTCHRG          0xfd   /* charging */
//#define M_GTCHRGEXT       0xfa   /* charging extended */
//#define M_GTCHRGEXTACK    0xfb   /* charging extended acknowledge */
//#define M_GTHANGUP        0xfc   /* hanging up of A-tln */
//#define M_GTFACINF        0x23   /* Facility information */
//#define M_GTUSRINF        0x24   /* user information */
//#define M_GTNATMSG        0xff   /* National message */
//
//#define M_SEGMMSG         0x38   /* segmentation */
//
//#define M_CALLCLEAR       0xfc   /* Call Line Clear */
//#define M_RINGSEND        0xff   /* Ringing Send Message */
//#define M_CHGNTT          0xfe   /* charging message in NTT */
//
//#define M_APPTRAN         0x41   /* Application transport message */
//#define M_PRERELINF       0x42   /* Pre-release information message */
//

//**********************************************/
//* Parameter names (Q.763)
//**********************************************/
#define ME_ACCTPORT       0x03   /* Access transport */
#define ME_AUTOCONGLVL    0x27   /* Automatic congestion level */
#define ME_BACKCALLIND    0x11   /* Backward call indicators */
#define ME_CALLMODIND     0x17   /* Call modification indicators */
#define ME_CALREF         0x01   /* Call reference */
#define ME_CALDPARTNUM    0x04   /* Called party's number */
#define ME_CALGPARTNUM    0x0a   /* Calling party number */
#define ME_CALGPARTCAT    0x09   /* Calling party category */
#define ME_CAUSIND        0x12   /* Cause indicator */
#define ME_CGRPSUPMTYPIND 0x15   /* Circuit grp supervision msg. type */
#define ME_CIRCSTEIND     0x26   /* Cicuit state indicator */   
#define ME_CLSDUGRPINTCDE 0x1a   /* Closed user group interlock code */
#define ME_CONNUMB        0x21   /* Connected number */
#define ME_CONREQ         0x0d   /* Connection request */
#define ME_CONTIND        0x10   /* Continuity indicators */
#define ME_ENDOP          0x00   /* End of optional parameters */
#define ME_EVNTINFO       0x24   /* Event inforamtion */
#define ME_FACIND         0x18   /* Facility indicator */
#define ME_FWDCALLIND     0x07   /* Forward call indicator */
#define ME_INFOIND        0x0f   /* Information indicators */
#define ME_INFOREQIND     0x0e   /* Information request indicators */
#define ME_NATCONIND      0x06   /* Nature of connection indicators */
#define ME_OPBACKCALLIND  0x29   /* Optional backward call indicator */
#define ME_OPFWDCALLIND   0x08   /* Optional foreward call indicator */
#define ME_ORIGCALDNUM    0x28   /* Original Called Number */
#define ME_RANGSTAT       0x16   /* Range and Status */
#define ME_REDIRGNUM      0x0b   /* Redirecting number */
#define ME_REDIRINFO      0x13   /* Redirection information */
#define ME_REDIRNUM       0x0c   /* Redirection number */
#define ME_SIGPTCDE       0x1e   /* Signal point code */
#define ME_SUBSEQNUM      0x05   /* Subsequent number */
#define ME_SUSPRESIND     0x22   /* Suspend/Resume indicators */
#define ME_TRANNETSEL     0x23   /* Transit network selection */
#define ME_TRANSMEDREQ    0x02   /* Transmission medium requirement */
#define ME_USRSERVINFO    0x1d   /* User service information */
#define ME_USR2USRIND     0x2a   /* User to User indicators */
#define ME_USR2USRINFO    0x20   /* User to User information */

#define ME_ACCDELINFO     0x2e   /* access delivery information */
#define ME_CLLDIVERS      0x36   /* call Diversion information */
#define ME_CLLHISTORY     0x2d   /* call history information */
#define ME_ECHOCNTRL      0x37   /* echo control */
#define ME_NOTIFINDC      0x2c   /* generic notification */
#define ME_GENNMB         0xc0   /* generic number */
#define ME_MCIDREQ        0x3b   /* MCID request indicators */
#define ME_MCIDRSP        0x3c   /* MCID response indicators */
#define ME_MSGCOMP        0x38   /* message compatibility info */
#define ME_MLPPPREC       0x3a   /* MLPP precedence */
#define ME_NETSPFAC       0x2f   /* network specific facility */
#define ME_ORISCCDE       0x2b   /* originating ISC point code */
#define ME_PARCOMPIN      0x39   /* parameter compatibility info */
#define ME_PROPDLYCTR     0x31   /* propagation delay counter */
#define ME_REDIRRESTR     0x40   /* redirection restriction */
#define ME_REMOTOPER      0x32   /* remote operations */
#define ME_SERVACT        0x33   /* service activation */
#define ME_TRANSMEDPRM    0x3e   /* Transmission media prime */
#define ME_TRANSMEDUSD    0x35   /* Transmission media used */
#define ME_USRSERVINFOPR  0x30   /* User service information prime */
#define ME_LOCNMB         0x3f   /* location number */

/* Information Element ID tags - ANSI or ANSI 92 specific */

#define ME_CHARGENUM      0xeb   /* Charge number */
#define ME_CGRPCHARIND    0xe5   /* Circuit group characteristic ind. */
#define ME_CIRIDNAME      0xe8   /* Circuit ID name */
#define ME_CIRVALRSPIND   0xe6   /* Circuit validation response ind. */
#define ME_CLLI           0xe9   /* Common language location ind. */
#define ME_ORGLINEINF     0xea   /* Original line information */
#define ME_OUTGTRKGRPNUM  0xe7   /* Outgoing trunk group number */

/* Information Element ID tags - ANSI specific */

#define ME_CLSDUGRPCHKRSP 0x1c   /* Closed user group check response */
#define ME_FACINFIND      0x19   /* Facility information indicator */
#define ME_INDEX          0x1b   /* Index */

/* Information Element ID tags - ANSI 92 specific */
#define ME_BUSINESSGRP    0xc6   /* Business group */
#define ME_CARRIERID      0xc5   /* Carrier Idenification */
#define ME_CARSELINF      0xee   /* Carrier Selection Information */
#define ME_EGRESS         0xc3   /* Egress Service */
#define ME_GENADDR        0xc0   /* Generic Adress */
#define ME_GENDIGITS      0xc1   /* Generic Digits */
#define ME_JURISINF       0xc4   /* Jurisdiction Information */
#define ME_NETTRANS       0xef   /* Network Transport */
#define ME_NOTIFIND       0xe1   /* Notification Indicator */
#define ME_SERVACTA       0xe2   /* Service Activation */
#define ME_SPECPROCREQ    0xed   /* Special Processing Request */
#define ME_TRANSREQ       0xe3   /* Transaction Request */
#define ME_SERVCODE       0xec   /* service code indicator */

/* Information Element ID tags - ETSI specific */

#define ME_CALLTRNSFRNMB  0x45   /* Call Transfer Number */
#define ME_CALLTRNSFRREF  0x43   /* Call Transfer Reference */
#define ME_CCBSPARAM      0x4b   /* CCBS Parameter */
#define ME_LOOPPRVNTIND   0x44   /* Loop Prevention Indicator */
#define ME_FREEPHIND      0x41   /* Free Phone Indicator */
#define ME_USRTSRVINFO    0x34   /* User Teleservice Information */

/* Information Element code for ANSI 95 variant */
#define ME_CIRASGNMAP        0x25   /* Circuit Assignment Map */
#define ME_OPTRSERVICEINFO   0xc2   /* Operator Service Info */

/* Information Element code for ITU 97 variant */
#define ME_CONFTRTIND        0x72   /* confrence treatment indicators */
#define ME_UIDACTIONIND      0x74   /* UID action indicator */
#define ME_DISPLAYINFO       0x73   /* display information */
#define ME_BACKWARDGVNS      0x4d   /* backward GVNS */
#define ME_FORWARDGVNS       0x4c   /* forward GVNS */
#define ME_NETMGMTCONTROLS   0x5b   /* n/w management controls */
#define ME_CORRELATIONID     0x65   /* correlation Id */
#define ME_CALLDIVTRTIND     0x6e   /* call diversion trt ind */
#define ME_CALLINNMB         0x6f   /* call IN number */
#define ME_CALLOFFERTRTIND   0x70   /* call offering trt ind */
#define ME_SCFID             0x66   /* SCF Id */
#define ME_UIDCAPIND         0x75   /* UID capability indicator */
#define ME_COLLCALLREQ       0x79   /* collect call request */
#define ME_CCSS              0x4b   /* CCSS */
#define MEI_CHRGINFODELAY     0x71   /* Charge information delay */
#define ME_HOPCOUNTER     0x3d   /* Hop counter */

/* Information Element code for ETSIV3 variant */
#define ME_APPTRAN           0x78   /* application transport param */

/* Information Element code for UK specific */
#define ME_NATFORCALIND		 0xfe	/* National Forward Call Indicators */
#define ME_PRESNUM			 0xfd	/* Presentation Number */ 
#define ME_LASDIVLINID       0xfc   /* Last Diverting Line Identity */
#define ME_PARTCLI		     0xfb   /* Partial CLI */
#define ME_CALDSUBBASSERMAR  0xfa   /* Called Subscribers Basic Service Marks */
#define ME_CALGSUBBASSERMAR  0xf9   /* Calling Subscribers Basic Service Marks */
#define ME_CALGSUBORIFACMAR  0xf8   /* Calling Subscribers Originating Facility Marks */
#define ME_CALDSUBTERFACMAR  0xf7   /* Called Subscribers Terminating Facility Marks */
#define ME_NATINFREQIND		 0xf6   /* National Information Request Indicators */
#define ME_NATINFIND         0xf5   /* National Information Indicators */
#define ME_NATFORCALIND_LTL	 0xf4   /* National Forward Call Indicators (Link by link) */


//**********************************************/
//* Parameter Structure (Q.763)
//**********************************************/
typedef struct accDelInfo        /* Access delivery information */
{
   u8		pres;                   /* element header */
   u8		delInd;               /* delivery indicator */
} SiAccDelInfo;

typedef struct accTrnspt         /* Access transport */
{
	u8		pres;									/* element header */
	u8		infoLen;								/*Information length*/
	u8		infoElmts[MAX_ISUP_MSG_LEN];            /* Information elements */
} SiAccTrnspt;

typedef struct autoCongLvl       /* Automatic Congestion Level */
{
	u8		pres;                   /* element header */
	u8		auCongLvl;            /* auto congestion level */
} SiAutoCongLvl;

typedef struct bckCalInd         /* Backward Call Indicators */
{
	u8		pres;                   /* element header */
	u8		chrgInd;              /* Charge Indicator */
	u8		cadPtyStatInd;        /* called party status indicator */
	u8		cadPtyCatInd;         /* called party category indicator */
	u8		end2EndMethInd;       /* end to end method indicator */
	u8		intInd;               /* interworking indicator */
	u8		end2EndInfoInd;       /* end to end information indicator */
	u8		isdnUsrPrtInd;        /* ISDN User Part indicator */
	u8		holdInd;              /* holding indicator */
	u8		isdnAccInd;           /* ISDN access indicator */
	u8		echoCtrlDevInd;       /* echo control device indicator */
	u8		sccpMethInd;          /* SCCP method indicator */
} SiBckCalInd;

typedef struct cllDiverInfo      /* call Diversion information */
{
	u8		pres;                   /* element header */
	u8		notSuscr;             /* Notification subscribtion */
	u8		redirRsn;             /* redirection reason */
} SiCllDiverInfo;

typedef struct propDly           /* propagation delay */  /* call history information */
{
	u8		pres;                   /* element header */
	u16		delayVal;             /* delay value */
} SiPropDly;

typedef struct callRef           /* Call Reference */
{
	u8		pres;                   /* element header */
	u8		callId[3];               /* call identity */
	u16		pntCde;               /* point code */
} SiCallRef;

typedef struct cdPtyNum          /* Called Party Number */
{
	u8		pres;                   /* element header */
	u8		natAddrInd;           /* nature of addresss indicator */
	u8		oddEven;              /* odd or even */
	u8		numPlan;              /* numbering plan */
	u8		innInd;               /* internal network number indicator */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];              /* Address Signal */
} SiCdPtyNum;

typedef struct cgPtyNum          /* Calling Party Number */
{
	u8		pres;                   /* element header */
	u8		natAddrInd;             /* nature of addresss indicator */
	u8		oddEven;                /* odd or even */
	u8		scrnInd;                /* screen indicator */
	u8		presRest;               /* Address presentation restricted ind. */
	u8		numPlan;                /* numbering plan */
	u8		niInd;                  /* number incomplete indicator */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];               /* Address Signal */
} SiCgPtyNum;

typedef struct sicgPtyCat        /* Calling Party Category */
{
	u8		pres;                   /* element header */
	u8		cgPtyCat;               /* calling party category */
} SiCgPtyCat;

typedef struct siCauseDgn        /* Cause Indicator */
{
	u8		pres;                   /* element header */
	u8		location;               /* location */
	u8		cdeStand;               /* coding standard */
	u8		causeVal;               /* cause value */
	u8		length;					/*diagnostics len*/
	u8		dgnVal[MAX_ISUP_MSG_LEN]; /* diagnostics */
} SiCauseDgn;

typedef struct cirGrpSupMTypInd  /* Circuit Group Supervision Msg. Type Ind. */
{
	u8		pres;                   /* element header */
	u8		typeInd;                /* circuit group supervision msg. type ind. */
} SiCirGrpSupMTypInd;

typedef struct sicirStateInd     /* Circuit State Indicators */
{
	u8		pres;                   /* element header */
	u8		length;
	u8		cirSteInd[32];             /* circuit state indicator. */
} SiCirStateInd;

typedef struct cugIntCode        /* Closed User Group Interlock Code */
{
	u8		pres;                   /* element header */
	u8		dig2;                   /* Digit 2 */
	u8		dig1;                   /* Digit 1 */
	u8		dig4;                   /* Digit 4 */
	u8		dig3;                   /* Digit 3 */
	u16		binCde;                /* binary Code */
} SiCugIntCode;

typedef struct connectedNum      /* Connected number */
{
	u8		pres;                   /* element header */
	u8		natAddrInd;                /* nature of addresss indicator */
	u8		oddEven;                /* odd or even */
	u8		scrnInd;                /* screen indicator */
	u8		presRest;               /* Address presentation restricted ind. */
	u8		numPlan;                /* numbering plan */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];               /* Address Signal */

} SiConnectedNum;

typedef struct connReq           /* Connection Request */
{
	u8		pres;                   /* element header */
	u8		locRef[3];               /* local reference */
	u16		pntCde;               /* point code */
	u8		protClass;            /* protocol classs */
	u8		credit;               /* credit */
} SiConnReq;

typedef struct sicontInd         /* Continuity indicators */
{
	u8		pres;                   /* element header */
	u8		contInd;                /* continuity indicator */
} SiContInd;

typedef struct echoCtl       /* echo control information */
{
	u8		pres;                   /* element header */
	u8		outEchoRsp;             /* outgoing echo control device response */
	u8		incEchoRsp;             /* incoming echo control device response */
	u8		outEchoReq;             /* outgoing echo control device request */
	u8		incEchoReq;             /* incoming echo control device request */
} SiEchoCtl;

typedef struct siEndOp           /* End of Optional Parameters */
{
	u8		pres;                   /* element header */
	u8		nullVal;                /* null value, if present */
} SiEndOp;

typedef struct evntInfo          /* Event Information */
{
	u8		pres;                   /* element header */
	u8		evntInd;                /* event indicators */
	u8		evntPresResInd;         /* event presentation restriction indicators*/
} SiEvntInfo;

typedef struct sifacInd          /* Facility Indicators */
{
	u8		pres;                   /* element header */
	u8		facInd;                 /* facility indicator */
} SiFacInd;

typedef struct fwdCallInd        /* Forward Call Indicators */
{
	u8		pres;                 /* element header */
	u8		natIntCallInd;        /* National/International Call Indicator */
	u8		end2EndMethInd;       /* end to end method indicator */
	u8		intInd;               /* interworking indicator */
	u8		end2EndInfoInd;       /* end to end information indicator */
	u8		isdnUsrPrtInd;        /* ISDN User Part indicator */
	u8		isdnUsrPrtPrfInd;     /* ISDN User Part preference indicator */
	u8		isdnAccInd;           /* ISDN access indicator */
	u8		sccpMethInd;          /* SCCP method indicator */
} SiFwdCallInd;

typedef struct sifreePhInd    /* Freephone Indicator */
{
	u8		pres;                   /* element header */
	u8		freePhInd;            /* free phone indicator */
} SiFreePhInd;

typedef struct genDigits         /* Generic Digits */
{
	u8		pres;                   /* element header */
	u8		typeOfDigits;           /* type of digits */
	u8		encodeScheme;           /* encoding scheme */
	u8		length;                /* length */
	u8		digits[MAX_ISUP_MSG_LEN];       /* digits */
} SiGenDigits;

typedef struct sinotifInd        /* Notification Indicator */
{
	u8		pres;                   /* element header */
	u8		notifInd;               /* Notification Indicator */
} SiNotifInd;

typedef struct genNum           /* Generic Number */
{
	u8		pres;                   /* element header */
	u8		nmbQual;                /* number qualifier */
	u8		natAddrInd;             /* nature of addresss indicator */
	u8		oddEven;                /* odd or even */
	u8		scrnInd;                /* screen indicator */
	u8		presRest;               /* Address presentation restricted ind. */
	u8		numPlan;                /* numbering plan */
	u8		niInd;                  /* number incomplete indicator */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];               /* Address Signal */

} SiGenNum;

typedef struct sihopCounter      /* Hop counter */
{
	u8		pres;                   /* element header */
	u8		hopCounter;             /* presentation */
} SiHopCounter;

typedef struct infoInd           /* Information Indicators */
{
	u8		pres;                   /* element header */
	u8		cgPtyAddrRespInd;     /* calling party address response ind. */
	u8		holdProvInd;          /* hold provided indicator */
	u8		cgPtyCatRespInd;      /* calling party category response ind. */
	u8		chrgInfoRespInd;      /* charge information response indicator */
	u8		solInfoInd;           /* solicitation information indicator */
	u8		spare;                /* spare (insure we get second octet) */
} SiInfoInd;

typedef struct infoReqInd        /* Information Request Indicators */
{
	u8		pres;                   /* element header */
	u8		cgPtyAdReqInd;        /* calling party address request ind. */
	u8		holdingInd;           /* holding indicator */
	u8		cgPtyCatReqInd;       /* calling party category request ind. */
	u8		chrgInfoReqInd;       /* charge information request indicator */
	u8		malCaIdReqInd;        /* malicious call id request indicator */
	u8		spare;                /* spare (insure second octet...) */
} SiInfoReqInd;

typedef struct mcidRspInd        /* MCID response indicators  */
{
	u8		pres;                   /* element header */
	u8		rspInd;               /* mcid response indicators */
	u8		hldInd;               /* hold indicators */
} SiMcidRspInd;

typedef struct mcidReqInd           /* MCID request indicators  */
{
	u8		pres;                   /* element header */
	u8		reqInd;               /* mcid request indicators */
	u8		hldInd;               /* hold indicators */
} SiMcidReqInd;

typedef struct msgCompInfo        /* message compatibility information */
{
	u8		pres;                   /* element header */
	u8		tranXInd;             /* transit exchange indicator */
	u8		relCllInd;            /* release call indicator */
	u8		sndNotInd;            /* send notification indicator */
	u8		dcrdMsgInd;           /* discard message indicator */
	u8		passNotPoss;          /* pass on not possible indicator */
	u8		bbNbIntwkI;           /* broadband n/w interworking indicator */
	u8		tranXInd1;            /* transit exchange indicator */
	u8		relCllInd1;           /* release call indicator */
	u8		sndNotInd1;           /* send notification indicator */
	u8		dcrdMsgInd1;          /* discard message indicator */
	u8		passNotPoss1;         /* pass on not possible indicator */
	u8		bbNbIntwkI1;          /* broadband n/w interworking indicator */
} SiMsgCompInfo;

typedef struct mlppPrec          /* MLPP precedence  */
{
	u8		pres;                   /* element header */
	u8		precdLvl;             /* precedence level */
	u8		lfb;                  /* LFB */
	u8		frstDig;              /* first digit */
	u8		scndDig;              /* second digit */
	u8		thrdDig;              /* third digit */
	u8		frthDig;              /* fourth digit */
	u32		servDomain;           /* service domain */
} SiMlppPrec;

typedef struct natConInd         /* Nature of Connection Indicator */
{
	u8		pres;                   /* element header */
	u8		satInd;               /* Satellite Indicator */
	u8		contChkInd;           /* continuity check indicator */
	u8		echoCntrlDevInd;      /* echo control device indicator */
} SiNatConInd;

typedef struct netFacSpecFacil   /* network specific facility */
{
	u8		pres;						/* element header */
	u8		length;
	u8		netFac[MAX_ISUP_MSG_LEN];   /* network facility1 */
} SiNetSpecFacil;

typedef struct optBckCalInd      /* Optional Backward Call Indicators */
{
	u8		pres;                   /* element header */
	u8		inbndInfoInd;         /* in-band information indicator */
	u8		caFwdMayOcc;          /* call forwarding may occur indicator */
	u8		simpleSegmInd;        /* Simple segmentation indicator */
	u8		mlppUserInd;          /* MLPP User indicator */
} SiOptBckCalInd;

typedef struct opFwdCalInd       /* Optional Forward Call Indicators */
{
	u8		pres;                   /* element header */
	u8		clsdUGrpCaInd;          /* closed user group call indicator */
	u8		simpleSegmInd;          /* Simple segmentation indicator */
	u8		conLineIdReqInd;        /* Connected line identity request ind */
} SiOpFwdCalInd;

typedef struct origCdNum         /* Original Called Number */
{
	u8		pres;                   /* element header */
	u8		natAddrInd;             /* nature of addresss indicator */
	u8		oddEven;                /* odd or even */
	u8		presRest;               /* Address presentation restricted ind. */
	u8		numPlan;                /* numbering plan */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];               /* Address Signal */

} SiOrigCdNum;

typedef struct sisigPointCode    /* Signalling Point Code */
{
	u8		pres;                   /* element header */
	u16		sigPointCode;          /* signalling point code */
} SiSigPointCode;

typedef struct parmCompInfo           /* parameter compatibility information */
{
	u8		pres;                   /* element header */
	u8		length;
	u8		content[MAX_ISUP_MSG_LEN];             /* content. */

	//u8		upgrPar1;             /* upgraded parm 1 */
	//u8		tranXInd1;            /* transit exchange indicator */
	//u8		relCllInd1;           /* release call indicator */
	//u8		sndNotInd1;           /* send notification indicator */
	//u8		dcrdMsgInd1;          /* discard message indicator */
	//u8		dcrdParInd1;          /* discard parameter indicator */

	//u8		pBbNbIntwkI1;         /* broadband network interworking indicator */
	//u8*		addInstInd1;          /* additional instruction indicator */
	//u8		upgrPar2;             /* upgraded parm 2 */
	//u8		tranXInd2;            /* transit exchange indicator */
	//u8		relCllInd2;           /* release call indicator */
	//u8		sndNotInd2;           /* send notification indicator */
	//u8		dcrdMsgInd2;          /* discard message indicator */
	//u8		dcrdParInd2;          /* discard parameter indicator */
} SiParmCompInfo;

typedef struct rangStat          /* Range and Status */
{
	u8		pres;                   /* element header */
	u8		range;                  /* range */
	u8		status[ISUP_STATUS_LEN];                /* status */
} SiRangStat;

typedef struct rangNoStat        /* Range and Status */
{
	u8		pres;                   /* element header */
	u8		range;                  /* range */
} SiRangNoStat;

typedef struct redirInfo         /* Redirection Information */
{
	u8		pres;                   /* element header */
	u8		redirInd;               /* redirection indicator */
	u8		origRedirReas;          /* original redirection reason */
	u8		redirCnt;               /* redirection count */
	u8		redirReas;              /* redirection reason */
} SiRedirInfo;

typedef struct redirNum          /* Redirecting Number */
{                          
	u8		pres;                   /* element header */
	u8		natAddrInd;             /* nature of addresss indicator */
	u8		oddEven;                /* odd or even */
//	u8		scrInd;                 /* screening indicator */
	u8		presRest;               /* Address presentation restricted ind. */
	u8		numPlan;                /* numbering plan */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];               /* Address Signal */

} SiRedirNum;

typedef struct redirRstr         /* redirection restriction */
{
	u8		pres;                   /* element header */
	u8		presRest;             /* presentation restriction */
} SiRedirRestr;

typedef struct remotOper         /* remote operations */
{
	u8		pres;                   /* element header */
	u8		length;             /* protocol profile */
	u8		content[MAX_ISUP_MSG_LEN];               /* components */
} SiRemotOper;

typedef struct siserviceAct      /* Service Activation */
{
	u8		pres;                   /* element header */
	u8		length;
	u8		serviceAct[MAX_ISUP_MSG_LEN];            /* service activation */
} SiServiceAct;

typedef struct subNum            /* Subsequent Number */
{
	u8		pres;                   /* element header */
	u8		oddEven;                /* odd or even */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];               /* Address Signal */

} SiSubNum;

typedef struct sisusResInd       /* Suspend/Resume indicators */
{
	u8		pres;                   /* element header */
	u8		susResInd;              /* suspend/resume indicators */
} SiSusResInd;

typedef struct tranNetSel        /* Transit Network Selection */
{
	u8		pres;                   /* element header */
	u8		netIdPln;               /* network id plan */
	u8		typNetId;               /* type of network identification */
	u8		oddEven;                /* odd/even */
	u8		numOfDigit;
	u8		netId[MAX_ISUP_DIGIT];                 /* network identification */
} SiTranNetSel;

typedef struct txMedReq          /* Transmission Medium Requirement */
{
	u8		pres;                   /* element header */
	u8		trMedReq;               /* tranmission medium requirement */
} SiTxMedReq;

typedef struct usrServInfo       /* User Service Information */
{
	u8		pres;                   /* element header */
	u8		length;
	u8		content[MAX_ISUP_MSG_LEN];             /* content. */
	//u8		infoTranCap;          /* information transfer capability */
	//u8		cdeStand;             /* coding standard */
	//u8		infoTranRate0;        /* information transfer rate */
	//u8		tranMode;             /* transfer mode */
	//u8		establish;            /* establishment */
	//u8		config;               /* configuration */
	//u8		chanStruct;           /* structure */
	//u8		infoTranRate1;        /* information transfer rate */
	//u8		symmetry;             /* symmetry */
	//u8		rateMultiplier;       /* rate multiplier */
	//u8		usrInfLyr1Prot;       /* usr information layer 1 protocol */
	//u8		lyr1Ident;            /* layer 1 identity */
	//u8		usrRate;              /* user rate */
	//u8		negot;                /* negotiation */
	//u8		syncAsync;            /* synchronous/asynchronous */
	//u8		flcOnRx;              /* flow control on reception */
	//u8		flcOnTx;              /* flow control on transmission */
	//u8		niClkOnRx;            /* network independent clock on reception */
	//u8		niClkOnTx;            /* network independent clock on transmission*/
	//u8		interRate;            /* intermediate rate */
	//u8		inOutBandNeg;         /* inband/outband negotiation */
	//u8		asgnrAsgne;           /* assignor/assignee */
	//u8		logLnkNegot;          /* logical link identifier negotiation */
	//u8		mode;                 /* mode of operation */
	//u8		multiFrm;             /* multiple frame establishment support */
	//u8		hdrNohdr;             /* rate adaption header/no header */
	//u8		parity;               /* parity information */
	//u8		nmbDatBits;           /* number of data bits excluding parity bit */
	//u8		nmbStpBits;           /* number of stop bits */
	//u8		modemType;            /* modem type */
	//u8		duplexMode;           /* duplex mode */
	//u8		usrInfLyr2Prot;       /* user information layer 2 protocol */
	//u8		lyr2Ident;            /* layer 2 identity */
	//u8		usrInfLyr3Prot;       /* user information layer 3 protocol */
	//u8		lyr3Ident;            /* layer 3 identity */
} SiUsrServInfo;

typedef struct usrTSrvInfo       /* User Teleservice Information */
{
	u8		pres;                   /* element header */
	u8		length;
	u8		content[MAX_ISUP_MSG_LEN];             /* content. */
	//u8		presMeth;               /* presentation method */
	//u8		interp;                 /* interpretation indicator */
	//u8		codeStd;                /* coding standard */
	//u8		highLyr;                /* high layer characteristics id */
	//u8		extHighLyr;             /* extended high layer chars id */
} SiUsrTSrvInfo;

typedef struct usr2UsrInd        /* User to User indicators */
{
	u8		pres;                   /* element header */
	u8		type;                   /* type */
	u8		serv1;                  /* service 1 */
	u8		serv2;                  /* service 2 */
	u8		serv3;                  /* service 3 */
	u8		spare;                  /* bit H  (to be filled in both cases) */
} SiUsr2UsrInd;

typedef struct usr2UsrInfo       /* User to user information */
{
	u8		pres;                   /* element header */
	u8		length;
	u8		info[MAX_ISUP_MSG_LEN];                 /* user to user information */
} SiUsr2UsrInfo;

typedef struct sipassAlng        /* Pass Along */
{
	u8		pres;                   /* element header */
	u8		length;
	u8		passAlng[MAX_ISUP_MSG_LEN];             /* pass along */
} SiPassAlng;

// (SS7_ITU97 || SS7_ETSIV3)
typedef struct confTrtInd        /* conference treatment indicators */
{
	u8		pres;					 /* element header */
	u8		confAcceptInd;			 /* conference acceptance indicators */
	u8		length;
	u8		extInfo[MAX_ISUP_MSG_LEN];              /* Extension Info */
} SiConfTrtInd;

typedef struct uidActionInd      /* UID action indicator */
{
	u8		pres;                  /* element header */
	u8		throughConnInstInd;   /* Through connection instruction ind. */
	u8		t9InstInd;            /* T9 instruction ind. */
	u8		length;
	u8		extInfo[MAX_ISUP_MSG_LEN];              /* Extension Info */
} SiUidActionInd;

typedef struct backGVNS          /* backward GVNS */
{
	u8		pres;                  /* element header */
	u8		termAccessInd;        /* terminating access indicator */
	u8		length;
	u8		extInfo[MAX_ISUP_MSG_LEN];              /* Extension Info */
} SiBackGVNS;

typedef struct sidisplayInfo     /* display information */
{
	u8		pres;                  /* element header */
	u8		length;
	u8		displayInfo[MAX_ISUP_MSG_LEN];          /* display information */
} SiDisplayInfo;

typedef struct forwardGVNS       /* forward GVNS */
{
	u8		pres;                  /* element header */
	u8		lenInd1;              /* length indicator */
	u8		oddEven1;             /* odd or even address signal */
	u8		numOfDigit1;
	u8		digits1[8];              /* digits */
	u8		lenInd2;              /* length indicator */
	u8		oddEven2;             /* odd or even address signal */
	u8		numOfDigit2;
	u8		digits2[16];              /* digits */
	u8		lenInd3;              /* length indicator */
	u8		oddEven3;             /* odd or even address signal */
	u8		numPlan;              /* numbering plan */
	u8		natOfAddr;            /* nature of address */
	u8		numOfDigit3;
	u8		digits3[16];              /* digits */
} SiForwardGVNS;

typedef struct ccss              /* CCSS */
{
	u8		pres;                  /* element header */
	u8		ccssCallInd;          /* CCSS call indicator */
} SiCcss;

typedef struct netMgmtControls   /* network management controls */
{
	u8		pres;                  /* element header */
	u8		tmpAltRoutInd;        /* tmp alternative routing Ind. */
	u8		length;
	u8		extInfo[MAX_ISUP_MSG_LEN];              /* Extension Info */
} SiNetMgmtControls;

typedef struct cirAsgnMap        /* circuit assignment map */
{
	u8		pres;                  /* element header */
	u8		mapType;              /* map type */
	u8		mapFormat[4];            /* map format */
} SiCirAsgnMap;

typedef struct sicorrelationId   /* correlation Id */
{
	u8		pres;                  /* element header */
	u8		length;
	u8		correlationId[MAX_ISUP_MSG_LEN];        /* correlation Id */
} SiCorrelationId;

typedef struct callDivTrtInd     /* call diversion treatment indicators */
{
	u8		pres;                  /* element header */
	u8		callDivInd;           /* call to be diverted indicator */
	u8		length;
	u8		extInfo[MAX_ISUP_MSG_LEN];              /* Extension Info */
} SiCallDivTrtInd;

typedef struct callInNmb         /* call IN number */
{
	u8		pres;                  /* element header */
	u8		natAddrInd;                /* nature of addresss indicator */
	u8		oddEven;                /* odd or even */
	u8		presRest;              /* Address presentation restricted ind. */
	u8		numPlan;                /* numbering plan */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];               /* Address Signal */
} SiCallInNmb;

typedef struct callOfferTrtInd   /* call offering treatment indicators */
{
	u8		pres;                  /* element header */
	u8		callOfferInd;         /* call to be offered indicator */
	u8		length;
	u8		extInfo[MAX_ISUP_MSG_LEN];              /* Extension Info */
} SiCallOfferTrtInd;

typedef struct siscfId           /* SCF Id */
{
	u8		pres;                  /* element header */
	u8		length;
	u8		scfId[MAX_ISUP_MSG_LEN];                /* SCF Id */
} SiScfId;

typedef struct uidCapInd         /* UID capability indicator */
{
	u8		pres;                  /* element header */
	u8		throughConnInstInd;   /* Through connection instruction ind. */
	u8		t9InstInd;            /* T9 instruction ind. */
	u8		length;
	u8		extInfo[MAX_ISUP_MSG_LEN];              /* Extension Info */
} SiUidCapInd;

typedef struct collCallReq       /* collect call request */
{
	u8		pres;                  /* element header */
	u8		collCallReqInd;       /* collect call req. indicator */ 
} SiCollCallReq;

typedef struct naPaChgPID      /* National Parameter ChgPID */
{
	u8		pres;                  /* element header */
	u8		length;
	u8		naPaChgPtyId[MAX_ISUP_MSG_LEN];         /* charged party identification */
} SiNaPaChgPID;

typedef struct callTRef    /* Call Transfer Reference */
{
	u8		pres;                  /* element header */
	u8		callTrnsfr;           /* call transfer reference */
} SiCallTRef;

typedef struct loopPrvntInd      /* loop prevention indicator */
{
	u8		pres;                  /* element header */
	u8		loopPrvntType;        /* loop prevention type */
	u8		loopPrvntRspInd;      /* loop prevention response indicator */
} SiLoopPrvntInd;

typedef struct appTransParam /* application transport parameter */
{
	u8		pres;                  /* element header */
	u8		appContextId;         /* application context identifier */
	u8		atii;                 /* application transport inst. ind. */
	u8		apmSegInd;            /* APM segmentation indicator */
	u8		seqInd;               /* sequence indicator */
	u8		slr;                  /* segmentation local reference */
	u8		length;
	u8		encapAppInfo[MAX_ISUP_MSG_LEN];     /* encapsulated application info */
} SiAppTransParam;


/* Information Element code for UK specific */
typedef struct natForCalInd /* National Forward Call Indicators */
{
	u8		pres;                  /* element header */
	u8		cbi;				   /* CLI Blocking Indicator (CBI) */
	u8		ntaInd;                /* Network translated address indicator */
} SiNatForCalInd;

typedef struct natForCalIndLbL /* National Forward Call Indicators (Link by link)*/
{
	u8		pres;                  /* element header */
	u8		rci;				   /* Routing Control Indicator */
	u8		isi;                /*  Interconnect Specific Information */
} SiNatForCalIndLbL;

typedef struct presNum /* Presentation Number*/
{
	u8		pres;                   /* element header */
	u8		natAddrInd;             /* nature of addresss indicator */
	u8		oddEven;                /* odd or even */
	u8		scrInd;                 /* screening indicator */
	u8		presRest;               /* Address presentation restricted ind. */
	u8		numPlan;                /* numbering plan */
	u8		pnp;					/* Presentation Number Preference indicator  */
	u8		numOfDigit;
	u8		addrSig[MAX_ISUP_DIGIT];               /* Address Signal */
}SiPresNum;

//SiLasDivLinId==SiCgPtyNum /* Last Diverting Line Identity*/

typedef struct partCLI /* Partial CLI */
{
	u8		pres;                   /* element header */
	u8		swichTypeD1;             /* Type of Switch */
	u8		swichTypeD2;             /* Type of Switch */
	u8		pnoIdD1;	               /* PNO Identity  */
	u8		pnoIdD2;	               /* PNO Identity  */
	u8		pnoIdD3;	               /* PNO Identity  */
	u8		switchNumD1;                 /* Switch number */
	u8		switchNumD2;                 /* Switch number */
	u8		switchNumD3;                 /* Switch number */
	u8		agreement[5];               /* For bilateral agreement */	
}SiPartCLI;

typedef struct caldSubBasSerMar /* Called Subscribers Basic Service Marks */
{
	u8		pres;                   /* element header */
	u8		cbInd;					/* Admin./Maintenance Call Barring Indicator */
	u8		subIcbInd;	               /* Subscriber Controlled Incoming Calls Barred (ICB) Indicator  */
	u8		preIcbInd;                 /* Pre-arranged ICB Indicator */
	u8		permIcbInd;               /* Permanent ICB Indicator */	
	u8		tosInd;                 /* Temporary Out of Service (TOS) Indicator */
	u8		ICBExpInd;               /* ICB Except for Operator Indicator */	
	u8		caldSubFacInfInd;                 /* Called Subscriber Facility Information Indicator */
	u8		calgSubFacInfInd;               /* Calling Subscriber Facility Information Indicator */	
	u8		permOcbInd;               /* Permanent Outgoing Calls Barred (OCB) Indicator */	
	u8		ogLocCalBarInd;               /* Outgoing Local Calls Barred Indicator */	
	u8		ogNatCalBarInd;               /* Outgoing National Calls Barred Indicator */	
	u8		ogIntCalBarInd;               /* Outgoing International Calls Barred Indicator */	
	u8		opCalBarInd;               /* Operator Calls Barred Indicator */	
	u8		supFacCalBarInd;               /* Supplementary Facility Calls Barred Indicator */	
	u8		digMaskInd;               /* Digit Masking Indicator */	
	u8		calPreBarInd;               /* Calls to Premium-phones Barred Indicator */	
	u8		caldSubTarGp;               /* Called Subscriber's Tariff Group */	
}SiCaldSubBasSerMar;


typedef struct calgSubBasSerMar /* Calling Subscribers Basic Service Marks */
{
	u8		pres;                   /* element header */
	u8		cbInd;					/* Admin./Maintenance Call Barring Indicator */
	u8		subIcbInd;	               /* Subscriber Controlled Incoming Calls Barred (ICB) Indicator  */
	u8		preIcbInd;                 /* Pre-arranged ICB Indicator */
	u8		permIcbInd;               /* Permanent ICB Indicator */	
	u8		tosInd;                 /* Temporary Out of Service (TOS) Indicator */
	u8		ICBExpInd;               /* ICB Except for Operator Indicator */	
	u8		caldSubFacInfInd;                 /* Called Subscriber Facility Information Indicator */
	u8		calgSubFacInfInd;               /* Calling Subscriber Facility Information Indicator */	
	u8		permOcbInd;               /* Permanent Outgoing Calls Barred (OCB) Indicator */	
	u8		ogLocCalBarInd;               /* Outgoing Local Calls Barred Indicator */	
	u8		ogNatCalBarInd;               /* Outgoing National Calls Barred Indicator */	
	u8		ogIntCalBarInd;               /* Outgoing International Calls Barred Indicator */	
	u8		opCalBarInd;               /* Operator Calls Barred Indicator */	
	u8		supFacCalBarInd;               /* Supplementary Facility Calls Barred Indicator */	
	u8		digMaskInd;               /* Digit Masking Indicator */	
	u8		calPreBarInd;               /* Calls to Premium-phones Barred Indicator */	
	u8		calgSubTarGp;               /* Calling Subscriber's Tariff Group */	
	u8		opInd;				   /* Operator Indicator */	
}SiCalgSubBasSerMar;


typedef struct calgSubOrgFacMar /* Calling Subscribers Originating Facility Marks */
{
	u8		pres;                   /* element header */
	u8		disSubInd;					/* Disabled Subscriber Indicator */
	u8		attCOI;	               /* Attended Call Office Indicator  */
	u8		adDurChgInd;                 /* Advise Duration and Charge (AD&C) Indicator */
	u8		PBXSubInd;               /* PBX Subscriber Indicator */	
}SiCalgSubOrgFacMar;


typedef struct caldSubTermFacMar /* Called Subscribers Terminating Facility Marks */
{
	u8		pres;                   /* element header */
	u8		sviInd;					/*SVI Indicator */
	u8		cniInd;	                /* CNI Indicator  */
	u8		pbxNigIntInd;           /* PBX Night Interception Indicator */
	u8		calWaitInd;               /* Call Waiting Indicator */	
	u8		fixedDestSerInd;				/*	Fixed Destination Service Indicator */
}SiCaldSubTermFacMar;


typedef struct natInfReqInd /* National Information Request Indicators */
{
	u8		pres;							  /* element header */
	u8		calgSubBasSerMarReqInd;			  /* Calling Subscriber's Basic Service Marks request indicator */
	u8		caldSubBasSerMarReqInd;	          /* Called Subscriber¡¯s Basic Service Marks request indicator  */
	u8		calgSubOrgFacMarReqInd;           /* Calling Subscriber's Originating Facility Marks request indicator */
	u8		caldSubTerFacMarReqInd;           /* Called Subscriber's Terminating Facility Marks request indicator */	
}SiNatInfReqInd;


typedef struct natInfInd /* National Information Indicators */
{
	u8		pres;						    /* element header */
	u8		calgSubBasSerMarRespInd;		/* Calling Subscriber's Basic Service Marks response indicator */
	u8		caldSubBasSerMarRespInd;	    /* Called Subscriber¡¯s Basic Service Marks response indicator  */
	u8		calgSubOrgFacMarRespInd;        /* Calling Subscriber's Originating Facility Marks response indicator */
	u8		caldSubTerFacMarRespInd;        /* Called Subscriber's Terminating Facility Marks response indicator */	
}SiNatInfInd;


typedef struct sicirValRspInd    /* Circuit validation response indicator */
{
   u8		pres;						    /* element header */
   u8 	cirValRspInd;       /* Circuit validation response indicator */
} SiCirValRspInd;

typedef struct cirGrpCharInd     /* Circuit group characteristic indicators */
{
   u8		pres;						   			 /* element header */
   u8		cirGrpCarInd;           /* circuit group carrier indicator */
   u8	 	dblSzCtrlInd;           /* double seizing control indicator */
   u8 	alarmCarInd;            /* alarm carrier indicator */
   u8 	contChkReqInd;          /* continuity check requirements indicator */
} SiCirGrpCharInd;
  
typedef struct cirIdName         /* Circuit ID Name */
{
   u8		pres;						    /* element header */
   u8  	trunkNumClli[26];          /* trunk number and clli code */
} SiCirIdName;

typedef struct clli              /* Common Language Location Idenification */
{
   u8		pres;						    		/* element header */
   u8 	clliCode[11];           /* clli codes */
} SiCLLI;


//**********************************************/
//* Message Structure (Q.763)
//**********************************************/
typedef struct siPduACM          /* Address Complete  message */
{
	SiBckCalInd     bckCalInd;    /* backward call indicators */
	SiOptBckCalInd  optBckCalInd; /* optional backward call indicators */
	SiCallRef       callRef;      /* call reference */
	SiCauseDgn      causeDgn;     /* cause indicators */
	SiUsr2UsrInd    usr2UsrInd;   /* user to user indicators */
	SiUsr2UsrInfo   usr2UsrInfo;  /* user to user information */
	SiAccTrnspt     accTrans;     /* access transport */
	SiNotifInd      notifInd1;    /* notification indicator */
//	SiNotifInd      notifIndR1;   /* notification ind (repeated - ITU97/92) */
	SiTxMedReq      txMedUsed;    /* transmission medium used */
	SiEchoCtl       echoControl;  /* echo control */
	SiAccDelInfo    accDelInfo;   /* access delivery information */
	SiCdPtyNum      redirNum;     /* redirection number */
	SiParmCompInfo  parmCom;      /* parameter compatibility information */
	SiCllDiverInfo  cllDivr;      /* call Diversion information */
	SiNetSpecFacil  netFac;       /* network specific facility */
	SiRemotOper     remotOper;    /* remote operations */
	SiServiceAct    serviceAct;   /* service activation */
	SiRedirRestr    redirRstr;    /* redirection restriction */
// (SS7_ITU97 || SS7_ETSIV3)
	SiConfTrtInd    confTrtInd;   /* confrence treatment indicators */
	SiUidActionInd  uidActionInd; /* UID action indicator */
//UK specific
	SiCaldSubBasSerMar	caldSubBasSerMar;
	SiEndOp         endOp;        /* end of optional parameters */	
} SiPduACM;

typedef struct siPduANM          /* Answer */
{
	SiBckCalInd    bckCalInd;     /* backward call indicators */
	SiOptBckCalInd optBckCalInd;  /* optional backward call indicators */
	SiCallRef      callRef;       /* call reference */
	SiUsr2UsrInd   usr2UsrInd;    /* user to user indicators */
	SiUsr2UsrInfo  usr2UsrInfo;   /* user to user information */
	SiConnectedNum connNum;       /* connected number */
	SiAccTrnspt    accTrans;      /* access transport */
	SiAccDelInfo   accDelInfo;    /* access delivery information */
	SiNotifInd      notifInd1;    /* notification indicator */
//	SiNotifInd      notifIndR1;   /* notification ind (repeated - ITU97/92) */
	SiParmCompInfo parmCom;       /* parameter compatibility information */
	SiPropDly      cllHstry;      /* call history information */
	SiGenNum       genNmb;        /* generic number */
//	SiGenNum       genNmbR;       /* generic number (repeated - ITU97/92) */
	SiTxMedReq     txMedUsed;     /* transmission medium used */
	SiNetSpecFacil netFac;        /* network specific facility */
	SiRemotOper    remotOper;     /* remote operations */
	SiCdPtyNum     redirNum;      /* redirection number */
	SiServiceAct   serviceAct;    /* service activation */
	SiEchoCtl      echoControl;  /* echo control */
	SiRedirRestr   redirRstr;     /* redirection restriction */
// SS7_ITU97
	SiBackGVNS     backGVNS;      /* backward GVNS */
	SiDisplayInfo  displayInfo;   /* display information */
//UK specific
	SiCaldSubBasSerMar	caldSubBasSerMar;
	SiEndOp        endOp;         /* end of optional parameters */
} SiPduANM;

typedef struct siPduCPG          /* Call Progress */
{
	SiEvntInfo      evntInfo;     /* event information */
	SiCauseDgn      causeDgn;     /* cause indicators */
	SiCallRef       callRef;      /* call reference */
	SiBckCalInd     bckCalInd;    /* backward call indicators */
	SiOptBckCalInd  optBckCalInd; /* optional backward call indicators */
	SiAccTrnspt     accTrans;     /* access transport */
	SiUsr2UsrInd    usr2UsrInd;   /* user to user indicators */
	SiNotifInd      notifInd1;    /* notification indicator */
//	SiNotifInd      notifIndR1;   /* notification ind (repeated - ITU97/92) */
	SiNetSpecFacil  netFac;       /* network specific facility */
	SiRemotOper     remotOper;    /* remote operations */
	SiTxMedReq      txMedUsed;    /* transmission medium used */
	SiAccDelInfo    accDelInfo;   /* access delivery information */
	SiCdPtyNum      redirNum;     /* redirection number */
	SiParmCompInfo  parmCom;      /* parameter compatibility information */
	SiCllDiverInfo  cllDivr;      /* call Diversion information */
	SiServiceAct    serviceAct;   /* service activation */
	SiRedirRestr    redirRstr;    /* redirection restriction */
// (SS7_ETSIV3 || SS7_ITU97)
	SiCgPtyNum      calTrnsNmb;   /* Call Transfer Number */
	SiEchoCtl       echoControl;  /* echo control */
	SiConnectedNum	connNum;       /* connected number */
	SiBackGVNS		backGVNS;      /* backward GVNS */
	SiGenNum		genNmb;        /* generic number */
//	SiGenNum		genNmbR;      /* generic number (repeated - ITU97/92) */
	SiPropDly		cllHstry;      /* call history information */
	SiConfTrtInd    confTrtInd;   /* confrence treatment indicators */
	SiUidActionInd  uidActionInd; /* UID action indicator */
	//UK specific
	SiCaldSubBasSerMar	caldSubBasSerMar;
	SiEndOp         endOp;       /* end of optional parameters */
} SiPduCPG;

typedef struct siPduCGB          /* Circuit Group Blocking */
{
	SiCirGrpSupMTypInd cgsmti;    /* circuit grp. Supervision Msg. Type Ind. */
	SiRangStat         rangStat;  /* range and status */
} SiPduCGB;

typedef struct siPduCGBA         /* Circuit Group Blocking Ack. */
{
	SiCirGrpSupMTypInd cgsmti;    /* circuit grp. Supervision Msg. Type Ind. */
	SiRangStat         rangStat;  /* range and status */
} SiPduCGBA;

typedef struct siPduCQM          /* Circuit Group Query */
{
	SiRangNoStat rangNoStat;        /* range and status */
} SiPduCQM;

typedef struct siPduCQR          /* Circuit Group Query Response */
{
	SiRangNoStat  rangNoStat;       /* range and status */
	SiCirStateInd cirSteInd;      /* Circuit State Indicators */
} SiPduCQR;

typedef struct siPduGRS          /* Circuit Group Reset */
{
	SiRangNoStat  rangNoStat;        /* range and status */
} SiPduGRS;

typedef struct siPduGRA          /* Circuit Group Reset Acknowledgement */
{
	SiRangStat rangStat;          /* range and status */
} SiPduGRA;

typedef struct siPduCGU          /* Circuit Group Unblocking */
{
	SiCirGrpSupMTypInd cgsmti;    /* circuit grp. supervision msg. type ind. */
	SiRangStat         rangStat;  /* range and status */
} SiPduCGU;

typedef struct siPduCGUA         /* Circuit Group Unblocking Acknowledgement */
{
	SiCirGrpSupMTypInd cgsmti;    /* circuit grp. supervision msg. type ind. */
	SiRangStat         rangStat;  /* range and status */
} SiPduCGUA;

typedef struct siPduCFN          /* Confusion */
{
	SiCauseDgn causeDgn;          /* cause indicators */
	SiEndOp    endOp;             /* end of optional parameters */
} SiPduCFN;

typedef struct siPduCON          /* Connect */
{
	SiBckCalInd    bckCalInd;     /* backward call indicators */
	SiOptBckCalInd optBckCalInd;  /* optional backward call indicators */
	SiConnectedNum connNum;       /* connected number */
	SiCallRef      callRef;       /* call reference */
	SiUsr2UsrInd   usr2UsrInd;    /* user to user indicators */
	SiUsr2UsrInfo  usr2UsrInfo;   /* user to user information */
	SiAccTrnspt    accTrans;      /* access transport */
	SiNetSpecFacil netFac;        /* network specific facility */
	SiNotifInd     notifInd;      /* notification indicator */
//	SiNotifInd     notifIndR;    /* notification ind (repeated - ITU97/92) */
	SiRemotOper    remotOper;     /* remote operations */
	SiTxMedReq     txMedUsed;     /* transmission medium used */
	SiEchoCtl      echoControl;   /* echo control */
	SiAccDelInfo   accDelInfo;    /* access delivery information */
	SiPropDly      cllHstry;      /* call history information */
	SiParmCompInfo parmCom;      /* parameter compatibility information */
	SiCdPtyNum      redirNum;     /* redirection number */
	SiServiceAct   serviceAct;    /* service activation */
	SiGenNum       genNmb;        /* generic number */
//	SiGenNum       genNmbR;      /* generic number (repeated - ITU97/92) */
	SiRedirRestr   redirRstr;     /* redirection restriction */
// SS7_ITU97
	SiBackGVNS     backGVNS;      /* backward GVNS */
	SiConfTrtInd   confTrtInd;   /* confrence treatment indicators */
	//UK specific
	SiCaldSubBasSerMar	caldSubBasSerMar;
	SiEndOp        endOp;        /* end of optional parameters */
} SiPduCON;

typedef struct siPduCOT          /* Continuity */
{
	SiContInd contInd;            /* continuity indicator */
} SiPduCOT;

typedef struct siPduFAA          /* Facility Accepted */
{
	SiFacInd       facInd;        /* facility indicator */
	SiUsr2UsrInd   usr2UsrInd;    /* user to user indicator */
	SiCallRef      callRef;       /* call reference */
	SiConnReq      connReq;       /* connection request */
	SiParmCompInfo parmCom;       /* parameter compatibility information */
	SiEndOp        endOp;         /* end of optional parameters */
} SiPduFAA;

typedef struct siPduFRJ          /* Facility Rejected */
{
	SiFacInd     facInd;          /* facility indicator */
	SiCauseDgn   causeDgn;        /* cause indicator */
	SiUsr2UsrInd usr2UsrInd;      /* user to user indicator */
	SiEndOp      endOp;           /* end of optional parameters */
} SiPduFRJ;

typedef struct siPduFAR          /* Facility Request */
{
	SiFacInd       facInd;        /* facility indicator */
	SiUsr2UsrInd   usr2UsrInd;    /* user to user indicator */
	SiCallRef      callRef;       /* call reference */
	SiConnReq      connReq;       /* connection request */
	SiParmCompInfo parmCom;       /* parameter compatibility information */
	SiEndOp        endOp;         /* end of optional parameters */
} SiPduFAR;

typedef struct siPduFOT          /* Forward Transfer */
{
	SiCallRef  callRef;           /* call reference */
	SiEndOp    endOp;             /* end of optional parameters */
} SiPduFOT;

typedef struct siPduINF          /* Information */
{
	SiInfoInd      infoInd;       /* information indicators */
	SiCgPtyCat     cgPtyCat;      /* calling party category */
	SiCgPtyNum     cgPtyNum;      /* calling party number */
	SiCallRef      callRef;       /* call reference */
	SiConnReq      connReq;       /* connection request */
	SiParmCompInfo parmCom;       /* parameter compatibility information */
	SiNetSpecFacil netFac;        /* network specific facility */
	//UK specific
	SiNatInfInd	natInfInd;
	SiCaldSubBasSerMar	caldSubBasSerMar;
	SiCalgSubBasSerMar	calgSubBasSerMar;
	SiCalgSubOrgFacMar	calgSubOrgFacMar;
	SiCaldSubTermFacMar	caldSubTermFacMar;
	SiEndOp        endOp;         /* end of optional parameters */
} SiPduINF;

typedef struct siPduINR          /* Information Request */
{
	SiInfoReqInd infoReqInd;      /* information request indicators */
	SiCallRef callRef;            /* call reference */
	SiNetSpecFacil netFac;        /* network specific facility */
	SiParmCompInfo parmCom;       /* parameter compatibility information */	
	//UK specific
	SiNatInfReqInd	natInfReqInd;
	SiEndOp endOp;                /* end of optional parameters */
} SiPduINR;

typedef struct siPduIAM          /* Initial Address */
{
	SiNatConInd natConInd;        /* Nature of connection indicators */
	SiFwdCallInd fwdCallInd;      /* forward call indicators */
	SiCgPtyCat cgPtyCat;          /* calling party category */
	SiTxMedReq txMedReq;          /* transmission medium requirement */
	SiCdPtyNum cdPtyNum;          /* called party number */
	SiTranNetSel tranNetSel;      /* transit network selection */
	SiCallRef callRef;            /* call reference */
	SiCgPtyNum cgPtyNum;          /* calling party number */
	SiOpFwdCalInd opFwdCalInd;    /* optional forward call indicators */
	SiRedirNum redirgNum;		  /* redirecting number */
	SiRedirInfo redirInfo;        /* redirection information */
	SiCugIntCode cugIntCode;      /* closed group interlock code */
	SiConnReq connReq;            /* connection request */
	SiOrigCdNum origCdNum;        /* original called number */
	SiUsr2UsrInfo usr2UsrInfo;    /* user to user information */
	SiAccTrnspt accTrans;         /* access transport */
	SiUsrServInfo usrServInfo;    /* user service info */
	SiUsr2UsrInd usr2UsrInd;      /* user to user indicators */
	SiGenNum genNmb;              /* generic number */
//	SiGenNum genNmbR;             /* generic number (repeated - ITU97/92) */
	SiPropDly propDly;            /* propagation delay counter */
	SiUsrServInfo usrServInfo1;   /* user service info prime */
	SiNetSpecFacil netFac;        /* network specific facility */
	SiGenDigits genDigits;        /* generic digits */
//	SiGenDigits genDigitsR;       /* generic digits (repeated -ANSI95,ITU97/92) */
	SiSigPointCode orgPteCde;     /* originating ISC point code */
	SiUsrTSrvInfo usrTSrvInfo;    /* user tele service info */
	SiRemotOper remotOper;        /* remote operations */
	SiParmCompInfo parmCom;       /* parameter compatibility information */
	SiNotifInd notifInd;          /* notification indicator */
//	SiNotifInd notifIndR;         /* notification ind (repeated - ITU97/92) */
	SiServiceAct serviceAct;      /* service activation */
	SiMlppPrec mlppPrec;          /* MLPP precedence */
	SiTxMedReq txMedUsPr;         /* Transmission medium requirement prime */
	SiCgPtyNum cgPtyNum1;         /* location number or calling party number  */

// SS7_ITU97
	SiForwardGVNS  forwardGVNS;   /* forward GVNS */
	SiCcss         ccss;          /* CCSS */
	SiNetMgmtControls netMgmtControls;  /* network management controls */
	SiCirAsgnMap cirAsgnMap;      /* circuit assignment map */
	SiCorrelationId correlationId;/* correlation Id */
	SiCallDivTrtInd callDivTrtInd;/* call diversion treatment indicators */
	SiCallInNmb  callInNmb;       /* call IN number */
	SiCallOfferTrtInd callOfferTrtInd;/* call offering treatment ind */
	SiConfTrtInd confTrtInd;      /* confrence treatment indicators */
	SiScfId      scfId;           /* SCF Id */
	SiUidCapInd  uidCapInd;       /* UID capability indicator */
	SiEchoCtl       echoControl;  /* echo control */
	SiHopCounter hopCounter;      /* hop counter */
	SiCollCallReq collCallReq;    /* collect call request */
	//UK specific
	SiNatForCalInd	natForCalInd;
	SiPresNum	presNum;
	SiCgPtyNum	lasDivLinId;
	SiPartCLI	partCLI;
	SiNatForCalIndLbL	natForCalIndLbL;
	SiEndOp endOp;               /* end of optional parameters */
} SiPduIAM;

typedef struct siPduPAM          /* Pass Along */
{
	SiPassAlng passAlng;          /* pass along */
} SiPduPAM;

typedef struct siPduREL          /* Release */
{
	SiCauseDgn causeDgn;          /* cause indicators */
	SiRedirInfo redirInfo;        /* redirection information */
	SiCdPtyNum      redirNum;     /* redirection number */
	SiAccTrnspt accTrans;         /* access transport */
	SiSigPointCode sigPointCode;  /* Signalling point code */
	SiUsr2UsrInfo usr2UsrInfo;    /* user to user information */
	SiAutoCongLvl auCongLvl;      /* automatic congestion level */
	SiNetSpecFacil netFac;        /* network specific facility */
	SiAccDelInfo accDelInfo;      /* access delivery information */
	SiParmCompInfo parmCom;       /* parameter compatibility information */	
	SiRedirRestr redirRstr;       /* redirection restriction */
	SiUsr2UsrInd usr2UsrInd;      /* user to user indicators */
// (SS7_ITU97 || SS7_ETSIV3)
	SiDisplayInfo  displayInfo;   /* display information */
	SiRemotOper     remotOper;    /* remote operations */



	SiEndOp endOp;                /* end of optional parameters */
} SiPduREL;

typedef struct siPduRLC          /* Release Complete */
{
	SiCauseDgn causeDgn;          /* cause indicators */
	SiEndOp endOp;                /* end of optional parameters */
} SiPduRLC;

typedef struct siPduRES          /* Resume */
{
	SiSusResInd suspResInd;       /* Suspend/Resume indicators */
	SiCallRef callRef;            /* call reference */
	SiEndOp endOp;                /* end of optional parameters */
} SiPduRES;

typedef struct siPduSAM          /* Subsequent Address */
{
	SiSubNum subNum;              /* subsequent number */
	SiEndOp endOp;                /* end of optional parameters */
} SiPduSAM;

typedef struct siPduSUS          /* Suspend */
{
	SiSusResInd suspResInd;       /* Suspend/Resume indicators */
	SiCallRef callRef;            /* call reference */
	SiEndOp endOp;                /* end of optional parameters */
} SiPduSUS;

typedef struct siPduUSR          /* User to User */
{
	SiUsr2UsrInfo usr2UsrInfo;    /* user to user information */
	SiAccTrnspt accTrans;         /* access transport */
	SiEndOp endOp;                /* end of optional parameters */
} SiPduUSR;

typedef struct siPduFAC           /* Facility  Message */
{
	SiMsgCompInfo msgCom;         /* message compatibility information */
	SiParmCompInfo parmCom;       /* parameter compatibility information */
	SiRemotOper remotOper;        /* remote operations */
	SiServiceAct serviceAct;      /* service activation */
//(SS7_ETSI  SS7_ITU97 || SS7_ETSIV3)
	SiCgPtyNum calTrnsNmb;        /* Call Transfer Number */
	SiAccTrnspt accTrans;         /* access transport */
	SiNotifInd notifInd;          /* notification indicator */


	SiEndOp endOp;                /* end of optional parameters */
} SiPduFAC;

typedef struct siPduUPAT         /* User Part Test/Available  */
{
	SiParmCompInfo parmCom;       /* parameter compatibility information */
	SiEndOp endOp;                /* end of optional parameters */
} SiPduUPAT;

typedef struct siPduNRM          /* Network Resource Mgt  */
{
	SiMsgCompInfo msgCom;         /* message compatibility information */
	SiParmCompInfo parmCom;       /* parameter compatibility information */
	SiTxMedReq txMedUsed;         /* transmission medium used */
	SiEchoCtl echoControl;        /* echo control */
	SiEndOp endOp;                /* end of optional parameters */
} SiPduNRM;

typedef struct siPduIDR          /* Identification Request  */
{
   SiMcidReqInd mcidReq;         /* MCID request indicators */
   SiMsgCompInfo msgCom;         /* message compatibility information */
   SiParmCompInfo parmCom;       /* parameter compatibility information */
   SiEndOp endOp;                /* end of optional parameters */
} SiPduIDR;

typedef struct siPduIRS          /* Identification Response  */
{
   SiMcidRspInd mcidRsp;         /* MCID response indicators */
   SiMsgCompInfo msgCom;         /* message compatibility information */
   SiParmCompInfo parmCom;       /* parameter compatibility information */
   SiCgPtyNum cgPtyNum;          /* calling party number */
   SiAccTrnspt accTrans;         /* access transport */
   SiGenNum genNmb;              /* generic number */
//   SiGenNum       genNmbR;        /* generic number (repeated - ITU97/92) */
// ( SS7_ITU97 || SS7_ETSIV3)
   SiNaPaChgPID naPaChgPID;      /* National Parameter for charged party ID*/

   SiEndOp endOp;                /* end of optional parameters */
} SiPduIRS;

typedef struct siPduSGM          /* segmentation Msg. */
{
   SiAccTrnspt   accTrans;       /* access transport */
   SiUsr2UsrInfo usr2UsrInfo;    /* user to user information */
   SiMsgCompInfo msgComp;        /* message compatibility information */
   SiGenDigits   genDigits;      /* generic digits */
//   SiGenDigits   genDigitsR;     /* generic digits (repeated - ITU97/92) */
   SiNotifInd    notifInd;       /* notification indicator */
//   SiNotifInd    notifIndR;      /* notification ind (repeated - ITU97/92) */
   SiGenNum      genNmb;         /* generic number */
//   SiGenNum      genNmbR;        /* generic number (repeated - ITU97/92) */
   SiEndOp       endOp;          /* end of optional parameters */
} SiPduSGM;

typedef struct siPduLOP          /* loop prevention mesg. */
{
	SiMsgCompInfo msgCom;         /* message compatibility information */
	SiParmCompInfo parmCom;       /* parameter compatibility info */
	SiCallTRef calTrnsfrRef;      /* Call Transfer reference */
	SiLoopPrvntInd loopPrvntInd;  /* loop prevention indicator */
	SiEndOp endOp;                /* end of optional parameters */
} SiPduLOP;

typedef struct siPduPRI          /* Pre-release information mesg */
{
	SiOptBckCalInd  optBckCalInd; /* optional backward call indicators */
	SiOpFwdCalInd	opFwdCalInd;    /* optional forward call indicators */
	SiMsgCompInfo	msgCom;         /* message compatibility information */
	SiParmCompInfo	parmCom;       /* parameter compatibility information */
	SiAppTransParam appTransParam;/* application transport parameter */
	SiEndOp			endOp;          /* end of optional parameters */
} SiPduPRI;

typedef struct siPduAPP          /* Application transport message */
{
	SiMsgCompInfo	msgCom;         /* message compatibility information */
	SiParmCompInfo	parmCom;       /* parameter compatibility information */
	SiAppTransParam appTransParam;/* application transport parameter */
	SiEndOp			endOp;          /* end of optional parameters */
} SiPduAPP;

typedef struct siPduCVR          /* Circuit validation response  */
{
  SiCirValRspInd  valRspInd;    /* circuit validation response indicator */
  SiCirGrpCharInd grpCharInd;   /* circuit group characteristic indicators */
  SiCirIdName     cirIdName;    /* circuit identification name */  
  SiCLLI          clli;         /* common language location identification */
  SiEndOp         endOp;        /* end of optional parameters */	
} SiPduCVR;


/* All Messages... */
typedef struct siAllPdus         /* All PDU Messages */
{
   union
   {
      SiPduACM   addrComp;       /* Address Complete */
      SiPduANM   answer;         /* Answer */
																 /*	Blocking */	
																 /*	Blocking ACK*/	
      SiPduCPG   caProg;         /* Call Progress */
		  SiPduCGB   cirGrpBlk;      /* Circuit Group Blocking */
		  SiPduCGBA  cirGrpBlkAck;   /* Circuit Group Blocking Ack. */
		  SiPduCQM   cirGrpQry;      /* Circuit Group Query */
		  SiPduCQR   cirGrpQryRes;   /* Circuit Group Query Response */
		  SiPduGRS   cirGrpRes;      /* Circuit Group Reset */
		  SiPduGRA   cirGrpResAck;   /* Circuit Group Reset Ack. */
		  SiPduCGU   cirGrpUnblk;    /* Circuit Group Unblocking */
		  SiPduCGUA  cirGrpUblkAck;  /* Circuit Group Unblocking Ack. */
								 								 /* Charge information */
      SiPduCFN   confusion;      /* Confusion */
      SiPduCON   connect;        /* Connect */
      SiPduCOT   continuity;     /* Continuity */
								 								 /* Continuity check request */
		  SiPduFAC   facility;       /* Facility  Message. */
      SiPduFAA   facAccept;      /* Facility Accepted */
      SiPduFRJ   facReject;      /* Facility Rejected */
      SiPduFAR   facRequest;     /* Facility Request */
      SiPduFOT   fwdTrans;       /* Forward Transfer */
		  SiPduIDR   identReq;       /* Identification Request Message. */
		  SiPduIRS   identRsp;       /* Identification Response Message. */
      SiPduINF   info;           /* Information */
      SiPduINR   infoReq;        /* Information Request */
      SiPduIAM   initAddr;       /* Initial Address */
								 								 /* Loop back ack */
		  SiPduNRM   netResMgt;      /* Network Resource Management  Message. */
									 							 /* Overload */
		  SiPduPAM   passAlng;       /* Pass Along */
      SiPduREL   release;        /* Release */
      SiPduRLC   relComplete;    /* Release Complete */
								 								 /* Reset */
      SiPduRES   resume;         /* Resume */
		  SiPduSGM   segment;        /* Simple Segmentation Message */
      SiPduSAM   subAddr;        /* Subsequent Address */
      SiPduSUS   suspend;        /* Suspend */
																 /* Unblocking */
																 /* Unblocking ACK */
																 /* Unequipped CIC*/
      SiPduUPAT  usrPrtAvTst;    /* User Part Available/Test  Message. */
      SiPduUSR   usr2Usr;        /* User to User */

		  SiPduPRI   preRelease;     /* Pre-release information mesg */
		  SiPduAPP   appTransport;   /* Application transport message */
		  SiPduLOP   loopPrvnt;      /* Loop Prevention Message */
		  
		  SiPduCVR	 cirValRsp;			 /* Circuit Validation Response */
		  													 /* Circuit Validation test  */		  
   } m;
} SiAllPdus;



#endif

