LibIms_Templates.ttcn 132 KB
Newer Older
 *	@author 	STF 346, STF366, STF368, STF369, STF450
 *  @version    $Id$
 *	@desc		This module provides the types used by the test component 
 *              for SIP-IMS tests. Module become from STF306 and STF334-336
 *              This module is part of LibImsV2.
 */

module LibIms_Templates
{	
schmitting's avatar
schmitting committed
    import from XSDAUX all;
schmitting's avatar
schmitting committed

schmitting's avatar
schmitting committed
    //LibCommon
    import from LibCommon_DataStrings all;
schmitting's avatar
schmitting committed
    //LibSip
    import from LibSip_SIPTypesAndValues all;
    import from LibSip_SDPTypes all;
    import from LibSip_Templates all;
    import from LibSip_Steps all;
    import from LibSip_PIXITS all;
    import from LibSip_XMLTypes all;
    import from LibSip_MessageBodyTypes all;
schmitting's avatar
schmitting committed
    //LibIms
    import from LibIms_SIPTypesAndValues all;
schmitting's avatar
schmitting committed
    import from LibIms_PIXITS all;
    //LibXMLTypes
schmitting's avatar
schmitting committed
    import from urn_ietf_params_xml_ns_resource_lists language "XSD" all
    with {
        extension "File:../xsd/ResourceList.xsd"
    }

    import from urn_ietf_params_xml_ns_reginfo language "XSD" all except{type Contact}
    with {
        extension "File:../xsd/regInfo.xsd"
    }
schmitting's avatar
schmitting committed
    import from http_uri_etsi_org_ngn_params_xml_simservs_xcap language "XSD" all
    with {
        extension "File:../xsd/SupplementaryServices.xsd"
    }
	
schmitting's avatar
schmitting committed
    import from http_uri_etsi_org_ngn_params_xml_simservs_mcid language "XSD" all
    with {
        extension "File:../xsd/MCID.xsd"
    }
	
schmitting's avatar
schmitting committed
    import from NoTargetNamespace language "XSD" all
juvancic's avatar
juvancic committed
        extension "File:../xsd/Ims3gpp.xsd"
schmitting's avatar
schmitting committed
    import from urn_ietf_params_xml_ns_conference_info language "XSD" all
    with {
        extension "File:../xsd/CONF.xsd"
    }
    
schmitting's avatar
schmitting committed
    import from http_uri_etsi_org_ngn_params_xml_simservs_pstn language "XSD" all
    with {
        extension "File:../xsd/PSTN.xsd"
    }
    
schmitting's avatar
schmitting committed
    import from urn_ietf_params_xml_ns_common_policy language "XSD" all
    with {
        extension "File:../xsd/common-policy.xsd"
    }
    
schmitting's avatar
schmitting committed
    import from http_uri_etsi_org_ngn_params_xml_comm_div_info language "XSD" all
    with {
        extension "File:../xsd/CDIVN.xsd"
    }
    
schmitting's avatar
schmitting committed
    import from urn_3gpp_ns_cw_1_0 language "XSD" all
pintar's avatar
pintar committed
    with {
        extension "File:../xsd/cw.xsd"
    }   
schmitting's avatar
schmitting committed
    template charstring m_international_number_format := pattern  "\\+\d+";//pattern  "\+\d+";

    template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) := 
        {
            displayName := *,
            addrSpec := {
                scheme := c_sipScheme,
                components := { sip:= {
                    userInfo := *,
                    hostPort := {p_host, p_port}}},
schmitting's avatar
schmitting committed
                urlParameters := *,
                headers := *
            }
        }
schmitting's avatar
schmitting committed
    template Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}};
    
    template Addr_Union mw_AddrUnion_userInfo(template (present) charstring p_userInfo) := 
        {
            nameAddr:={displayName := *,
                addrSpec := {
                    scheme := c_sipScheme,
                    components := { sip:= {
                        userInfo := {userOrTelephoneSubscriber :=p_userInfo, password :=*},
                        hostPort := ?}},
                    urlParameters := *,
                    headers := *
                }
            }
        }
