///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2018 Ericsson Telecom AB
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
///////////////////////////////////////////////////////////////////////////////
//
//  File:          DSS1_Types.ttcn
//  Description:   Layer 3 protocol for ISDN
//
//  References:    13/155 17-CRT 288 01 Uen Rev. C
//                  DSS1 LAYER 3 PROTOCOL SPECIFICATION, MESSAGES AND
//                  INFORMATION ELEMENTS FOR BOTH BASIC CALL AND SUPPLEMENTARY 
//                  SERVICE CONTROL, ISDN-E 
//  Rev:          R3C
//  Prodnr:       CNL 113 435
//  Updated:      2012-06-27
//  Contact:      http://ttcn.ericsson.se
//

module DSS1_Types
{

//=========================================================================
// Import Part
//=========================================================================
import from General_Types all;

//=========================================================================
// External functions
//=========================================================================
external function enc_PDU_DSS1(in PDU_DSS1 pdu) return octetstring
 with { extension "prototype(convert) encode(RAW)" };
 
external function dec_PDU_DSS1(in octetstring stream) return PDU_DSS1
 with { extension "prototype(convert) decode(RAW)" };
 
external function enc_PDU_DSS1_fast(in PDU_DSS1 pdu, out octetstring stream)
 with { extension "prototype(fast) encode(RAW)" }; 
 
external function dec_PDU_DSS1_backtrack(in octetstring stream,out PDU_DSS1 pdu) return integer
 with { extension "prototype(backtrack) decode(RAW)" };

type charstring DSS1_NumberDigits ("0".."9");

//=========================================================================
// Module Parameters
//=========================================================================

// Insert module parameters here if applicable!
// You can use the module_param skeleton!

//=========================================================================
// Data Types
//=========================================================================
//****************************************************************************
// -- Data type elements used generally 
//****************************************************************************
type record DSS1_NumberTypeETC {
  BIT4  numberingPlanIdentification,
        // '0000'B Unknown
        // '0001'B ISDN/telephony numbering plan (E.164)
        // '0011'B Data numbering plan (X.121)
        // '1000'B National standard numbering plan
        // '1001'B Private numbering plan
  BIT3  typeOfNumber, 
        // '000'B unknown
        // '001'B international number
        // '010'B national number
        // '011'B network-specific number
        // '100'B subscriber number
  BIT1  ext1,
  BIT2  screeningIndicator               optional,
        // '00'B User_provided, not screened
        // '01'B User_provided, verified and passed
        // '10'B User_provided, verified and failed
        // '11'B Network provided
  BIT3  spare1_3                         optional,
        // '000'B
  BIT2  presentationIndicator            optional,
        // '00'B Presentation allowed
        // '01'B Presentation restricted
        // '10'B Number not available due to interworking
        // '11'B Reserved
  BIT1  ext2                             optional
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_NumberType {
  BIT4  numberingPlanIdentification,
        // '0000'B Unknown
        // '0001'B ISDN/telephony numbering plan (E.164)
        // '0011'B Data numbering plan (X.121)
        // '1000'B National standard numbering plan
        // '1001'B Private numbering plan
  BIT3  typeOfNumber, 
        // '000'B unknown
        // '001'B international number
        // '010'B national number
        // '011'B network-specific number
        // '100'B subscriber number
  BIT1  ext1
} with { variant "EXTENSION_BIT (yes)"};

//****************************************************************************
// 5.3. Call reference 
//****************************************************************************
type union DSS1_CallReference {
  DSS1_DummyCR        dummy_CR,
  DSS1_OneOctetCR     oneOctetCR,
  DSS1_TwoOctetCR     twoOctetCR                   
} with { variant "TAG(dummy_CR, callReferenceLength = '0000'B;
                      oneOctetCR, callReferenceLength = '0001'B;
                      twoOctetCR, callReferenceLength = '0010'B)"};

type record DSS1_DummyCR {
  BIT4  callReferenceLength, //     '0000'B
  BIT4  spare                // '0000'B
} with { variant ""};

type record DSS1_OneOctetCR {
  BIT4  callReferenceLength, //      '0001'B
  BIT4  spare,               // '0000'B
  BIT7  callReferenceValue, 
  BIT1  callReferenceFlag    // '0'B: sent from originating side
} with { variant ""};

type record DSS1_TwoOctetCR {
  BIT4  callReferenceLength, //     '0010'B
  BIT4  spare,               // '0000'B
  BIT7  callReferenceValue_upper, 
  BIT1  callReference_flag,  // '0'B: sent from originating side
  BIT8  callReferenceValue_lower 
} with { variant ""};

//****************************************************************************
// 5.5.3; 5.5.4  Shift
//****************************************************************************
type record DSS1_Shift {
  BIT3  newCodesetIdentification,
  BIT1  lockingIndication,
        // '0'B locking shift
        // '1'B non-locking shift
  BIT4  elementIdentifier  ('1001'B)
} with { variant "PRESENCE (elementIdentifier = '1001'B)"};

//****************************************************************************
// 5.5.5 Bearer Capacity
//****************************************************************************
type record DSS1_BC_octet7 {
  BIT5  userInformationLayer3Protocol,
        // '00010'B Rec. Q.931 (I.451)
        // '00110'B Rec. X.25 packet layer
        // '00110'B  rec. X.25, level link
  BIT2  layerId     ('11'B),
  BIT1  extension7  ('1'B)
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_BC_octet6 {
  BIT5  userInformationLayer2Protocol,
        // '00010'B Rec. Q.921 (I.441)
        // '00110'B CCITT Rec. X.25 link level
  BIT2  layerId     ('10'B),
  BIT1  extension6  ('1'B)
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_BC_octet5 {
  // OCTET 5:
  BIT5  userInformationLayer1Protocol,
        // '00001'B CCITT standardized Rate adaption V.110/X.30.
        // '00011'B Rec. G.711 A-law
        // '00100'B Rec. G.721 32 kbit/s ADPCM and Rec. I.460
        // '00101'B Rec. H.221 and H.242
        // '00110'B Rec. H.223 and H.245
        // '00111'B Non-CCITT standardized rate adaption.
        // '01001'B CCITT standardized rate adaption X.31 HDLC flag stuffing
  BIT2  layerId       ('01'B), 
  BIT1  extension5, 
        // '0'B (octet 5a following) or '1'B
  
  // OCTET 5a:
  BIT5  userRate                    optional, 
        // '00000'B Rate is indicated by E-bits or may be negotiated in-band
        // '00001'B 0.6 Rec. V.6, X.1
        // '00010'B 1.2 Rec. V.6
        // '00011'B 2.4 Rec. V.6, X.1
        // '00100'B 3.6 Rec. V.6
        // '00101'B 4.8 Rec. V.6, X.1
        // '00110'B 7.2 Rec. V.6
        // '00111'B 8 Rec. I.460
        // '01000'B 9.6 Rec. V.6, X.1
        // '01001'B 14.4 Rec. V.6
        // '01010'B 16 Rec. I.420
        // '01011'B 19.2 Rec. V.6
        // '01100'B 32 Rec. I.460
        // '01101'B 38.4
        // '01110'B 48 Rec. V.6, X.1
        // '01111'B 56 Rec. V.6
        // '10000'B 64 Rec. X.1
        // '10001'B 38.4 Rec. V.14 extended
        // '10010'B 57.6 Rec. V.14 extended
        // '10101'B 0.1345 Rec. X.1
        // '10110'B 0.100 Rec. X.1
        // '10111'B 0.075/1.2 Rec. V.6, X.1 (Note 1)
        // '11000'B 1.2/0.075 Rec. V.6, X.1 (Note 1)
        // '11001'B 0.050 Rec. V.6, X.1
        // '11010'B  0.075 Rec. V.6, X.1
        // '11011'B  0.110 Rec. V.6, X.1
        // '11100'B  0.150 Rec. V.6, X.1
        // '11101'B  0.200 Rec. V.6, X.1
        // '11110'B  0.300 Rec. V.6, X.1
        // '11111'B  12 Rec. V.6
  BIT1  negotiation                 optional,
        // '0'B In-band negotiation not possible
        // '1'B In-band negotiation possible
  BIT1  synchronous_asynchronous    optional, 
        // '0'B synchronous 
        // '1'B asynchronous
  BIT1  extension5a                 optional,
  
  // OCTET 5b:
  BIT1  spare5b                     optional,
  BIT1  flowContrlOnRX              optional,   
        // '0'B not accepted  
        // '1'B accepted
  BIT1  flowContrlOnTX              optional,   
        // '0'B not required
        // '1'B required
  BIT1  networkIndependentClockOnRX optional,   
        // '0'B not accepted
        // '1'B accepted
  BIT1  networkIndependentClockOnTX optional,   
        // '0'B not required
        // '1'B required
  BIT2  intermediateRate            optional,
        // '00'B not used
        // '01'B 8 kbit/s
        // '10'B 16 kbit/s
        // '11'B 32 kbit/s
  BIT1  extension5b                 optional,
  
  // OCTET 5c:
  BIT3  parity                      optional, 
        // '000'B odd
        // '010'B even
        // '011'B none
        // '100'B forced to 0
        // '101'B forced to 1
  BIT2  numberOfDataBits            optional, 
        // '00'B Not used
        // '01'B 5 bits
        // '10'B 7 bits
        // '11'B 8 bits
  BIT2  numberOfStopBits            optional, 
        // '00'B Not used
        // '01'B 1 bit
        // '10'B 1.5 bit
        // '11'B 2 bits
  BIT1  extension5c                 optional,
  
  // OCTET 5d:
  BIT6  modemType                   optional, 
        // '000000
        //  through National use
        // '000101
        // '010001 Rec. V.21
        // '010010 Rec. V.22
        // '010011 Rec. V.22 bis
        // '010100 Rec. V.23
        // '010101 Rec. V.26
        // '010110 Rec. V.26 bis
        // '010111 Rec. V.26 ter
        // '011000 Rec. V.27
        // '011001 Rec. V.27 bis
        // '011010 Rec. V.27 ter
        // '011011 Rec. V.29
        // '011100 Rec. V.32
        // '100000
        //  through National use
        // '101111
        // '110000
        //   through  User specified
        // '111111  
  BIT1  duplexMode                  optional, 
        // '0'B Half duplex
        // '1'B Full duplex
  BIT1  extension_octet_5d          optional
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_BC_octet4 {
  BIT5  informationTransferRate,
        // '00000'B Used for packet-mode calls
        // '10000'B 64 kbit/s
        // '10001'B 2 x 64 kbit/
        // '10011'B 384 kbit/s
        // '10101'B 1536 kbit/s
        // '10111'B 1920 kbit/s
        // '11000'B multirate 
  BIT2  transferMode, 
        // '00'B circuit mode
        // '10'B packet  mode
  BIT1  extension4,
  BIT2  establishment  optional,
  BIT2  configuration  optional, 
  BIT3  structure      optional, 
  BIT1  extension4a    optional,
  BIT5  informationTransferRateDestination_Origination optional, 
  BIT2  symmetry       optional, 
  BIT1  extension4b    optional,
  BIT7  rateMultiplier optional,
  BIT1  extension4_1   optional
} with {variant "EXTENSION_BIT_GROUP (yes,informationTransferRate,extension4b)";
        variant (rateMultiplier) "PRESENCE(informationTransferRate ='11000'B)";
        variant (extension4_1) "PRESENCE(informationTransferRate ='11000'B)";};

type record DSS1_BC_octet3 {
  BIT5  informationTransferCapability, 
        // '00000'B Speech
        // '01000'B Unrestricted digital information
        // '01001'B Restricted digital information 
        // '10000'B 3.1 kHz audio
        // '10001'B Unrestricted digital information with tones/announcements
        // '11000'B Video
  BIT2  codingStandard     ('00'B), 
        // '00'B  CCITT Standardized coding 
  BIT1  extension3         ('1'B)   
} with { variant "EXTENSION_BIT (yes)"};


type record DSS1_BearerCapability {
  OCT1           elementIdentifier       ('04'O),
  LIN1           lengthIndicator, //        (1..11),
  DSS1_BC_octet3 octet3,              // 1 octet
  DSS1_BC_octet4 octet4,              // 1-4 octets
  DSS1_BC_octet5 octet5   optional,   // 1-3 octets
  DSS1_BC_octet6 octet6   optional,   // 1-8 octets
  DSS1_BC_octet7 octet7   optional    // 1 octet
} with { variant "TAG (octet5, layerId = '01'B;
                       octet6, layerId = '10'B;
                       octet7, layerId = '11'B;)"
         variant (lengthIndicator) "LENGTHTO (octet3, octet4, octet5, octet6,
                                              octet7)";
         variant "PRESENCE (elementIdentifier = '04'O)";};

//****************************************************************************
//5.5.6 Call Identity
//****************************************************************************
type record DSS1_CallIdentity {
  OCT1  elementIdentifier       ('10'O),
  LIN1  lengthIndicator, //         (1..8),
  OCTN  callIdentityPattern     optional
} with { variant (lengthIndicator) "LENGTHTO (callIdentityPattern)";
         variant "PRESENCE (elementIdentifier = '10'O)";};

//****************************************************************************
//5.5.7 Call State
//****************************************************************************
type record DSS1_CallState {
  OCT1  elementIdentifier       ('14'O),
  LIN1  lengthIndicator, //            (1),
  BIT6  callStateValue, 
  BIT2  codingStandard          ('00'B)
        // '00'B CCITT Standardized coding
} with { variant (lengthIndicator) "LENGTHTO (callStateValue,codingStandard)";
         variant "PRESENCE (elementIdentifier = '14'O)";};

//****************************************************************************
//5.5.8 Called Number
//****************************************************************************
type record DSS1_CalledNumber {
  OCT1              elementIdentifier       ('70'O),
  LIN1              lengthIndicator, //        (1..21),
  DSS1_NumberType   oct3,
  DSS1_NumberDigits digits     optional
} with { variant (lengthIndicator) "LENGTHTO (oct3,digits)";
         variant "PRESENCE (elementIdentifier = '70'O)";};

type set of  DSS1_CalledNumber DSS1_CalledNumber_list with { variant ""};

//****************************************************************************
//5.5.9 Called Party Subaddress
//****************************************************************************
type record DSS1_CalledSubaddress {
  OCT1  elementIdentifier      ('71'O),
  LIN1  lengthIndicator, //       (1..21),
  BIT3  spare1_3     ('000'B)   optional, 
  BIT1  oddEvenIndicator        optional,
        // '0'B even number of digits address
        // '1'B odd  number of address digits
  BIT3  typeOfSubaddress        optional, 
        // '000'B... NSAP
        // '010'B... user specified
  BIT1  ext1        ('1'B)      optional, 
  OCTN  subaddressInformation   optional
} with { variant (lengthIndicator) "LENGTHTO (spare1_3, oddEvenIndicator,
                                              typeOfSubaddress, ext1,
                                              subaddressInformation)";
         variant "PRESENCE (elementIdentifier = '71'O)"; };

//****************************************************************************
//5.5.10 Calling Party Number
//****************************************************************************
type record DSS1_CallingNumber {
  OCT1               elementIdentifier      ('6C'O),
  LIN1               lengthIndicator, //       (1..22),
  DSS1_NumberTypeETC oct3,
  DSS1_NumberDigits  digits     optional
} with { variant (lengthIndicator) "LENGTHTO (oct3,digits)";
         variant "PRESENCE (elementIdentifier = '6C'O)";};

type set of  DSS1_CallingNumber DSS1_CallingNumber_list with { variant ""};

//****************************************************************************
//5.5.11 Calling Party Subaddress
//****************************************************************************
type record DSS1_CallingSubaddress {
  OCT1  elementIdentifier      ('6D'O),
  LIN1  lengthIndicator, //       (1..21),
  BIT3  spare1_3     ('000'B)   optional, 
  BIT1  oddEvenIndicator        optional,
        // '0'B even number of digits address
        // '1'B odd  number of address digits
  BIT3  typeOfSubaddress        optional, 
        // '000'B... NSAP
        // '010'B... user specified
  BIT1  ext1        ('1'B)      optional, 
  OCTN  subaddressInformation   optional
} with { variant (lengthIndicator) "LENGTHTO (spare1_3, oddEvenIndicator,
                                              typeOfSubaddress, ext1, 
                                              subaddressInformation)";
         variant "PRESENCE (elementIdentifier = '6D'O)" };
           
//****************************************************************************
//5.5.12 Cause
//****************************************************************************
type record DSS1_Cause_oct3 {
  BIT4  location,   
        // '0000'B user
        // '0001'B private network, local user
        // '0010'B public  network, local user
        // '0011'B transit network
        // '0100'B public  network, remote user
        // '0101'B private network, remote user
        // '0111'B international network
        // '1010'B network beyond interworking point
  BIT1  spare3                ('0'B),
  BIT2  codingStandard, // '00'B coding according Q.931
        // '01'B reserved for standards  other
        // '10'B National standard
        // '11'B standard  other  (e.g. one defined for GSM PLMNs)
  BIT1  ext1, // '0'B or '1'B
  // OCTET 3A:
  BIT7  recommendation               optional,
  BIT1  ext2                         optional
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_Cause {
  OCT1             elementIdentifier      ('08'O),
  LIN1             lengthIndicator, //      (1..30),
  DSS1_Cause_oct3  oct3,
  BIT7             causeValue,
  BIT1             ext3                   ('1'B),
  octetstring  diagnostics length (0..27) optional
} with { variant (lengthIndicator) "LENGTHTO (oct3, causeValue, ext3, 
                                              diagnostics)";
         variant "PRESENCE (elementIdentifier = '08'O)";};

type set of  DSS1_Cause DSS1_Cause_list with { variant ""};

//****************************************************************************
// 5.5.13 Channel identification
//****************************************************************************
type record DSS1_ChannelIdentification {
  OCT1  elementIdentifier      ('18'O),
  LIN1  lengthIndicator, //       (1..32),
  BIT2  informationChannelSelection,
        //        Basic interface  Primary interface 
        // '00'B   no channel       no channel
        // '01'B   B1 channel       as indicated in following octets
        // '10'B   B2 channel       reserved
        // '11'B   any channel      any channel
  BIT1  dChannelIndicator,
        // '0'B The channel identified is not the D-channel
        // '1'B The channel identified is the D-channel
  BIT1  preferredExclusive,
        // '0'B the indicated channel is preferred
        // '1'B exclusive: only the indicated channel is acceptable  
  BIT1  spare                 ('0'B),
  BIT1  interfaceType,
        // '0'B basic interface
        // '1'B primary rate
  BIT1  interfaceIdentifierPresent,
        // '0 Interface implicitly identified
        // '1 Interface explicitly identified octet(s) beginning with octet 3.1
  BIT1  extension3             ('1'B),
  BIT7  interfaceIdentifier optional,
  BIT1  extension3_1           ('1'B) optional,
  BIT4  channelType               optional,
        // '0011'B B-channel units
  BIT1  number                    optional,
        // '0'B channel is indicated by the number in the following octet
  BIT2  codingStandard   ('00'B)  optional,
        // '00 CCITT standardized coding
  BIT1  extension3_2      ('1'B)  optional,
  OCTN  channelNumber             optional
} with { variant (interfaceIdentifier) 
		                "PRESENCE (interfaceIdentifierPresent = '1'B)";
	 variant (extension3_1) "PRESENCE (interfaceIdentifierPresent = '1'B)";
	 variant (lengthIndicator) "LENGTHTO(informationChannelSelection,
                                             dChannelIndicator,
                                             preferredExclusive,spare,
                                             interfaceType,
                                             interfaceIdentifierPresent,
                                             extension3,interfaceIdentifier,
                                             extension3_1,channelType,number,
                                             codingStandard,extension3_2,
                                             channelNumber)";
         variant "PRESENCE (elementIdentifier = '18'O)"; };

