LibIms_Templates.ttcn 108 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
{	
schmitting's avatar
schmitting committed
	import from XSDAUX all;

	//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;
	
	//LibIms
	import from LibIms_SIPTypesAndValues all;
	
	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 := "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",
							password := omit
						},
						hostPort := {
							PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT
						},
						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
 */	
	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 := 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"}
	}
	
	template Supported m_supported_histinfo:=
	{
			fieldName := SUPPORTED_E,
			optionsTags := {"histinfo"}
	}
	
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) :=
schmitting's avatar
schmitting committed
        conference := p_confInfo
pintar's avatar
pintar committed
    template XmlBody m_XmlBody_CW(template Ims_cw p_cw) :=
    {
        cw := p_cw
    };
	
	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 (value) Incoming_communication_barring p_icb) := {
		simservs := {
			omit,
			{{incoming_communication_barring := p_icb}},
            omit  
    template XmlBody m_XmlBody_ACR_OCB(template (value) Outgoing_communication_barring p_ocb) :=
                {
                    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_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):= {
      0,
      full,
      {m_registration(p_user)},
      omit
    }
    
    template Registration m_registration (template XSDAUX.anyURI p_user):= {
      p_user, // XSDAUX.anyURI aor
      "a7", // XSDAUX.string id
      init, //enumerated {active,init,terminated} state,
      omit, // record of Contact contact_list optional,
      omit // record of anytype elem_list optional
    }
rennoch's avatar
rennoch committed
		
	template XmlBody mw_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
schmitting's avatar
schmitting committed
        conference := 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
	};
	
    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 {
	
	template Incoming_communication_barring	m_ICB(RuleType p_ruleType) :=
	{
        active := omit,
        anyAttributes := omit, 
		ruleset := {
schmitting's avatar
schmitting committed
			{p_ruleType}
pintar's avatar
pintar committed
		}
	}
	
	template Outgoing_communication_barring	m_OCB(RuleType p_ruleType) :=
	{
        active := omit,
        anyAttributes := omit, 
		ruleset := {
schmitting's avatar
schmitting committed
			{p_ruleType}
pintar's avatar
pintar committed
		}
	}
	
	template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) :=
	{
		id := "rule66",
		conditions := p_condition,
schmitting's avatar
schmitting committed
//		actions := {elem:={{boolean := false}}},
        actions := omit,
pintar's avatar
pintar committed
		transformations := omit
	}

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

	template Cug m_CUG (
		template CugRequestType p_crt,
		template NetworkIdentityType p_nit,
		template SixteenbitType p_cibc,
		template TwoBitType p_cci
	):= {
    	active := omit,
    	anyAttributes := omit,
		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,
        anyAttributes := omit, 
    	cugCallOperation := p_crt,
    	networkIndicator := p_nit,
    	cugInterlockBinaryCode := p_cibc,
    	cugCommunicationIndicator := p_cci
juvancic's avatar
juvancic committed
	template CugRequestType m_cugReqType(boolean p_outAccessRequest, integer p_cugIndex) :=
rennoch's avatar
rennoch committed
//		outgoingAccessRequest := p_outAccessRequest,
//		cugIndex := p_cugIndex
//TODO: workaround for ttwb118
		outgoingAccessRequest := {bool:=p_outAccessRequest},
juvancic's avatar
juvancic committed
		cugIndex := p_cugIndex
rennoch's avatar
rennoch committed
	template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) :=
	{
        outgoingAccessRequest := {bool:=p_outAccessRequest},
        cugIndex := p_cugIndex
pintar's avatar
pintar committed
}//end group CUGTemplates

pintar's avatar
pintar committed
group CWTemplates {

	template Ims_cw m_CW(template TEmptyType p_cwi) := {
        anyAttributes := omit,
        communication_waiting_indication := p_cwi,
schmitting's avatar
schmitting committed
        elem_list := omit	    
pintar's avatar
pintar committed
	}
	
    template Ims_cw mw_ims_cw(template TEmptyType p_cwi) := {
        anyAttributes := *,
        communication_waiting_indication := p_cwi,
        elem_list := *	    
    }
	
pintar's avatar
pintar committed
    template Cug m_CW2 (
        template CugRequestType p_crt,
        template NetworkIdentityType p_nit,
        template SixteenbitType p_cibc,
        template TwoBitType p_cci
    ):= {
        active := omit,
        anyAttributes := omit,
        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,
        anyAttributes := omit, 
        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),
      			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
    template PSTN_transit m_PSTN_transit_BC1(template BearerCapabilityType p_bct) :=
    {
schmitting's avatar
schmitting committed
            bearerInfomationElement_list := {p_bct},
            highLayerCompatibility_list := omit,
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
            progressIndicator_list := omit,
            display__list := omit
    template PSTN_transit m_PSTN_transit_BC2(template BearerCapabilityType p_bct,
    										 template BearerCapabilityType p_bct2) :=
    {
schmitting's avatar
schmitting committed
        bearerInfomationElement_list := {p_bct, p_bct2},
        highLayerCompatibility_list := omit,
            lowLayerCompatibility := omit,
schmitting's avatar
schmitting committed
        progressIndicator_list := omit,
        display__list := omit
    template PSTN_transit m_PSTN_transit_BC1_HLC1(template BearerCapabilityType p_bct, 
    										 	  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 := omit,
        display__list := omit
    }

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

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

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

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

    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 := omit,
            display__list := omit
    }

    template PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(template BearerCapabilityType p_bct,
    											 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},
            display__list := omit
	template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct,
											 template BearerCapabilityType p_bct2) :=
	{
schmitting's avatar
schmitting committed
			bearerInfomationElement_list := {p_bct, p_bct2},
			highLayerCompatibility_list := {*, *},
			lowLayerCompatibility := *,
schmitting's avatar
schmitting committed
			progressIndicator_list := {*},
			display__list := {*}
	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