LibIms_Templates.ttcn 82.4 KB
Newer Older
pintar's avatar
pintar committed
			Via p_via, template MessageBody p_mb )
	modifies m_INFO_Request_Base
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_mimeMultipart}
		},
		messageBody := p_mb
pintar's avatar
pintar committed
	}			
	
	template INFO_Request m_INFO_Request_Xml_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, template MessageBody p_mb )
	modifies m_INFO_Request_Base
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_xmlAplication}
		},
		messageBody := p_mb
pintar's avatar
pintar committed
	}	
	
	template INVITE_Request m_INVITE_Request_UE
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route,  template Supported p_supported, template MessageBody p_mb )
	modifies m_INVITE_Request_Base
	:=
	{
	  msgHeader :=
	  {
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
		pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
		require := p_require,
		route := p_route,
		//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
		supported := p_supported
	  },
	  messageBody := p_mb
poglitsch's avatar
poglitsch committed
	}
	
		template INVITE_Request m_INVITE_Request_Allow_UE
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route,  template Supported p_supported, template MessageBody p_mb, template Allow p_allow)
	modifies m_INVITE_Request_UE
	:=
	{
	  msgHeader :=
	  {
	  	allow := p_allow
	  }
	}
		
	
	/*
	 * 
	 * @desc INVITE message exchanged at Mw
	 *
	 */	
	template INVITE_Request m_INVITE_Request_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
	modifies m_INVITE_Request_Base
	:=
	{
	  msgHeader :=
	  {
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
		require := p_require,
		pChargingVector := p_pChargingVector,
		recordRoute := p_recordRoute,
		route := p_route,
		supported := p_supported
	  },
	  messageBody := p_mb
	}	
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_HistoryInfo_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
			template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
			template HistoryInfo p_historyInfo)
	modifies m_INVITE_Request_IMS
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			historyInfo := p_historyInfo
		}
	}
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_Mime_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
	modifies m_INVITE_Request_IMS
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_mimeMultipart}
		}