type set of DSS1_ChannelIdentification DSS1_ChannelIdentification_list 
 with {variant ""};

//****************************************************************************
//5.5.14 Charge advice
//****************************************************************************
type record DSS1_ChargeAdvice {
  DSS1_Shift shiftToCodeset5,
  OCT1  elementIdentifier      ('1A'O),
  LIN1  lengthIndicator, //       (2..6),
  BIT3  typeOfCharging, 
        // '010'B Charging on answer
        // '011'B Charge increment
        // '100'B Total charge
  BIT1  spare                  ('0'B), 
  BIT1  standard, 
        // '0'B National standard
        // '1'B CEPT standard  
  BIT2  codingStandard         ('10'B),
        // '10'B National standard
  BIT1  extension3,
  BIT7  chargingPeriod          optional,
        // '0001000'B 0.1 seconds
        // '0001001'B 1 second
        // '0001010'B 10 seconds
        // '0001011'B 1 minute  
  BIT1  extension3a            optional,
  OCTN  chargingUnits
} with { variant "EXTENSION_BIT_GROUP(yes,typeOfCharging,extension3a)";
         variant (lengthIndicator) "LENGTHTO(typeOfCharging,spare,standard,
			                     codingStandard,extension3,
                                             chargingPeriod,extension3a,
			                     chargingUnits)";
         variant "PRESENCE (elementIdentifier = '1A'O)";}

