Commit 8f980dcb authored by rennoch's avatar rennoch
Browse files

Implemented TC_functions for TIP/TIR

parent de9cf0c9
Loading
Loading
Loading
Loading
+449 −0
Original line number Diff line number Diff line
@@ -318,8 +318,457 @@ module SS_Ims_TCFunctions {

			}// end f_Sip_TIP_U02_001_PCSCF
			
			function f_Sip_TIP_U02_002_PCSCF(in CSeq p_cSeq_s) runs on ImsComponent {

				var template PAssertedID v_PAsserted;

				// set PAssertedID
				v_PAsserted := m_PAssertedID(m_AddrUnion_NameAddr(PX_SIP_NameAddr_PAsserted_Tel_URI));

				// IMS1  interface profile initialization
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);

				// IMS1UE1 contact is in home network (TS)
				f_IMS_preamble_woRegistration(c_userProfile_UE1atSUThome, p_cSeq_s); // configuration of local user IMS1UE1
		
				// Note: UE1 is registerd in SUT only, but not registered in IMS1
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

				// Testbody
		
				f_awaitingINVITE(mw_INVITE_Request_Base);

				select(PX_TC_VA){ // PIXIT for TC VARIANT
					case (1) {
						// 180  Ringing
						//f_SendResponse_with_ID_params(StatusLine180,omit,v_PAsserted,omit);
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, v_PAsserted, omit));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					} 
					case (2) {
						// 183 Session in Progress
						//f_SendResponse_with_ID_params(StatusLine183,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine183, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, v_PAsserted, omit));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));							
					} 
					case else {
						// 200 OK
						//f_SendResponse_with_ID_params(StatusLine200,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, v_PAsserted, omit, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
					}		
				}
					
				f_check_Conversation();

				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
				
				//await BYE and send 200 OK
				f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));

				// UE1 is registerd in SUT only, but not registered in IMS1
				f_SIP_postamble_IMS1_withoutRegistration();

			}// end f_Sip_TIP_U02_002_PCSCF
			
			function f_Sip_TIP_U02_003_PCSCF(in CSeq p_cSeq_s) runs on ImsComponent {

				var template PAssertedID v_PAsserted;

				// set PAssertedID
				v_PAsserted := m_PAssertedID_2x(m_AddrUnion_NameAddr(PX_SIP_NameAddr_PAsserted),m_AddrUnion_NameAddr(PX_SIP_NameAddr_PAsserted_Tel_URI));

				// IMS1  interface profile initialization
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);

				// IMS1UE1 contact is in home network (TS)
				f_IMS_preamble_woRegistration(c_userProfile_UE1atSUThome, p_cSeq_s); // configuration of local user IMS1UE1
		
				// Note: UE1 is registerd in SUT only, but not registered in IMS1
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

				// Testbody
		
				f_awaitingINVITE(mw_INVITE_Request_Base);

				select(PX_TC_VA){ // PIXIT for TC VARIANT
					case (1) {
						// 180  Ringing
						//f_SendResponse_with_ID_params(StatusLine180,omit,v_PAsserted,omit);
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, v_PAsserted, omit));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					} 
					case (2) {
						// 183 Session in Progress
						//f_SendResponse_with_ID_params(StatusLine183,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine183, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, v_PAsserted, omit));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));							
					} 
					case else {
						// 200 OK
						//f_SendResponse_with_ID_params(StatusLine200,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, v_PAsserted, omit, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
					}		
				}
					
				f_check_Conversation();

				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
				
				//await BYE and send 200 OK
				f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));

				// UE1 is registerd in SUT only, but not registered in IMS1
				f_SIP_postamble_IMS1_withoutRegistration();

			}// end f_Sip_TIP_U02_003_PCSCF

			function f_Sip_TIP_U02_004_PCSCF(in CSeq p_cSeq_s) runs on ImsComponent {

				var template Privacy v_Privacy;

				// set PAssertedID
				v_Privacy := m_Privacy(c_privacy_id);

				// IMS1  interface profile initialization
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);

				// IMS1UE1 contact is in home network (TS)
				f_IMS_preamble_woRegistration(c_userProfile_UE1atSUThome, p_cSeq_s); // configuration of local user IMS1UE1
		
				// Note: UE1 is registerd in SUT only, but not registered in IMS1
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

				// Testbody
		
				f_awaitingINVITE(mw_INVITE_Request_Base);

				select(PX_TC_VA){ // PIXIT for TC VARIANT
					case (1) {
						// 180  Ringing
						//f_SendResponse_with_ID_params(StatusLine180,omit,v_PAsserted,omit);
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, v_Privacy));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					} 
					case (2) {
						// 183 Session in Progress
						//f_SendResponse_with_ID_params(StatusLine183,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine183, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, v_Privacy));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));							
					} 
					case else {
						// 200 OK
						//f_SendResponse_with_ID_params(StatusLine200,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, v_Privacy, valueof( m_MBody_SDP(vc_sdp_local))));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
					}		
				}
					
				f_check_Conversation();

				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
				
				//await BYE and send 200 OK
				f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));

				// UE1 is registerd in SUT only, but not registered in IMS1
				f_SIP_postamble_IMS1_withoutRegistration();

			}// end f_Sip_TIP_U02_004_PCSCF
			
			function f_Sip_TIP_U02_005_PCSCF(in CSeq p_cSeq_s) runs on ImsComponent {
				
				// IMS1  interface profile initialization
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);

				// IMS1UE1 contact is in home network (TS)
				f_IMS_preamble_woRegistration(c_userProfile_UE1atSUThome, p_cSeq_s); // configuration of local user IMS1UE1
		
				// Note: UE1 is registerd in SUT only, but not registered in IMS1
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

				// Testbody
		
				f_awaitingINVITE(mw_INVITE_Request_supported(m_supported_fromChange));

				f_check_Conversation();

				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
				
				f_sendResponse(m_Response_Base(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
				
				f_awaitingACK(mw_ACK_Request_Base(vc_callId));

			}// end f_Sip_TIP_U02_005_PCSCF
			
			function f_Sip_TIP_U02_006_PCSCF(in CSeq p_cSeq_s) runs on ImsComponent {
				// IMS1  interface profile initialization
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);

				// IMS1UE1 contact is in home network (TS)
				f_IMS_preamble_woRegistration(c_userProfile_UE1atSUThome, p_cSeq_s); // configuration of local user IMS1UE1
		
				// Note: UE1 is registerd in SUT only, but not registered in IMS1
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

				// Testbody
		
				f_awaitingINVITE(mw_INVITE_Request_supported(m_supported_fromChange));

				// 180  Ringing
				f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, omit));
				
				f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
				
				f_awaitingACK(mw_ACK_Request_Base(vc_callId));
				
				
				vc_requestUri := f_initSipUrl(c_userProfile_UE1atSUThome); // Request URI of Invite is diffent than To header
				
				f_SendUPDATE(m_UPDATE_Request_fromChange(m_From_SipUrl(vc_requestUri)));
				
				f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); 

				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
				
				
				//await BYE and send 200 OK
				f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));

				// UE1 is registerd in SUT only, but not registered in IMS1
				f_SIP_postamble_IMS1_withoutRegistration();

			}// end f_Sip_TIP_U02_006_PCSCF
			
		}// end group OrigUserE
		group DestAS{
			
			function f_Sip_TIP_N01_001_SCSCF(in CSeq p_cSeq_s) runs on ImsComponent {
				
				var template Privacy v_Privacy;

				// set Privacy
				v_Privacy := m_Privacy(c_privacy_id);
				
				//TODO check if this is correct ""reg""
				// Request-Uri refers to home network (SUT)
				f_IMS_preamble_woRegistration(c_userProfile_SCSCFwithHomeUE, p_cSeq_s); // LibSip
    
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
				// Testbody
    
				// 	INVITE to AS1@IMS
				LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_AS1);// TODO check if this is correct 
				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, omit));
    				
				f_awaitingINVITE(mw_INVITE_Request_Base);
				
				select(PX_TC_VA){ // PIXIT for TC VARIANT
					case (1) {
						// 180  Ringing
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, omit));
						f_awaitingResponse(mw_Response_PAsserted_Privacy(c_statusLine180, vc_callId, vc_cSeq, *, v_Privacy));
						
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						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));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					} 
					case (2) {
						// 183 Session in Progress
						//f_SendResponse_with_ID_params(StatusLine183,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine183, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, omit));
						f_awaitingResponse(mw_Response_PAsserted_Privacy(c_statusLine183, vc_callId, vc_cSeq, *, v_Privacy));

						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						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));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					} 
					case else {
						// 200 OK
						//f_SendResponse_with_ID_params(StatusLine200,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, omit));
						f_awaitingResponse(mw_Response_PAsserted_Privacy(c_statusLine200, vc_callId, vc_cSeq, *, v_Privacy));

						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());

						f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					}		
				}
    				
				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
    				
    				
			}// end f_Sip_TIP_N01_001_SCSCF

			function f_Sip_TIP_N01_002_SCSCF(in CSeq p_cSeq_s) runs on ImsComponent {
				
				var template Privacy v_PrivacySend;
				var template Privacy v_PrivacyReceive;

				// set Privacy
				
				v_PrivacySend := m_Privacy(c_privacy_none);
				v_PrivacyReceive := m_Privacy(c_privacy_id);
				
				//TODO check if this is correct ""reg""
				// Request-Uri refers to home network (SUT)
				f_IMS_preamble_woRegistration(c_userProfile_SCSCFwithHomeUE, p_cSeq_s); // LibSip
    
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
				// Testbody
    
				// 	INVITE to AS1@IMS
				LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_AS1);// TODO check if this is correct 
				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, omit));
    				
				f_awaitingINVITE(mw_INVITE_Request_Base);
				
				select(PX_TC_VA){ // PIXIT for TC VARIANT
					case (1) {
						// 180  Ringing
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, v_PrivacySend));
						f_awaitingResponse(mw_Response_PAsserted_Privacy(c_statusLine180, vc_callId, vc_cSeq, *, v_PrivacyReceive));
						
						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						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));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					} 
					case (2) {
						// 183 Session in Progress
						//f_SendResponse_with_ID_params(StatusLine183,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine183, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, v_PrivacySend));
						f_awaitingResponse(mw_Response_PAsserted_Privacy(c_statusLine183, vc_callId, vc_cSeq, *, v_PrivacyReceive));

						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
						f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, valueof( m_MBody_SDP(vc_sdp_local))));
						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));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					} 
					case else {
						// 200 OK
						//f_SendResponse_with_ID_params(StatusLine200,omit,v_PAsserted,omit);		
						//IUT (P-CSCF) should set&send PAssertedID parameter to originating side
						f_sendResponse(m_Response_PAsserted_Privacy(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, v_PrivacySend));
						f_awaitingResponse(mw_Response_PAsserted_Privacy(c_statusLine200, vc_callId, vc_cSeq, *, v_PrivacyReceive));

						f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());

						f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
						f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					}		
				}
    				
				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
    				
			}// end f_Sip_TIP_N01_002_SCSCF

			function f_Sip_TIP_N01_003_SCSCF(in CSeq p_cSeq_s) runs on ImsComponent {
				// Only different configuration in TIR AS for user , here in "temporary mode"
				f_Sip_TIP_N01_001_SCSCF(p_cSeq_s);
			}// end f_Sip_TIP_N01_003_SCSCF

			function f_Sip_TIP_N01_004_SCSCF(in CSeq p_cSeq_s) runs on ImsComponent {
				
				// 	INVITE to UE1@IMS
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

				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)));
				f_awaitingINVITE(mw_INVITE_Request_supported(omit));

				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
				
				f_sendResponse(m_Response_Base(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
				f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq));
				
				f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
				f_awaitingACK(mw_ACK_Request_Base(vc_callId));
			}// end f_Sip_TIP_N01_004_SCSCF

			function f_Sip_TIP_N01_005_SCSCF(in CSeq p_cSeq_s) runs on ImsComponent {

			var From my_from := c_empty_From;
				// send invite
				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)));
				// receive invite
				f_awaitingINVITE(mw_INVITE_Request_Base);
				//send 180 ringing
				f_sendResponse(m_Response_Base(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
				// receive 180 ringing
				f_awaitingResponse(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq));
				//send 200 OK INVITE
				f_sendResponse(m_Response_Base(c_statusLine200,vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
				// receive 200 OK INVITE
				f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
				//send ACK
				f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
				// receive ACK
				f_awaitingACK(mw_ACK_Request_Base(vc_callId));
				
				// testbody
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
				
				//send UPDATE TODO fix this
				vc_requestUri := f_initSipUrl(c_userProfile_UE3atSUThome); // Request URI of Invite is diffent than To header
				// TODO the following should be changed to another connected id instead, like c_userProfile_UE1atSUThome_PRIVATE or c_userProfile_UE1atSUThome_connected which will require new PIXIT value
				
				f_SendUPDATE(m_UPDATE_Request_fromChange(m_From_SipUrl(vc_requestUri)));
				//receive UPDATE
				vc_requestUri := f_initSipUrl(c_userProfile_UE1atSUThome); // Request URI of Invite is diffent than To header
				f_awaitingUPDATE(mw_UPDATE_Request_fromChange(mw_From(vc_requestUri))); 
				
				//tb done
				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
				
				//send 200 OK UPDATE
				f_sendResponse(m_Response_Base(c_statusLine200,vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
				// receive 200 OK UPDATE
				f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));

				
			}// end f_Sip_TIP_N01_005_SCSCF

		}// end group DestAS
		group OrigAS{
		}// end group OrigAS