LibIms_Templates.ttcn 90.2 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;
	
	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 SemicolonParam_List mw_semicolonParams_realm (template charstring p_realm)	:=
		?; //superset({"realm",p_realm},{"rand",?},{"autn",?},{"algorithm","AKAv1-MD5"},{"ik",?},{"ck",?}) // 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 (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 := "sip",
                        				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 (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:="icid-value",		paramValue :="012345"}}
	};
	
	template PChargingVector m_pChargingVector_fixedValue(charstring p_homeDomain) :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := {{id:="icid-value",			paramValue :="123abc;"},
						 {id:="icid-generated-at",	paramValue :="192.1.1.10;"},
						 {id:="orig-ioi",			paramValue := p_homeDomain}}
	};
	template PChargingVector m_pChargingVector_fixedValue1(charstring p_homeDomain) :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := {
						 {id:="icid-generated-at",	paramValue :="192.1.1.10;"},
						 {id:="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.SUTIpaddr, portField:= p_interfaceprofile.SUTPort},
												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 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
		}		
		
} // end group HeaderFieldTemplates

group MessageBodyTemplates {
	
group XMLTemplates {
	
pintar's avatar
pintar committed
	template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) :=
	{
		icb := p_icb
	};
	
	template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) :=
	{
		ocb := p_ocb
	};
	
	template XmlBody m_XmlBody_ConfInfo(template Conference_info 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
	};
	
rennoch's avatar
rennoch committed
	template XmlBody m_XmlBody_CDIVN(template Comm_div_info p_cdivn) :=
	{
		cdivn := p_cdivn
	};
		
	template XmlBody mw_XmlBody_ConfInfo(template Conference_info 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
	};
	