//****************************************************************************
//5.5.15 Congestion level
//****************************************************************************
type record DSS1_CongestionLevel {
  BIT4  congestionLevel    ('0000'B, '1111'B), 
        // '0000'B receiver ready
        // '1111'B receiver not ready 
  BIT4  elementIdentifier     ('1011'B)
} with { variant "" };

//****************************************************************************
//5.5.16 Connected Number
//****************************************************************************
type record DSS1_ConnectedNumber {
  OCT1               elementIdentifier  ('4C'O),
  LIN1               lengthIndicator, //   (1..22),
  DSS1_NumberTypeETC oct3,
  DSS1_NumberDigits  digits             optional
} with { variant (lengthIndicator) "LENGTHTO (oct3,digits)";
         variant "PRESENCE (elementIdentifier = '4C'O)";};

//****************************************************************************
//5.6.17 Connected subaddress
//****************************************************************************
type record DSS1_ConnectedSubaddress {
  OCT1  elementIdentifier       ('4D'O),
  LIN1  lengthIndicator, //        (1..21),
  BIT3  spare1_3                ('000'B), 
  BIT1  oddEvenIndicator,
        // '0'B even number of digits address
        // '1'B odd  number of address digits
  BIT3  typeOfSubaddress, 
        // '000'B... NSAP
        // '010'B... user specified
  BIT1  ext1                    ('1'B), 
  OCTN  subaddressInformation   optional
} with { variant (lengthIndicator) "LENGTHTO (spare1_3,oddEvenIndicator,
                                              typeOfSubaddress,ext1,
                                              subaddressInformation)";
         variant "PRESENCE (elementIdentifier = '4D'O)"};

//****************************************************************************
//5.5.18 Date/time
//****************************************************************************
type record DSS1_DateTime {
  OCT1  elementIdentifier   ('29'O),
  LIN1  lengthIndicator, //    (3..6),
  BIT8  year,
  BIT8  month,
  BIT8  day,
  BIT8  hour   optional,
  BIT8  minute optional,
  BIT8  second optional
} with { variant (lengthIndicator) "LENGTHTO (year, month, day,
                                              hour,minute,second)";
         variant "PRESENCE (elementIdentifier = '29'O)";};

//****************************************************************************
// 5.5.19 Display
//****************************************************************************
type record DSS1_Display {
  OCT1         elementIdentifier   ('28'O),
  LIN1         lengthIndicator, //    (1..80),
  charstring   displayInformation    
} with { variant (lengthIndicator) "LENGTHTO (displayInformation)";
         variant "PRESENCE (elementIdentifier = '28'O)";};

//****************************************************************************
// 5.5.20 Extended facility
//****************************************************************************
type record DSS1_ExtendedFacility {
  OCT1  elementIdentifier   ('0D'O),
  INT7b lengthOfLength,    
  BIT1  alwaysOne           ('1'B),
  LIN2  lengthIndicator,
  BIT5  protocolProfile,
  BIT2  spare               ('00'B),
  BIT1  extension1          ('1'B),
  OCTN  components
} with { variant (lengthOfLength) "LENGTHTO(lengthIndicator)";
         variant (lengthIndicator) "LENGTHTO(protocolProfile,spare,extension1,
                                             components)";
         variant "PRESENCE (elementIdentifier = '0D'O)";};

type set of  DSS1_ExtendedFacility   DSS1_ExtendedFacility_list
 with { variant ""};

//****************************************************************************
// 5.5.21  Facility
//****************************************************************************
type record DSS1_Facility {
  OCT1  elementIdentifier   ('1C'O),
  LIN1  lengthIndicator,
  BIT5  protocolProfile,
        // '10001'B Remote operations protocol
        // '11111'B Networking Extensions (VPN)
  BIT2  spare              ('00'B),  
  BIT1  extension1         ('1'B),
  OCTN  components
} with { variant (lengthIndicator) "LENGTHTO(protocolProfile,spare,extension1,
                                             components)";
          variant "PRESENCE (elementIdentifier = '1C'O)";};

type set of  DSS1_Facility   DSS1_Facility_list with { variant ""};