pintar's avatar
pintar committed
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
			template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
			template PAssertedID p_pAssertedID, template Privacy p_privacy )
	modifies m_INVITE_Request_IMS
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_mimeMultipart},
			pAssertedID := p_pAssertedID,
			privacy := p_privacy
		}
	}
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute, template AcceptContact p_acceptContact, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
	modifies m_INVITE_Request_Base
	:=
	{
		msgHeader :=
		{
    		acceptContact := p_acceptContact,
    		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
    		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
    		require := p_require,
    		pAssertedID := p_pAssertedID,
    		pChargingVector := p_pChargingVector,
    		recordRoute := p_recordRoute,
    		route := p_route,
    		supported := p_supported
		},
		messageBody := p_mb
	}	
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Privacy p_privacy, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
	modifies m_INVITE_Request_Base
	:=
	{
		msgHeader :=
		{
    		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
    		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
    		require := p_require,
    		pAssertedID := p_pAssertedID,
    		pChargingVector := p_pChargingVector,
    		privacy := p_privacy,
    		recordRoute := p_recordRoute,
    		route := p_route,
    		supported := p_supported
		},
		messageBody := p_mb
	}	

	/*
	 * 
	 * @desc INVITE message exchanged at Mw
	 *
	 */	
	template INVITE_Request m_INVITE_Request_PAssertedService_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template PAssertedService p_pAssertedService)
	modifies m_INVITE_Request_Base
	:=
	{
	  msgHeader :=
	  {
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
		require := p_require,
		pChargingVector := p_pChargingVector,
		route := p_route,
		supported := p_supported,
		pAssertedService := p_pAssertedService
	  },
	  messageBody := p_mb
	}		
	
	/*
	 * 
	 * @desc INVITE message exchanged at Mw
	 *
	 */	
	template INVITE_Request m_INVITE_Request_PEarlyMedia_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
	modifies m_INVITE_Request_Base
	:=
	{
	  msgHeader :=
	  {
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
		require := p_require,
		pChargingVector := p_pChargingVector,
		pEarlyMedia := m_pEarlyMedia_sup, 
		recordRoute := p_recordRoute,
		route := p_route,
		supported := p_supported
	  },
	  messageBody := p_mb
	}	

	template INVITE_Request m_INVITE_Request_PPreferred_UE
		(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		  Via p_via, Contact p_contact, template Require p_require,
		template Route p_route,  template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID )
		modifies m_INVITE_Request_UE
		:=
		{
		  msgHeader :=
		  {
			pPreferredID := p_pPreferredID
		  }
		}	

	template INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE
		(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
				Via p_via, Contact p_contact, template Require p_require,
		template Route p_route,  template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID, template Privacy p_privacy)
		modifies m_INVITE_Request_UE
		:=
		{
				msgHeader :=
				{
			pPreferredID := p_pPreferredID,
			privacy := p_privacy
				}
		}

	template INVITE_Request m_INVITE_Request_SessionExpires_UE
		(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		  Via p_via, Contact p_contact, template Require p_require,
		template Route p_route,  template Supported p_supported, template MessageBody p_mb, template SessionExpires p_se)
		modifies m_INVITE_Request_Base
		:=
		{
		  msgHeader :=
		  {
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
			require := p_require,
			route := p_route,
			//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
			supported := p_supported,
			sessionExpires := p_se
		  },
		  messageBody := p_mb
		}
	
	template INVITE_Request m_INVITE_Request_minSE_UE
		(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		  Via p_via, Contact p_contact, template Require p_require,
		template Route p_route,  template Supported p_supported, template MessageBody p_mb, template MinSE p_minSE)
		modifies m_INVITE_Request_Base
		:=
		{
		  msgHeader :=
		  {
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
			require := p_require,
			route := p_route,
			//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
			supported := p_supported,
			minSE := p_minSE
		  },
		  messageBody := p_mb
		}
	
	/*
	 * 
	 * @desc INVITE message exchanged at Mw
	 *
	 */	
	template INVITE_Request m_INVITE_Request_minSE_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template MinSE p_minSE)
	modifies m_INVITE_Request_Base
	:=
	{
	  msgHeader :=
	  {
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
		require := p_require,
		pChargingVector := p_pChargingVector,
		route := p_route,
		supported := p_supported,
			minSE := p_minSE
	  },
	  messageBody := p_mb
rennoch's avatar
rennoch committed
	}
		
	template INVITE_Request m_INVITE_Request_User2UserData_IMS
    (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
    		Via p_via, Contact p_contact, template Require p_require,
    template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, charstring p_U2UData)
    modifies m_INVITE_Request_IMS
    :=
    {
    	msgHeader :=
    	{
    		userToUser := m_UserToUserData(valueof(p_U2UData))
    	}
    }
    
	template MESSAGE_Request m_MESSAGE_Request_NoBody_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}
	
	template MESSAGE_Request m_MESSAGE_Request_PCharging_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
				pChargingVector := m_pChargingVector_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN),
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}
	
	template MESSAGE_Request m_MESSAGE_Request_PCharging_IMS
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported, 
			template PChargingVector p_pChargingVector)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
				pChargingVector := p_pChargingVector,
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}

	template MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				pMediaAuthorization := m_pMediaAuthorization_fixedValue,
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}

	template MESSAGE_Request m_MESSAGE_Request_PPreferred_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported, template PPreferredID p_pPreferredID)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				pPreferredID := p_pPreferredID,
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}
	
	template MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_TextPlainLength(valueof(m_MBody_longPlainText))},
				contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_plainText},
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				require := p_require,
				route := p_route,
				//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
				supported := p_supported
			  },
			  messageBody := m_MBody_longPlainText
	}
