Commit 07fdb6b6 authored by Iztok Juvancic's avatar Iztok Juvancic
Browse files

added tc function

parent 4e5fd92e
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -515,6 +515,29 @@ module AtsSccas_Steps {
            LibSip_Steps.f_setHeadersINVITE(p_cSeq_s);
        } // end f_setHeadersINVITE_AS

		/**
		 * @desc Sets BYE header fields (IMS addresses) extension of general settings from LibSip basic function
		 * @param p_cSeq_s The current cSeq
		 * @param p_to_user The selected user's SIP URL
		 */
		function f_setHeaders_BYE_AS(
			inout CSeq p_cSeq_s,
			in SipUrl p_to_user,
			in SipUrl p_from_user
		) runs on ImsComponent  {
			vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier
			vc_from := f_initFromHeader(p_from_user, f_getRndTag()); // init of vc_from using userProfile identifier
			vc_requestUri := p_to_user; // Request URI of Invite is identical with To header
			if (vc_boo_route) {
				vc_route := m_route_interface(vc_interfaceprofile);
			}
			if (vc_boo_recordRoute) {
				vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile);
			}

			LibSip_Steps.f_setHeadersBYE(p_cSeq_s);
		} // end f_setHeadersBYE_AS

			/**
			 * @desc setting of general and basic OPTIONS header fields in additon to the addresses (To, From, ReqUri)
			 * @param p_cSeq_s
@@ -680,6 +703,11 @@ module AtsSccas_Steps {
			var CSeq v_cSeq_s := p_cSeq_s;
		} //end function f_ReleaseDialogAS

		function f_PS2CSTransfer(in CSeq p_cSeq_s)
		    runs on ImsComponent {
            var CSeq v_cSeq_s := p_cSeq_s;
        } //end function f_PS2CSTransfer
		

        /**
         * @desc function send OPTIONS message
+97 −3
Original line number Diff line number Diff line
@@ -3256,12 +3256,48 @@ module AtsSccas_TCFunctions {
                        f_EstablishDialogAS(v_cSeq_s);
                        
                        //Send BYE with reason 503
				        f_IncCSeq(v_cSeq_s);
						f_setHeaders_BYE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE));
                        
                        //?? send INVITE
				        f_SendBYE(
									 m_sccas_bye_reason(
													vc_requestUri,
													vc_callId, 
													p_cSeq_s, 
													vc_from, vc_to, vc_via_REG, 
													-, m_Reason(503)
													));
                  
                        //?? do not receive BYE
						tc_ack.start;
						alt {
							[] SIPP.receive(mw_BYE_Request_Base(vc_callId)) {
								log("*** " & __SCOPE__ & ": FAIL: BYE message was received ***");
								f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync
							}
							
							[] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) {
								tc_ack.stop;
								log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***");


								f_sendResponse(
									 m_Response_2xx_Base(
													c_statusLine200,
													vc_callId, 
													p_cSeq_s, 
													vc_from, 
													vc_to, 
													vc_via_REG
													));
								f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
							}
							[] tc_ack.timeout {
								f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
							}
						}
                        
                        
				        f_ReleaseDialogAS(v_cSeq_s);
                        f_deregistrationAS(v_cSeq_s);
                        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                
@@ -3274,6 +3310,64 @@ module AtsSccas_TCFunctions {
             */
            function f_TC_ISC_SCCAS_SRA_BYE_02(in CSeq p_cSeq_s)
            runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;
                
				f_registrationAS(v_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync

            
				f_EstablishDialogAS(v_cSeq_s);
                f_PS2CSTransfer(v_cSeq_s);        
				
				//Send BYE with reason 503
				f_IncCSeq(v_cSeq_s);
				f_setHeaders_BYE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE));
                        
				f_SendBYE(m_sccas_bye_targetDialog(
				                                vc_requestUri,
												vc_callId, 
												p_cSeq_s, 
												vc_from, vc_to, vc_via_REG,
												-,-,-,-,
												m_Reason(503)
												));
				tc_ack.start;
				alt	{
					[] SIPP.receive(mw_Response_2xx_Base(vc_callId, vc_cSeq)) {
						log("*** " & __SCOPE__ & ": PASS: 200 Ok message was received ***")
					}
					[] tc_ack.timeout {
					    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
				    }
				}		
				
				tc_ack.start;
				alt {
					[] SIPP.receive(mw_BYE_Request_Base(vc_callId)) {
						log("*** " & __SCOPE__ & ": PASS: BYE message was received ***");
						//f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync
						f_sendResponse(
									 m_Response_2xx_Base(
													c_statusLine200,
													vc_callId, 
													p_cSeq_s, 
													vc_from, 
													vc_to, 
													vc_via_REG
													));
													
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}
                        
                        
				f_ReleaseDialogAS(v_cSeq_s);
				f_deregistrationAS(v_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                
            } // End of function f_TC_ISC_SCCAS_SRA_BYE_02
        
+36 −1
Original line number Diff line number Diff line
@@ -539,6 +539,41 @@ module AtsSccas_Templates
							},
							messageBody := p_mb
						}
						template (omit) BYE_Request m_sccas_bye_reason(
						                    template(value) SipUrl p_requestUri,
											template(value) CallId p_callId,
											template(value) CSeq p_cSeq,
											template(value) From p_from,
											template(value) To p_to,
											template(value) Via p_via,
											template(omit) Route p_route := omit,
											in template (value) Reason p_reason := m_Reason(503)
						) modifies m_BYE_Request_UE := {
							msgHeader := {
								reason := p_reason
							}
						}
						
					    template (omit) BYE_Request m_sccas_bye_targetDialog(
															  in template (value) SipUrl p_requestUri,
															  in template (value) CallId p_callId,
															  in template (value) CSeq p_cSeq,
															  in template (value) From p_from,
															  in template (value) To p_to,
															  in template (value) LibSip_SIPTypesAndValues.Via p_via,
															  in template (omit) Route p_route := omit,
					                                          in template (omit) Require p_require := m_require({"tdialog"}),
															  in template (value) TargetDialog p_targetDialog := m_targetDialog("CallidString"),
															  in template (omit) PAssertedID p_pAssertedID := omit,//m_PAssertedID(m_AddrUnion_NameAddr(m_NameAddr(,))),
					                                          in template (value) Reason p_reason := m_Reason(503)
						) modifies m_BYE_Request_UE := {
							msgHeader := {
								require := p_require,
								targetDialog := p_targetDialog,
								pAssertedID := p_pAssertedID,
								reason := p_reason
							}
						}
			                      
                        group response_sent{
							template(value) Response m_Response_18XonINVITE_AS_Featurecaps(