//****************************************************************************
// 5.5.22 High Layer Compatibility
//****************************************************************************
type record DSS1_HLC_octet3 {
  BIT2  presentationMethod, 
        // '00'B High layer protocol profile
  BIT3  interpretation,
        // '000'B First HLC identification (in octet 4) to be used in the call.
  BIT2  codingStandard,
        // '00'B CCITT standardized coding
        // '01'B reserved for ISO/IEC standards
        // '10'B National standard
        // '11'B Standard defined for the network  
  BIT1  extension_octet_3 //  '1'B  octet4 should follow
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_HLC_octet4 {
  BIT7  highLayerCharId,
  BIT1  extension_octet_4,
  //OCTET 4a:
  BIT7  extendedHighLayerCharId optional,
  BIT1  extension_octet_4a      optional // '1'B
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_HighLayerCompatibility {
  OCT1             elementIdentifier   ('7D'O),
  LIN1             lengthIndicator, //    (2..3),
  DSS1_HLC_octet3  octet3 optional, 
  DSS1_HLC_octet4  octet4 optional // if octet3 present, octet4 must also be 
} with { variant (lengthIndicator) "LENGTHTO (octet3, octet4)";
         variant "PRESENCE (elementIdentifier = '7D'O)";};

type set of  DSS1_HighLayerCompatibility   DSS1_HighLayerCompatibility_list 
  with { variant ""};

//****************************************************************************
// 5.5.23  ISPBX additional information
//****************************************************************************
type record DSS1_ISPBXAdditionalInfo {
  DSS1_Shift shiftToCodeset6,
  OCT1  elementIdentifier   ('01'O),
  LIN1  lengthIndicator, //    (1),
  BIT2  typeOfCharging,
        // '00'B Charging group
        // '01'B Charging on line
        // '10'B Reserved
        // '11'B Not relevant
  BIT2  classOfCall,
        // '00'B Intrasubscriber
        // '01'B Public Network  
  BIT3  spare              ('000'B),
  BIT1  extension3         ('1'B)
} with { variant (lengthIndicator) "LENGTHTO (typeOfCharging,classOfCall,
                                              spare,extension3)";
         variant "PRESENCE (elementIdentifier = '01'O)";};

//****************************************************************************
// 5.5.24 Keypad Facility
//****************************************************************************
type record  DSS1_KeypadFacility {
  OCT1        elementIdentifier   ('2C'O),
  LIN1        lengthIndicator, //   (0..32),
  charstring  keypadInformation
} with { variant (lengthIndicator) "LENGTHTO (keypadInformation)";
         variant "PRESENCE (elementIdentifier = '2C'O)";};

//****************************************************************************
//5.5.25 Low Layer Compatibility
//****************************************************************************
type record DSS1_LLC_octet3 {
  BIT5  informationTransferCapability,
        // '00000'B Speech
        // '01000'B Unrestricted digital information
        // '01001'B Restricted digital information
        // '10000'B 3.1 kHz audio
        // '10001'B Unrestricted digital information with tones/announcements
        // '11000'B Video
  BIT2  codingStandard,
        // '00'B CCITT standardized coding
        // '01'B reserved for ISO/IEC standards
        // '10'B National standard
        // '11'B Standard defined for the network  
  BIT1  extension_3, 
  BIT6  spare6      ('000000'B)      optional,
  BIT1  negotiationIndicator         optional,
        // '0'B Out-band negotiation not possible
        // '1'B Out-band negotiation possible  
  BIT1  extension_3a                 optional
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_LLC_octet4 {
  BIT5 informationTransferRate,
       // '00000'B Used for packet-mode calls
       // '10000'B 64 kbit/s
       // '10001'B 2 x 64 kbit/
       // '10011'B 384 kbit/s
       // '10101'B 1536 kbit/s
       // '10111'B 1920 kbit/s
       // '11000'B multirate 
  BIT2  transferMode, 
       // '00'B circuit mode
       // '10'B packet  mode
  BIT1  extension4,
  BIT7  rateMultiplier   optional,
  BIT1  extension4_1     optional
} with { variant "EXTENSION_BIT (yes)";
	 variant (rateMultiplier)"PRESENCE (informationTransferRate='11000'B)";
	 variant (extension4_1)  "PRESENCE (informationTransferRate='11000'B)"};

type record DSS1_LLC_octet5 {
  // OCTET 5:
  BIT5  userInformationLayer1Protocol,
       // '00001'B CCITT standardized Rate adaption V.110/X.30.
       // '00010'B Rec. G.711 u-law
       // '00011'B Rec. G.711 A-law
       // '00100'B Rec. G.721 32 kbit/s ADPCM and Rec. I.460
       // '00101'B Rec. H.221 and H.242
       // '00110'B Rec. H.223 and H.245
       // '00111'B Non-CCITT standardized rate adaption.
       // '01000'B CCITT standardized rate adaption V.120
       // '01001'B CCITT standardized rate adaption X.31 HDLC flag stuffing
  BIT2  layerId, 
       // '01'B identifier octet
  BIT1  extension5, 
       // '0'B (octet 5a following) or '1'B
  
  // OCTET 5a:
  BIT5  userRate                    optional, 
        // '00000'B Rate is indicated by E-bits or may be negotiated in-band
        // '00001'B 0.6 kbit/s Rec. V.6, X.1
        // '00010'B 1.2 kbit/s Rec. V.6
        // '00011'B 2.4 kbit/s Rec. V.6, X.1
        // '00100'B 3.6 kbit/s Rec. V.6
        // '00101'B 4.8 kbit/s Rec. V.6, X.1
        // '00110'B 7.2 kbit/s Rec. V.6
        // '00111'B 8 kbit/s Rec. I.460
        // '01000'B 9.6 kbit/s Rec. V.6, X.1
        // '01001'B 14.4 kbit/s Rec. V.6
        // '01010'B 16 kbit/s Rec. I.420
        // '01011'B 19.2 kbit/s Rec. V.6
        // '01100'B 32 kbit/s Rec. I.460
        // '01101'B 38.4 kbit/s
        // '01110'B 48 kbit/s Rec. V.6, X.1
        // '01111'B 56 kbit/s Rec. V.6
        // '10000'B 64 kbit/s Rec. X.1
        // '10001'B 38.4 kbit/s Rec. V.14 extended
        // '10010'B 57.6 kbit/s Rec. V.14 extended
        // '10101'B 0.1345 kbit/s Rec. X.1
        // '10110'B 0.100 kbit/s Rec. X.1
        // '10111'B 0.075/1.2 kbit/s Rec. V.6, X.1 (Note 1)
        // '11000'B 1.2/0.075 kbit/s Rec. V.6, X.1 (Note 1)
        // '11001'B 0.050 kbit/s Rec. V.6, X.1
        // '11010'B  0.075 kbit/s Rec. V.6, X.1
        // '11011'B  0.110 kbit/s Rec. V.6, X.1
        // '11100'B  0.150 kbit/s Rec. V.6, X.1
        // '11101'B  0.200 kbit/s Rec. V.6, X.1
        // '11110'B  0.300 kbit/s Rec. V.6, X.1
        // '11111'B  12 kbit/s Rec. V.6
  BIT1  negotiation                 optional,
        // '0'B In-band negotiation not possible
        // '1'B In-band negotiation possible
  BIT1  synchronous_asynchronous    optional, 
        // '0'B synchronous 
        // '1'B asynchronous
  BIT1  extension5a                 optional,
  
  // OCTET 5b:
  BIT1  spare5b   ('0'B)            optional,
  BIT1  bit2                        optional,
  BIT1  bit3                        optional,
  BIT1  bit4                        optional,
  BIT1  bit5                        optional,
  BIT1  bit6                        optional,
  BIT1  bit7                        optional,
  BIT1  extension5b                 optional,

  // OCTET 5c:
  BIT3  parity                      optional, 
        // '000'B odd
        // '010'B even
        // '011'B none
        // '100'B forced to 0
        // '101'B forced to 1
  BIT2  numberOfDataBits            optional, 
        // '00'B Not used
        // '01'B 5 bits
        // '10'B 7 bits
        // '11'B 8 bits
  BIT2  numberOfStopBits            optional, 
        // '00'B Not used
        // '01'B 1 bit
        // '10'B 1.5 bit
        // '11'B 2 bits
  BIT1  extension5c                 optional,
  
  // OCTET 5d:
  BIT6  modemType                   optional, 
        // '000000
        //  through National use
        // '000101
        // '010001 Rec. V.21
        // '010010 Rec. V.22
        // '010011 Rec. V.22 bis
        // '010100 Rec. V.23
        // '010101 Rec. V.26
        // '010110 Rec. V.26 bis
        // '010111 Rec. V.26 ter
        // '011000 Rec. V.27
        // '011001 Rec. V.27 bis
        // '011010 Rec. V.27 ter
        // '011011 Rec. V.29
        // '011100 Rec. V.32
        // '100000
        //  through National use
        // '101111
        // '110000
        //   through  User specified
        // '111111  
  BIT1  duplexMode                  optional, 
        // '0'B Half duplex
        // '1'B Full duplex
  BIT1  extension_octet_5d          optional
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_LLC_octet6a_user {
  BIT7  userSpecifiedLayer2information,
  BIT1  extension6a
} with { variant ""};

type record DSS1_LLC_octet6a_other {
  BIT2  q933Use,   
        // '00'B For use when coding defined in Rec. Q.933 is not used
  BIT3  spare6a        ('000'B),
  BIT2  modeOfOperation,   
        // '01'B Normal mode of operation
        // '10'B Extended mode of operation   
  BIT1  extension6a,
  BIT7  windowSize       optional,
  BIT1  extension6b      optional
} with { variant "EXTENSION_BIT (yes)"};

type union DSS1_LLC_octet6a {
  DSS1_LLC_octet6a_user    octet6a_user,
  DSS1_LLC_octet6a_other   octet6a_other
} with { variant ""};

type record DSS1_LLC_octet6 {
  BIT5  userInformationLayer2Protocol,
        // '00001'B Basic mode ISO 1745
        // '00010'B CCITT Rec. Q.921 (I.441)
        // '00110'B CCITT Rec. X.25 link layer
        // '00111'B CCITT Rec. X.25 Multilink
        // '01000'B Extented LAPB; for half duplex operation (T.71)
        // '01001'B HDLC ARM (ISO 4335)
        // '01010'B HDLC NRM (ISO 4335)
        // '01011'B HDLC ABM (ISO 4335)
        // '01100'B LAN Logical link control (ISO 8802/2)
        // '01101'B CCITT Rec. X.75 Single Link Procedure SLP
        // '01110'B CCITT Rec. Q.922
        // '01111'B Core aspects of CCITT Rec. Q.922
        // '10000'B User specified
        // '10001'B ISO 7776 DTE - DTE operation  
  BIT2  layerId, // '10'B  identifier  octet
  BIT1  extension6,  // '1'B,
  // OCTET 6a-b:
  DSS1_LLC_octet6a  octet6a   optional
} with { variant "EXTENSION_BIT (yes)";
         variant (octet6a) 
              "CROSSTAG(octet6a_other,{userInformationLayer2Protocol='00001'B,
                                       userInformationLayer2Protocol='00010'B,
                                       userInformationLayer2Protocol='00110'B,
                                       userInformationLayer2Protocol='00111'B,
                                       userInformationLayer2Protocol='01000'B,
                                       userInformationLayer2Protocol='01001'B,
                                       userInformationLayer2Protocol='01010'B,
                                       userInformationLayer2Protocol='01011'B,
                                       userInformationLayer2Protocol='01100'B,
                                       userInformationLayer2Protocol='01101'B,
                                       userInformationLayer2Protocol='01110'B,
                                       userInformationLayer2Protocol='01111'B,
                                       userInformationLayer2Protocol='10001'B};
                        octet6a_user,  userInformationLayer2Protocol='10000'B)"
       };

type record DSS1_LLC_octet7a_user {
  BIT7  userSpecifiedLayer3information,
  BIT1  extension7a
} with { variant ""};

type record DSS1_LLC_octet7a_other {
  BIT5  spare7a   ('00000'B),
  BIT2  modeOfOperation,   
        // '01'B Normal packet sequence numbering
        // '10'B Extended packet sequence numbering 
  BIT1  extension7a,
  // OCTET 7b:
  BIT4  defaultPacketSize optional,
        // '0100'B Default packet size 16 octets
        // '0101'B Default packet size 32 octets
        // '0110'B Default packet size 64 octets
        // '0111'B Default packet size 128 octets
        // '1000'B Default packet size 256 octets
        // '1001'B Default packet size 512 octets
        // '1010'B Default packet size 1024 octets
        // '1011'B Default packet size 2048 octets
        // '1100'B Default packet size 4096 octets  
  BIT4  spare7b ('0000'B) optional,
  BIT1  extension7b       optional,
  // OCTET 7c:
  BIT7  packetWindowSize  optional,
  BIT1  extension7c       optional
} with { variant "EXTENSION_BIT (yes)"};

type union DSS1_LLC_octet7a {
  DSS1_LLC_octet7a_user    octet7a_user,
  DSS1_LLC_octet7a_other   octet7a_other
} with { variant ""};

type record DSS1_LLC_octet7 {
  BIT5  userInformationLayer3Protocol,
        // '00010'B CCITT Rec. Q.931 (I.451)
        // '00110'B CCITT Rec. X.25, packet layer (Note 2)
        // '00111'B ISO 8208 (X.25 packet level protocol for data terminal equ.)
        // '01000'B X.223/ISO 8878 use of ISO/IEC 8208 and CCITT X.25.
        // '01001'B ISO 8473 (OSI connectionless mode protocol)
        // '01010'B CCITT Rec. T.70 minimum network layer
        // '01011'B ISO TR 9577 (non-ISO protocols)
        // '10000'B User specified
  BIT2  layerId   ('11'B),
  BIT1  extension7,
  // OCTET 7a:
  DSS1_LLC_octet7a  octet7a    optional
} with { variant "EXTENSION_BIT (yes)";
         variant (octet7a) 
              "CROSSTAG(octet7a_other,{userInformationLayer3Protocol='00110'B,
                                       userInformationLayer3Protocol='00111'B,
                                       userInformationLayer3Protocol='01000'B};
                        octet7a_user,  userInformationLayer3Protocol='10000'B)"
       };