schmitting's avatar
schmitting committed
    template SipUrl m_SipUrl_currIpaddr_CSCF(in SipUserProfile p_userprofile) :=  	//*  SIP-URL of the test system on SIP side
    {
        scheme := c_sipScheme,  		//*  contains "sip"
        components := { sip:= {
schmitting's avatar
schmitting committed
            userInfo := omit,		//*  optional
            hostPort :=
                    {
                    host := p_userprofile.currIpaddr,	//*  hostname, IPv4 or IPv6 as a charstring
                    portField := p_userprofile.currPort	//* optional integer
                    }}},
schmitting's avatar
schmitting committed
            urlParameters := omit,
            headers := omit
    } 
	
    template SemicolonParam_List mw_semicolonParams_realm (template charstring p_realm)	:=
    /*?;*/ 
    superset({"realm",p_realm},{"nonce",?},{"algorithm","AKAv1-MD5"},{"ik",?},{"ck",?}) ;//Working with TTWorkbench// ERROR HERE! Superset operation must contain value list - no templates!
    template SemicolonParam_List m_semicolonParams_language (template charstring p_language):=
        {{"language",p_language}}
	
    template SemicolonParam_List mw_semicolonParams_language (template charstring p_language):=
        {{"language",p_language}}
schmitting's avatar
schmitting committed
    template SemicolonParam_List m_semicolonParams_isub (template charstring p_address):=
        {{"isub",p_address}}	
schmitting's avatar
schmitting committed
    template MinSE m_minSE(DeltaSec p_ds):=
    {
            fieldName := MIN_SE_E,
            deltaSec:=p_ds,
            minSeParam:=omit
    }
	
    template PathValue mw_pathvalue (template SipUrl p_sipUrl):=
    {
    nameAddr := {displayName := *, 	 			// optional charstring
                 addrSpec := p_sipUrl		// SipUrl
                },
    rrParam := *
    }

    template Path m_path (template SipUrl p_sipUrl):=
    {
        fieldName := PATH_E,
        pathValues := {
                    {nameAddr := {
                    displayName := omit, 	 			// optional charstring
                    addrSpec := p_sipUrl		// SipUrl
                    },
                    rrParam := omit}
            }
    }
	
    template Path m_path_TS := {
        fieldName := PATH_E,
        pathValues := {
            {
                nameAddr := {
                    displayName := omit,  //     optional charstring
                    addrSpec := {
                        scheme := c_sipScheme,
                        components := { sip:= {
                            hostPort := {
                                PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT
                            }}},
schmitting's avatar
schmitting committed
                        urlParameters := { { id := "lr", paramValue := omit}},
                        headers := omit
                    }
                },
                rrParam := omit
            }
        }
    }
/*
 * @desc Path header field expectation with at least one path value
 * @param p_sipUrl value of the last element in the list of path values
 */	
schmitting's avatar
schmitting committed
    template Path mw_path (template SipUrl p_sipUrl):=
    {
        fieldName := PATH_E,
        pathValues := {mw_pathvalue(p_sipUrl)}		// any number of SipUrl may occur before p_sipUrl
    }
	
    template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a :=
    {
        fieldName := P_ACCESS_NETWORK_INFO_E,
        accessType := "IEEE-802.11a",
        genericParams := {{id:="extension-access-info",paramValue :="192.1.1.20"}}
    };
schmitting's avatar
schmitting committed
    template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):=
    {
        fieldName := P_ASSERTED_SERVICE_E,
        pAssertedServiceValue := p_pAssertedServiceValue
    };