rennoch's avatar
rennoch committed
	
	template NOTIFY_Request m_NOTIFY_Request_Xml_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, template MessageBody p_mb )
	modifies m_NOTIFY_Request_Base
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_xmlAplication}
		},
		messageBody := p_mb
	}
		
	template REGISTER_Request m_REGISTER_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
		From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization,
		template ProxyRequire p_proxyRequire, template Require p_require,
		template SecurityClient p_securityClient, template SecurityVerify p_securityVerify, template Supported p_supported)
		modifies m_REGISTER_Request_Base :=
	{
		requestLine	:=
		{
			method := REGISTER_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{
			authorization := p_authorization,
			callId := p_callId,
			contact	:= p_contact,
			cSeq		:= p_cSeq,
			fromField	:= p_from,
			proxyRequire := p_proxyRequire,
			require := p_require,
			securityClient := p_securityClient,
			securityVerify := p_securityVerify,
			supported := p_supported,
			toField		:= p_to,
			via		:= p_via

		}
	}
	
		
	template REGISTER_Request m_REGISTER_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
		From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization)
		modifies m_REGISTER_Request_Base :=
	{
		requestLine	:=
		{
			method := REGISTER_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{
			authorization := p_authorization,
			callId := p_callId,
			contact	:= p_contact,
			cSeq		:= p_cSeq,
			fromField	:= p_from,
			toField		:= p_to,
			via		:= p_via

		}
	}
	template REGISTER_Request m_REGISTER_Request_expires_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
		From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization, template DeltaSec p_deltaSec)
		modifies m_REGISTER_Request_IMS :=
	{
		msgHeader :=
		{
			expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec}
		}
	}
	
	template SUBSCRIBE_Request m_SUBSCRIBE_Request_UE (SipUrl p_requestUri, CallId p_callId, 
		CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact)  modifies m_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,	
			contact	:= p_contact,
			cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
			event	:= m_Event_reg,
			expires	:= m_Expires_600000
		}
	}
	
rennoch's avatar
rennoch committed
	template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_UE (SipUrl p_requestUri, CallId p_callId, 
		CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb)  modifies m_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,	
			contact	:= p_contact,
			cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
			event	:= m_Event_reg,
			expires	:= m_Expires_600000
		},
		messageBody := p_mb
	}	
	
	template SUBSCRIBE_Request m_SUBSCRIBE_Request_IMS (SipUrl p_requestUri, CallId p_callId, 
		CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact)  modifies m_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{	
			contact	:= p_contact,
			cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
			event	:= m_Event_reg,
			expires	:= m_Expires_600000
		}
	}
	
	template SUBSCRIBE_Request m_SUBSCRIBE_Request_Event (SipUrl p_requestUri, CallId p_callId, 
		CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Event p_event)  modifies m_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{	
			contact	:= p_contact,
			cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
			event	:= p_event,
			expires	:= m_Expires_600000
		}
	}
	template UPDATE_Request m_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
rennoch's avatar
rennoch committed
	{
		msgHeader :=
		{	
			fromField := p_from
		}
	}
}//end group request_send
 