type record DSS1_LowLayerCompatibility {
  OCT1             elementIdentifier   ('7C'O),
  LIN1             lengthIndicator, //   (2..16),
  DSS1_LLC_octet3  octet3, 
  DSS1_LLC_octet4  octet4, 
  DSS1_LLC_octet5  octet5      optional, 
  DSS1_LLC_octet6  octet6      optional, 
  DSS1_LLC_octet7  octet7      optional 
} with { variant "TAG (octet5, layerId = '01'B;
                       octet6, layerId = '10'B;
                       octet7, layerId = '11'B;)"
         variant (lengthIndicator) "LENGTHTO (octet3,octet4,octet5,
                                              octet6,octet7)";
         variant "PRESENCE (elementIdentifier = '7C'O)";};

//****************************************************************************
// 5.5.26  More data
//****************************************************************************
type record DSS1_MoreData {
  OCT1  elementIdentifier   ('A0'O)
} with { variant "PRESENCE (elementIdentifier = 'A0'O)"};

//****************************************************************************
// 5.5.27  Notification indicator
//****************************************************************************
type record DSS1_NotificationIndicator_3 {
  BIT7  notificationDescription,
        // '0000000'B User suspended
        // '0000001'B User resumed
        // '0000011'B Discriminator for BER encoded notification extension
        // '0000100'B Call completion delay
        // '1000000'B Discriminator for ext. to ASN.1 encoded component for ISO
        // '1000010'B Conference established
        // '1000011'B Conference disconnected
        // '1000100'B Other party added
        // '1000101'B Isolated
        // '1000110'B Reattached
        // '1000111'B Other party isolated
        // '1001000'B Other party reattached
        // '1001001'B Other party split
        // '1001010'B Other party disconnected
        // '1001011'B Conference floating
        // '1100000'B Call is a waiting call
        // '1101000'B Diversion is activated
        // '1101001'B Call transferred, alerting
        // '1101010'B Call transferred, active
        // '1101011'B Call is queued
        // '1111001'B Remote hold
        // '1111010'B Remote retrieval
        // '1111011'B Call is diverting
  BIT1  extension3,
  BIT7  notificationDescription_a    optional,
  BIT1  extension3a                  optional
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_NotificationIndicator {
  OCT1                           elementIdentifier   ('27'O),
  LIN1                           lengthIndicator, //    (1..253),
  DSS1_NotificationIndicator_3   notificationIndicator_3,
  OCTN                           notificationDataStructure       optional
} with { variant (lengthIndicator) "LENGTHTO(notificationIndicator_3,
                                             notificationDataStructure)";
         variant "PRESENCE (elementIdentifier = '27'O)";};