schmitting's avatar
schmitting committed
    template PChargingFunctionAddresses m_pChargingFunctionAddresses_fixedValue :=
    {
        fieldName := P_CHARGING_FUNCTION_ADDRESSES_E,
        chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1"}, // value is fixed because it is deleted on proxy 
schmitting's avatar
schmitting committed
                             {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy
    };

	
    template PChargingVector m_pChargingVector(template SemicolonParam_List p_chargeParams) :=
    {
        fieldName := P_CHARGING_VECTOR_E,
        chargeParams := p_chargeParams
    };
	
    template PChargingVector m_pChargingVector_icid_TS :=
    {
        fieldName := P_CHARGING_VECTOR_E,
        chargeParams := {{id:=c_icid,		paramValue :=c_icid_value}}
    };
	
    template PChargingVector m_pChargingVector_origIoi_fixedValue(charstring p_homeDomain) :=
    {
        fieldName := P_CHARGING_VECTOR_E,
        chargeParams := {{id:=c_icid,			paramValue :=c_icid_value},
                         {id:=c_icid_generated_at,	paramValue :="192.1.1.10"},
schmitting's avatar
schmitting committed
                         {id:=c_orig_ioi,			paramValue := p_homeDomain}}
    };
	
    template PChargingVector m_pChargingVector_termIoi_fixedValue(charstring p_homeDomain) :=
    {
        fieldName := P_CHARGING_VECTOR_E,
        chargeParams := {{id:=c_icid,			paramValue :=c_icid_value},
                            {id:=c_icid_generated_at,	paramValue :="192.1.1.10"},
schmitting's avatar
schmitting committed
                            {id:=c_term_ioi,			paramValue := p_homeDomain}}
    };
	
    template PChargingVector m_pChargingVector_origIoi_fixedValue1(charstring p_homeDomain) :=
    {
        fieldName := P_CHARGING_VECTOR_E,
        chargeParams := {
                         {id:=c_icid_generated_at,	paramValue :="192.1.1.10"},
schmitting's avatar
schmitting committed
                         {id:=c_orig_ioi,			paramValue := p_homeDomain}}
    };
	
    template PChargingVector m_pChargingVector_accessNetwInfo(charstring p_homeDomain) :=
    {
        fieldName := P_CHARGING_VECTOR_E,
        chargeParams := {{id:=c_icid,			paramValue :=c_icid_value},
                         {id:=c_term_ioi,			paramValue := p_homeDomain},
                         {id:=c_access_network_charging_info,			paramValue := "192.1.1.10"}}
    };
	
schmitting's avatar
schmitting committed
    template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) :=
    {
        fieldName := P_CHARGING_VECTOR_E,
        chargeParams := superset({id := p_id, paramValue := p_paramValue})
    };

    template PMediaAuthorization m_pMediaAuthorization_fixedValue :=
    {
        fieldName := P_MEDIA_AUTHORIZATION_E,
        pMediaAuthorizations := {"A"} // example
    };


    template PEarlyMedia m_pEarlyMedia_sup := 
        {fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}};
schmitting's avatar
schmitting committed
    template ProxyRequire m_proxyRequire_secAgree :=
    {
        fieldName := PROXY_REQUIRE_E,
        optionsTags := {"sec-agree"}
    };
    template PVisitedNetworkID m_pVisitedNetworkID_TS := 
    {
      fieldName := P_VISITED_NETWORK_E,
      vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_ICSCF_VisitedNetworkID,
         genericParams := omit}}
    }
	
schmitting's avatar
schmitting committed
    template PVisitedNetworkID mw_pVisitedNetworkID := 
    {
      fieldName := P_VISITED_NETWORK_E,
      vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID,
                        genericParams := *}}
    }

    template RecordRoute m_recordRoute_notmatching:=
    {   
        fieldName := RECORD_ROUTE_E,
        routeBody :=
        {{
            nameAddr :=
            {
                displayName := omit,
                addrSpec :=
                {
                    scheme := c_sipScheme,  			// contains "sip"
                    components := { sip:= {
                        userInfo := {userOrTelephoneSubscriber := "unknown", password := omit},
                        hostPort :=
                        {
                            host := "unknown.domain.name",	// hostname, IPv4 or IPv6 as a charstring
                            portField := omit
                        }}},
schmitting's avatar
schmitting committed
                    urlParameters := omit,
                    headers := omit
                }
            },
            rrParam := omit
        } }
    };
	
    template Require m_require_secAgree :=
    {
        fieldName := REQUIRE_E,
        optionsTags := {"sec-agree"}
    };
	
    template Require mw_require_path :=
    {
        fieldName := REQUIRE_E,
        optionsTags := superset("path")
    };

    template Route m_route_interface (in ImsInterfaceProfile p_interfaceprofile):=
    {   
        fieldName := ROUTE_E,
        routeBody := {{nameAddr := {displayName := omit, 
                                   addrSpec := 	{scheme := c_sipScheme,  			// contains "sip"
                                       components := { sip:= {
schmitting's avatar
schmitting committed
                                                userInfo := omit,
                                                hostPort := {host:=p_interfaceprofile.SUTHomeDomain, portField:= omit}}},
                                        urlParameters := omit,
                                        headers := omit}
schmitting's avatar
schmitting committed
                                   },
                      rrParam := omit}
    }};

    template Route m_route_notmatching:=