group request_receive {
	
	template ACK_Request mw_ACK_Request_noPaccessNetworkInfo	(template CallId p_callId)
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pAccessNetworkInfo := omit}
		}

	template ACK_Request mw_ACK_Request_PchargingVector	(template CallId p_callId, template PChargingVector p_pChargingVector)
		modifies mw_ACK_Request_Base
		:=
		{
		  msgHeader := {  pChargingVector := p_pChargingVector}
		}
		
	template BYE_Request mw_BYE_Request_noPChargingFunction_UE(template CallId p_callId) modifies  mw_BYE_Request_Base
	  :=
	  {
		msgHeader := {pChargingFunctionAddresses := omit,
			          pChargingVector := omit}
	  }
		
	template BYE_Request mw_BYE_Request_via_PChargingVector_UE(template CallId p_callId, template PChargingVector p_pChargingVector, template Via p_via) modifies  mw_BYE_Request_Base
	  :=
	  {
		msgHeader := {pChargingVector := p_pChargingVector,
					  via := p_via}
	  }
		  
	template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {pChargingFunctionAddresses := omit}
	  }
	template INVITE_Request mw_INVITE_Request_PChargingFunction modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {pChargingFunctionAddresses := ?}
	  }	 
	   
	template INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred (template PAssertedID p_pAssertedID)modifies mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {pAssertedID := p_pAssertedID,
					  pPreferredID := omit
					 }
	  }
	  
     template INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact (template PAssertedID p_pAssertedID, template AcceptContact p_acceptContact) modifies mw_INVITE_Request_Base
       :=
       {
      msgHeader := {pAssertedID := p_pAssertedID,
					acceptContact := p_acceptContact
          }
       }
   
	template INVITE_Request mw_INVITE_Request_RecordRoute_Via (template RecordRoute p_recordRoute, template Via p_via) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {recordRoute := p_recordRoute,
					  via := p_via}
	  }

	template INVITE_Request mw_INVITE_Request_route (template Route p_route) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {route := p_route}
	  }
	  
	template INVITE_Request mw_INVITE_Request_require (
		template Require p_require
	) modifies  mw_INVITE_Request_Base := {
		msgHeader := { require := p_require }
	}
	  
poglitsch's avatar
poglitsch committed
	template INVITE_Request mw_INVITE_Request_supported (
		template Supported p_supported
	) modifies  mw_INVITE_Request_Base := {
		msgHeader := { supported := p_supported }
	}
	  
	template INVITE_Request mw_INVITE_Request_SessionExpires (template SessionExpires p_sessionExpires) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {sessionExpires := p_sessionExpires}
	  }
	  
	template INVITE_Request mw_INVITE_Request_IMS (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		}
	  }
	 
	template INVITE_Request mw_INVITE_Request_IMS_mb (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies  mw_INVITE_Request_Base
	:=
	{
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		},
		messageBody := ?
	}
	  
	template INVITE_Request mw_INVITE_Request_IMS_cug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template Cug p_cug ) modifies  mw_INVITE_Request_Base
	:=
	{
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		},
		messageBody := (mw_MBody_XML(mw_XmlBody_CUG(p_cug)),
						mw_MBody_MIMESdpXml(?, mw_XmlBody_CUG(p_cug)))
	}
	  
	template INVITE_Request mw_INVITE_Request_IMS_pstn (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template PSTN_transit p_pstn ) modifies  mw_INVITE_Request_Base
	:=
	{
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		},
		messageBody := (mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)),
						mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn)))//m_MBody_PSTN(p_pstn)//PSTN_transit
	}

	/*
	 * 
	 * @desc Await INVITE using topology hiding
	 */
	template INVITE_Request mw_INVITE_Request_TH modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {	pChargingFunctionAddresses := omit,
						pChargingVector := omit}
	  }

	/*
	 * 
	 * @desc Await INVITE without PAsserted and Privacy
	 */
	template INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy (template From p_from)
	  modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {  fromField := p_from,
						pAssertedID := omit,
						pPreferredID := omit}
	  }


	/*
	 * 
	 * @desc Await INVITE with PAsserted and Privacy
	 */
	template INVITE_Request mw_INVITE_Request_PassertedPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
			modifies  mw_INVITE_Request_Base
			:=
			{
		msgHeader := {
			fromField := p_from,
			pAssertedID := p_pAssertedID,
			privacy := p_privacy}
		}
			
     /*
      * 
      * @desc Await INVITE with PAsserted and Privacy
      */
     template INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
       modifies  mw_INVITE_Request_Base
       :=
       {
      msgHeader := {
      	  fromField := p_from,
          pAssertedID := p_pAssertedID,
          privacy := p_privacy ifpresent}
       }