type set of  DSS1_NotificationIndicator  DSS1_NotificationIndicator_list 
  with { variant ""};

//****************************************************************************
// 5.5.28  Progress indicator
//****************************************************************************
type record DSS1_ProgressIndicator {
  OCT1  elementIdentifier   ('1E'O),
  LIN1  lengthIndicator, //    (2),
  BIT4  location,
        // '0000'B User
        // '0001'B Private network serving the local user
        // '0010'B Public network serving the local user
        // '0011'B Transit network
        // '0100'B Public network serving the remote user
        // '0101'B Private network serving the remote user
        // '1010'B Network beyond interworking point
  BIT1  spare              ('0'B),
  BIT2  codingStandard,
        // '00'B CCITT Standardized coding
        // '01'B ISO/IEC 11572 coding standard
  BIT1  extension3         ('1'B),
  BIT7  progressDescription,
        // '0000001'B Call is not end-to-end ISDN
        // '0000010'B Destination address is non-ISDN
        // '0000011'B Origination address is non-ISDN
        // '0000100'B Call has returned to the ISDN
        // '0000101'B Interworking has occurred
        // '0001000'B In-band information now available
        // '0010000'B Interworking with a public network
        // '0010001'B Interworking with a network unable to supply release sign
        // '0010010'B  Interworking with a network unable to
                       // supply a release signal before answer
        // '0010011'B  Interworking with a network unable to
                       // supply a release signal after answer
  BIT1  extension4         ('1'B)
} with { variant (lengthIndicator) "LENGTHTO(location,spare,codingStandard,
                                             extension3,progressDescription,
                                             extension4)";
         variant "PRESENCE (elementIdentifier = '1E'O)"};

type set of DSS1_ProgressIndicator   DSS1_ProgressIndicator_list
 with { variant ""};

//****************************************************************************
// 5.5.29  Redirecting number
//****************************************************************************
type record DSS1_RedirectingNumber_oct3 {
  BIT4  numberingPlanIdentification,
        // '0000'B Unknown
        // '0001'B ISDN/telephony numbering plan (E.164)
        // '0011'B Data numbering plan (X.121)
        // '1000'B National standard numbering plan
        // '1001'B Private numbering plan
  BIT3  typeOfNumber, 
        // '000'B unknown
        // '001'B international number
        // '010'B national number
        // '011'B network-specific number
        // '100'B subscriber number
  BIT1  ext3,
  // OCTET 3a
  BIT5  spare5 ('00000'B)                optional,
  BIT2  presentationIndicator            optional,
        // '00'B Presentation allowed
        // '01'B Presentation restricted
        // '10'B Number not available due to interworking
        // '11'B Reserved
  BIT1  ext3a                            optional,
  // OCTET 3b
  BIT4  reasonForDiversion               optional,
        // '0000'B Unknown
        // '0001'B Call forwarding busy (CFB)
        // '0010'B Call forwarding no reply (CFNR)
        // '1010'B Call deflection (CD)
        // '1111'B Call forwarding unconditional (CFU)  
  BIT3  spare3 ('000'B)                  optional,
  BIT1  ext3b                            optional
} with { variant "EXTENSION_BIT (yes)"};

type record DSS1_RedirectingNumber {
  OCT1                          elementIdentifier   ('74'O),
  LIN1                          lengthIndicator, //    (3..22),
  DSS1_RedirectingNumber_oct3   oct3,
  DSS1_NumberDigits             digits         optional
} with { variant (lengthIndicator) "LENGTHTO (oct3,digits)";
         variant "PRESENCE (elementIdentifier = '74'O)";};

//****************************************************************************
// 5.5.30  Redirection number
//****************************************************************************
type record DSS1_RedirectionNumber {
  OCT1                elementIdentifier   ('76'O),
  LIN1                lengthIndicator, //    (2..24),
  DSS1_NumberTypeETC  oct3,
  DSS1_NumberDigits   digits  optional
} with { variant (lengthIndicator) "LENGTHTO (oct3,digits)";
         variant "PRESENCE (elementIdentifier = '76'O)";};

//****************************************************************************
// 5.5.31  Restart indicator
//****************************************************************************
type record DSS1_RestartIndicator {
  OCT1  elementIdentifier   ('79'O),
  LIN1  lengthIndicator, //    (1),
  BIT3  class,
        // '000'B Indicated channels
        // '110'B Single interface
        // '111'B All interfaces  
  BIT4  spare               ('0000'B),  
  BIT1  extension3          ('1'B)
} with { variant (lengthIndicator) "LENGTHTO (class,spare,extension3)";
         variant "PRESENCE (elementIdentifier = '79'O)";};

//****************************************************************************
// 5.5.32  Segmented Message
//****************************************************************************
type record DSS1_SegmentedMessage {
  OCT1  elementIdentifier   ('00'O),
  LIN1  lengthIndicator, //    (2),
  BIT7  numberOfSegmentsRemaining,
  BIT1  firstSegmentsIndicator,
        // '0'B Subsequent segment to first segment
        // '1'B First segment of segmented message  
  BIT7  segmentedMessageType,  
  BIT1  spare4                  ('0'B)
} with { variant (lengthIndicator) "LENGTHTO (numberOfSegmentsRemaining,
                                              firstSegmentsIndicator,
                                              segmentedMessageType,spare4)";};

//*****************************************************************************
// 5.5.33  Sending complete
//*****************************************************************************
type record DSS1_SendingComplete {
  OCT1  elementIdentifier   ('A1'O)
} with { variant "PRESENCE (elementIdentifier = 'A1'O)"};

//*****************************************************************************
//5.5.34 Transit counter
//*****************************************************************************
type record DSS1_TransitCounter {
  OCT1  elementIdentifier   ('31'O),
  LIN1  lengthIndicator, //    (1),
  BIT5  transitCount,
  BIT2  spare               ('00'B),  
  BIT1  extension3          ('1'B)
} with { variant (lengthIndicator) "LENGTHTO (transitCount,spare,extension3)";
         variant "PRESENCE (elementIdentifier = '31'O)"};

//*****************************************************************************
//5.5.35 Transit network selection
//*****************************************************************************
type record DSS1_TransitNetworkSelection {
  OCT1       elementIdentifier   ('78'O),
  LIN1       lengthIndicator, //    (1..7),
  BIT4       networkIdentificationPlan,
        // '0000'B Unknown
        // '0001'B Carrier Identification Code
        // '0011'B Data network identification code  
  BIT3       networkIdentificationType,
        // '000'B User specified
        // '010'B National network identification
        // '011'B International network identification
  BIT1       extension3          ('1'B),
  charstring networkIdentification
} with { variant (lengthIndicator) "LENGTHTO(networkIdentificationPlan, 
                                             networkIdentificationType,
                                             extension3,networkIdentification)";
         variant "PRESENCE (elementIdentifier = '78'O)"; };

//*****************************************************************************
//5.5.36 User-user
//*****************************************************************************
type record DSS1_UserUser {
  OCT1       elementIdentifier   ('7E'O),
  LIN1       lengthIndicator, //    (2..129),
  BIT8       userUserProtocolDiscriminator,
        // '00000000'B User specific protocol
        // '00000001'B OSI high layer protocol
        // '00000010'B X.244
        // '00000011'B Reserved for system management convergence function
        // '00000100'B IA5 characters
        // '00000101'B X.208/X.209 coded user information
        // '00000111'B CCITT Recommendation V.120 rate adaption
        // '00001000'B Q.931 (I.451) user-network call control messages
  charstring userUserInformation            length(0..128) //transparent
} with { variant (lengthIndicator) "LENGTHTO(userUserProtocolDiscriminator, 
                                             userUserInformation)";
         variant "PRESENCE (elementIdentifier = '7E'O)"; };

//*****************************************************************************
//5.5.37 VPN Indicator
//*****************************************************************************
type record  DSS1_VPNIndicator {
  OCT1      elementIdentifier   ('05'O),
  LIN1      lengthIndicator, //    (1..13),
  BIT3      cNIndicator       ('000'B, '001'B, '010'B),
        // '000'B no indicator
        // '001'B network specific
        // '010'B global
  BIT4      spare3              ('0000'B),
  BIT1      extension3          ('1'B),
  hexstring cNIdentifier
} with { variant (lengthIndicator) "LENGTHTO(cNIndicator,spare3,extension3, 
                                             cNIdentifier)";
         variant "PRESENCE (elementIdentifier = '05'O)"; };