schmitting's avatar
schmitting committed
    {   
        fieldName := ROUTE_E,
        routeBody :=
        {{
            nameAddr :=
            {
                displayName := omit,
                addrSpec :=
                {
                    scheme := c_sipScheme,  			// contains "sip"
                    components := { sip:= {
                        userInfo := {userOrTelephoneSubscriber := "unknown", password := omit},
                        hostPort :=
                        {
                            host := "unknown.domain.name",	// hostname, IPv4 or IPv6 as a charstring
                            portField := omit
                        }}},
schmitting's avatar
schmitting committed
                    urlParameters := omit,
                    headers := omit
                }
            },
            rrParam := omit
        } }
    };

    template SessionExpires m_se(DeltaSec p_ds):=
    {
            fieldName := SESSION_EXPIRES_E,
            deltaSec:=p_ds,
            seParam:=omit
    }
	
    template SessionExpires mw_se:=
    {
            fieldName := SESSION_EXPIRES_E,
            deltaSec:=?,
            seParam:=omit
    }
	
    template Supported m_supported_timer:=
    {
            fieldName := SUPPORTED_E,
            optionsTags := {"timer"}
    }
	
    template Supported m_supported_histinfo:=
    {
            fieldName := SUPPORTED_E,
            optionsTags := {"histinfo"}
    }
	
	
    template Supported m_supported_fromChange:=
    {
            fieldName := SUPPORTED_E,
            optionsTags := {"from-change"}
    }
	
    template To m_To_targetRefreshRequest(template To p_To) :=
    {
      fieldName := TO_E,
      addressField :=
      {nameAddr := {
          displayName := p_To.addressField.nameAddr.displayName,
          addrSpec :=	p_To.addressField.nameAddr.addrSpec
        }},//end addressField
      toParams := {{id := c_tagId, paramValue := f_getRndTag()}}
    };
	
    template ViaBody m_ViaBody_virtualUEinPCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
    {
      sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
      sentBy:={host:=p_userprofile.contactIpaddr, portField:= p_userprofile.contactPort},
      viaParams:={{id :=c_branchId,paramValue :=branch_val}}
    }
	
    template ViaBody m_ViaBody_virtual_XCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
    {
            sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
            sentBy:={host:=p_userprofile.currIpaddr, portField:= p_userprofile.currPort},
            viaParams:={{id :=c_branchId,paramValue :=branch_val}}
    }

    template Via m_via_notmatching:=
    {   
        fieldName := VIA_E,
        viaBody :=
        {{
            sentProtocol := valueof(m_SentProtocol("UDP")),
                      sentBy:={host:="unknown.domain.name", portField:= 10000},
                      viaParams:={{id :=c_branchId,paramValue :="abcd0000"}}
        } }
    };
	
    /*
     * @desc WWW-Authenticate header field 
         * @param p_challenge value 
         */	
        template WwwAuthenticate m_wwwAuthenticate (Challenge p_challenge):=
        {
            fieldName := WWW_AUTHENTICATE_E,
            challenge := p_challenge
        }

        /*
         * @desc WWW-Authenticate header field 
         * @param p_challenge value 
         */	
        template WwwAuthenticate mw_wwwAuthenticate (template SemicolonParam_List p_semicolonParam_List):=
        {
            fieldName := WWW_AUTHENTICATE_E,
            challenge := 
                {digestCln := p_semicolonParam_List // set of GenericParam
                }
        }
rennoch's avatar
rennoch committed
        
        template SemicolonParam_List mw_challenge := superset(mw_ck,mw_ik);
     //   template SemicolonParam_List mw_challenge := {mw_ck,mw_ik};          
		template GenericParam mw_ck := {"ck", *};
		template GenericParam mw_ik := {"ik", *}
schmitting's avatar
schmitting committed
    /*
        * @desc AcceptContact header field 
        * @param p_acValues value 
        */	
        template AcceptContact m_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
        {
            fieldName := ACCEPT_CONTACT_E,
            acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
                        }
        }

    /*
        * @desc Authenticate header field 
        * @param p_challenge value 
        */	
        template AcceptContact mw_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
        {
            fieldName := ACCEPT_CONTACT_E,
            acValues := 
                {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
                }
        }
schmitting's avatar
schmitting committed
        template SubscriptionState mw_subscriptionState(template charstring p_state) := {
            fieldName := SUBSCRIPTION_STATE_E,
            subState := p_state,
            substateParams := omit
        }
