LibIms_Templates.ttcn 132 KB
Newer Older
schmitting's avatar
schmitting committed
    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_MessageBodyLength(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
    }
	
    template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference
    (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},
            event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit},
            subscriptionState:={fieldName:=SUBSCRIPTION_STATE_E, subState:="active",substateParams:=omit},
            expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
			
        },
        messageBody := p_mb
    }
	
	
    template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_RegInfo
    (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_NOTIFY_Request_Base
    :=
    {
        msgHeader :=
        {	
            contact := p_contact,
            contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
            contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_xmlreginfoAplication},
            event := m_Event_reg,
            subscriptionState:=m_SubscriptionState_active,
            expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
			
        },
        messageBody := p_mb
    }
    	
        template PRACK_Request m_PRACK_Request_sdp (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
          From p_from, To p_to, Via p_via, RAck p_RAck, template MessageBody p_mb) 
          modifies m_PRACK_Request_Base :=
        {
            requestLine	:=
            {
                requestUri := p_requestUri
            },
            msgHeader :=
            {
                callId := p_callId,
                contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
                contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
                cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PRACK"},
                fromField := p_from,
                rAck := p_RAck,
                toField := p_to,
                via := p_via
            },
            messageBody := p_mb
schmitting's avatar
schmitting committed
        }
		
    template PUBLISH_Request m_PUBLISH_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
            From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb,template Route p_route) 
            modifies m_PUBLISH_Request_Base :=
    {
        requestLine	:=
        {
            requestUri := p_requestUri
        },
        msgHeader :=
        {
            callId := p_callId,
            contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
            contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_plainText/*c_sdpAplication*/},
            cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"},
            event := p_event, 
            fromField := p_from,
            route := p_route,
            pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
            toField := p_to,
            via := p_via
        },
        messageBody := p_mb
    }
rennoch's avatar
rennoch committed
	
schmitting's avatar
schmitting committed
    template PUBLISH_Request m_PUBLISH_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
            From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb,
            template Route p_route,template RecordRoute p_recordRoute,template PChargingVector p_pChargingVector) 
            modifies m_PUBLISH_Request_Base :=
    {
        requestLine	:=
        {
            requestUri := p_requestUri
        },
        msgHeader :=
        {
            callId := p_callId,
            contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
            contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_plainText/*c_sdpAplication*/},
            cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"},
            event := p_event, 
            fromField := p_from,
            route := p_route,
            recordRoute:= p_recordRoute,
            pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
            pChargingVector := p_pChargingVector,
            toField := p_to,
            via := p_via
        },
        messageBody := p_mb
    }
schmitting's avatar
schmitting committed
    /*
        * 
        * @desc REFER message exchanged at Mw
        *
        */	
    template REFER_Request m_REFER_Request_IMS(
        SipUrl p_requestUri, 
        CallId p_callId, 
        CSeq p_cSeq, 
        Contact p_contact, 
        From p_from, 
        template To p_to,
        Via p_via,  
        template ReferTo p_referTo, 
        template ReferredBy p_referredBy, 
        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_REFER_Request_Base := {
        msgHeader := {
            contentLength	:= {
                fieldName := CONTENT_LENGTH_E, 
                len:= f_MessageBodyLength(valueof(p_mb))
            },
            contentType := {
                fieldName := CONTENT_TYPE_E, 
                mediaType :=  c_sdpAplication
            },
            referredBy := p_referredBy,	
            referTo := p_referTo,
            require := p_require,
            pChargingVector := p_pChargingVector,
            recordRoute := p_recordRoute,
            route := p_route,
            supported := p_supported
        },
        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,
            path := m_path_TS,
            pChargingVector := m_pChargingVector_icid_TS,
            pVisitedNetworkID := m_pVisitedNetworkID_TS,
            require := {fieldName := REQUIRE_E,optionsTags := {"path"}},
            toField		:= p_to,
            via		:= p_via

        }
    }
	
    template REGISTER_Request m_REGISTER_Request_IMS_3party (
        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 Path p_path
        ) modifies m_REGISTER_Request_IMS :=
    {
        msgHeader :=
        {
            path := p_path

        }
    }
	
    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, template Route p_route)  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,
            route   := p_route
        }
    }
	
    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,
            contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
            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_mb_event_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, Event p_event, charstring p_contentType)  modifies m_SUBSCRIBE_Request_mb_UE :=
        {
            requestLine	:=
            {
                method := SUBSCRIBE_E,
                requestUri := p_requestUri
            },
            msgHeader :=
            {
                contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  p_contentType},
                pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,	
                contact	:= p_contact,
                cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
                event	:= p_event,
                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 :=
    {
        msgHeader :=
        {	
            fromField := p_from
        }
    }
	
}//end group request_send
 
