DiameterRfRo_Templates.ttcn 432 KB
Newer Older
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_role_Of_Node_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_role_Of_Node_AVP
            
            /**
             * @desc The User-Session-Id send template 
             * @param p_aVP_Data     Holds the session identifier
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.242 User-Session-Id AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) User_Session_Id_AVP m_user_Session_Id_AVP(
                                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_user_Session_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_user_Session_Id_AVP
            
            /**
             * @desc The Calling-Party-Address send template 
             * @param p_aVP_Data     Holds the session identifier
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.33  Calling-Party-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Calling_Party_Address_AVP m_calling_Party_Address_AVP(
                                                                                   in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_calling_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_calling_Party_Address_AVP
            
            /**
             * @desc The Called-Party-Address send template 
             * @param p_aVP_Data     Holds the session identifier
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.32  Called-Party-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Called_Party_Address_AVP m_called_Party_Address_AVP(
                                                                                 in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_called_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_called_Party_Address_AVP
            
            /**
             * @desc The Time-Stamps send template 
             * @param p_sip_Request_Timestamp            TODO
             * @param p_sip_Response_Timestamp           TODO
             * @param p_sip_Request_Timestamp_Fraction   TODO
             * @param p_sip_Response_Timestamp_Fraction  TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.231 Time-Stamps AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (omit) Time_Stamps_AVP m_time_Stamps_AVP(
                                                              in template (omit) SIP_Request_Timestamp_AVP           p_sip_Request_Timestamp := omit,
                                                              in template (omit) SIP_Response_Timestamp_AVP          p_sip_Response_Timestamp := omit,
                                                              in template (omit) SIP_Request_Timestamp_Fraction_AVP  p_sip_Request_Timestamp_Fraction := omit,
                                                              in template (omit) SIP_Response_Timestamp_Fraction_AVP p_sip_Response_Timestamp_Fraction := omit
            ) := {
                aVP_Header                      := m_aVP_HeaderVid_Mbit1(c_time_Stamps_AVP_Code, f_getTimeStampsAVPLength(p_sip_Request_Timestamp, p_sip_Response_Timestamp, p_sip_Request_Timestamp_Fraction, p_sip_Response_Timestamp_Fraction), c_vendId3gpp),
                sip_Request_Timestamp           := p_sip_Request_Timestamp,
                sip_Response_Timestamp          := p_sip_Response_Timestamp,
                sip_Request_Timestamp_Fraction  := p_sip_Request_Timestamp_Fraction,
                sip_Response_Timestamp_Fraction := p_sip_Response_Timestamp_Fraction
            } // End of template m_time_Stamps_AVP
            
            /**
             * @desc The SIP-Request-Timestamp send template 
             * @param p_aVP_Data     Holds the aVP_Data in UTC format of the SIP request 
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.202 SIP-Request-Timestamp AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SIP_Request_Timestamp_AVP m_sip_Request_Timestamp_AVP(
                                                                                   in template (value) Time p_aVP_Data
garciay's avatar
garciay committed
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sip_Request_Timestamp_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_sip_Request_Timestamp_AVP
            
            /**
             * @desc The SIP-Response-Timestamp send template 
             * @param p_aVP_Data     Holds the aVP_Data in UTC format of the SIP response 
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause SIP-Response-Timestamp
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SIP_Response_Timestamp_AVP m_sip_Response_Timestamp_AVP(
                                                                                     in template (value) Time p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sip_Response_Timestamp_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_sip_Response_Timestamp_AVP
            
            /**
             * @desc The Application-Server send template 
             * @param p_aVP_Data     Holds the SIP URL(s) of the AS(s) addressed during the session
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.23  Application-Server AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Application_Server_AVP m_application_Server_AVP(
                                                                             in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_application_Server_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_application_Server_AVP
            
            /**
             * @desc The Application-provided-Called-Party-Address send template 
             * @param p_aVP_Data     Holds the called party number (SIP URI, E.164), if it is determined by an application server
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.22  Application-provided-Called-Party-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Application_provided_Called_Party_Address_AVP m_application_provided_Called_Party_Address_AVP(
                                                                                                                           in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_application_provided_Called_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_application_provided_Called_Party_Address_AVP
            
            /**
             * @desc The Inter-Operator-Identifier send template 
             * @param p_originating_IOI  TODO
             * @param p_terminating_IOI  TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.80  Inter-Operator-Identifier AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (omit) Inter_Operator_Identifier_AVP m_inter_Operator_Identifier_AVP(
                                                                                          in template (omit) Originating_IOI_AVP p_originating_IOI := omit,
                                                                                          in template (omit) Terminating_IOI_AVP p_terminating_IOI := omit
            ) := {
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_inter_Operator_Identifier_AVP_Code, f_getInterOperatorIdentifierAVPLength(p_originating_IOI, p_terminating_IOI), c_vendId3gpp),
                originating_IOI := p_originating_IOI,
                terminating_IOI := p_terminating_IOI
            } // End of template m_inter_Operator_Identifier_AVP
            
            /**
             * @desc The Originating-IOI send template 
             * @param p_aVP_Data     holds the Inter Operator Identifier (IOI) for the originating network as generated by the IMS network element which takes responsibility for populating this parameter [404] in a SIP request as described in TS 24.229 [202]
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.123 Originating-IOI AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Originating_IOI_AVP m_originating_IOI_AVP(
                                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_originating_IOI_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_originating_IOI_AVP
            
            /**
             * @desc The Terminating-IOI send template 
             * @param p_aVP_Header   Header AVP
             * @param p_aVP_Data     Holds the Inter Operator Identifier (IOI) for the terminating network as generated by the IMS network element which takes responsibility for populating this parameter [404] in a SIP response as described in TS 24.229 [202]
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.225 TTerminatingerminating-IOI AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Terminating_IOI_AVP m_terminating_IOI_AVP(
                                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_terminating_IOI_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_terminating_IOI_AVP
            
            /**
             * @desc The IMS-Charging-Identifier send template 
             * @param p_aVP_Header   Header AVP
             * @param p_aVP_Data     Holds the IMS Charging Identifier (ICID) as generated by a IMS node for a SIP session and described in TS 24.229 [204]
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.75  IMS-Charging-Identifier AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) IMS_Charging_Identifier_AVP m_ims_Charging_Identifier_AVP(
                                                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_ims_Charging_Identifier_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_ims_Charging_Identifier_AVP
            
            /**
             * @desc The SDP-Session-Description send template 
             * @param p_aVP_Header   Header AVP
             * @param p_aVP_Data     Holds the content of  the SDP line (i=, c=, b=, k=, a=, etc.) in the session description, as described in RFC 4566  
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.184 SDP-Session-Description AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SDP_Session_Description_AVP m_sdp_Session_Description_AVP(
                                                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sdp_Session_Description_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_sdp_Session_Description_AVP
            
            /**
             * @desc The SDP-Media-Name send template 
             * @param p_aVP_Data    Holds the content of  SDP lines (i=, c=, b=, k=, a=, etc.) related to a media description, as described in RFC 4566 
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.182 SDP-Media-Name AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SDP_Media_Name_AVP m_sdp_Media_Name_AVP(
                                                                     in template (value) UTF8String p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sdp_Media_Name_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_sdp_Media_Name_AVP
            
            /**
             * @desc The SDP-Media-Description send template 
             * @param p_aVP_Data    Holds the content of  SDP lines (i=, c=, b=, k=, a=, etc.) related to a media description, as described in RFC 4566 
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.181 SDP-Media-Description AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SDP_Media_Description_AVP m_sdp_Media_Description_AVP(
                                                                                   in template (value) UTF8String p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sdp_Media_Description_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_sdp_Media_Description_AVP
            
            /**
             * @desc The CG-Address send template 
             * @param p_aVP_Data    Holds the IP-address of the charging gateway
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.36  CG-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) CG_Address_AVP m_cg_Address_AVP(
                                                             in template (value) Address p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_cg_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_cg_Address_AVP
            
            template (value) Event_Timestamp_AVP m_event_timestamp (UInt32 p_aVP_Data) := {
pintar's avatar
pintar committed
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_event_Timestamp_AVP_Code, 4, omit),
                aVP_Data := p_aVP_Data
pintar's avatar
pintar committed
            } // End of template m_cg_Address_AVP
            
            /**
             * @desc The Incoming-Trunk-Group-ID send template 
             * @param p_aVP_Data     Identifies the incoming PSTN leg
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.79  Incoming-Trunk-Group-ID AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Incoming_Trunk_Group_ID_AVP m_incoming_Trunk_Group_ID_AVP(
                                                                                       in template (value) UTF8String p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_incoming_Trunk_Group_ID_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_incoming_Trunk_Group_ID_AVP
            
            /**
             * @desc The Outgoing-Trunk-Group-ID send template 
             * @param p_aVP_Data     Identifies the outgoing  PSTN leg
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.129  Outgoing-Trunk-Group-ID AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Outgoing_Trunk_Group_ID_AVP m_outgoing_Trunk_Group_ID_AVP(
                                                                                       in template (value) UTF8String p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_outgoing_Trunk_Group_ID_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_outgoing_Trunk_Group_ID_AVP
            
            /**
             * @desc The Bearer-Service send template 
             * @param p_aVP_Data     Holds the used bearer service for the PSTN leg
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.30  Bearer-Service AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Bearer_Service_AVP m_bearer_Service_AVP(
                                                                     in template (value) octetstring p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_bearer_Service_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_bearer_Service_AVP
            
            /**
             * @desc The Service-ID send template 
             * @param p_aVP_Data     Identifies the service the MRFC is hosting or AoC service
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.190 Service-ID AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Service_Id_AVP m_service_Id_AVP(
                                                             in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_service_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_service_Id_AVP
            
            /**
             * @desc The Associated-URI send template 
             * @param p_aVP_Data     Holds a non-barred public user identity (SIP URI or TEL URI) associated to the the public user identity under registration
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.26  Associated-URI AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Associated_URI_AVP m_associated_URI_AVP(
                                                                     in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_associated_URI_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_associated_URI_AVP
            
            /**
             * @desc The Cause-Code send template 
             * @param p_aVP_Data        Includes the cause code value from IMS node
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.35  Cause-Code AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Cause_Code_AVP m_cause_Code_AVP(
                                                             in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_cause_Code_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_cause_Code_AVP
            
            /**
             * @desc The Node-Functionality send template 
             * @param p_aVP_Data     Holds the functionality identifier of the node
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.113 Node-Functionality AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Node_Functionality_AVP m_node_Functionality_AVP(
                                                                             in template (value) Node_Functionality p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_node_Functionality_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_node_Functionality_AVP
            
            /**
             * @desc The GGSN-Address send template 
             * @param p_aVP_Data    Holds the IP-address of the P-GW that generated the GPRS/EPC Charging ID
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.68 GGSN-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) GGSN_Address_AVP m_ggsn_Address_AVP(
                                                                 in template (value) Address p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_ggsn_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_ggsn_Address_AVP
            
            /**
             * @desc The Application-Server-Information send template 
garciay's avatar
garciay committed
             * @param p_application_Server                          TODO
             * @param p_application_Provided_Called_Party_Address   TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.24  Application-Server-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Application_Server_Information_AVP m_application_Server_Information_AVP(
                                                                                                     in template (value) Application_Server_AVP                           p_application_Server,
                                                                                                     in template (value) Application_provided_Called_Party_Address_AVP    p_application_Provided_Called_Party_Address
            ) := {
                aVP_Header                                  := m_aVP_HeaderVid_Mbit1(c_application_Server_Information_AVP_Code, f_getApplicationServerInformationAVPLength(p_application_Server, p_application_Provided_Called_Party_Address), c_vendId3gpp),
                application_Server                          := p_application_Server,
                application_Provided_Called_Party_Address   := { p_application_Provided_Called_Party_Address } 
            } // End of template m_application_Server_Information_AVP
            
            /**
             * @desc The Service-Specific-Data send template
             * @param p_aVP_Data Holds the value of the Service-Specific-Data
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.194 Service-Specific-Data AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Service_Specific_Data_AVP m_service_Specific_Data_AVP(
                                                                                   in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_service_Specific_Data_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_service_Specific_Data_AVP
            
            /**
             * @desc The Originator send template 
             * @param p_aVP_Data     Indicates the originating party of the message body
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.124 Originator AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Originator_AVP m_originator_AVP(
                                                             in template (value) Originator p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_service_Specific_Data_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_originator_AVP
            
            /**
             * @desc The PS-Append-Free-Format-Data send template 
             * @param p_aVP_Data     Indicates if the information sent in the PS-Free-Format-Data AVP must be appended to the PS-free-format-data stored for the online-session
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.155 PS-Append-Free-Format-Data AVP 
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) PS_Append_Free_Format_Data_AVP m_ps_Append_Free_Format_Data_AVP(
                                                                                             in template (value) PS_Append_Free_Format_Data p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_ps_Append_Free_Format_Data_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_ps_Append_Free_Format_Data_AVP
            
            /**
             * @desc The Time-Quota-Threshold send template 
             * @param p_aVP_Data     Contains a threshold value in seconds
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.229 Time-Quota-Threshold AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Time_Quota_Threshold_AVP m_time_Quota_Threshold_AVP(
                                                                                 in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_time_Quota_Threshold_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_time_Quota_Threshold_AVP
            
            /**
             * @desc The Volume-Quota-Threshold send template 
             * @member aVP_Data     Holds the session identifier
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.243 Volume-Quota-Threshold AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Volume_Quota_Threshold_AVP m_volume_Quota_Threshold_AVP(
                                                                                     in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_volume_Quota_Threshold_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_volume_Quota_Threshold_AVP
            
            /**
             * @desc The Trigger-Type AVP send template 
             * @member aVP_Header   Header AVP
             * @member aVP_Data     Holds the session identifier
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.236 Trigger-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Trigger_Type_AVP m_trigger_Type_AVP(
                                                                 in template (value) Trigger_Type p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_trigger_Type_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_trigger_Type_AVP
            
            /**
             * @desc The Quota-Holding-Time send template 
             * @member aVP_Header   Header AVP
             * @member aVP_Data     Contains the quota holding time in seconds
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.160 Quota-Holding-Time AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Quota_Holding_Time_AVP m_quota_Holding_Time_AVP(
                                                                             in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_quota_Holding_Time_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_quota_Holding_Time_AVP
            
            /**
             * @desc The Quota-Holding-Time receive template 
             * @member aVP_Header   Header AVP
             * @member aVP_Data     Specifies the reason for usage reporting for one or more types of quota for a particular category
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.175 Reporting-Reason AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Reporting_Reason_AVP m_reporting_Reason_AVP(
                                                                         in template (value) Reporting_Reason p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_reporting_Reason_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_reporting_Reason_AVP
            
            /**
             * @desc The PS-Furnish-Charging-Information send template 
             * @param p_aVP_Data     Holds online charging session specific data
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.156 PS-Free-Format-Data AVP 
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) PS_Free_Format_Data_AVP m_ps_Free_Format_Data_AVP(
                                                                               in template (value) octetstring p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_ps_Free_Format_Data_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_ps_Free_Format_Data_AVP
            
            /**
             * 
             * @desc The PS-Furnish-Charging-Information send template
             * @param p_threeGPP_Charging_Id        TODO
             * @param p_ps_Append_Free_Format_Data  TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.157 PS-Furnish-Charging-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) PS_Furnish_Charging_Information_AVP m_ps_Furnish_Charging_Information_AVP(
                                                                                                       in template (value) ThreeGPP_Charging_Id_AVP p_threeGPP_Charging_Id,
                                                                                                       in template (value) PS_Free_Format_Data_AVP  p_ps_Free_Format_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_ps_Furnish_Charging_Information_AVP_Code, f_getPSFurnishChargingInformationAVPLength(p_threeGPP_Charging_Id, p_ps_Free_Format_Data), c_vendId3gpp),
                threeGPP_Charging_Id := p_threeGPP_Charging_Id,
                ps_Free_Format_Data := p_ps_Free_Format_Data,
                ps_Append_Free_Format_Data := omit
            } // End of template m_ps_Furnish_Charging_Information_AVP
            
            /**
             * @desc The Quota-Consumption-Time send template 
             * @param p_aVP_Data   Contains an idle traffic aVP_Data aVP_Data in seconds
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.159 Quota-Consumption-Time AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Quota_Consumption_Time_AVP m_quota_Consumption_Time_AVP(
                                                                                     in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_quota_Consumption_Time_AVP_Code, 4, c_vendId3gpp),
                aVP_Data   := p_aVP_Data
            } // End of template m_quota_Consumption_Time_AVP
            
             * @desc The Media-Initiator-Flag send template 
             * @param p_aVP_Header   Header AVP
             * @param p_aVP_Data    Contains an idle traffic aVP_Data aVP_Data in seconds
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.101 Media-Initiator-Flag AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Media_Initiator_Flag_AVP m_media_Initiator_Flag_AVP(
                                                                                 in template (value) Media_Initiator_Flag p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_media_Initiator_Flag_AVP_Code, 4, c_vendId3gpp),
                aVP_Data     := p_aVP_Data
            } // End of template m_media_Initiator_Flag_AVP
            
            /**
             * @desc The Expires send template 
             * @param p_aVP_Data      Holds the content of the "Expires" header
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.66  Expires AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Expires_AVP m_expires_AVP(
                                                       in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_expires_AVP_Code, 4, c_vendId3gpp),
                aVP_Data     := p_aVP_Data
            } // End of template m_expires_AVP
            
            /**
             * @desc The Message-Body send template
             * @param p_content_Type    TODO
             * @param p_content_Length  TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.103 Message-Body AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Message_Body_AVP m_message_Body_AVP(
                                                                 in template (value) Content_Type_AVP     p_content_Type,
                                                                 in template (value) Content_Length_AVP   p_content_Length
            ) := {
                aVP_Header          := m_aVP_HeaderVid_Mbit1(c_message_Body_AVP_Code, f_getMessageBodyAVPLength(p_content_Type, p_content_Length), c_vendId3gpp),
                content_Type        := p_content_Type,
                content_Length      := p_content_Length,
                content_Disposition := omit,
                originator          := omit
            } // End of template m_message_Body_AVP
            
            /**
             * @desc The WAG-Address send template
             * @param p_aVP_Data     Address and contains the WAG IP address
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.244 WAG-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) WAG_Address_AVP m_wag_Address_AVP(
                                                               in template (value) Address p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_wag_PLMN_Ids_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_wag_Address_AVP
            
            /**
             * @desc The WAG-PLMN-Ids send template
             * @param p_aVP_Data     Contains the WAG PLMN id (MCC and MNC)
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.245 WAG-PLMN-Id AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) WAG_PLMN_Id_AVP m_wag_PLMN_Ids_AVP(
                                                                 in template (value) octetstring p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_wag_PLMN_Ids_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_wag_PLMN_Ids_AVP
            
            /**
             * @desc The WLAN-Radio-Container receive template 
             * @param p_operator_Name        TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.247 WLAN-Radio-Container AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) WLAN_Radio_Container_AVP m_wlan_Radio_Container_AVP(
                                                                                 in template (value) Operator_Name_AVP p_operator_Name
            ) := {
                aVP_Header              := m_aVP_HeaderVid_Mbit1(c_wlan_Radio_Container_AVP_Code, f_getWLANRadioContainerAVPLength(p_operator_Name), c_vendId3gpp),
                operator_Name           := p_operator_Name,
                location_Data           := omit,
                location_Information    := omit,
                wlan_Technology         := omit
            } // End of template m_wlan_Radio_Container_AVP
            
            /**
             * @desc The PDG-Address send template 
             * @param p_aVP_Data     Address and contains the UE"s local IP address
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.250 WLAN-UE-Local-IPAddress AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) WLAN_UE_Local_IPAddress_AVP m_wlan_UE_Local_IPAddress_AVP(
                                                                                       in template (value) Address p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_wlan_UE_Local_IPAddress_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_wlan_UE_Local_IPAddress_AVP
            
            /**
             * @desc The PDG-Address send template 
             * @param p_aVP_Data     Address and contains the PDG IP address
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.244 PDG-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) PDG_Address_AVP m_pdg_Address_AVP(
                                                               in template (value) Address p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_pdg_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_pdg_Address_AVP
            
            /**
             * @desc The PDG-Charging-Id AVP (AVP code 896)
             * @param p_aVP_Data     Contains the charging identifier generated by the PDG for the tunnel
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.135 PDG-Charging-Id AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) PDG_Charging_Id_AVP m_pdg_Charging_Id_AVP(
                                                                       in template (value) UInt32 p_aVP_Data
            ) :=  {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_pdg_Charging_Id_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_pdg_Charging_Id_AVP
            
            /**
             * @desc The Unit-Quota-Threshold send template 
             * @param p_aVP_Data   Threshold value in service specific units
             */
            template (value) Unit_Quota_Threshold_AVP m_unit_Quota_Threshold_AVP(
                                                                                 in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_unit_Quota_Threshold_AVP_Code, 4, c_vendId3gpp),
                aVP_Data   := p_aVP_Data
            } // End of template m_unit_Quota_Threshold_AVP
            
            /**
             * @desc The SGSN-Address send template
             * @param p_aVP_Data  Holds the IP-address of the SGSN/Serving Node that was used during a report
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.199 SGSN-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SGSN_Address_AVP m_sgsn_Address_AVP(
                                                                 in template (value) Address p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sgsn_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_sgsn_Address_AVP
            
            /**
             * @desc The 7.2.248    WLAN-Session-Id send template
             * @param p_aVP_Data    Contains the charging id generated by the AAA Server for the session
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.248 WLAN-Session-Id AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) WLAN_Session_Id_AVP m_wlan_Session_Id_AVP(
                                                                       in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_wlan_Session_Id_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_wlan_Session_Id_AVP
            
            /**
             * @desc The PDP-Context-Type send template
             * @param p_reason       Contains the reason for closing a container and the addition of a new container. The AVP may take the following values
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.138 PDP-Context-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) PDP_Context_Type_AVP m_pdp_Context_Type_AVP(
                                                                         in template (value) PDP_Context_Type p_reason
            ) :={
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_pdp_Context_Type_AVP_Code, 4, c_vendId3gpp),
                reason      := p_reason
            } // End of template m_pdp_Context_Type_AVP
            
            /**
             * @desc The Called-Asserted-Identity send template 
             * @param p_aVP_Data       Holds the address (Public User ID: SIP URI, E.164, etc.) of the finally asserted called party
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.31  Called-Asserted-Identity AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Called_Asserted_Identity_AVP m_called_Asserted_Identity_AVP(
                                                                                         in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_called_Asserted_Identity_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_called_Asserted_Identity_AVP
            
            /**
             * @desc The Requested-Party-Address send template 
             * @param p_aVP_Data    Holds the address (SIP URI or TEL URI) of the party (Public User ID or Public Service ID) to whom the SIP transaction was originally posted
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.176 Requested-Party-ARequested-Party-AddressRequested-Party-Addressddress AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Requested_Party_Address_AVP m_requested_Party_Address_AVP(
                                                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_requested_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_requested_Party_Address_AVP
            
garciay's avatar
garciay committed
            /**
             * @desc Service-Generic-Information send template 
             * @param p_application_Server_ID    TODO
             * @param p_application_Service_Type TODO
             * @param p_application_Session_ID   TODO
             * @param p_delivery_Status          TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.191 Service-Generic-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             * @see OMA-DDS-Charging_Data-V1_0-20110201-A
             */
            template (omit) Service_Generic_Information_AVP m_service_Generic_Information_AVP(
                                                                                              in template (omit) Application_Server_ID_AVP      p_application_Server_ID := omit,
                                                                                              in template (omit) Application_Service_Type_AVP   p_application_Service_Type := omit,
                                                                                              in template (omit) Application_Session_ID_AVP     p_application_Session_ID := omit,
                                                                                              in template (omit) Delivery_Status_AVP            p_delivery_Status := omit
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_service_Generic_Information_AVP_Code, f_getServiceGenericInformationAVPLength(valueof(p_application_Server_ID), valueof(p_application_Service_Type), valueof(p_application_Session_ID), valueof(p_delivery_Status)), c_vendId3gpp),
                application_Server_ID       := p_application_Server_ID,
                application_Service_Type    := p_application_Service_Type,
                application_Session_ID      := p_application_Session_ID,
                delivery_Status             := p_delivery_Status
            } // End of template m_service_Generic_Information_AVP
            
            /**
             * @desc Service-Specific-Type send template 
             * @param p_aVP_Data       Holds the type of the Service-Specific-Data
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.196 Service-Specific-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Service_Specific_Type_AVP m_service_Specific_Type_AVP(
                                                                                   in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_service_Specific_Type_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_service_Specific_Type_AVP
            
            /**
             * @desc The Trigger send template 
             * @param p_trigger_Type Holds the trigger types
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.235 Trigger AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Trigger_AVP m_trigger_AVP(
                                                       in template (value) Trigger_Type_AVP p_trigger_Type
            ) := {
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_trigger_AVP_Code, 4, c_vendId3gpp),
                trigger_Type    := { p_trigger_Type }
            } // End of template m_trigger_AVP
            
            /**
             * @desc Base-Time-Interval send template 
             * @param p_reason  contains the length of the base aVP_Data interval, for controlling the consumption of aVP_Data quota, in seconds
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.29  Base-Time-Interval AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Base_Time_Interval_AVP m_base_Time_Interval_AVP(
                                                                             in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_base_Time_Interval_AVP_Code, 4, c_vendId3gpp),
                aVP_Data        := p_aVP_Data
            } // End of template m_base_Time_Interval_AVP
            
            /**
             * @desc The Time-Quota-Mechanism send template
             * @param p_time_Quota_Type      TODO
             * @param p_base_Time_Interval   TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.228 Time-Quota-Mechanism
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (omit) Time_Quota_Mechanism_AVP m_time_Quota_Mechanism_AVP(
                                                                                in template (omit) Time_Quota_Type_AVP    p_time_Quota_Type := omit,
                                                                                in template (omit) Base_Time_Interval_AVP p_base_Time_Interval := omit
            ) := {
                aVP_Header          := m_aVP_HeaderVid_Mbit1(c_time_Quota_Mechanism_AVP_Code, f_getTimeQuotaMechanismAVPLength(p_time_Quota_Type, p_base_Time_Interval), c_vendId3gpp),
                time_Quota_Type     := p_time_Quota_Type,
                base_Time_Interval  := p_base_Time_Interval
            } // End of template m_time_Quota_Mechanism_AVP
            
            /**
             * @desc The Time-Quota-Type send template
             * @param p_aVP_Data     Indicate which aVP_Data quota consumption mechanism shall be used for the associated Rating Group
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.230 Time-Quota-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Time_Quota_Type_AVP m_time_Quota_Type_AVP(
                                                                       in template (value) Time_Quota_Type p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_time_Quota_Type_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_time_Quota_Type_AVP
            
            /**
             * @desc The Offline-Charging send template
             * @param p_quota_Consumption_Time           TODO
             * @param p_time_Quota_Mechanism             TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.121 Offline-Charging AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Offline_Charging_AVP m_offline_Charging_AVP(
                                                                         in template (value) Quota_Consumption_Time_AVP   p_quota_Consumption_Time,
                                                                         in template (value) Time_Quota_Mechanism_AVP     p_time_Quota_Mechanism
            ) := {
                aVP_Header                          := m_aVP_HeaderVid_Mbit1(c_offline_Charging_AVP_Code, f_getOfflineChargingLength(p_quota_Consumption_Time, p_time_Quota_Mechanism), c_vendId3gpp),
                quota_Consumption_Time              := p_quota_Consumption_Time,
                time_Quota_Mechanism                := p_time_Quota_Mechanism,
                envelope_Reporting                  := omit,
                multiple_Services_Credit_Control    := omit,
                aVP_Type                            := omit
            } // End of template m_offline_Charging_AVP
            
            /**
             * @desc Alternate-Charged-Party-Address send template 
             * @param p_aVP_Data     Holds the address of the alternate charged party determined by an AS at IMS session initiation
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.12  Alternate-Charged-Party-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Alternate_Charged_Party_Address_AVP m_alternate_Charged_Party_Address_AVP(
                                                                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_alternate_Charged_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_alternate_Charged_Party_Address_AVP
            
            /**
             * @desc Alternate-Charged-Party-Address send template 
             * @param p_aVP_Data     Holds the address (SIP URI or TEL URI) of the party (Public User ID or Public Service ID) who initiates the media action, like adding/removing, connecting/disconnecting the media
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.12  Alternate-Charged-Party-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Media_Initiator_Party_AVP m_media_Initiator_Party_AVP(
                                                                                   in template (value) UTF8String p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_media_Initiator_Party_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_media_Initiator_Party_AVP
            
            /**
             * @desc IMS-Communication-Service-Identifier send template 
             * @param p_aVP_Data     Holds the IMS Communication Service Identifier (ICSI) as contained in the P-Asserted-Service header of a SIP request to identify an IMS Communication Service as defined in TS 24.229 [202]
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.76  IMS-Communication-Service-Identifier AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) IMS_Communication_Service_Identifier_AVP m_ims_Communication_Service_Identifier_AVP(
                                                                                                                 in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_ims_Communication_Service_Identifier_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_ims_Communication_Service_Identifier_AVP
            
            /**
             * @desc The Access-Network-Information send template 
             * @param p_aVP_Data     Indicates the SIP P-header "P-Access-Network-Information"
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.1   Access-Network-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Access_Network_Information_AVP m_access_Network_Information_AVP(
                                                                                             in template (value) octetstring p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_envelope_Reporting_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_access_Network_Information_AVP
            
            /**
             * @desc Envelope send template 
             * @param p_envelope_Start_Time TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.59  Envelope AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Envelope_AVP m_envelope_AVP(
                                                         in template (value) Envelope_Start_Time_AVP p_envelope_Start_Time
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_envelope_Reporting_AVP_Code, f_getEncvalueLength(encvalue(p_envelope_Start_Time)), c_vendId3gpp),
                envelope_Start_Time         := p_envelope_Start_Time,
                envelope_End_Time           := omit,
                cc_Total_Octets             := omit,
                cc_Input_Octets             := omit,
                cc_Output_Octets            := omit,
                cc_Service_Specific_Units   := omit,
                aVP_Type                    := omit
            } // End of template m_envelope_AVP
            
            /**
             * @desc The Envelope-End-Time send template 
             * @param p_aVP_Data     Indicate the time of the end of the time envelope
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.62  Envelope-End-Time AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Envelope_End_Time_AVP m_envelope_End_Time_AVP(
                                                                             in template (value) Time p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_envelope_End_Time_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_envelope_End_Time_AVP
            
            /**
             * @desc The Envelope-Reporting send template 
             * @param p_aVP_Data     Indicate whether the client shall report the start and end of each aVP_Data envelope, in those cases in which quota is consumed in envelopes
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.61  Envelope-Reporting AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Envelope_Reporting_AVP m_envelope_Reporting_AVP(
                                                                             in template (value) Envelope_Reporting p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_envelope_Reporting_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_envelope_Reporting_AVP
            
            /**
             * @desc The Envelope-Start-Time send template 
             * @param p_aVP_Data     Indicate the time of the packet of user data which caused the time envelope to start
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.62  Envelope-Start-Time AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Envelope_Start_Time_AVP m_envelope_Start_Time_AVP(
                                                                               in template (value) Time p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_envelope_Start_Time_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // Start of template m_envelope_Start_Time_AVP
            
            /**
             * @desc The SDP-TimeStamps send template 
             * @param p_sdp_Offer_Timestamp_AVP  TODO
             * @param p_sdp_Answer_Timestamp_AVP TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.185 SDP-TimeStamps AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (omit) SDP_TimeStamps_AVP m_sdp_TimeStamps_AVP(