schmitting's avatar
schmitting committed
        //[3455/5.1]
        template PAssociatedURI m_pAssociatedURI (template NameAddr p_nameAddr) := {
            fieldName := P_ASSOCIATED_URI_E,
            nameAddrList := {{nameAddr:=p_nameAddr, genericParams:=omit}}
rennoch's avatar
rennoch committed
        }
        
        template SecurityServer mw_securityServer (template SecurityMechanism_List p_securityMechanism_List):= {
		 fieldName := SECURITY_SERVER_E,
		 securityMech := p_securityMechanism_List
	    }	  	

	    template SecurityClient m_securityClient (template SecurityMechanism_List p_securityMechanism_List):= {
		 fieldName := SECURITY_CLIENT_E,
		 securityMech := p_securityMechanism_List
	    }	    
	    
	    template SecurityVerify m_securityVerify (template SecurityMechanism_List p_securityMechanism_List):= {
		 fieldName := SECURITY_VERIFY_E,
		 securityMech := p_securityMechanism_List
	    }
		
} // end group HeaderFieldTemplates

group MessageBodyTemplates {
	
group XMLTemplates {
	
schmitting's avatar
schmitting committed
    template XmlBody m_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
    {
schmitting's avatar
schmitting committed
        conference := p_confInfo
schmitting's avatar
schmitting committed
    };
pintar's avatar
pintar committed
    template XmlBody m_XmlBody_CW(template Ims_cw p_cw) :=
    {
        cw := p_cw
    };
	
schmitting's avatar
schmitting committed
    template XmlBody m_XmlBody_CUG(template Cug p_cug) :=
    {
        cug := p_cug
    };
schmitting's avatar
schmitting committed
    template XmlBody m_XmlBody_MCID(template Mcid p_mcid) :=
    {
        mcid := p_mcid
    };
pintar's avatar
pintar committed
	
schmitting's avatar
schmitting committed
    template XmlBody m_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
    {
        pstnTransit := p_pstn
    };
    template XmlBody m_XmlBody_simservs(template Simservs p_simservs) :=
    {
        simservs := p_simservs
    };
	
schmitting's avatar
schmitting committed
    template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) := {
schmitting's avatar
schmitting committed
        simservs := {
schmitting's avatar
schmitting committed
            attr := {},  
            absServiceGroup_list := {},
            extensions := {
schmitting's avatar
schmitting committed
							elem_list := valueof(p_icb.attr)
schmitting's avatar
schmitting committed
						  }
schmitting's avatar
schmitting committed
        }
    template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) := {
        simservs := {
schmitting's avatar
schmitting committed
            attr := {},  
            absServiceGroup_list := {},
            extensions := {
schmitting's avatar
schmitting committed
							elem_list := valueof(p_ocb.attr)
schmitting's avatar
schmitting committed
						  }
schmitting's avatar
schmitting committed
    template XmlBody m_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
    {
        cdivn := p_cdivn
    };
    template XmlBody m_XmlBody_Reginfo(template Reginfo p_regInfo) :=
    {
        regInfo := p_regInfo
    };
    
    template MessageBody m_messageBodyXML(template XmlBody p_xmlBody) :=
    {
        xmlBody := p_xmlBody
    };
    
    template Reginfo m_reginfo (template XSDAUX.anyURI p_user):= {
schmitting's avatar
schmitting committed
      0,
      {m_registration(p_user)},
    
    template Registration m_registration (template XSDAUX.anyURI p_user):= {
      "a7", // XSDAUX.string id
      init, //enumerated {active,init,terminated} state,
schmitting's avatar
schmitting committed
      {}, // record of Contact contact_list optional,
	  {} // record of anytype elem_list optional
    };
rennoch's avatar
rennoch committed
		
schmitting's avatar
schmitting committed
    template XmlBody mw_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
    {
schmitting's avatar
schmitting committed
        conference := p_confInfo
schmitting's avatar
schmitting committed
    };
schmitting's avatar
schmitting committed
    template XmlBody mw_XmlBody_CUG(template Cug p_cug) :=
    {
        cug := p_cug
    };
pintar's avatar
pintar committed
	
schmitting's avatar
schmitting committed
    template XmlBody mw_XmlBody_MCID(template Mcid p_mcid) :=
    {
        mcid := p_mcid
    };
schmitting's avatar
schmitting committed
    template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
    {
        pstnTransit := p_pstn
    };
schmitting's avatar
schmitting committed
    template XmlBody mw_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
    {
        cdivn := p_cdivn
    };
    template XmlBody mw_XmlBody_simservs(template Simservs p_simservs) :=
    {
        simservs := p_simservs
    };
	
schmitting's avatar
schmitting committed
    template XmlBody mw_XmlBody_ResourceLists(template Resource_lists p_resourceLists) :=
    {
        resourceLists := p_resourceLists
    };
	
    template XmlBody mw_XmlBody_Reginfo(template Reginfo p_regInfo) :=
    {
        regInfo := p_regInfo
    };
rennoch's avatar
rennoch committed
		
}// end group XMLTemplates

pintar's avatar
pintar committed
group ACR_CBTemplates {
	
schmitting's avatar
schmitting committed
    template Incoming_communication_barring	m_ICB(template RuleType p_ruleType) :=
    {
schmitting's avatar
schmitting committed
        ruleset := {
            {p_ruleType}
        }
    }
	
    template Outgoing_communication_barring	m_OCB(template(present) RuleType p_ruleType) :=
    {
schmitting's avatar
schmitting committed
        ruleset := {
            {p_ruleType}
        }
    }
pintar's avatar
pintar committed
	
schmitting's avatar
schmitting committed
    template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) :=
    {
        id := "rule66",
        conditions := p_condition,
        actions := {elem_list:={"<false/>"}},
        transformations := omit
    }
pintar's avatar
pintar committed

schmitting's avatar
schmitting committed
    template ConditionsType m_conditionsType_identity(template(present) charstring p_id, template charstring p_scheme) := {
schmitting's avatar
schmitting committed
            {identity_list := {{{{one := {id := p_id, elem := omit}}}}}} 
schmitting's avatar
schmitting committed
        }
schmitting's avatar
schmitting committed
    }
pintar's avatar
pintar committed
	
} //end group ACR_CBTemplates

schmitting's avatar
schmitting committed
    template Cug m_CUG (
        template CugRequestType p_crt,
        template NetworkIdentityType p_nit,
        template SixteenbitType p_cibc,
        template TwoBitType p_cci
    ):= {
        active := omit,
schmitting's avatar
schmitting committed
        cugCallOperation := p_crt,
        networkIndicator := p_nit,
        cugInterlockBinaryCode := p_cibc,
        cugCommunicationIndicator :=p_cci
    }
	
    template Cug mw_CUG (
        template CugRequestType p_crt,
        template NetworkIdentityType p_nit,
        template SixteenbitType p_cibc,
        template TwoBitType p_cci
    ):= {
        active := omit,
schmitting's avatar
schmitting committed
        cugCallOperation := p_crt,
        networkIndicator := p_nit,
        cugInterlockBinaryCode := p_cibc,
        cugCommunicationIndicator := p_cci
    }
	
    template CugRequestType m_cugReqType(boolean p_outAccessRequest, integer p_cugIndex) :=
    {
        outgoingAccessRequest := p_outAccessRequest,
        cugIndex := p_cugIndex
    }

    template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) :=
    {
        outgoingAccessRequest := p_outAccessRequest,
        cugIndex := p_cugIndex
schmitting's avatar
schmitting committed
    }
