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

module LibIms_Templates
{	
	//LibCommon
	import from LibCommon_DataStrings all;
	
	//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;
rennoch's avatar
rennoch committed
	import from XSDAUX all;
	
	//LibIms
	import from LibIms_SIPTypesAndValues all;
	
	import from LibIms_PIXITS all;
	
    //LibXMLTypes
    import from ietf_params_xml_ns_resource_lists language "XSD" all
    with {
        extension "File:../xsd/ResourceList.xsd"
    }
	
    import from org_etsi_uri__ngn_params_xml_simservs_xcap language "XSD" all
    with {
        extension "File:../xsd/SupplementaryServices.xsd"
    }
	
    import from org_etsi_uri__ngn_params_xml_simservs_mcid language "XSD" all
    with {
        extension "File:../xsd/MCID.xsd"
    }
	
    import from Ims_3gpp language "XSD" all
    with {
        extension "File:../xsd/Ims_3gpp.xsd"
    }
    
    import from ietf_params_xml_ns_conference_info language "XSD" all
    with {
        extension "File:../xsd/CONF.xsd"
    }
    
    import from org_etsi_uri__ngn_params_xml_simservs_pstn language "XSD" all
    with {
        extension "File:../xsd/PSTN.xsd"
    }
    
    import from ietf_params_xml_ns_common_policy language "XSD" all
    with {
        extension "File:../xsd/common-policy.xsd"
    }
    
    import from org_etsi_uri__ngn_params_xml_comm_div_info language "XSD" all
    with {
        extension "File:../xsd/CDIVN.xsd"
    }
    
    
    
    
    
	
	template charstring m_international_number_format := pattern  "\\+\d+";//pattern  "\+\d+";

	template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) := 
		{
			displayName := *,
			addrSpec := {
				scheme := "sip:",
				userInfo := *,
				hostPort := {p_host, p_port},
				urlParameters := *,
				headers := *
			}
		}
		
	template Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}};
	
group Subfields{


	template SipUrl m_SipUrl_currIpaddr_CSCF(in SipUserProfile p_userprofile) :=  	//*  SIP-URL of the test system on SIP side
	{
			scheme := c_sipScheme,  		//*  contains "sip"
			userInfo := omit,		//*  optional
			hostPort :=
			{
		host := p_userprofile.currIpaddr,	//*  hostname, IPv4 or IPv6 as a charstring
		portField := p_userprofile.currPort	//* optional integer
			},
			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}}
		
	template SemicolonParam_List m_semicolonParams_isub (template charstring p_address):=
		{{"isub",p_address}}	
}

