DiameterRfRo_Templates.ttcn 432 KB
Newer Older
                                                                    in template (omit) SDP_Offer_Timestamp_AVP  p_sdp_Offer_Timestamp := omit,
                                                                    in template (omit) SDP_Answer_Timestamp_AVP p_sdp_Answer_Timestamp := omit
            ) := {
                aVP_Header              := m_aVP_HeaderVid_Mbit1(c_sdp_TimeStamps_AVP_Code, f_getSDPTimeStampsAVPLength(p_sdp_Offer_Timestamp, p_sdp_Answer_Timestamp), c_vendId3gpp),
                sdp_Offer_Timestamp     := p_sdp_Offer_Timestamp, 
                sdp_Answer_Timestamp    := p_sdp_Answer_Timestamp
            } // End of template m_sdp_TimeStamps_AVP
            
            /**
             * @desc The SDP-Offer-Timestamp send template 
             * @param p_aVP_Data Holds the aVP_Data in UTC format of the SDP offer
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.183 SDP-Offer-Timestamp AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SDP_Offer_Timestamp_AVP m_sdp_Offer_Timestamp_AVP(
                                                                               in template (value) Time p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sdp_TimeStamps_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_sdp_Offer_Timestamp_AVP
            
            /**
             * @desc The SDP-Answer-Timestamp send template 
             * @param p_aVP_Data Holds the aVP_Data in UTC format of the SDP offer
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.179 SDP-Answer-Timestamp AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SDP_Answer_Timestamp_AVP m_sdp_Answer_Timestamp_AVP(
                                                                                 in template (value) Time p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sdp_TimeStamps_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_sdp_Answer_Timestamp_AVP
            
            /**
             * @desc The AF-Correlation-Information send template 
             * @param p_af_Charging_Identifier   TODO
             * @param p_flows                    Flow identifiers generated by the AF and received by P-GW over Rx/Gx as defined in TS 29.214 [214] and TS 29.212 [215]
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.11  AF-Correlation-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (omit) AF_Correlation_Information_AVP m_af_Correlation_Information_AVP(
                                                                                            in template (omit) AF_Charging_Identifier_AVP  p_af_Charging_Identifier := omit,
                                                                                            in template (omit) Flows_AVP                   p_flows := omit
            ) := {
                aVP_Header              := m_aVP_HeaderVid_Mbit1(c_af_Correlation_Information_AVP_Code, f_getAFCorrelationInformationAVPLength(p_af_Charging_Identifier, p_flows), c_vendId3gpp),
                af_Charging_Identifier  := p_af_Charging_Identifier,
                flows                   := { p_flows }
            } // End of template m_af_Correlation_Information_AVP
            
            /**
             * @desc The Low-Balance-Indication send template 
             * @param p_aVP_Data Indicates if the subscriber balance went below a designated aVP_Data by its account
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.97  Low-Balance-Indication AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Low_Balance_Indication_AVP m_low_Balance_Indication_AVP(
                                                                                     in template (value) Low_Balance_Indication p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_low_Balance_Indication_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_low_Balance_Indication_AVP 
            
            /**
             * @desc The Remaining-Balance send template 
             * @param p_unit_Value       TODO
             * @param p_currency_Code    TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.172 Remaining-Balance AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Remaining_Balance_AVP m_remaining_Balance_AVP(
                                                                           in template (value) Unit_Value_AVP     p_unit_Value,
                                                                           in template (value) Currency_Code_AVP  p_currency_Code
            ) := {
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_remaining_Balance_AVP_Code, f_getRemaininBalanceAVPLength(valueof(p_unit_Value), valueof(p_currency_Code)), c_vendId3gpp),
                unit_Value      := p_unit_Value,
                currency_Code   := p_currency_Code
            } // End of template m_remaining_Balance_AVP 
            
            /**
             * @desc The Refund-Information send template 
             * @param p_aVP_Data    Conveys relevant information for the OCS application relative to refund mechanism
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.171 Refund-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Refund_Information_AVP m_refund_Information_AVP(
                                                                             in template (value) octetstring p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_carrier_Select_Routing_Information_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_refund_Information_AVP 
            
            /**
             * @desc The Carrier-Select-Routing-Information send template 
             * @param p_aVP_Data    Holds information on carrier selection performed by S-CSCF/AS
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.34  Carrier-Select-Routing-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Carrier_Select_Routing_Information_AVP m_carrier_Select_Routing_Information_AVP(
                                                                                                             in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_carrier_Select_Routing_Information_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_carrier_Select_Routing_Information_AVP 
            
            /**
             * @desc The Number-Portability-Routing-Information send template 
             * @param p_aVP_Data    Holds information on carrier selection performed by S-CSCF/AS
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.120 Number-Portability-Routing-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Number_Portability_Routing_Information_AVP m_number_Portability_Routing_Information_AVP(
                                                                                                                     in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_number_Portability_Routing_Information_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_number_Portability_Routing_Information_AVP 
            
            /**
             * @desc The Node-Id send template 
             * @param p_aVP_Data     Operator configurable identifier string for the node
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.114 Node-Id AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Node_Id_AVP m_node_Id_AVP(
                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_node_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_node_Id_AVP
            
            /**
             * @desc The Change-Condition send template 
             * @param p_aVP_Data     Holds information if the SDP media component was of type SDP offer or SDP answer
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.186 SDP-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) SDP_Type_AVP m_sdp_Type_AVP(
                                                         in template (value) SDP_Type p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sdp_Type_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_sdp_Type_AVP
            
            /**
             * @desc The Change-Condition send template 
             * @param p_aVP_Data     Indicates the change in charging condition
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.37  Change-Condition AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Change_Condition_AVP m_change_Condition_AVP(
                                                                         in template (value) Change_Condition p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_change_Condition_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_change_Condition_AVP
            
            /**
             * @desc The Change-Time send template 
             * @param p_aVP_Data    EPC Charging: holds the aVP_Data in UTC format when the volume counts associated to the IP-CAN bearer, or the service data container, is closed and reported due to Charging condition change
             *                      MMTel  Charging: holds the aVP_Data in UTC format and it is a aVP_Data stamp that defines the moment when the conference participant has an action
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.38  Change-Time AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Change_Time_AVP m_change_Time_AVP(
                                                               in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_change_Time_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_change_Time_AVP
            
            /**
             * @desc The Diagnostics AVP (AVP code 2039)
             * @param p_cause        Provides a more detailed cause value from PCN node
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.54  Diagnostics AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Diagnostics_AVP m_diagnostics_AVP(
                                                               in template (value) UInt32 p_cause
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_diagnostics_AVP_Code, 4, c_vendId3gpp),
                cause       := p_cause
            } // End of template m_diagnostics_AVP
            
            /**
             * @desc The Start-Time send template
             * @param p_aVP_Data        The aVP_Data in UTC format which represents the start of a user session at the S-GW/P-GW
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.215 Start-Time AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Start_Time_AVP m_start_Time_AVP(
                                                             in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_start_Time_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_start_Time_AVP
            
            /**
             * @desc The Stop-Time send template
             * @param p_aVP_Data        The the aVP_Data in UTC format which represents the termination of a user session at the S-GW/P-GW
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.216 Stop-Time AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Stop_Time_AVP m_stop_Time_AVP(
                                                           in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_stop_Time_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_stop_Time_AVP
            
            /**
             * @desc The Time-First-Usage send template
             * @param p_aVP_Data        The the aVP_Data in UTC format for the first IP packet to be transmitted and mapped to the current service data container
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.226 Time-First-Usage AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Time_First_Usage_AVP m_time_First_Usage_AVP(
                                                                         in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_time_First_Usage_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_time_First_Usage_AVP
            
            /**
             * @desc The Time-Last-Usage send template
             * @param p_aVP_Data        The the aVP_Data in UTC format for the last  IP packet to be transmitted and mapped to the current service data container
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.227 Time-Last-Usage AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Time_Last_Usage_AVP m_time_Last_Usage_AVP(
                                                                       in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_time_Last_Usage_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_time_Last_Usage_AVP
            
            /**
             * @desc The Time-Last-Usage send template
             * @param p_aVP_Data        Holds the effective used aVP_Data within the service data container reporting interval.
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.232     Time-Usage  AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Time_Usage_AVP m_time_Usage_AVP(
                                                             in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_time_Usage_Usage_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_time_Usage_AVP
            
            /**
             * @desc The Traffic-Data-Volumes send template
             * @param p_accounting_Input_Octets      TODO
             * @param p_accounting_Output_Octets     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.233 Traffic-Data-Volumes AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Traffic_Data_Volumes_AVP m_traffic_Data_Volumes_AVP(
                                                                                 in template (value) Accounting_Input_Octets_AVP p_accounting_Input_Octets,
                                                                                 in template (value) Accounting_Output_Octets_AVP p_accounting_Output_Octets
            ) := {
                aVP_Header                  := m_aVP_HeaderVid_Mbit1(c_traffic_Data_Volumes_AVP_Code, f_getTrafficDataVolumesAVPLength(p_accounting_Output_Octets, p_accounting_Output_Octets), c_vendId3gpp),
                qos_Information             := omit,
                accounting_Input_Octets     := p_accounting_Input_Octets,
                accounting_Output_Octets    := p_accounting_Output_Octets,
                change_condition            := omit,
                change_Time                 := omit,
                threeGPP_User_Location_Info := omit,
                user_CSG_Information        := omit
            } // End of template m_traffic_Data_Volumes_AVP
            
            /**
             * @desc The Serving-Node-Type send template 
             * @param p_aVP_Data     The type of Serving Node
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.198 Serving-Node-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Serving_Node_Type_AVP m_serving_Node_Type_AVP(
                                                                           in template (value) Serving_Node_Type p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_serving_Node_Type_AVP
            
            /**
             * @desc The PDN-Connection-Charging-ID send template 
             * @param p_aVP_Data   The charging identifier to identify different records belonging to same PDN connection
             */
            template (value) PDN_Connection_Charging_ID_AVP m_pdn_Connection_Charging_ID_AVP(
                                                                                             in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_pdn_Connection_Charging_ID_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_pdn_Connection_Charging_ID_AVP
            
            /**
             * @desc The Dynamic-Address-Flag send template 
             * @param p_aVP_Data    Indicates whether the PDP context/PDN address is statically or dynamically allocated
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.57 Dynamic-Address-Flag AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Dynamic_Address_Flag_AVP m_dynamic_Address_Flag_AVP(
                                                                                 in template (value) Dynamic_Address_Flag p_aVP_Data
            ) := { 
                aVP_Header    := m_aVP_HeaderVid_Mbit1(c_dynamic_Address_Flag_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_dynamic_Address_Flag_AVP
            
garciay's avatar
garciay committed
            /**
             * @desc The Application-Server-ID send template 
             * @param p_aVP_Data     The Application Server identifier
             * 
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Application_Server_ID_AVP m_application_Server_ID_AVP(
                                                                                   in template (value) UTF8String p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), omit),
                aVP_Data := p_aVP_Data
            } // End of template m_application_Server_ID_AVP 
            
            /**
             * @desc The Application-Service-Type send template 
             * @param p_aVP_Data     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Application_Service_Type_AVP m_application_Service_Type_AVP(
                                                                                         in template (value) Application_Service_Type p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, 4, omit),
                aVP_Data := p_aVP_Data
            } // End of template m_application_Service_Type_AVP 
            
            /**
             * @desc The Application-Session-ID send template 
             * @param p_aVP_Data     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Application_Session_ID_AVP m_application_Session_ID_AVP(
                                                                                     in template (value) UTF8String p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), omit),
                aVP_Data := p_aVP_Data
            } // End of template m_application_Session_ID_AVP 
            
            /**
             * @desc The Delivery_Status send template 
             * @param p_aVP_Data     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Delivery_Status_AVP m_delivery_Status_AVP(
                                                                       in template (value) UTF8String p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), omit),
                aVP_Data := p_aVP_Data
            } // End of template m_delivery_Status_AVP 
            
            /**
             * @desc The Accumulated-Cost send template 
             * @param p_value_Digits TODO
             * @param p_exponent     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.3 Accumulated-Cost AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (omit) Accumulated_Cost_AVP m_accumulated_Cost_AVP(
                                                                        in template (value) Value_Digits_AVP   p_value_Digits,
                                                                        in template (omit) Exponent_AVP        p_exponent := omit
            
            ) := {
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_accumulated_Cost_AVP_Code, f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent), c_vendId3gpp),
                value_Digits    := p_value_Digits,
                exponent        := p_exponent
            } // End of template m_accumulated_Cost_AVP
            
            /**
             * @desc The AoC-Information send template 
             * @param p_aoc_Cost_Information_AVP     Holds accumulated and incremental cost information for the AoC service
             * @param p_tariff_Information_AVP       Holds a tariff definition either from the local provider or from 3rd party provider
             * @param p_aoc_Subscription_Information Holds the subscription and formatting parameters received from HSS
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.15 AoC-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (omit) AoC_Information_AVP m_aoc_Information_AVP(
                                                                      in template (omit) AoC_Cost_Information_AVP          p_aoc_Cost_Information_AVP := omit,
                                                                      in template (omit) Tariff_Information_AVP            p_tariff_Information_AVP := omit,
                                                                      in template (omit) AoC_Subscription_Information_AVP  p_aoc_Subscription_Information := omit
            ) := {
                aVP_Header                      := m_aVP_HeaderVid_Mbit1(c_aoc_Information_AVP_Code, f_getAoCInformationAVPLength(p_aoc_Cost_Information_AVP, p_tariff_Information_AVP, p_aoc_Subscription_Information), c_vendId3gpp),
                aoc_Cost_Information_AVP        := p_aoc_Cost_Information_AVP,
                tariff_Information_AVP          := p_tariff_Information_AVP,
                aoc_Subscription_Information    := p_aoc_Subscription_Information
            } // End of template m_aoc_Information_AVP
            
            /**
             * @desc The AoC-Cost-Information send template 
             * @param p_accumulated_Cost Holds the accumulated cost for the ongoing session
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.13 AoC-Cost-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) AoC_Cost_Information_AVP m_aoc_Cost_Information_AVP(
                                                                                 in template (value) Accumulated_Cost_AVP  p_accumulated_Cost
                aVP_Header          := m_aVP_HeaderVid_Mbit1(c_aoc_Cost_Information_AVP_Code, f_getAoCCostInformationAVPLength(p_accumulated_Cost, omit, omit), c_vendId3gpp),
                accumulated_Cost    := p_accumulated_Cost,
                incremental_Cost    := omit,
                currency_Code       := omit // Not used in 3GPP
            } // End of template m_aoc_Cost_Information_AVP
            
            /**
             * @desc The AoC-Request-Type send template
             * @param p_aoc_Request_Type Tags if the client is looking for AoCI in conjunction to the Request-Type and Request-Action AVPs
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.16  AoC-Request-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) AoC_Request_Type_AVP m_aoc_Request_Type_AVP(
                                                                         in template (value) AoC_Request_Type p_aoc_Request_Type
            ) := {
                aVP_Header          := m_aVP_HeaderVid_Mbit1(c_aoc_Request_Type_AVP_Code, 4, c_vendId3gpp),
                aoc_Request_Type    := p_aoc_Request_Type
            } // End of template m_aoc_Request_Type_AVP
            
            /**
             * @desc The Current-Tariff send template
             * @param p_scale_Factor     Holds simple multiplication factor in the same format as Unit-Value
             * @param p_rate_Element     Holds simple rate element of one dimension
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.47 Current-Tariff AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Current_Tariff_AVP m_current_Tariff_AVP(
                                                                     in template (value) Scale_Factor_AVP p_scale_Factor,
                                                                     in template (value) Rate_Element_AVP p_rate_Element
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_current_Tariff_AVP_Code, f_getTariffAVPLength(p_scale_Factor, p_rate_Element), c_vendId3gpp),
                currency_Code   := omit, // Not used in 3GPP
                scale_Factor    := p_scale_Factor,
                rate_Element    := { 
                    p_rate_Element
                }
            } // End of template m_current_Tariff_AVP
            
            /**
             * @desc The Next-Tariff send template
             * @param p_scale_Factor     Holds simple multiplication factor in the same format as Unit-Value
             * @param p_rate_Element     Holds simple rate element of one dimension
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.112 Next-Tariff AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Next_Tariff_AVP m_next_Tariff_AVP(
                                                               in template (value) Scale_Factor_AVP p_scale_Factor,
                                                               in template (value) Rate_Element_AVP p_rate_Element
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_next_Tariff_AVP_Code, f_getTariffAVPLength(p_scale_Factor, p_rate_Element), c_vendId3gpp),
                currency_Code   := omit, // Not used in 3GPP
                scale_Factor    := p_scale_Factor,
                rate_Element    := { 
                    p_rate_Element
                }
            } // End of template m_next_Tariff_AVP
            
            /**
             * @desc The Rate-Element AVP send template 
             * @param p_cc_Unit_Type_AVP     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.161 Rate-Element AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Rate_Element_AVP m_rate_Element_AVP(
                                                                 in template (value) CC_Unit_Type_AVP p_cc_Unit_Type_AVP
            ) := {
                aVP_Header              := m_aVP_HeaderVid_Mbit1(c_rate_Element_AVP_Code, f_getRateElementAVPLength(p_cc_Unit_Type_AVP), c_vendId3gpp),
                cc_Unit_Type_AVP        := p_cc_Unit_Type_AVP,
                charge_Reason_Code      := omit,
                unit_Value              := omit,
                unit_Cost               := omit,
                unit_Quota_Threshold    := omit
            } // End of template m_rate_Element_AVP
            
            /**
             * @desc The Scale-Factor AVP send template 
             * @param p_value_Digits TODO
             * @param p_exponent     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.178 Scale-Factor AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (omit) Scale_Factor_AVP m_scale_Factor_AVP(
                                                                in template (value) Value_Digits_AVP   p_value_Digits,
                                                                in template (omit) Exponent_AVP        p_exponent := omit
            ) := {
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_scale_Factor_AVP_Code, f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent), c_vendId3gpp),
                value_Digits    := p_value_Digits,
                exponent        := p_exponent
            } // End of template m_scale_Factor_AVP
            
            /**
             * @desc The Tariff-Information send template 
             * @param p_current_Tariff       Holds tariff information
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.223 Tariff-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Tariff_Information_AVP m_tariff_Information_AVP(
                                                                             in template (value) Current_Tariff_AVP p_current_Tariff
            ) := { 
                aVP_Header          := m_aVP_HeaderVid_Mbit1(c_tariff_Information_AVP_Code, f_getTariffInformationAVPLength(p_current_Tariff), c_vendId3gpp),
                current_Tariff      := p_current_Tariff,
                tariff_Time_Change  := omit,
                next_Tariff         := omit
            } // End of template m_tariff_Information_AVP 
            
            /**
             * @desc The Unit-Cost send template 
             * @param p_value_Digits TODO
             * @param p_exponent     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.239 Unit-Cost AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (omit) Unit_Cost_AVP m_unit_Cost_AVP(
                                                          in template (value) Value_Digits_AVP   p_value_Digits,
                                                          in template (omit) Exponent_AVP        p_exponent := omit
            ) := { 
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_unit_Cost_AVP_Code, f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent), c_vendId3gpp),
                value_Digits    := p_value_Digits,
                exponent        := p_exponent
            } // End of template m_unit_Cost_AVP
            
            /**
             * @desc The Incremental-Cost send template
             * @param p_value_Digits TODO
             * @param p_exponent     TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.70 Incremental-Cost AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (omit) Incremental_Cost_AVP m_incremental_Cost_AVP(
                                                                        in template (value) Value_Digits_AVP   p_value_Digits,
                                                                        in template (omit) Exponent_AVP        p_exponent := omit
            ) := { 
                aVP_Header      := m_aVP_HeaderVid_Mbit1(c_incremental_Cost_AVP_Code, f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent), c_vendId3gpp),
                value_Digits    := p_value_Digits,
                exponent        := p_exponent
            } // End of template m_incremental_Cost_AVP
            
            /**
             * @desc The Local-Sequence-Number send template
             * @param p_seq_number   Holds the service data container sequence number
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.93  Local-Sequence-Number AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value)  Local_Sequence_Number_AVP m_local_Sequence_Number_AVP(
                                                                                    in template (value) UInt32 p_seq_number
            ) := { 
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_local_Sequence_Number_AVP_Code, 4, c_vendId3gpp),
                seq_number := p_seq_number
            } // End of template m_local_Sequence_Number_AVP
            
            /**
             * @desc The SGW-Change AVP send template
             * @param p_aVP_Data     Accounting Request type
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.200 SGW-Change AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SGW_Change_AVP m_sgw_Change_AVP(
                                                             in template (value) SGW_Change p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sgw_Change_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_sgw_Change_AVP
            
            /**
             * @desc The Charging-Characteristics-Selection-Mode send template
             * @param p_aVP_Data     Indicates how the applied Charging-Characteristics was selected
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.39A     Charging-Characteristics-Selection-Mode AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) Charging_Characteristics_Selection_Mode_AVP m_charging_Characteristics_Selection_Mode_AVP(
                                                                                                                       in template (value) Charging_Characteristics_Selection_Mode p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_charging_Characteristics_Selection_Mode_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_charging_Characteristics_Selection_Mode_AVP
            
            /**
             * @desc The SGW-Address send template
             * @param p_aVP_Data  Holds the IP-address of the S-GW Node
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.199A SGW-Address AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template (value) SGW_Address_AVP m_sgw_Address_AVP(
                                                               in template (value) Address p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sgw_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_sgw_Address_AVP
            
            /**
             * @desc The Dynamic-Address-Flag-Extension send template 
             * @param p_pdpAddressAllocation    indicates that the IPv4 PDN address has been dynamically allocated for that particular IP CAN bearer (PDN connection) of PDN type IPv4v6, and the dynamic IPv6 address is indicated in Dynamic Address Flag
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.57A Dynamic-Address-Flag-Extension AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Dynamic_Address_Flag_Extension_AVP m_dynamic_Address_Flag_Extension_AVP(
                                                                                                     in template (value) Dynamic_Address_Flag_Extension p_pdpAddressAllocation
            ) := { 
                aVP_Header              := m_aVP_HeaderVid_Mbit1(c_dynamic_Address_Flag_Extension_AVP_Code, 4, c_vendId3gpp),
                pdpAddressAllocation    := p_pdpAddressAllocation
            } // End of template m_dynamic_Address_Flag_Extension_AVP
            
            /**
             * @desc The SIP-Request-Timestamp-Fraction send template 
             * @param p_aVP_Data     Holds the miliseconds fraction in relation to SIP-Request-Timestamp
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.203 SIP-Request-Timestamp-Fraction AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) SIP_Request_Timestamp_Fraction_AVP m_sip_Request_Timestamp_Fraction_AVP(
                                                                                                     in template (value) UInt32 p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sip_Request_Timestamp_Fraction_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_sip_Request_Timestamp_Fraction_AVP
            
            /**
             * @desc The SIP-Response-Timestamp-Fraction send template 
             * @param p_aVP_Data     Holds the miliseconds fraction in relation to SIP-Response-Timestamp
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.205 SIP-Response-Timestamp-Fraction AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) SIP_Response_Timestamp_Fraction_AVP m_sip_Response_Timestamp_Fraction_AVP(
                                                                                                       in template (value) UInt32 p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_sip_Response_Timestamp_Fraction_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_sip_Response_Timestamp_Fraction_AVP
            
            /**
             * @desc The Online-Charging-Flag send template 
             * @param p_aVP_Data     Indicates the Online Charging Request was sent based on the provided ECF address from the SIP P-header "P-Charging-Function-Addresses"
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.122 Online-Charging-Flag AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Online_Charging_Flag_AVP m_online_Charging_Flag_AVP(
                                                                                 in template (value) Online_Charging_Flag p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_online_Charging_Flag_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_online_Charging_Flag_AVP
            
            /**
             * @desc The Tariff-XML send template 
             * @param p_aVP_Data     Holds the XML body describing the tariff/add-on charge information exchanged during the SIP transaction, as described in the TS 29.658 [222]
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.224 Tariff-XML AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Tariff_XML_AVP m_tariff_XML_AVP(
                                                             in template (value) UTF8String p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_tariff_XML_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_tariff_XML_AVP
            
             * @desc The IMSI-Unauthenticated-Flag send template 
             * @param p_aVP_Data        Enumerated value
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.78  IMSI-Unauthenticated-Flag AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) IMSI_Unauthenticated_Flag_AVP m_imsi_Unauthenticated_Flag_AVP(
                                                                                           in template (value) IMSI_Unauthenticated_Flag p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_imsi_Unauthenticated_Flag_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_imsi_Unauthenticated_Flag_AVP
            
             * @desc The Account-Expiration send template 
             * @param p_aVP_Data     Indicates the subscriber account expiration date and aVP_Data of day
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.2   Account-Expiration AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Account_Expiration_AVP m_account_Expiration_AVP(
                                                                             in template (value) Time p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_aoc_Format_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_account_Expiration_AVP
            
            /**
             * @desc The AoC-Format send template 
             * @param p_aVP_Data     Holds the format on how the AoC information shall be sent to the UE
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.14  AoC-Format AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) AoC_Format_AVP m_aoc_Format_AVP(
                                                             in template (value) AoC_Format p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_aoc_Format_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_aoc_Format_AVP
            
            /**
             * @desc The AoC-Service send template 
             * @param p_aoc_Service_Obligatory_Type  AoC Service type 
             * @param p_aoc_Service_Type             AoC Service obligatory type
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.17  AoC-Service AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (omit) AoC_Service_AVP m_aoc_Service_AVP(
                                                               in template (omit) AoC_Service_Obligatory_Type_AVP   p_aoc_Service_Obligatory_Type := omit,
                                                               in template (omit) AoC_Service_Type_AVP              p_aoc_Service_Type := omit
            ) := { 
                aVP_Header                  := m_aVP_HeaderVid_Mbit1(c_aoc_Service_Obligatory_Type_AVP_Code, f_getAoCServiceAVPLength(p_aoc_Service_Obligatory_Type, p_aoc_Service_Type), c_vendId3gpp),
                aoc_Service_Obligatory_Type := p_aoc_Service_Obligatory_Type,
                aoc_Service_Type            := p_aoc_Service_Type
            } // End of template m_aoc_Service_AVP
            
            /**
             * @desc The AoC-Service-Obligatory-Type send template 
             * @param p_aVP_Data     Holds the information if the AoC information is binding or not
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.18  AoC-Service-Obligatory-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) AoC_Service_Obligatory_Type_AVP m_aoc_Service_Obligatory_Type_AVP(
                                                                                               in template (value) AoC_Service_Obligatory_Type p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_aoc_Service_Obligatory_Type_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_aoc_Service_Obligatory_Type_AVP
            
            /**
             * @desc The AoC-Service-Type AVP send template 
             * @param p_aVP_Data     Defines the type of AoC information to be provided to the subscriber
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.19  AoC-Service-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) AoC_Service_Type_AVP m_aoc_Service_Type_AVP(
                                                                         in template (value) AoC_Service_Type p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_aoc_Service_Type_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_aoc_Service_Type_AVP
            
            /**
             * @desc The AoC-Subscription-Information send template 
             * @param p_aoc_Service              TODO
             * @param p_aoc_Format               TODO
             * @param p_preferred_AoC_Currency   TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.20  AoC-Subscription-Information AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (omit) AoC_Subscription_Information_AVP m_aoc_Subscription_Information_AVP(
                                                                                                in template (value) AoC_Service_AVP            p_aoc_Service,
                                                                                                in template (omit) AoC_Format_AVP              p_aoc_Format := omit,
                                                                                                in template (omit) Preferred_AoC_Currency_AVP  p_preferred_AoC_Currency := omit
            ) := {
                aVP_Header              := m_aVP_HeaderVid_Mbit1(c_aoc_Subscription_Information_AVP_Code, f_getAoCSubscriptionInformationAVPLength(p_aoc_Service, p_aoc_Format, p_preferred_AoC_Currency), c_vendId3gpp),
                aoc_Service             := { p_aoc_Service },
                aoc_Format              := p_aoc_Format,
                preferred_AoC_Currency  := p_preferred_AoC_Currency
            } // End of template m_aoc_Subscription_Information_AVP 
            
            /**
             * @desc The Preferred-AoC-Currency send template 
             * @param p_aVP_Data     Indicates the preferred currency code that the AoC function would like to get the AoC information
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.153 Preferred-AoC-Currency AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Preferred_AoC_Currency_AVP m_preferred_AoC_Currency_AVP(
                                                                                     in template (value) UInt32 p_aVP_Data
            ) := { 
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_preferred_AoC_Currency_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_preferred_AoC_Currency_AVP
            
             * @desc The Initial-IMS-Charging-Identifier send template 
             * @param p_aVP_Data     Indicates the IMS session is an IMS emergency session or IMS registration
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.76A IMS-Emergency-Indicator AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) IMS_Emergency_Indicator_AVP m_ims_Emergency_Indicator_AVP(
                                                                                       in template (value) IMS_Emergency_Indicator p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_initial_IMS_Charging_Identifier_AVP_Code, 2, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_ims_Emergency_Indicator_AVP
            
            /**
             * @desc The Initial-IMS-Charging-Identifier send template 
             * @param p_aVP_Data     Holds the Initial IMS Charging Identifier (ICID) as generated by a IMS node for the initial SIP session created for IMS service continuity
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.79A Initial-IMS-Charging-Identifier AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Initial_IMS_Charging_Identifier_AVP m_initial_IMS_Charging_Identifier_AVP(
                                                                                                       in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_initial_IMS_Charging_Identifier_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_initial_IMS_Charging_Identifier_AVP
            
            /**
             * @desc The Outgoing-Session-Id send template 
             * @param p_aVP_Data     Contains the SIP Call ID of the outgoing leg, as defined in RFC 3261
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.128A    Outgoing-Session-Id AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Outgoing_Session_Id_AVP m_outgoing_Session_Id_AVP(
                                                                               in template (value) UTF8String p_aVP_Data
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_outgoing_Session_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template m_outgoing_Session_Id_AVP
            
            /**
             * @desc The Low-Priority-Indicator send template 
             * @param p_aVP_Data     Indicates if the PDN connection has a low aVP_Data, i.e. for Machine Type Communications
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.97A Low-Priority-Indicator AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Low_Priority_Indicator_AVP m_low_Priority_Indicator_AVP(
                                                                                     in template (value) Low_Priority_Indicator p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_low_Priority_Indicator_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_low_Priority_Indicator_AVP
            
            /**
             * @desc The Local-GW-Inserted-Indication send template 
             * @param p_aVP_Header   Header AVP
             * @param p_aVP_Data     Indicates whether the IP realm used for the SDP media component is the Default IP realm or not
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.80A IP-Realm-Default-Indication  AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) IP_Realm_Default_Indication_AVP m_ip_Realm_Default_Indication_AVP(
                                                                                               in template (value) IP_Realm_Default_Indication p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_ip_Realm_Default_Indication_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_ip_Realm_Default_Indication_AVP
            
            /**
             * @desc The Local-GW-Inserted-Indication send template 
             * @param p_aVP_Data     Indicates if the local GW (TrGW, IMS-AGW) is inserted or not for the SDP media component
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.92A     Local-GW-Inserted-Indication AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Local_GW_Inserted_Indication_AVP m_local_GW_Inserted_Indication_AVP(
                                                                                                 in template (value) Local_GW_Inserted_Indication p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_local_GW_Inserted_Indication_AVP_Code, 4, c_vendId3gpp),
                aVP_Data    := p_aVP_Data
            } // End of template m_local_GW_Inserted_Indication_AVP
            
            /**
             * @desc The Transcoder-Inserted-Indication send template 
             * @param p_aVP_Data     Indicates if a transcoder is inserted or not for the SDP media component
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.233A            Transcoder-Inserted-Indication AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) Transcoder_Inserted_Indication_AVP m_transcoder_Inserted_Indication_AVP(
                                                                                                     in template (value) Transcoder_Inserted_Indication p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_pdp_Address_Prefix_Length_AVP_Code, 4, c_vendId3gpp),
                aVP_Data      := p_aVP_Data
            } // End of template m_transcoder_Inserted_Indication_AVP
            
            /**
             * @desc The PDP-Address-Prefix-Length send template 
             * @param p_aVP_Data    the aVP_Data length of an IPv6 typed PDP-Address AVP
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.137a PDP-Address-Prefix-Length AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.2: 3GPP specific AVPs
             */
            template (value) PDP_Address_Prefix_Length_AVP m_pdp_Address_Prefix_Length_AVP(
                                                                                           in template (value) UInt32 p_aVP_Data
            ) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_pdp_Address_Prefix_Length_AVP_Code, 4, c_vendId3gpp),
                aVP_Data      := p_aVP_Data
            } // End of template m_pdp_Address_Prefix_Length_AVP
            
            
        } // End of group Rf_avps_templates_send 
        
        group Rf_avps_templates_receive { 
            
            template (present) Accounting_Record_Type_AVP mw_accounting_Record_Type_AVP(
                                                                                        template (present) Acc_Record_Type p_aVP_Data := ?
garciay's avatar
garciay committed
                aVP_Header          := mw_aVP_HeaderVid_Mbit1(c_accounting_Record_Type_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_aVP_Data
            } // End of template mw_accounting_Record_Type_AVP 
            template (present) Accounting_Record_Number_AVP mw_accounting_Record_Number_AVP(
                                                                                            template (present) UInt32 p_aVP_Data := 3
garciay's avatar
garciay committed
                aVP_Header          := mw_aVP_HeaderVid_Mbit1(c_accounting_Record_Number_AVP_Code, 4, c_vendId3gpp),
                aVP_Data            := p_aVP_Data
            } // End of template mw_accounting_Record__Number
            
            /**
             * @desc Accounting-Input-Octets receive template 
             * @param p_aVP_Data   Number of octets transmitted during the data container recording interval, reflecting the volume counts for uplink traffic for a data flow
             */
            template (present) Accounting_Input_Octets_AVP mw_accounting_Input_Octets_AVP(
                                                                                          template (present) UInt64 p_aVP_Data := ?
garciay's avatar
garciay committed
                aVP_Header := mw_aVP_HeaderVid_Mbit1(c_accounting_Input_Octets_AVP_Code, 8, c_vendId3gpp),
                aVP_Data   := p_aVP_Data
            } // End of template mw_accounting_Input_Octets_AVP 
            
            /**
             * @desc Accounting-Output-Octets receive template 
             * @param p_aVP_Data   Number of octets transmitted during the data container recording interval, reflecting the volume counts for downlink traffic for a data flow
             */
            template (present) Accounting_Output_Octets_AVP mw_accounting_Output_Octets_AVP(
                                                                                        template (present) UInt64 p_aVP_Data := ?
garciay's avatar
garciay committed
                aVP_Header := mw_aVP_HeaderVid_Mbit1(c_accounting_Output_Octets_AVP_Code, 8, c_vendId3gpp),
                aVP_Data   := p_aVP_Data
            } // End of template mw_accounting_Output_Octets_AVP 
            
            /**
             * @desc The Event-Type receive template 
             * @param p_sip_Method   TODO
             * @param p_event        TODO
             * @param p_aVP_Data      TODO
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.65  Event-Type AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs
             */
            template Event_Type_AVP mw_event_Type_AVP(
                                                      template SIP_Method_AVP    p_sip_Method := *,
                                                      template Event_AVP         p_event := *,
                                                      template Expires_AVP       p_aVP_Data := *
            ) := {
                aVP_Header  := mw_aVP_HeaderVid_Mbit1(c_event_Type_AVP_Code, ?, c_vendId3gpp),
                sip_Method := p_sip_Method,
                event := p_event,
                aVP_Data := p_aVP_Data
            } // End of template m_wevent_Type_AVP
            
            /**
             * @desc The Event receive template 
             * @param p_aVP_Data     Holds the content of the "Event" header
             * 
             * @see ETSI TS 132 299 V10.15.0 Clause 7.2.63  Event AVP
             * @see ETSI TS 132 299 V10.15.0 Table 7.1: Use Of IETF Diameter AVPs