pintar's avatar
pintar committed
}//end group CUGTemplates

pintar's avatar
pintar committed
group CWTemplates {

schmitting's avatar
schmitting committed
    template Ims_cw m_CW(template TEmptyType p_cwi) := {
pintar's avatar
pintar committed
        communication_waiting_indication := p_cwi,
schmitting's avatar
schmitting committed
        elem_list := {}	    
    }
pintar's avatar
pintar committed
	
    template Ims_cw mw_ims_cw(template TEmptyType p_cwi) := {
        communication_waiting_indication := p_cwi,
schmitting's avatar
schmitting committed
        elem_list := ?
pintar's avatar
pintar committed
    template Cug m_CW2 (
pintar's avatar
pintar committed
        template NetworkIdentityType p_nit,
        template SixteenbitType p_cibc,
        template TwoBitType p_cci
    ):= {
        active := omit,
pintar's avatar
pintar committed
        cugCallOperation := p_crt,
        networkIndicator := p_nit,
        cugInterlockBinaryCode := p_cibc,
        cugCommunicationIndicator :=p_cci
    }
	
    template Cug mw_CW (
        template CugRequestType p_crt,
        template NetworkIdentityType p_nit,
        template SixteenbitType p_cibc,
        template TwoBitType p_cci
    ):= {
        active := omit,
pintar's avatar
pintar committed
        cugCallOperation := p_crt,
        networkIndicator := p_nit,
        cugInterlockBinaryCode := p_cibc,
        cugCommunicationIndicator := p_cci
    }
	
}//end group CWTemplates

pintar's avatar
pintar committed
group MCIDTemplates {
	
 template Mcid m_mcid_request_mcidIndicatorTrue :=
 {
  choice := {
   request := {mcidRequestIndicator := bit2str('1'B),
schmitting's avatar
schmitting committed
                holdingIndicator := bit2str('0'B)}
pintar's avatar
pintar committed
 template Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue :=
 {
  choice := {
   request := {mcidRequestIndicator := bit2str('1'B),
schmitting's avatar
schmitting committed
               holdingIndicator := bit2str('1'B)}
pintar's avatar
pintar committed
 template Mcid m_mcid_response_mcidIndicatorTrue :=
 {
  choice := {
   response := {mcidResponseIndicator := bit2str('1'B),
schmitting's avatar
schmitting committed
                holdingProvidedIndicator := bit2str('0'B)}
pintar's avatar
pintar committed
  }
 }
	
 template Mcid mw_mcid_request_mcidIndicatorTrue :=
 {
  choice := {
   request := {mcidRequestIndicator := bit2str('1'B),
schmitting's avatar
schmitting committed
                holdingIndicator := ?}
pintar's avatar
pintar committed
  }
 }
	
 template Mcid mw_mcid_response_mcidIndicatorTrue :=
 {
  choice := {
   response := {mcidResponseIndicator := bit2str('1'B),
schmitting's avatar
schmitting committed
                holdingProvidedIndicator := ?}
pintar's avatar
pintar committed
	
 template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse :=
 {
  choice := {
   response := {mcidResponseIndicator := bit2str('1'B),
schmitting's avatar
schmitting committed
                holdingProvidedIndicator := bit2str('0'B)}
pintar's avatar
pintar committed
  }
 }
	
 template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue :=
 {
  choice := {
   response := {mcidResponseIndicator := bit2str('1'B),
schmitting's avatar
schmitting committed
                holdingProvidedIndicator := bit2str('1'B)}
pintar's avatar
pintar committed
  }
 }
pintar's avatar
pintar committed

} //end group MCIDTemplates
    template PSTN_transit m_PSTN_transit_BC1(template BearerCapabilityType p_bct) :=
    {
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
schmitting's avatar
schmitting committed
            highLayerCompatibility_list := {},
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
            progressIndicator_list := {},
            display_list := {}
    template PSTN_transit m_PSTN_transit_BC2(template BearerCapabilityType p_bct,
schmitting's avatar
schmitting committed
                                             template BearerCapabilityType p_bct2) :=
schmitting's avatar
schmitting committed
        bearerInfomationElement_list := {p_bct, p_bct2},
schmitting's avatar
schmitting committed
        highLayerCompatibility_list := {},
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
        progressIndicator_list := {},
        display_list := {}
    template PSTN_transit m_PSTN_transit_BC1_HLC1(template BearerCapabilityType p_bct, 
schmitting's avatar
schmitting committed
                                                  template HighLayerCompatibilityType p_hlc) :=
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
            highLayerCompatibility_list := {p_hlc},
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
            progressIndicator_list := {},
        display_list := {}
    }

    template PSTN_transit m_PSTN_transit_BC1_LLC(template BearerCapabilityType p_bct,
schmitting's avatar
schmitting committed
                                                 template LowLayerCompatibilityType p_llc) :=
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
schmitting's avatar
schmitting committed
            highLayerCompatibility_list := {},
            lowLayerCompatibility := p_llc,
schmitting's avatar
schmitting committed
            progressIndicator_list := {},
        display_list := {}
    }

    template PSTN_transit m_PSTN_transit_BC1_PI1(template BearerCapabilityType p_bct,
schmitting's avatar
schmitting committed
                                                 template ProgressIndicatorType p_pi1) :=
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
schmitting's avatar
schmitting committed
            highLayerCompatibility_list := {},
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
            progressIndicator_list := {p_pi1},
schmitting's avatar
schmitting committed
        display_list := {}
    }

    template PSTN_transit m_PSTN_transit_BC1_PI2(template BearerCapabilityType p_bct,
                                                 template ProgressIndicatorType p_pi1,
schmitting's avatar
schmitting committed
                                                 template ProgressIndicatorType p_pi2) :=
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
schmitting's avatar
schmitting committed
            highLayerCompatibility_list := {},
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
            progressIndicator_list := {p_pi1, p_pi2},
schmitting's avatar
schmitting committed
            display_list := {}
    }

    template PSTN_transit m_PSTN_transit_BC1_PI3(template BearerCapabilityType p_bct,
                                                 template ProgressIndicatorType p_pi1,
schmitting's avatar
schmitting committed
                                                 template ProgressIndicatorType p_pi2,
                                                 template ProgressIndicatorType p_pi3) :=
    {
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
schmitting's avatar
schmitting committed
            highLayerCompatibility_list := {},
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
            progressIndicator_list := {p_pi1, p_pi2, p_pi3},
schmitting's avatar
schmitting committed
            display_list := {}
    }

    template PSTN_transit m_PSTN_transit_BC1_HLC2(template BearerCapabilityType p_bct,
                                                  template HighLayerCompatibilityType p_hlc1,
                                                  template HighLayerCompatibilityType p_hlc2) :=
    {
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
            highLayerCompatibility_list := {p_hlc1, p_hlc2},
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
            progressIndicator_list := {},
            display_list := {}
    }

    template PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(template BearerCapabilityType p_bct,
schmitting's avatar
schmitting committed
                                                 template HighLayerCompatibilityType p_hlc1,
                                                 template ProgressIndicatorType p_pi1) :=
    {
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
            highLayerCompatibility_list := {p_hlc1},
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
            progressIndicator_list := {p_pi1},
schmitting's avatar
schmitting committed
            display_list := {}
    }
	
    template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct,
                                             template BearerCapabilityType p_bct2) :=
    {
            bearerInfomationElement_list := {p_bct, p_bct2},
            highLayerCompatibility_list := {*, *},
            lowLayerCompatibility := *,
            progressIndicator_list := {*},
            display_list := {*}
    }											 
schmitting's avatar
schmitting committed
    template BearerCapabilityType m_BearerCapabilityType (Bit5 p_InfoTrfCap):= {
            bCoctet3 	:= {codingStandard := bit2str('00'B),						//Coding standard = CCITT standardized coding
                            informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
            bCoctet4 	:= {transferMode := bit2str('00'B),							//Coding standard = CCITT standardized coding
                            informationTransferRate := bit2str('10000'B)},			//Information transfer rate = 64 kbit/s
            bCoctet4_1 	:= omit,
            bCoctet5  	:= omit,
            bCoctet5a  	:= omit,
            bCoctet5bV110  := omit,
            bCoctet5bV120  := omit,
            bCoctet5c 	:= omit,
            bCoctet5d 	:= omit,
            bCoctet6  	:= omit,
            bCoctet7  	:= omit,
            bCoctet7a  	:= omit,
            bCoctet7b  	:= omit 
    }	
	
    template ProgressIndicatorType m_ProgressIndicatorType (Bit7 p_progDesc) := {
            progressOctet3 := {codingStandard := bit2str('00'B),
                               location := bit2str('0000'B)
                              },
            progressOctet4 := {progressDescription := bit2str(p_progDesc)}
    }
	
    template LowLayerCompatibilityType m_LowLayerCompatibilityType (Bit5 p_InfoTrfCap) := {
            lLOctet3 := {codingStandard := bit2str('00'B),						 //Coding standard = CCITT standardized coding
                         informationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability
            lLOctet3a := omit,
            lLOctet4 := {transferMode := bit2str('00'B),						//Coding standard = CCITT standardized coding
                         informationTransferRate := bit2str('10000'B)},			//Information transfer rate = 64 kbit/s
            lLOctet4_1 := omit,
            lLOctet5 := omit,
            lLOctet5a := omit,
            lLOctet5bV110 := omit,
            lLOctet5bV120 := omit,
            lLOctet5c := omit,
            lLOctet5d := omit,
            lLOctet6 := omit,
            lLOctet6aHDLC := omit,
            lLOctet6aUserSpecific := omit,
            lLOctet6b := omit,
            lLOctet7 := {layer3Identification := bit2str('10'B),		//TODO check valueand if parameter is mandatory
                        userInfoLayer3Protocol := bit2str('10000'B)},	//TODO check value and if parameter is mandatory
            lLOctet7aUserSpecific := omit,
            lLOctet7aX25 := omit,
            lLOctet7bX25 := omit,
            lLOctet7c := omit,
            lLOctet7aTR9577 := omit,
            lLOctet7bTR9577 := omit 
    }
	
    template HighLayerCompatibilityType m_HighLayerCompatibilityType 
        (Bit7 p_HLOctet4):= {