Commit 18e4b701 authored by petersenj's avatar petersenj
Browse files

implemented TC functions TIP_U01_001 002

parent e3358db0
Loading
Loading
Loading
Loading
+97 −0
Original line number Diff line number Diff line
@@ -45,6 +45,103 @@ module SS_Ims_TCFunctions {

        group TermUserE{
				
			function f_Sip_TIP_U01_001_PCSCF(in CSeq p_cSeq_s) runs on ImsComponent {

				var template Response v_Response;

				// Request-Uri refers to home network (SUT)
				// UE1 registers its public sip-url in home network (SUT)
				// UE contact is in home network (SUT)
				// UE authorizaton data is in home network (SUT)
				f_IMS_preamble_woRegistration(c_userProfile_PCSCFwithHomeUE, p_cSeq_s); // LibSip

				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
				// Testbody

				// 	INVITE to UE1@IMS
				LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome);
				f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, vc_recordRoute, m_Supported_fromChange, omit, m_MBody_SDP(vc_sdp_local)));

				select (PX_TC_VA){ // PIXIT for TC VARIANT - awaiting 18x or 200
					case (1) {
						// 180  Ringing
						// add check if right Supported: fromChange is present
						v_Response := mw_Response_Supported(c_statusLine180, vc_callId, vc_cSeq, m_Supported_fromChange);
						f_awaitingResponse(v_Response);
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq)); 
						f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
					} 
					case (2) {	
						// 183 Session in Progress
						// add check if right Supported: fromChange is present
						v_Response := mw_Response_Supported(c_statusLine180, vc_callId, vc_cSeq, m_Supported_fromChange);
						f_awaitingResponse(v_Response);
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); 
						f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
					}
					case else {
						// 200 OK
						// add check if right PAssertedID is present
						v_Response := mw_Response_Supported(c_statusLine180, vc_callId, vc_cSeq, m_Supported_fromChange);
						f_awaitingResponse(v_Response);
						f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
					}
				}		

				f_check_Conversation();

				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());

				//Send BYE and awaiting response
				f_terminateCall_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To);

				f_SIP_postamble_UE1_withoutRegistration();
			}// end f_Sip_TIP_U01_001_PCSCF
			
			function f_Sip_TIP_U01_002_PCSCF(in CSeq p_cSeq_s) runs on ImsComponent {

				var template Response v_Response;

				// Request-Uri refers to home network (SUT)
				// UE1 registers its public sip-url in home network (SUT)
				// UE contact is in home network (SUT)
				// UE authorizaton data is in home network (SUT)
				f_IMS_preamble_woRegistration(c_userProfile_PCSCFwithHomeUE, p_cSeq_s); // LibSip

				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
				// Testbody

				// 	INVITE to UE1@IMS
				LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);
				vc_requestUri := f_initSipUrl(c_userProfile_UE1atSUThome); // Request URI of Invite is diffent than To header
				f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, vc_recordRoute, m_Supported_fromChange, omit, m_MBody_SDP(vc_sdp_local)));

				// 180  Ringing and 200 OK
				// add check if right PAssertedID is present
				v_Response := mw_Response_Supported(c_statusLine180, vc_callId, vc_cSeq,  m_Supported_fromChange);
				f_awaitingResponse(v_Response);
				f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
				v_Response := mw_Response_Supported(c_statusLine200, vc_callId, vc_cSeq,  m_Supported_fromChange);
				f_awaitingResponse(v_Response);
				f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));

				// the UPDATE should come from whoever the INVITE was to, now we axpect the UPDATE from him in the transaction
				f_awaitingUPDATE(mw_UPDATE_Request_fromChange(mw_From(vc_requestUri))); 
				
				
				f_check_Conversation();

				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());

				//Send BYE and awaiting response
				f_terminateCall_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To);

				f_SIP_postamble_UE1_withoutRegistration();
			}// end f_Sip_TIP_U01_002_PCSCF
			
			function f_Sip_TIP_U01_003_PCSCF(in CSeq p_cSeq_s) runs on ImsComponent {

				var template Response v_Response;