rennoch's avatar
rennoch committed

     /*
      * 
      * @desc Await INVITE with PAsserted and Privacy
      */
     template INVITE_Request mw_INVITE_Request_HistoryInfo (template HistoryInfo p_historyInfo)
       modifies  mw_INVITE_Request_Base
       :=
       {
      msgHeader := {
          historyInfo := p_historyInfo}
       }
   
	template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE	(template CallId p_callId)
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pChargingFunctionAddresses := omit,
				          pChargingVector := omit}
		}
	  
	template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS	(template CallId p_callId)
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pChargingFunctionAddresses := omit,
						  pChargingVector := omit}
		}	
		  
	template MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred (template CallId p_callId, template PAssertedID p_pAssertedID)modifies mw_MESSAGE_Request_Base
		:=
	  	{
		  msgHeader := {pAssertedID := p_pAssertedID,
			 		    pPreferredID := omit
					   }
	    }

	template MESSAGE_Request mw_MESSAGE_Request_PchargingVector	(template CallId p_callId,template charstring p_id, template charstring p_paramValue)
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pChargingVector := mw_pChargingVector(p_id,p_paramValue)}
		}
	  
	template MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo	(template CallId p_callId)
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pAccessNetworkInfo := omit}
		}

	template MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization	(template CallId p_callId)
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pMediaAuthorization := omit}
		}
		
	template PUBLISH_Request mw_PUBLISH_Request_PchargingVector(template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_PUBLISH_Request_Base :=
	{
		msgHeader := {  pChargingVector := p_pChargingVector}
	}

	template REGISTER_Request mw_REGISTER_Request_IMS	(template Path p_Path, template PChargingVector p_pChargingVector, template PVisitedNetworkID p_pVisitedNetworkID)
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  authorization := ?,
		  				  path := p_Path,
						  pChargingVector := p_pChargingVector, //mw_pChargingVector(p_id,p_paramValue)
						  pVisitedNetworkID := p_pVisitedNetworkID,
						  require := mw_require_path,
					      securityClient := omit,
						  securityVerify := omit
						  }
		}
	  


	template REGISTER_Request mw_REGISTER_authorizedRequest_IMS	(template Authorization p_authorization)
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  authorization := p_authorization
						  }
		}
		
	template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS	(template Authorization p_authorization)
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  authorization := p_authorization,
						  securityClient := omit
						  }
		}
	template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  securityVerify := omit,
						  securityClient := omit
						  }
		}
		
	template REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS	
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  authorization := omit
						  }
		}

	template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS (template From p_from, To p_to, template PAssertedID p_pAssertedID, template PChargingVector p_pChargingVector)  modifies mw_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E
		},
		msgHeader :=
		{	fromField := p_from,
			toField := p_to,
			event	:= m_Event_reg,
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
			pChargingVector := p_pChargingVector
		}
	}
rennoch's avatar
rennoch committed
	template UPDATE_Request mw_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
	
	template NOTIFY_Request mw_NOTIFY_Request(
		CallId p_callId, 
		template charstring p_state,
		template charstring p_contentType,
		Event p_event,
		template MessageBody p_mb
	) modifies mw_NOTIFY_Request_Base := {
		msgHeader :=
		{
			subscriptionState := mw_subscriptionState(p_state),
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  p_contentType},
			event := p_event
		},
		messageBody := p_mb
	}

}//end group request_receive
group response_send
{
	template Response m_Response_2xxonBYE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
			  From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
		{
			msgHeader :=
			{
				contact		:= p_contact,
				maxForwards := omit
			}
		}

	template Response m_Response_onCANCEL (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) 
		modifies m_Response_Base:=
	{
		msgHeader :=
		{
			//contact		:= p_contact,
			maxForwards := omit//,
			//recordRoute := p_recordRoute
		}
	}	
	
	template Response m_Response_18XonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
			From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			//contact		:= p_contact,
			//maxForwards := omit,
			//rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		}
	}