//****************************************************************************
// 4.1.1. Alerting 
//****************************************************************************
type record PDU_DSS1_Alerting {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('01'O),
  DSS1_BearerCapability            bearerCapability       optional, // '04'O
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_ProgressIndicator_list      progressIndicator      optional, // '1E'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_RedirectionNumber           redirectionNumber      optional, // '76'O
  DSS1_HighLayerCompatibility_list highLayerCompatibility optional, // '7D'O
  DSS1_UserUser                    userUser               optional  // '7E'O
} with { variant "" };

//****************************************************************************
// 4.1.2. Call Proceeding
//****************************************************************************
type record PDU_DSS1_CallProceeding {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('02'O),
  DSS1_BearerCapability            bearerCapability       optional, // '04'O
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_ProgressIndicator_list      progressIndicator      optional, // '1E'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_HighLayerCompatibility_list highLayerCompatibility optional  // '7D'O
} with { variant "" };

//****************************************************************************
// 4.1.3. Congestion Control
//****************************************************************************
type record PDU_DSS1_CongestionControl {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('79'O),
  DSS1_CongestionLevel             congestionLevel,                 // '1011'B
  DSS1_Cause_list                  cause                  optional, // '08'O
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.4. Connect
//****************************************************************************
type record PDU_DSS1_Connect {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('07'O),
  DSS1_BearerCapability            bearerCapability       optional, // '04'O
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_ProgressIndicator_list      progressIndicator      optional, // '1E'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_DateTime                    dateTime               optional, // '29'O
  DSS1_ConnectedNumber             connectedNumber        optional, // '4C'O
  DSS1_ConnectedSubaddress         connectedSubaddress    optional, // '4D'O
  DSS1_RedirectionNumber           redirectionNumber      optional, // '76'O
  DSS1_LowLayerCompatibility       lowLayerCompatibility  optional, // '7C'O
  DSS1_HighLayerCompatibility_list highLayerCompatibility optional, // '7D'O
  DSS1_UserUser                    userUser               optional, // '7E'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "" };

//****************************************************************************
// 4.1.5. Connect Acknowledge
//****************************************************************************
type record PDU_DSS1_ConnectAcknowledge {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('0F'O),
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.6. Disonnect
//****************************************************************************
type record PDU_DSS1_Disconnect {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('45'O),
  DSS1_Cause_list                  cause,                           // '08'O
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_ProgressIndicator_list      progressIndicator      optional, // '1E'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_KeypadFacility              keypadFacility         optional, // '2C'O
  DSS1_UserUser                    userUser               optional, // '7E'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "" };

//****************************************************************************
// 4.1.7. Facility
//****************************************************************************
type record PDU_DSS1_Facility {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('62'O),
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_CalledNumber_list           calledNumber           optional, // '70'O
  DSS1_CalledSubaddress            calledSubaddress       optional, // '71'O
  DSS1_RedirectionNumber           redirectionNumber      optional  // '76'O
} with { variant "" };

//****************************************************************************
// 4.1.8. Hold
//****************************************************************************
type record PDU_DSS1_Hold {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('24'O),
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional  // '27'O
} with { variant "" };

//****************************************************************************
// 4.1.9. Hold Acknowledge
//****************************************************************************
type record PDU_DSS1_HoldAcknowledge {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('28'O),
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.10. Hold Reject
//****************************************************************************
type record PDU_DSS1_HoldReject {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('30'O),
  DSS1_Cause_list                  cause,                            // '08'O
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.11. Information
//****************************************************************************
type record PDU_DSS1_Information {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('7B'O),
  DSS1_SendingComplete             sendingComplete        optional, // 'A1'O
  DSS1_Cause_list                  cause                  optional, // '08'O
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_KeypadFacility              keypadFacility         optional, // '2C'O
  DSS1_CalledNumber_list           calledNumber           optional, // '70'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "" };

//****************************************************************************
// 4.1.12. National register
//****************************************************************************
const bitstring cg_escapeToNatlMessage  := '00000000'B;

type record PDU_DSS1_NationalRegister {
  BIT8                             escape (cg_escapeToNatlMessage),
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('64'O),
  DSS1_KeypadFacility              keypadFacility,                   // '2C'O
  DSS1_CallingNumber_list          callingNumber          optional   // '6C'O
} with { variant "PRESENCE(escape = '00000000'B)" };

//****************************************************************************
// 4.1.13. National register acknowledge
//****************************************************************************
type record PDU_DSS1_NationalRegisterAcknowledge {
  BIT8                             escape (cg_escapeToNatlMessage),
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('6C'O),
  DSS1_Cause_list                  cause                  optional, // '08'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_KeypadFacility              keypadFacility         optional, // '2C'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "PRESENCE(escape = '00000000'B)" };

//****************************************************************************
// 4.1.14. Notify
//****************************************************************************
type record PDU_DSS1_Notify {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('6E'O),
  DSS1_NotificationIndicator_list  notificationIndicator,           // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_RedirectionNumber           redirectionNumber      optional  // '76'O
} with { variant "" };

//****************************************************************************
// 4.1.15. Progress
//****************************************************************************
type record PDU_DSS1_Progress {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('03'O),
  DSS1_BearerCapability            bearerCapability       optional, // '04'O
  DSS1_Cause_list                  cause                  optional, // '08'O 
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_ProgressIndicator_list      progressIndicator,               // '1E'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_RedirectionNumber           redirectionNumber      optional, // '76'O
  DSS1_HighLayerCompatibility_list highLayerCompatibility optional, // '7D'O
  DSS1_UserUser                    userUser               optional  // '7E'O
} with { variant "" };

//****************************************************************************
// 4.1.16. Register
//****************************************************************************
type record PDU_DSS1_Register {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('64'O),
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.17. Release
//****************************************************************************
type record PDU_DSS1_Release {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('4D'O),
  DSS1_Cause_list                  cause                  optional, // '08'O 
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_KeypadFacility              keypadFacility         optional,// '2C'O
  DSS1_UserUser                    userUser               optional, // '7E'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "" };

//****************************************************************************
// 4.1.18. Release Complete
//****************************************************************************
type record PDU_DSS1_ReleaseComplete {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('5A'O),
  DSS1_Cause_list                  cause                  optional, // '08'O 
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_KeypadFacility              keypadFacility         optional, // '2C'O 
  DSS1_UserUser                    userUser               optional, // '7E'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "" };

//****************************************************************************
// 4.1.19. Restart 
//****************************************************************************
type record PDU_DSS1_Restart {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('46'O),
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_RestartIndicator            restartIndicator
} with { variant "" };

//****************************************************************************
// 4.1.20. Restart acknowledge 
//****************************************************************************
type record PDU_DSS1_RestartAcknowledge {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('4E'O),
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_RestartIndicator            restartIndicator
} with { variant "" };

//****************************************************************************
// 4.1.21. Resume 
//****************************************************************************
type record PDU_DSS1_Resume {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('26'O),
  DSS1_CallIdentity                callIdentity           optional // '10'O
} with { variant "" };

//****************************************************************************
// 4.1.22. Resume Acknowledge
//****************************************************************************
type record PDU_DSS1_ResumeAcknowledge {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('2E'O),
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_ChannelIdentification_list  channelIdentification,           // '18'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_KeypadFacility              keypadFacility         optional, // '2C'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "" };

//****************************************************************************
// 4.1.23. Resume Reject
//****************************************************************************
type record PDU_DSS1_ResumeReject {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('22'O),
  DSS1_Cause_list                  cause,                           // '08'O 
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_KeypadFacility              keypadFacility         optional, // '2C'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "" };

//****************************************************************************
// 4.1.24. Retreive
//****************************************************************************
type record PDU_DSS1_Retrieve {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('31'O),
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional  // '27'O
} with { variant "" };

//****************************************************************************
// 4.1.25. Retreive acknowledge
//****************************************************************************
type record PDU_DSS1_RetrieveAcknowledge {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('33'O),
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.26. Retreive Reject
//****************************************************************************
type record PDU_DSS1_RetrieveReject {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('37'O),
  DSS1_Cause_list                  cause,                           // '08'O 
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.27. Segment
//****************************************************************************
type record PDU_DSS1_Segment {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('60'O),
  DSS1_SegmentedMessage            segmentedMessage,      // '00'O 
  OCTN                             octetsOfTheSegmentedMessage
} with { variant "" };

//****************************************************************************
// 4.1.28. Setup
//****************************************************************************
type record PDU_DSS1_Setup {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('05'O),
  DSS1_SendingComplete             sendingComplete        optional, // 'A1'O
  DSS1_BearerCapability            bearerCapability,
  DSS1_VPNIndicator                vPNIndicator           optional, // '05'O 
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_ProgressIndicator_list      progressIndicator      optional, // '1E'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_DateTime                    dateTime               optional, // '29'O
  DSS1_KeypadFacility              keypadFacility         optional, // '2C'O
  DSS1_CallingNumber_list          callingNumber          optional, // '6C'O
  DSS1_CallingSubaddress           callingSubaddress      optional, // '6D'O
  DSS1_CalledNumber_list           calledNumber           optional, // '70'O
  DSS1_CalledSubaddress            calledSubaddress       optional, // '71'O
  DSS1_RedirectingNumber           redirectingNumber      optional, // '76'O
  DSS1_TransitNetworkSelection     transitNetworkSelection optional, // '78'O
  DSS1_LowLayerCompatibility       lowLayerCompatibility  optional, // '7C'O
  DSS1_HighLayerCompatibility_list highLayerCompatibility optional, // '7D'O
  DSS1_UserUser                    userUser               optional, // '7E'O
  DSS1_TransitCounter              transitCounter         optional, // '31'O
  DSS1_ISPBXAdditionalInfo         iSPBXAdditionalInfo    optional  // '01'O
} with { variant "" };

//****************************************************************************
// 4.1.29. Setup acknowledge
//****************************************************************************
type record PDU_DSS1_SetupAcknowledge {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('0D'O),
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_ChannelIdentification_list  channelIdentification  optional, // '18'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_ProgressIndicator_list      progressIndicator      optional, // '1E'O
  DSS1_NotificationIndicator_list  notificationIndicator  optional, // '27'O
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.30. Status
//****************************************************************************
type record PDU_DSS1_Status {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('7D'O),
  DSS1_Cause_list                  cause,                           // '08'O 
  DSS1_CallState                   callState,
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.31. Status enquiry
//****************************************************************************
type record PDU_DSS1_StatusEnquiry {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('75'O),
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.32. Suspend 
//****************************************************************************
type record PDU_DSS1_Suspend {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('25'O),
  DSS1_CallIdentity                callIdentity           optional // '10'O
} with { variant "" };

//****************************************************************************
// 4.1.33. Suspend Acknowledge
//****************************************************************************
type record PDU_DSS1_SuspendAcknowledge {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('2D'O),
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_Display                     displaY                optional, // '28'O
  DSS1_KeypadFacility              keypadFacility         optional, // '2C'O
  DSS1_ChargeAdvice                chargeAdvice           optional  // '1A'O
} with { variant "" };

//****************************************************************************
// 4.1.34. Suspend Reject
//****************************************************************************
type record PDU_DSS1_SuspendReject {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('21'O),
  DSS1_Cause_list                  cause,                           // '08'O 
  DSS1_Display                     displaY                optional  // '28'O
} with { variant "" };

//****************************************************************************
// 4.1.35. User information
//****************************************************************************
type record PDU_DSS1_UserInformation {
  OCT1                             protocolDiscriminator  ('08'O),
  DSS1_CallReference               callReference,
  OCT1                             messageType            ('20'O),
  DSS1_MoreData                    moreData               optional, // 'A0'O
  DSS1_ExtendedFacility_list       extendedFacility       optional, // '0D'O
  DSS1_Facility_list               facility               optional, // '1C'O
  DSS1_UserUser                    userUser               optional  // '7E'O
} with { variant "" };

// **************************************************************************
// *  4.1 The container type of all DSS1 messages
//  * Ref:13/155 17-CRT 288 01 Uen Rev. C
// **************************************************************************
type union PDU_DSS1 {
  PDU_DSS1_Alerting                         alerting,
  PDU_DSS1_CallProceeding                   callProceeding,
  PDU_DSS1_CongestionControl                congestionControl,
  PDU_DSS1_Connect                          dss1_connect,
  PDU_DSS1_ConnectAcknowledge               connectAcknowledge,
  PDU_DSS1_Disconnect                       dss1_disconnect,
  PDU_DSS1_Facility                         facility,
  PDU_DSS1_Hold                             hold,
  PDU_DSS1_HoldAcknowledge                  holdAcknowledge,
  PDU_DSS1_HoldReject                       holdReject,
  PDU_DSS1_Information                      information,
  PDU_DSS1_NationalRegister                 nationalRegister,
  PDU_DSS1_NationalRegisterAcknowledge      nationalRegisterAcknowledge,
  PDU_DSS1_Notify                           notify,
  PDU_DSS1_Progress                         progress,
  PDU_DSS1_Register                         register,
  PDU_DSS1_Release                          release,
  PDU_DSS1_ReleaseComplete                  releaseComplete,
  PDU_DSS1_Restart                          restart,
  PDU_DSS1_RestartAcknowledge               restartAcknowledge,
  PDU_DSS1_Resume                           resume,
  PDU_DSS1_ResumeAcknowledge                resumeAcknowledge,
  PDU_DSS1_ResumeReject                     resumeReject,
  PDU_DSS1_Retrieve                         retrieve,
  PDU_DSS1_RetrieveAcknowledge              retrieveAcknowledge,
  PDU_DSS1_RetrieveReject                   retrieveReject,
  PDU_DSS1_Segment                          segment,
  PDU_DSS1_Setup                            setup,
  PDU_DSS1_SetupAcknowledge                 setupAcknowledge,
  PDU_DSS1_Status                           status,
  PDU_DSS1_StatusEnquiry                    statusEnquiry,
  PDU_DSS1_Suspend                          suspend,
  PDU_DSS1_SuspendAcknowledge               suspendAcknowledge,
  PDU_DSS1_SuspendReject                    suspendReject,
  PDU_DSS1_UserInformation                  userInformation
  
} with {variant "TAG (
      alerting,                          messageType = '01'O;
      callProceeding,                    messageType = '02'O;
      congestionControl,                 messageType = '79'O;
      dss1_connect,                      messageType = '07'O;
      connectAcknowledge,                messageType = '0F'O;
      dss1_disconnect,                   messageType = '45'O;
      facility,                          messageType = '62'O;
      hold,                              messageType = '24'O;
      holdAcknowledge,                   messageType = '28'O;
      holdReject,                        messageType = '30'O;
      information,                       messageType = '7B'O;
      nationalRegister,                  messageType = '64'O;
      nationalRegisterAcknowledge,       messageType = '6C'O;
      notify,                            messageType = '6E'O;
      progress,                          messageType = '03'O;
      register,                          messageType = '64'O;
      release,                           messageType = '4D'O;
      releaseComplete,                   messageType = '5A'O;
      restart,                           messageType = '46'O;
      restartAcknowledge,                messageType = '4E'O;
      resume,                            messageType = '26'O;
      resumeAcknowledge,                 messageType = '2E'O;
      resumeReject,                      messageType = '22'O;
      retrieve,                          messageType = '31'O;
      retrieveAcknowledge,               messageType = '33'O;
      retrieveReject,                    messageType = '37'O;
      segment,                           messageType = '60'O;
      setup,                             messageType = '05'O;
      setupAcknowledge,                  messageType = '0D'O;
      status,                            messageType = '7D'O;
      statusEnquiry,                     messageType = '75'O;
      suspend,                           messageType = '25'O;
      suspendAcknowledge,                messageType = '2D'O;
      suspendReject,                     messageType = '21'O;
      userInformation,                   messageType = '20'O)"};
//=========================================================================
// Signatures
//=========================================================================

// Insert signature definitions here if applicable!
// You can use the signature skeleton!

//=========================================================================
//Port Types
//=========================================================================

// Insert port type defintions here if applicable!
// You can use the port_type skeleton!

//=========================================================================
//Component Types
//=========================================================================

// Insert component type dedfintions here if applicable!
// You can use the component_type skeleton!

//=========================================================================
// Constants
//=========================================================================

// Insert constants here if applicable!
// You can use the constant skeleton!

//=========================================================================
// Templates
//=========================================================================

// Insert templates here if applicable!
// You can use the template skeleton!

//=========================================================================
// Altsteps
//=========================================================================

// Insert altsteps here if applicable!
// You can use the altstep skeleton!

//=========================================================================
// Functions
//=========================================================================

// Insert functions here if applicable!
// You can use the function skeleton!

//=========================================================================
// Testcases
//=========================================================================

// Insert test cases here if applicable!
// You can use the test_case skeleton!

//=========================================================================
// Control
//=========================================================================

// Insert control part here if applicable!
// You can use the control_part skeleton!

}with{ encode "RAW"}  // end of module