group HeaderFieldTemplates{
	
	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
				},
	}

	template Path m_path (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,
                        				userInfo := {userOrTelephoneSubscriber:="registrar"},
                        				hostPort := {PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT},
                        				urlParameters := 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
 */	
	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"}}
	};
		
	template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):=
	{
		fieldName := P_ASSERTED_SERVICE_E,
		pAssertedServiceValue := p_pAssertedServiceValue
	};
		
	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 
							 {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;"},
						 {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;"},
							{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;"},
						 {id:=c_orig_ioi,			paramValue := p_homeDomain}}
	};
	
	template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := superset({id := valueof(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"}};
		
	
	template ProxyRequire m_proxyRequire_secAgree :=
	{
		fieldName := PROXY_REQUIRE_E,
		optionsTags := {"sec-agree"}
	};
	
    template PVisitedNetworkID m_pVisitedNetworkID_TS := 
    {
      fieldName := P_VISITED_NETWORK_E,
      vNetWorkSpec := {{vNetworkSpecToken := "Viseted ETSI 1",
         genericParams := omit}}
    }
	
	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"
					userInfo := {userOrTelephoneSubscriber := "unknown", password := omit},
					hostPort :=
					{
						host := "unknown.domain.name",	// hostname, IPv4 or IPv6 as a charstring
						portField := omit
					},
					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"
												userInfo := omit,
												hostPort := {host:=p_interfaceprofile.SUTHomeDomain, portField:= omit},
												urlParameters := omit,
												headers := omit}
								   },
					  rrParam := omit}
	}};

    template Route m_route_notmatching:=
	{   
		fieldName := ROUTE_E,
		routeBody :=
		{{
			nameAddr :=
			{
				displayName := omit,
				addrSpec :=
				{
					scheme := c_sipScheme,  			// contains "sip"
					userInfo := {userOrTelephoneSubscriber := "unknown", password := omit},
					hostPort :=
					{
						host := "unknown.domain.name",	// hostname, IPv4 or IPv6 as a charstring
						portField := omit
					},
					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"}
	}
	
poglitsch's avatar
poglitsch committed
	
	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
				}
		}
		
		
		
	/*
		* @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
				}
		template SubscriptionState mw_subscriptionState(template charstring p_state) := {
    		fieldName := SUBSCRIPTION_STATE_E,
    		subState := p_state,
    		substateParams := omit
		}
		
		//[3455/5.1]
		template PAssociatedURI m_pAssociatedURI (template NameAddr p_nameAddr) := {
			fieldName := P_ASSOCIATED_URI_E,
			nameAddrList := {{nameAddr:=p_nameAddr, genericParams:=omit}}
		}	  	
		
} // end group HeaderFieldTemplates

group MessageBodyTemplates {
	
group XMLTemplates {
	
//	template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) :=
//	{
//		icb := p_icb
//	};
pintar's avatar
pintar committed
	
//	template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) :=
//	{
//		ocb := p_ocb
//	};
pintar's avatar
pintar committed
	
	template XmlBody m_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
	{
		conferenceInfo := p_confInfo
	};
	
	template XmlBody m_XmlBody_CUG(template Cug p_cug) :=
	{
		cug := p_cug
	};
	
pintar's avatar
pintar committed
	template XmlBody m_XmlBody_MCID(template Mcid p_mcid) :=
	{
		mcid := p_mcid
	};
	
	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
    };
	
    template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) :=
    {
        simservs := {
            anyAttributes := omit,
            choice := {
                {
                    incoming_communication_barring := p_icb
                }   
            }  
        }
    };
	
    template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) :=
    {
        simservs := {
            anyAttributes := omit,
            choice := {
                {
                    outgoing_communication_barring := p_ocb
                }   
            }  
        }
    };
	
	template XmlBody m_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
rennoch's avatar
rennoch committed
	{
		cdivn := p_cdivn
	};
	
//	template XmlBody m_XmlBody_CDIVN(template Comm_div_info p_cdivn) :=
//	{
//		cdivn := p_cdivn
//	};
rennoch's avatar
rennoch committed
		
	template XmlBody mw_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
	{
		conferenceInfo := p_confInfo
	};
	
	template XmlBody mw_XmlBody_CUG(template Cug p_cug) :=
pintar's avatar
pintar committed
	{
		cug := p_cug
	};
	
	template XmlBody mw_XmlBody_MCID(template Mcid p_mcid) :=
	{
		mcid := p_mcid
	};
	
	template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
	{
		pstnTransit := p_pstn
	};
	
	template XmlBody mw_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
rennoch's avatar
rennoch committed
	{
		cdivn := p_cdivn
	};
    template XmlBody mw_XmlBody_simservs(template Simservs p_simservs) :=
    {
        simservs := p_simservs
    };
	
poglitsch's avatar
poglitsch committed
	template XmlBody mw_XmlBody_ResourceLists(template Resource_lists p_resourceLists) :=
	{
		resourceLists := p_resourceLists
	};
rennoch's avatar
rennoch committed
		
}// end group XMLTemplates

pintar's avatar
pintar committed
group ACR_CBTemplates {
	
	template Incoming_communication_barring	m_ICB(RuleType p_ruleType) :=
	{
		ruleset := {
pintar's avatar
pintar committed
			rule:= {p_ruleType}
		}
	}
	
	template Outgoing_communication_barring	m_OCB(RuleType p_ruleType) :=
	{
		ruleset := {
pintar's avatar
pintar committed
			rule:= {p_ruleType}
		}
	}
	
	template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) :=
	{
		id := "rule66",
		conditions := p_condition,
		actions := {elem:={{boolean := false}}},
pintar's avatar
pintar committed
		transformations := omit
	}

	template ConditionsType m_conditionsType_identity(template charstring p_id, template charstring p_scheme) := {
		content := {{
pintar's avatar
pintar committed
			identity := {{
				content := {{
pintar's avatar
pintar committed
            		one := {
            			id := p_id,
            			//scheme := p_scheme,
            			//any_1 := omit
                        elem := {charstring := p_scheme}
group CUGTemplates {
	
	template Cug m_CUG (template CugRequestType p_crt,
						template NetworkIdentityType p_nit,
						template SixteenbitType p_cibc,
						template TwoBitType p_cci):=
	{
			cugCallOperation := p_crt,
			networkIndicator := p_nit,
			cugInterlockBinaryCode := p_cibc,
			cugCommunicationIndicator :=p_cci
	}
	
rennoch's avatar
rennoch committed
	      template Cug mw_CUG (template CugRequestType p_crt,
						 template NetworkIdentityType p_nit,
						 template SixteenbitType p_cibc,
						 template TwoBitType p_cci):=
	{
			cugCallOperation := p_crt,
			networkIndicator := p_nit,
			cugInterlockBinaryCode := p_cibc,
			cugCommunicationIndicator := p_cci
	}
	
	template CugRequestType m_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) :=
	{
rennoch's avatar
rennoch committed
//		outgoingAccessRequest := p_outAccessRequest,
//		cugIndex := p_cugIndex
//TODO: workaround for ttwb118
		outgoingAccessRequest := {bool:=p_outAccessRequest},
		cugIndex := valueof(p_cugIndex)
rennoch's avatar
rennoch committed
	template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) :=
	{
		outgoingAccessRequest := {bool:=p_outAccessRequest},
rennoch's avatar
rennoch committed
		cugIndex := p_cugIndex
	}
pintar's avatar
pintar committed
}//end group CUGTemplates

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

} //end group MCIDTemplates

group PSTNTemplates {
	
	template PSTN_transit m_PSTN_transit(template BearerCapabilityType p_bct,
										 template BearerCapabilityType p_bct2,
										 template HighLayerCompatibilityType p_hlc,
										 template HighLayerCompatibilityType p_hlc2,
										 template LowLayerCompatibilityType p_llc,
										 template ProgressIndicatorType p_pi,
										 template DisplayType p_d) :=
	{
			bearerInfomationElement := {p_bct, p_bct2},
			highLayerCompatibility := {p_hlc, p_hlc2},
			lowLayerCompatibility := p_llc,
			progressIndicator := {p_pi},
			display_ := {p_d}
	}

	template PSTN_transit m_PSTN_transit_2PI(template BearerCapabilityType p_bct,
											template BearerCapabilityType p_bct2,
											template HighLayerCompatibilityType p_hlc,
											template HighLayerCompatibilityType p_hlc2,
											template LowLayerCompatibilityType p_llc,
											template ProgressIndicatorType p_pi,
											template ProgressIndicatorType p_pi2,
											template DisplayType p_d) :=
	{
			bearerInfomationElement := {p_bct, p_bct2},
			highLayerCompatibility := {p_hlc, p_hlc2},
			lowLayerCompatibility := p_llc,
			progressIndicator := {p_pi, p_pi2},
			display_ := {p_d}
	}

	template PSTN_transit m_PSTN_transit_3PI(template BearerCapabilityType p_bct,
											template BearerCapabilityType p_bct2,
											template HighLayerCompatibilityType p_hlc,
											template HighLayerCompatibilityType p_hlc2,
											template LowLayerCompatibilityType p_llc,
											template ProgressIndicatorType p_pi,
											template ProgressIndicatorType p_pi2,
											template ProgressIndicatorType p_pi3,
											template DisplayType p_d) :=
	{
			bearerInfomationElement := {p_bct, p_bct2},
			highLayerCompatibility := {p_hlc, p_hlc2},
			lowLayerCompatibility := p_llc,
			progressIndicator := {p_pi, p_pi2, p_pi3},
			display_ := {p_d}
	}
		
	template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct,
											 template BearerCapabilityType p_bct2) :=
	{
			bearerInfomationElement := {p_bct, p_bct2},
			highLayerCompatibility := {*, *},
			lowLayerCompatibility := *,
			progressIndicator := {*},
			display_ := {*}
	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):= {
			hLOctet3 := {
				codingStandard :=bit2str('00'B),
				interpretation :=bit2str('100'B),
				presentationMethod := bit2str('01'B)
			hLOctet4 := {
				highLayerCharacteristics := bit2str(p_HLOctet4)
			hLOctet4aMaintenance := omit,
			hLOctet4Audio := omit
	}

	template BearerCapabilityType mw_BearerCapabilityType (template BCOctet3Type p_BCOctet3Type, template BCOctet4Type p_BCOctet4Type):= {
			bCoctet3 	:= p_BCOctet3Type,
			bCoctet4 	:= p_BCOctet4Type,
			bCoctet4_1 	:= * ,
			bCoctet5  	:= * ,
			bCoctet5a  	:= * ,
			bCoctet5bV110  := * ,
			bCoctet5bV120  := * ,
			bCoctet5c 	:= * ,
			bCoctet5d 	:= * ,
			bCoctet6  	:= * ,
			bCoctet7  	:= * ,
			bCoctet7a  	:= * ,
			bCoctet7b  	:= * 
	template BearerCapabilityType mw_BearerCapabilityType_TrfCap  (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 	:= * ,
			bCoctet5  	:= * ,
			bCoctet5a  	:= * ,
			bCoctet5bV110  := * ,
			bCoctet5bV120  := * ,
			bCoctet5c 	:= * ,
			bCoctet5d 	:= * ,
			bCoctet6  	:= * ,
			bCoctet7  	:= * ,
			bCoctet7a  	:= * ,
			bCoctet7b  	:= * 
	}	

	template ProgressIndicatorType mw_ProgressIndicatorType (template ProgressOctet3Type p_ProgressOctet3Type, template ProgressOctet4Type p_ProgressOctet4Type) := {
			progressOctet3 := p_ProgressOctet3Type,
			progressOctet4 := p_ProgressOctet4Type
	}
	
	template LowLayerCompatibilityType mw_LowLayerCompatibilityType 
		(template LLOctet3Type p_LLOctet3, template LLOctet4Type p_LLOctet4, template LLOctet7Type p_LLOctet7) := {
			lLOctet3 := p_LLOctet3,
			lLOctet3a := * ,
			lLOctet4 := p_LLOctet4,
			lLOctet4_1 := * ,
			lLOctet5 := * ,
			lLOctet5a := * ,
			lLOctet5bV110 := * ,
			lLOctet5bV120 := * ,
			lLOctet5c := * ,
			lLOctet5d := * ,
			lLOctet6 := * ,
			lLOctet6aHDLC := * ,
			lLOctet6aUserSpecific := * ,
			lLOctet6b := * ,
			lLOctet7 := p_LLOctet7,
			lLOctet7aUserSpecific := * ,
			lLOctet7aX25 := * ,
			lLOctet7bX25 := * ,
			lLOctet7c := * ,
			lLOctet7aTR9577 := * ,
			lLOctet7bTR9577 := * 
	}
	
	template HighLayerCompatibilityType mw_HighLayerCompatibilityType 
		(template HLOctet3Type p_HLOctet3, template HLOctet4Type p_HLOctet4):= {
			hLOctet3 := p_HLOctet3,
			hLOctet4 := p_HLOctet4,
			hLOctet4aMaintenance := *,
			hLOctet4Audio := *
rennoch's avatar
rennoch committed
} //end group PSTNTemplates		

group CDIVNTemplates {
	
	/* general CDIVN subscription */
	template Comm_div_info_type m_CDIVN_sub := {
		entity := "comm-div-info",
rennoch's avatar
rennoch committed
		comm_div_subs_info := {
			anyAttributes := omit,
			comm_div_selection_criteria := {
				anyAttributes := ?,
				originating_user_selection_criteria := omit,
				diverting_user_selection_criteria := omit,
				diverted_to_user_selection_criteria := omit,
				diversion_time_selection_criteria := omit,
				diversion_reason_selection_criteria := omit,
				elem := omit
rennoch's avatar
rennoch committed
			},
			comm_div_ntfy_trigger_criteria := omit,
			comm_div_info_selection_criteria := omit,
			elem := omit
rennoch's avatar
rennoch committed
		},
		comm_div_ntfy_info := omit,
		elem := omit
rennoch's avatar
rennoch committed

} // end grouup CDIVNTemplates
poglitsch's avatar
poglitsch committed

group ResourceListsTemplates {
	

    template Resource_lists m_ResourceList_2Users(
        EntryType p_user1, 
        EntryType p_user2
    ) :=
    {
        sequence := {
            {
                list := {
                    name := omit,
                    anyAttributes := omit,
                    display_name := omit,
                    sequence_list := {
                        {
                            choice := {
                                entry := p_user1
                            }
                        },
                        {
                            choice := {
                                entry := p_user2
                            }
                        }
                    },
                    elem := omit
                }
            }
        }
    }
poglitsch's avatar
poglitsch committed
	template EntryType m_EntryUser(SipUrl p_user) := {
poglitsch's avatar
poglitsch committed
		uri :=
			p_user.userInfo.userOrTelephoneSubscriber & "@" &
			p_user.hostPort.host,
		anyAttributes := omit,
        display_name := omit,
        elem := omit
poglitsch's avatar
poglitsch committed
}// end grouup ResourceListsTemplates
poglitsch's avatar
poglitsch committed

poglitsch's avatar
poglitsch committed
group Ims3gppTemplates {
    
    //TODO:check commented and below templates when test will be validated
    template TIMS3GPP mw_Ims_3gpp_CW := {
        version := 1.0,
        anyAttributes := ?,
        choice := {
            alternative_service := {
                anyAttributes := *, 
                type_ := *, 
                reason := *,