rennoch's avatar
rennoch committed
	template XmlBody mw_XmlBody_CDIVN(template Comm_div_info p_cdivn) :=
	{
		cdivn := p_cdivn
	};
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_icb := {
			rule:= {p_ruleType}
		}
	}
	
	template Outgoing_communication_barring	m_OCB(RuleType p_ruleType) :=
	{
		ruleset_ocb := {
			rule:= {p_ruleType}
		}
	}
	
	template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) :=
	{
		id := "rule66",
		conditions := p_condition,
		actions := {bool := false},
		transformations := omit
	}

	template ConditionsType m_conditionsType_identity(template charstring p_id, template charstring p_scheme) := {
		choice := {{
			identity := {{
				choice := {{
            		one := {
            			id := p_id,
            			scheme := p_scheme,
            			any_1 := omit
            		}
				}}
			}}
		}}
	}
		
	
	
	
} //end group ACR_CBTemplates

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)}
  }
 }
	
 template Mcid mw_mcid_request_mcidIndicatorTrue :=
 {
  choice := {
   request := {McidRequestIndicator := bit2str('1'B),
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)}
  }
 }
	
 template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue :=
 {
  choice := {
   response := {McidResponseIndicator := bit2str('1'B),
		HoldingProvidedIndicator := bit2str('1'B)}
  }
 }
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
							InformationTransferCapability := 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 := omit,
			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
    						InformationTransferCapability := 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 m_CDIVN_sub := {
		entity := ?,
		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,
				any_1 := omit
			},
			comm_div_ntfy_trigger_criteria := omit,
			comm_div_info_selection_criteria := omit,
			any_1 := omit
		},
		comm_div_ntfy_info := omit,
		any_1 := 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
	) := {
		list := {
			{
				name := omit,
				anyAttributes := omit,
				display_name := omit,
				seq_1 := {
poglitsch's avatar
poglitsch committed
					{
						list := omit,
						external_ := omit,
						entry := p_user1,
						entry_Ref := omit
					},
					{
						list := omit,
						external_ := omit,
						entry := p_user2,
						entry_Ref := omit
					}
poglitsch's avatar
poglitsch committed
	template EntryType m_EntryUser(SipUrl p_user) := {
		display_name := omit,
		uri :=
			p_user.userInfo.userOrTelephoneSubscriber & "@" &
			p_user.hostPort.host,
		any_1 := omit,
poglitsch's avatar
poglitsch committed
		anyAttributes := omit
poglitsch's avatar
poglitsch committed
}// end grouup ResourceListsTemplates
poglitsch's avatar
poglitsch committed

poglitsch's avatar
poglitsch committed
group Ims3gppTemplates {
poglitsch's avatar
poglitsch committed
	template Ims_3gpp mw_Ims_3gpp_CW := {
		version := 1.0,
		anyAttributes := ?,
		choice_1 := {
			alternative_service := {
				anyAttributes := ?,
				type_ := ?,
				reason := ?,
				action_ := {
					anyAttributes := ?,
					emergency_registration := *,
					call_waiting_indication := {},
					any_1 := *
				},
				any_1 := *
			}
		},
		any_1 := *
	}
} // end group Ims3gpp

poglitsch's avatar
poglitsch committed
group CONFTemplates {
	template booleanXSD boolXSD_true:={bool:=true}
	template booleanXSD boolXSD_false:={bool:=false}
rennoch's avatar
rennoch committed
	
	template anyAttributes m_emptyAnyAttributes:={}
	
	template Media_type m_mediatype_status(template Media_status_type p_status):= {
		id:="1",
juvancic's avatar
juvancic committed
		anyAttributes:=omit,//m_emptyAnyAttributes,
		display_text :=omit,
		type_ :=omit,
		label_ :=omit,
		src_id:=omit,
		status:= p_status,
		any_1:=omit
	}
	
juvancic's avatar
juvancic committed
	template Endpoint_type m_endpoint(template charstring p_Uri,template Endpoint_status_type p_epStatus,template Joining_type p_joinMethod, template Disconnection_type p_discMethod, template Media_type p_mediastatus):= {
		entity:=p_Uri,
		state:=full,
juvancic's avatar
juvancic committed
		anyAttributes:=omit,//m_emptyAnyAttributes,
		display_text:=omit,
		referred:=omit,
		status:=p_epStatus,
juvancic's avatar
juvancic committed
		joining_method:=p_joinMethod,
		joining_info:=omit,
		disconnection_method:=omit,
		disconnection_info:=omit,
		media:={p_mediastatus},// optional, 
		call_info:=omit,
		any_1:=omit
	}
	
	template User_type m_1user (template charstring p_Uri,template Endpoint_type p_endpoint) := {
		entity:=p_Uri,
		state:=full,
juvancic's avatar
juvancic committed
		anyAttributes:=omit,//m_emptyAnyAttributes,
		display_text:=omit,
		associated_aors:=omit,
		roles:=omit,
		languages :=omit,
		cascaded_focus :=omit,
		endpoint:={p_endpoint},// optional,
		any_1:=omit
	}
	
rennoch's avatar
rennoch committed
	template Users_type m_users_1user_full(template User_type p_user):={
			state:=full,
juvancic's avatar
juvancic committed
		    anyAttributes := omit,//m_emptyAnyAttributes,
rennoch's avatar
rennoch committed
		    user:={p_user},
		    any_1:=omit
	}
juvancic's avatar
juvancic committed
	template Users_type m_users_2user_full(template User_type p_user1,template User_type p_user2):={
			state:=full,
juvancic's avatar
juvancic committed
			anyAttributes := omit,//m_emptyAnyAttributes,
juvancic's avatar
juvancic committed
			user:={p_user1,p_user2},
			any_1:=omit
	}
	
	template Conference_state_type m_conference_state(template unsignedInt p_nUsers, template booleanXSD p_active, template booleanXSD p_locked) := {
juvancic's avatar
juvancic committed
    	anyAttributes:=omit,//m_emptyAnyAttributes,
    	user_count:=p_nUsers,
    	active:=p_active,
    	locked:=p_locked,
    	any_1 := omit
	}
	
	template Conference_info m_ci_cUri_cState_userEntity(template charstring p_cUri, template Conference_state_type p_cState, template Users_type p_users ) := {
rennoch's avatar
rennoch committed
		entity := p_cUri,
		state := full,
		version := 1,
juvancic's avatar
juvancic committed
		anyAttributes := omit,//m_emptyAnyAttributes,//*,// {{name:="",val:=""}},
rennoch's avatar
rennoch committed
		conference_description := omit,
		host_info := omit,
		conference_state := p_cState,
rennoch's avatar
rennoch committed
		users := p_users,
		sidebars_by_ref := omit,
		sidebars_by_val := omit,
		any_1 := omit
	}
	
poglitsch's avatar
poglitsch committed
 template Conference_info mw_conferenceInfo_active := {
	 entity := ?,
	 state := *,
	 version := *,
	 anyAttributes := ?,
	 conference_description := *,
	 host_info := *,
	 conference_state := ?,
	 users := {
		 state := ?,
		 anyAttributes := ?,
		 user := {
			 {
				 entity := *,
				 state := *,
				 anyAttributes := *,
				 display_text := *,
				 associated_aors := *,
				 roles := *,
				 languages := *,
				 cascaded_focus := *,
				 endpoint := {
					 {
						 entity := *,
						 state := *,
						 anyAttributes := ?,
						 display_text := *,
						 referred := *,
						 status := connected,
						 joining_method := dialed_in,
						 joining_info := *,
						 disconnection_method := *,
						 disconnection_info := *,