group request_receive {
	
    template ACK_Request mw_ACK_Request_noPaccessNetworkInfo (template CallId p_callId)
        modifies mw_ACK_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}
      }
		  
wattelet's avatar
wattelet committed
    template BYE_Request mw_BYE_Request_via_UE(template CallId p_callId, template Via p_via) modifies  mw_BYE_Request_Base
      :=
      {
        msgHeader := { via := p_via }
      }
		
    template BYE_Request mw_BYE_Request_route(template CallId p_callId, template Route p_route) modifies  mw_BYE_Request_Base
      :=
      {
        msgHeader := {route := p_route}
      }
wattelet's avatar
wattelet committed
		  
schmitting's avatar
schmitting committed
    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 := ?}
      }	 
rennoch's avatar
rennoch committed
    
     template INVITE_Request mw_INVITE_Request_NoPCharging modifies  mw_INVITE_Request_Base
      :=
      {
        msgHeader := {pChargingFunctionAddresses := omit,
            		  pChargingVector := omit}
      }	 
    
rennoch's avatar
rennoch committed
     template INVITE_Request mw_INVITE_Request_NoPChargingPreferred modifies  mw_INVITE_Request_Base
      :=
      {
        msgHeader := {pChargingFunctionAddresses := omit,
            		  pChargingVector := omit,
                      pPreferredID := omit}
      }	 
