Loading ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +91 −51 Original line number Diff line number Diff line Loading @@ -156,18 +156,18 @@ module AtsSccas_TCFunctions { runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; var template(value) REGISTER_Request m_register3ptyUe; var template(value) RequestUnion m_req; var template(value) Response m_ResponseReg_3ptyUe; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); // Preamble f_init_userprofile(c_userProfile_PCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_initSipUrl(c_userProfile_PCSCFwithHomeUE); //Registration f_setHeaders_REGISTER(v_cSeq_s); f_SendREGISTER( m_sccas_register( f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER m_register3ptyUe := m_register_ue_srvcc( vc_requestUri, vc_callId, vc_cSeq, Loading @@ -183,12 +183,51 @@ module AtsSccas_TCFunctions { PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", m_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation omit,//m_contentType(c_sdpApplication), // TODO To be refined during validation omit//m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ); m_req:= {Register:=valueof(m_register3ptyUe)}; m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, m_SipUrl_currDomain(vc_userprofile), vc_from.addressField.nameAddr.addrSpec ); f_init_userprofile(c_userProfile_SCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS f_initSipUrl(c_userProfile_SCSCFwithHomeUE); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone //f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, -, // PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation // PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) )); tc_ack.start; alt { [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync Loading @@ -203,6 +242,7 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_RSC_REG_03 } // End of group TP_6_3_2_Triggers_To_ATCF group TP_6_3_3_SRVCC_Information_To_ATCF { Loading ttcn/AtsSccas/AtsSccas_Templates.ttcn +141 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,131 @@ module AtsSccas_Templates } group request_sent_Iztok { //SIP name application const charstring c_sipMessage := "message/sip"; const charstring c_mimeMultipart := "multipart/mixed"; const charstring c_boundary := "--m5hnsik49jfkg"; template(value) GenericParam m_contentTypeBoundary(charstring p_boundary) := { id := "boundary", paramValue := { tokenOrHost := p_boundary } } //module LibSip_MessageBodyTypes // group MIMETypes { // type union MIME_Encapsulated_Parts { // SDP_Message sdpMessageBody, // XmlBody xmlBody, // if there is XML body // MsdBody msdBody, // RFC 8147: Minimum Set of Data octets // RequestUnion sipReq, //TODO in libsip sip message // Response sipRsp //TODO in libsip sip response // } template(value) MessageBody m_MBody_MIME_SipReqResp( charstring p_boundary, template(value) RequestUnion p_request, template(value) Response p_response ) := { mimeMessageBody := { boundary := /*"--" & */p_boundary, mimeEncapsulatedList := { { content_type := c_sipMessage, content_disposition := omit, content_id := omit, mime_encapsulated_part := {msdBody:= '00'O} //TODO remove //TODO uncoment mime_encapsulated_part := {sipReq := p_request} }, { content_type := c_sipMessage, content_disposition := omit, content_id := omit, mime_encapsulated_part := {msdBody:= '00'O} //TODO remove //TODO uncoment mime_encapsulated_part := {sipRes := p_response} } } } } template ServiceRoute m_serviceroute_ims(SipUrl p_serviceroute_sip_url ) := { fieldName := SERVICE_ROUTE_E, routeBody := { { nameAddr := { displayName := omit, addrSpec := p_serviceroute_sip_url }, rrParam := omit } } } template (omit) REGISTER_Request m_register_ue_srvcc( template(value) SipUrl p_requestUri, template(omit) CallId p_callId := omit, template(value) CSeq p_cSeq, template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit, template(omit) Authorization p_authorization := omit, template(value) charstring p_host, template(value) integer p_port, template(value) DeltaSec p_deltaSec, template(omit) FeatureCaps p_featureCaps := omit, template(omit) ContentType p_contentType := omit, template(omit) MessageBody p_mb := omit ) modifies m_REGISTER_Request_expires_IMS := { msgHeader := { contentLength := m_contentLength(f_MessageBodyLength(p_mb)), contentType := p_contentType, expires := m_expires(str2int(valueof(p_deltaSec))), featureCaps := p_featureCaps }, messageBody := p_mb } template(value) REGISTER_Request m_REGISTER_Request_AS( template(value) SipUrl p_requestUri, template(omit) CallId p_callId := omit, template(value) CSeq p_cSeq, template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(omit) Contact p_contact := omit, template(omit) Authorization p_authorization := omit, //template(value) charstring p_host, //template(value) integer p_port, template(omit) ContentType p_contentType := omit, template(omit) MessageBody p_mb := omit ) 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, //path := m_path_TS(p_host, p_port), pChargingVector := m_pChargingVector_icid_TS, pVisitedNetworkID := m_pVisitedNetworkID_TS, //require := { // fieldName := REQUIRE_E, // optionsTags := {"path"} //}, toField := p_to, via := p_via, contentLength := m_contentLength(f_MessageBodyLength(p_mb)), contentType := p_contentType }, messageBody := p_mb } } group request_sent_Yann { Loading Loading @@ -328,6 +453,22 @@ module AtsSccas_Templates } group request_receive_Iztok { template (present) Response mw_Response_2xxonREGISTER_AS( template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ?, template (present) Via p_via := ?, template (present) Contact p_contact := ?, template (present) PChargingVector p_pChargingVector := ?, template (present) PAssertedID p_pAssertedID := ?, template AcceptContact p_acceptContact := * ) modifies mw_Response_2xx_Base := { msgHeader := { pChargingVector := p_pChargingVector, contact := p_contact, acceptContact := p_acceptContact }} } group request_receive_Yann { Loading Loading
ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +91 −51 Original line number Diff line number Diff line Loading @@ -156,18 +156,18 @@ module AtsSccas_TCFunctions { runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; var template(value) REGISTER_Request m_register3ptyUe; var template(value) RequestUnion m_req; var template(value) Response m_ResponseReg_3ptyUe; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); // Preamble f_init_userprofile(c_userProfile_PCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_initSipUrl(c_userProfile_PCSCFwithHomeUE); //Registration f_setHeaders_REGISTER(v_cSeq_s); f_SendREGISTER( m_sccas_register( f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER m_register3ptyUe := m_register_ue_srvcc( vc_requestUri, vc_callId, vc_cSeq, Loading @@ -183,12 +183,51 @@ module AtsSccas_TCFunctions { PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", m_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation omit,//m_contentType(c_sdpApplication), // TODO To be refined during validation omit//m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ); m_req:= {Register:=valueof(m_register3ptyUe)}; m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, m_SipUrl_currDomain(vc_userprofile), vc_from.addressField.nameAddr.addrSpec ); f_init_userprofile(c_userProfile_SCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS f_initSipUrl(c_userProfile_SCSCFwithHomeUE); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone //f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, -, // PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation // PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) )); tc_ack.start; alt { [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync Loading @@ -203,6 +242,7 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_RSC_REG_03 } // End of group TP_6_3_2_Triggers_To_ATCF group TP_6_3_3_SRVCC_Information_To_ATCF { Loading
ttcn/AtsSccas/AtsSccas_Templates.ttcn +141 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,131 @@ module AtsSccas_Templates } group request_sent_Iztok { //SIP name application const charstring c_sipMessage := "message/sip"; const charstring c_mimeMultipart := "multipart/mixed"; const charstring c_boundary := "--m5hnsik49jfkg"; template(value) GenericParam m_contentTypeBoundary(charstring p_boundary) := { id := "boundary", paramValue := { tokenOrHost := p_boundary } } //module LibSip_MessageBodyTypes // group MIMETypes { // type union MIME_Encapsulated_Parts { // SDP_Message sdpMessageBody, // XmlBody xmlBody, // if there is XML body // MsdBody msdBody, // RFC 8147: Minimum Set of Data octets // RequestUnion sipReq, //TODO in libsip sip message // Response sipRsp //TODO in libsip sip response // } template(value) MessageBody m_MBody_MIME_SipReqResp( charstring p_boundary, template(value) RequestUnion p_request, template(value) Response p_response ) := { mimeMessageBody := { boundary := /*"--" & */p_boundary, mimeEncapsulatedList := { { content_type := c_sipMessage, content_disposition := omit, content_id := omit, mime_encapsulated_part := {msdBody:= '00'O} //TODO remove //TODO uncoment mime_encapsulated_part := {sipReq := p_request} }, { content_type := c_sipMessage, content_disposition := omit, content_id := omit, mime_encapsulated_part := {msdBody:= '00'O} //TODO remove //TODO uncoment mime_encapsulated_part := {sipRes := p_response} } } } } template ServiceRoute m_serviceroute_ims(SipUrl p_serviceroute_sip_url ) := { fieldName := SERVICE_ROUTE_E, routeBody := { { nameAddr := { displayName := omit, addrSpec := p_serviceroute_sip_url }, rrParam := omit } } } template (omit) REGISTER_Request m_register_ue_srvcc( template(value) SipUrl p_requestUri, template(omit) CallId p_callId := omit, template(value) CSeq p_cSeq, template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit, template(omit) Authorization p_authorization := omit, template(value) charstring p_host, template(value) integer p_port, template(value) DeltaSec p_deltaSec, template(omit) FeatureCaps p_featureCaps := omit, template(omit) ContentType p_contentType := omit, template(omit) MessageBody p_mb := omit ) modifies m_REGISTER_Request_expires_IMS := { msgHeader := { contentLength := m_contentLength(f_MessageBodyLength(p_mb)), contentType := p_contentType, expires := m_expires(str2int(valueof(p_deltaSec))), featureCaps := p_featureCaps }, messageBody := p_mb } template(value) REGISTER_Request m_REGISTER_Request_AS( template(value) SipUrl p_requestUri, template(omit) CallId p_callId := omit, template(value) CSeq p_cSeq, template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(omit) Contact p_contact := omit, template(omit) Authorization p_authorization := omit, //template(value) charstring p_host, //template(value) integer p_port, template(omit) ContentType p_contentType := omit, template(omit) MessageBody p_mb := omit ) 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, //path := m_path_TS(p_host, p_port), pChargingVector := m_pChargingVector_icid_TS, pVisitedNetworkID := m_pVisitedNetworkID_TS, //require := { // fieldName := REQUIRE_E, // optionsTags := {"path"} //}, toField := p_to, via := p_via, contentLength := m_contentLength(f_MessageBodyLength(p_mb)), contentType := p_contentType }, messageBody := p_mb } } group request_sent_Yann { Loading Loading @@ -328,6 +453,22 @@ module AtsSccas_Templates } group request_receive_Iztok { template (present) Response mw_Response_2xxonREGISTER_AS( template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ?, template (present) Via p_via := ?, template (present) Contact p_contact := ?, template (present) PChargingVector p_pChargingVector := ?, template (present) PAssertedID p_pAssertedID := ?, template AcceptContact p_acceptContact := * ) modifies mw_Response_2xx_Base := { msgHeader := { pChargingVector := p_pChargingVector, contact := p_contact, acceptContact := p_acceptContact }} } group request_receive_Yann { Loading