schmitting's avatar
schmitting committed
	   
    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 }
    }
	  
    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_User2UserData (template charstring p_U2UData) modifies  mw_INVITE_Request_Base
    :=
    {
        msgHeader := {userToUser := mw_UserToUserData(p_U2UData)}
    }
	  
    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_requestLine(template PChargingVector p_pChargingVector,
                          template RecordRoute p_recordRoute,
                          template Route p_route, template Via p_via, template SipUrl p_requestUri)
    modifies mw_INVITE_Request_Base := {
        requestLine	:=
        {
            requestUri := p_requestUri
        },
        msgHeader := {
            pChargingVector := p_pChargingVector,
            recordRoute := p_recordRoute,
            route := p_route,
            via := p_via
        }
    }
	
    template INVITE_Request mw_INVITE_Request_IMS_PAsserted_noPPreferred(template PChargingVector p_pChargingVector,
                                template RecordRoute p_recordRoute,
                                template Route p_route, template Via p_via, template SipUrl p_requestUri, template PAssertedID p_pAssertedID)
    modifies mw_INVITE_Request_Base := {
        msgHeader := {pAssertedID := p_pAssertedID, pPreferredID := omit}
    }
	 
    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_noCug (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 := (mw_MBody_XML(complement(mw_XmlBody_CUG(?))),
                        mw_MBody_MIMESdpXml(?, complement(mw_XmlBody_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,
rennoch's avatar
rennoch committed
                        pChargingVector := omit }
schmitting's avatar
schmitting committed
      }
rennoch's avatar
rennoch committed
      
    template INVITE_Request mw_INVITE_Request_TH_R10 modifies  mw_INVITE_Request_Base
      :=
      {
        msgHeader := {	pChargingFunctionAddresses := omit }
      }
      
schmitting's avatar
schmitting committed
    /*
     * 
     * @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}
       }

     /*
      * 
      * @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	
        modifies mw_MESSAGE_Request_Base
        :=
        {
          msgHeader := {  pChargingFunctionAddresses := omit,
                          pChargingVector := omit}
        }
   
    template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunctionPrefId_UE	
        modifies mw_MESSAGE_Request_Base
        :=
        {
          msgHeader := {  pChargingFunctionAddresses := omit,
                          pChargingVector := omit,
                          pPreferredID := omit}
        }
schmitting's avatar
schmitting committed
	  
    template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS	
        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_route (template CallId p_callId, template Route p_route )modifies mw_MESSAGE_Request_Base
        :=
        {
          msgHeader := {route := p_route
                       }
        }

wattelet's avatar
wattelet committed
    template MESSAGE_Request mw_MESSAGE_Request_via (template CallId p_callId, template Via p_via )modifies mw_MESSAGE_Request_Base
        :=
        {
          msgHeader := {via := p_via
                       }
        }

schmitting's avatar
schmitting committed
    template NOTIFY_Request mw_NOTIFY_Request(
        template CallId p_callId, 
        template charstring p_state,
        template charstring p_contentType,
        template 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
    }
        template PRACK_Request mw_PRACK_Request_sdp(template CallId p_callId, template MessageBody p_mb) modifies mw_PRACK_Request_Base :=
        {
            msgHeader :=
            {
                callId := p_callId
            },
            messageBody := p_mb
        }
    template MESSAGE_Request mw_MESSAGE_Request_PchargingVector	(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	
        modifies mw_MESSAGE_Request_Base
        :=
        {
          msgHeader := {  pAccessNetworkInfo := omit}
        }

    template MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization	
        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
                          }
        }
wattelet's avatar
wattelet committed
    template REGISTER_Request mw_REGISTER_auth_via_nosecclient_IMS	(template Authorization p_authorization, Via p_via )
        modifies mw_REGISTER_Request_Base := {
          msgHeader :=	{
              				authorization	:= p_authorization,
							via				:= p_via,
                  			securityClient	:= omit
                  		}
        }
schmitting's avatar
schmitting committed
    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 := *
                          }
        }

    template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS (
        template From p_from, 
        template 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 := *,
            pChargingVector := p_pChargingVector
        }
    }
	
    template UPDATE_Request mw_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
    {
        msgHeader :=
        {	
            fromField := p_from
        }
    }
	
}//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 //mandatory field due to 24 229 rel 7.9
            //maxForwards := omit,
            //rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
        }
    }
	
    template Response m_Response_18XonINVITE_AlertInfo (
        StatusLine p_statusLine, 
        CallId p_callId, 
        CSeq p_cSeq,
        From p_from, 
        To p_to, 
        Via p_via, 
        AlertInfo p_alertInfo
    ) modifies m_Response_Base:= {
        msgHeader :=
        {
            alertInfo	:= p_alertInfo
        }
    }
	
    template Response m_Response_18XonINVITE_sdp_require (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
            From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb,template Require p_require ) modifies m_Response_Base:=
    {
        msgHeader :=
        {
            contact		:= p_contact,
            contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
            contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
            maxForwards := omit,
            require		:= p_require,
            rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
        },
        messageBody := p_mb
    }	
	
    template Response m_Response_18XonINVITE_AS (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,
            recordRoute := p_recordRoute
        }
schmitting's avatar
schmitting committed
    }
	
    template Response m_Response_18XonINVITE_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,
            rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
        }
    }

	
     template Response m_Response_18XonINVITE_HistoryInfo_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
        From p_from, To p_to, Via p_via, Contact p_contact, template HistoryInfo p_historyInfo) modifies m_Response_Base:=
     {
      msgHeader :=
      {
       contact		:= p_contact,
       historyInfo	:= p_historyInfo,
       rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
      }
     }
 
    template Response m_Response_18XonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
          From p_from, To p_to, Via p_via, Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_Base:=
schmitting's avatar
schmitting committed
    {
        msgHeader :=
        {
            contact		:= p_contact,
schmitting's avatar
schmitting committed
            pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
            pChargingVector := p_pChargingVector

        }
    }

     template Response m_Response_18XonINVITE_pEearlyMedia (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
        From p_from, To p_to, Via p_via, template PEarlyMedia p_pEarlyMedia ) modifies m_Response_Base:=
     {
      msgHeader :=
      {
        pEarlyMedia := p_pEarlyMedia
      }
     }


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


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

    template Response m_Response_18XonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
                From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_Base:=
    {
        msgHeader :=
        {
            contact		:= p_contact,
            maxForwards := omit,
            pAssertedID := p_pAssertedID,
            privacy := p_privacy,
            rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
        }
    }
	
    template Response m_Response_18XonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
                From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy) modifies m_Response_Base:=
    {
        msgHeader :=
        {
            contact		:= p_contact,
            maxForwards := omit,
            privacy := p_privacy,
            rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
        }
    }

	
    template Response m_Response_18XonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
                From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy) modifies m_Response_Base:=
    {
        msgHeader :=
        {
            contact		:= p_contact,
            maxForwards := omit,
            supported := p_supported,
            privacy := p_privacy,
            rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
        }
    }