LibS1AP_Templates.ttcn 420 KB
Newer Older
garciay's avatar
garciay committed
 *    @author   ETSI / STF519
 *    @version  $URL:$
 *              $Id:$
 *    @desc     This module provides Lib S1AP Templates used by the test component for S1AP tests.
 *    @copyright   ETSI Copyright Notification
 *                 No part may be reproduced except as authorized by written permission.
 *                 The copyright and the foregoing restriction extend to reproduction in all media.
 *                 All rights reserved.
 *    @see      ETSI TS 136 413 / 3GPP TS 36.413 version 13.4.0 Release 13
garciay's avatar
garciay committed
module LibS1AP_Templates {
    // LibCommon
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_DataStrings all;
    
garciay's avatar
garciay committed
    // LibS1AP
    import from S1AP_Constants language "ASN.1:1997" all;
    import from S1AP_CommonDataTypes language "ASN.1:1997" all;
    import from S1AP_IEs language "ASN.1:1997" all;
    import from S1AP_PDU_Contents language "ASN.1:1997" all;
    import from S1AP_PDU_Descriptions language "ASN.1:1997" all;
garciay's avatar
garciay committed
    import from LibS1AP_TypesAndValues all;
garciay's avatar
garciay committed
    import from LibS1AP_Pixits all;
garciay's avatar
garciay committed
    
    group g_S1AP {
        
        group  g_S1AP_PDU {
            
            /**
garciay's avatar
garciay committed
             * @desc Send template for S1AP PDU with InitiatingMessage payload
             * @param p_procedureCode   Procedure code
             * @param p_value           Message value according to the Procedure code
garciay's avatar
garciay committed
             * @see ETSI TS 136 413 V13.4.0 Clause 9.1 Message Functional Definition and Content
garciay's avatar
garciay committed
             */
            template (value) S1AP_PDU m_initiatingMessage(
                                                          in ProcedureCode p_procedureCode, 
                                                          in anytype p_value
garciay's avatar
garciay committed
                initiatingMessage := {
                    procedureCode := p_procedureCode,
                    criticality := reject,
                    value_ := p_value
                }
            } // End of template m_HandoverPreparation
garciay's avatar
garciay committed
            
        } // End of group g_S1AP_PDU
        
garciay's avatar
garciay committed
        /**
         * @desc List of S1AP Elementary procedures
         * @see ETSI TS 136 413 Table 1: Class 1 procedures
         */
garciay's avatar
garciay committed
        group class1 {
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            group sendClass1 {
                group HandoverPreparation { 
garciay's avatar
garciay committed
                    
                     * @desc Send template for InitiatingMessage message with Handover Required payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_HandoverRequired(
                                                                           template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverPreparation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_HandoverRequired
                    
                    template (value) RecordOf_ProtocolIE m_HandoverRequiredIEs(
                        in template (value) MME_UE_S1AP_ID p_MME_value,
                        in template (value) ENB_UE_S1AP_ID p_eNB_value,
                        in template (value) HandoverType p_handoverType,
                        in template (value) Cause p_cause,
                        in template (value) TargetID p_targetId_value,
                        in template (value) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value
                       ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_handoverType_IE(p_handoverType),
                            m_cause_IE(p_cause),
                            m_targetID_IE(p_targetId_value),
                            m_source_ToTarget_TransparentContainer_IE(p_Source_ToTarget_TransparentContainer_value)
                       } // End of template mw_HandoverCommandIEs
                    template (value) RecordOf_ProtocolIE m_HandoverRequiredIEs_CSGID(
                        in template (value) MME_UE_S1AP_ID p_MME_value,
                        in template (value) ENB_UE_S1AP_ID p_eNB_value,
                        in template (value) HandoverType p_handoverType,
                        in template (value) Cause p_cause,
                        in template (value) TargetID p_targetId_value,
                        in template (value) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value,
                        in template (value) CSG_Id p_CSG_Id_value
                       ) modifies m_HandoverRequiredIEs := {
                            m_CSG_Id_IE(p_CSG_Id_value)
                       } // End of template m_HandoverCommandIEs_CSGID
                     
                    template (value) RecordOf_ProtocolIE m_HandoverRequiredIEs_CSGID_CellAccessMode(
                        in template (value) MME_UE_S1AP_ID p_MME_value,
                        in template (value) ENB_UE_S1AP_ID p_eNB_value,
                        in template (value) HandoverType p_handoverType,
                        in template (value) Cause p_cause,
                        in template (value) TargetID p_targetId_value,
                        in template (value) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value,
                        in template (value) CSG_Id p_CSG_Id_value,
                        in template (value) CellAccessMode p_CellAccessMode_value
                       ) modifies m_HandoverRequiredIEs := {
                            m_CSG_Id_IE(p_CSG_Id_value),
                            m_CellAccessMode_IE(p_CellAccessMode_value)                            
                       } // End of template m_HandoverRequiredIEs_CSGID_CellAccessMode
                        
                    template (value) RecordOf_ProtocolIE m_HandoverRequiredIEs_SRVCCHOIndication(
                        in template (value) MME_UE_S1AP_ID p_MME_value,
                        in template (value) ENB_UE_S1AP_ID p_eNB_value,
                        in template (value) HandoverType p_handoverType,
                        in template (value) Cause p_cause,
                        in template (value) TargetID p_targetId_value,
                        in template (value) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value,
                        in template (value) SRVCCHOIndication p_SRVCC_HO_Indication_value
                       ) modifies m_HandoverRequiredIEs := {
                           m_SRVCCHOIndication_IE(p_SRVCC_HO_Indication_value)                           
                       } // End of template m_HandoverRequiredIEs_SRVCCHOIndication
                        
                    template (value) RecordOf_ProtocolIE m_HandoverRequiredIEs_SRVCCHOInd_S2TTransCont2nd_MSClassmark23(
                        in template (value) MME_UE_S1AP_ID p_MME_value,
                        in template (value) ENB_UE_S1AP_ID p_eNB_value,
                        in template (value) HandoverType p_handoverType,
                        in template (value) Cause p_cause,
                        in template (value) TargetID p_targetId_value,
                        in template (value) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value,
                        in template (value) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer2_value,
                        in template (value) SRVCCHOIndication p_SRVCC_HO_Indication_value,
                        in template (value) MSClassmark2 p_MSClassMark2_value,
                        in template (value) MSClassmark3 p_MSClassMark3_value
                       ) modifies m_HandoverRequiredIEs := {
                           m_source_ToTarget_TransparentContainer_2nd_IE(p_Source_ToTarget_TransparentContainer2_value),
                           m_SRVCCHOIndication_IE(p_SRVCC_HO_Indication_value),   
                           m_MSClassmark2_IE(p_MSClassMark2_value),
                           m_MSClassmark3_IE(p_MSClassMark3_value)
                       } // End of template m_HandoverRequiredIEs_SRVCCHOIndication
                     * @desc Send template for SuccessfulOutcome message with Handover Command payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) SuccessfulOutcome m_HandoverCommand(
                                                                           template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverPreparation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_HandoverCommand
                    
                    template (value) RecordOf_ProtocolIE m_HandoverCommandIEs(
                        in template (value) MME_UE_S1AP_ID p_MME_value,
                        in template (value) ENB_UE_S1AP_ID p_eNB_value,
                        in template (value) HandoverType p_handoverType,
                        in template (value) Target_ToSource_TransparentContainer p_Target_ToSource_TransparentContainer_value
                       ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_handoverType_IE(p_handoverType),
                            m_target_ToSource_TransparentContainer_IE(p_Target_ToSource_TransparentContainer_value)
                       } // End of template mw_HandoverCommandIEs
garciay's avatar
garciay committed
                    
                } // End of group HandoverPreparation
                
                group HandoverResourceAllocation {
                    
                    /**
                     * @desc Send template for InitiatingMessage message with Handover Request payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_HandoverRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverResourceAllocation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_HandoverRequest
    
                    template (value) RecordOf_ProtocolIE m_HandoverReqIEs(
                            in template (value) MME_UE_S1AP_ID p_MME_value,
                            in template (value) HandoverType p_handoverType,
                            in template (value) Cause p_cause,
                            in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate,
                            in template (value) RecordOf_E_RABToBeSetupItemHOReq p_RecordOf_E_RABToBeSetupItemHOR,
                            in template (value) Source_ToTarget_TransparentContainer p_source_ToTarget_TransparentContainer,
                            in template (value) UESecurityCapabilities p_uESecurityCapabilities,
                            in template (value) SecurityContext p_securityContext
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_handoverType_IE(p_handoverType),
                        m_cause_IE(p_cause),
                        m_UE_aggregate_maximum_bitrate_IE(p_uEAggregateMaximumBitrate),
                        m_E_RABToBeSetupListHOReq(p_RecordOf_E_RABToBeSetupItemHOR),
                        m_source_ToTarget_TransparentContainer_IE(p_source_ToTarget_TransparentContainer),
                        m_UE_securityCapabilities_IE(p_uESecurityCapabilities),
                        m_securityContext_IE(p_securityContext)
                    } // End of template m_HandoverReqIEs
    
                    template (value) RecordOf_ProtocolIE m_HandoverReqIEs_nASSecParToEUTRAN (
                            in template (value) MME_UE_S1AP_ID p_MME_value,
                            in template (value) HandoverType p_handoverType,
                            in template (value) Cause p_cause,
                            in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate,
                            in template (value) RecordOf_E_RABToBeSetupItemHOReq p_RecordOf_E_RABToBeSetupItemHOR,
                            in template (value) Source_ToTarget_TransparentContainer p_source_ToTarget_TransparentContainer,
                            in template (value) UESecurityCapabilities p_uESecurityCapabilities,
                            in template (value) SecurityContext p_securityContext,
                            in template (value) NASSecurityParameterstoE_UTRAN p_nasSecurityParametersToEutran_value
                        m_nasSecurityParametersToEutran_IE(p_nasSecurityParametersToEutran_value)
                    } // End of template m_HandoverReqIEs_nASSecParToEUTRAN
    
                    template (value) RecordOf_ProtocolIE m_HandoverReqIEs_cSGMembershipStatus(
                            in template (value) MME_UE_S1AP_ID p_MME_value,
                            in template (value) HandoverType p_handoverType,
                            in template (value) Cause p_cause,
                            in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate,
                            in template (value) RecordOf_E_RABToBeSetupItemHOReq p_RecordOf_E_RABToBeSetupItemHOR,
                            in template (value) Source_ToTarget_TransparentContainer p_source_ToTarget_TransparentContainer,
                            in template (value) UESecurityCapabilities p_uESecurityCapabilities,
                            in template (value) SecurityContext p_securityContext,
                            in template (value) CSGMembershipStatus p_cSGMembershipStatu_value
                        m_cSGMembershipStatus_IE(p_cSGMembershipStatu_value)
                    } // End of template m_HandoverReqIEs_cSGMembershipStatus
                    /**
                     * @desc Send template for SuccessfulOutcome message with Handover Request Acknowledge payload
                     * @param p_value           The protocol information elements.
                     */
                    template (value) SuccessfulOutcome m_HandoverRequestAcknowledge(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverResourceAllocation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_HandoverRequestAcknowledge
    
                    template (value) RecordOf_ProtocolIE m_HandoverReqAckIEs(
                            in template (value) MME_UE_S1AP_ID p_MME_value,
                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                            in template (value) E_RABAdmittedList p_E_RABAdmittedList,
                            in template (value) Target_ToSource_TransparentContainer p_target_ToSource_TransparentContainer
                            
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_E_RABTAdmitedItemIEs(p_E_RABAdmittedList),
                        m_target_ToSource_TransparentContainer_IE(p_target_ToSource_TransparentContainer)
                    } // End of template m_HandoverReqIEs
garciay's avatar
garciay committed
                }// End of group HandoverResourceAllocation
                
                group HandoverCancelation{

                    /**
                     * @desc Send template for InitiatingMessage message with Handover Cancel payload
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_HandoverCancel(
                                                                           template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverCancel,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_HandoverCancel
                    template (value) RecordOf_ProtocolIE m_HandoverCancelIEs(
                        in template (value) MME_UE_S1AP_ID p_MME_value,
                        in template (value) ENB_UE_S1AP_ID p_eNB_value,
                        in template (value) Cause p_cause_value
                       ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_cause_IE(p_cause_value)
                       } // End of template m_HandoverCancelIEs
                       
                     * @desc Send template for SuccessfulOutcome message with Handover Cancel Acknowledge payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) SuccessfulOutcome m_HandoverCancelAck(
                                                                           template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverCancel,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_HandoverCancelAck
                    
                    template (value) RecordOf_ProtocolIE m_HandoverCancelAckIEs(
                        template (value) MME_UE_S1AP_ID p_MME_value,
                        template (value) ENB_UE_S1AP_ID p_eNB_value
                       ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value)
                       } // End of template m_HandoverCancelAckIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with eNB_Status_Transfer payload
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_eNB_Status_Transfer(
                                                                           template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_eNBStatusTransfer,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_eNB_Status_Transfer

                    template (value) RecordOf_ProtocolIE m_eNB_Status_TransferIEs(
                        in template (value) MME_UE_S1AP_ID p_MME_value,
                        in template (value) ENB_UE_S1AP_ID p_eNB_value,
                        in template (value) ENB_StatusTransfer_TransparentContainer p_enb_stc_value
                       ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_eNBStatusTransferTransparentContainer_IE(p_enb_stc_value)
                       } // End of template m_eNB_Status_TransferIEs
                       
                }// End of group HandoverCancelation
                group PathSwitchRequest_send {

                    /**
                     * @desc Send template for InitiatingMessage message with Path Switch Request payload
                     * @param p_value           The procedure code value
                     */
                    template (value) InitiatingMessage m_PathSwitchRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_PathSwitchRequest,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_PathSwitchRequest

                    template (value) RecordOf_ProtocolIE m_PathSwitchRequestIEs(
	                    in template (value) ENB_UE_S1AP_ID p_eNB_value,
		                in template (value) RecordOf_E_RABToBeSwitchedDLItem p_RecordOf_E_RABToBeSwitchedDLItem_value,
		                in template (value) MME_UE_S1AP_ID p_MME_value,
		                in template (value) EUTRAN_CGI p_eUtranCgi,
		                in template (value) TAI p_tai,
		                in template (value) UESecurityCapabilities p_UESecurityCapabilities
                    ) := {
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_E_RABToBeSwitchedDLList(p_RecordOf_E_RABToBeSwitchedDLItem_value),
                        m_sourceMmeUeS1apId(p_MME_value),
                        m_eUTRAN_CGI_IE(p_eUtranCgi),
                        m_tAI_IE(p_tai),
                        m_UE_securityCapabilities_IE(p_UESecurityCapabilities, ignore)
                    } // End of template m_PathSwitchRequestIEs
                    
                    /**
                     * @desc Send template for SuccessfulOutcome message with Path Switch Request Ack payload
                     * @param p_value           The procedure code value
                     */
                    template (value) SuccessfulOutcome m_PathSwitchRequestAck(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_PathSwitchRequest,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_PathSwitchRequestAck
    
                    template (value) RecordOf_ProtocolIE m_PathSwitchRequestAckIEs(
                            in template (value) MME_UE_S1AP_ID p_MME_value,
                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                            in template (value) SecurityContext p_securityContext
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_securityContext_IE(p_securityContext)
                    } // End of template m_PathSwitchRequestAckIEs
                    
                }// End of group PathSwitchRequest_send
                
                
                group ERAB_management_group {
                
                    group ERABSetup{
                    
                        template (value) RecordOf_ProtocolIE m_E_RABSetupReqIEs(
                                                                                in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                in template (value) RecordOf_E_RABToBeSetupItemBearerSUReq p_RecordOf_E_RABToBeSetupItem_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_E_RABToBeSetupList(p_RecordOf_E_RABToBeSetupItem_value)
                        } // End of template m_E_RABSetupReqIEs
garciay's avatar
garciay committed
                        template (value) RecordOf_ProtocolIE m_E_RABSetupReqIEs_no_eNB(
garciay's avatar
garciay committed
                                                                                      in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                      in template (value) RecordOf_E_RABToBeSetupItemBearerSUReq p_RecordOf_E_RABToBeSetupItem_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_E_RABToBeSetupList(p_RecordOf_E_RABToBeSetupItem_value)
garciay's avatar
garciay committed
                        } // End of template m_E_RABSetupReqIEs_no_eNB
garciay's avatar
garciay committed
    
                        template (value) RecordOf_ProtocolIE m_E_RABSetupReqIEs_duplicate_ENB(
                                                                                              in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                              in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                              in template (value) RecordOf_E_RABToBeSetupItemBearerSUReq p_RecordOf_E_RABToBeSetupItem_value
                        ) := {
                            m_eNB_UE_S1AP_ID(p_eNB_value)
                        } // End of template m_E_RABSetupReqIEs_duplicate_ENB
    
                        template (value) RecordOf_ProtocolIE m_E_RABSetupReqIEs_UeAggregateMaxBitRate(
                                                                                in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate,
                                                                                in template (value) RecordOf_E_RABToBeSetupItemBearerSUReq p_RecordOf_E_RABToBeSetupItem_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_UE_aggregate_maximum_bitrate_IE(p_uEAggregateMaximumBitrate),
                            m_E_RABToBeSetupList(p_RecordOf_E_RABToBeSetupItem_value)
                        } // End of template m_E_RABSetupReqIEs
garciay's avatar
garciay committed
    
                        template (value) RecordOf_ProtocolIE m_E_RABSetupResIEs(
                                                                                in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                in template (value) RecordOf_E_RABSetupItemBearerSURes p_RecordOf_E_RABSetupItem_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_E_RABSetupList(p_RecordOf_E_RABSetupItem_value)
                        } // End of template m_E_RABSetupResIEs

garciay's avatar
garciay committed
                    } // End of group ERABSetup
garciay's avatar
garciay committed
                    group ERABModifyRequest { 
                        
                        template (value) RecordOf_ProtocolIE m_E_RABModifiedReqIEs(
                                    in template (value) MME_UE_S1AP_ID p_MME_value,
                                    in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                    in template (value) RecordOf_E_RABToBeModifiedItemBearerModReq p_RecordOf_E_RABToBeModifiedItem_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_E_RABToBeModifiedList(p_RecordOf_E_RABToBeModifiedItem_value)
                        } // End of template m_E_RABSetupReqIEs
garciay's avatar
garciay committed
                        
                    } // End of group ERABModifyRequest
                    
                    group ERABModifyInd {
                        template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs(
                                                                                   in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                   in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                   in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_E_RABToBeModifiedItemBearerModIndList(p_RecordOf_E_RABToBeModifiedItemBearerModInd_value)
                        } // End of template m_E_RABModifiedIndIEs
                        
garciay's avatar
garciay committed
                        template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs_Unknown_ID(
                                                                                              in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                              in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                              in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value
                        ) modifies m_E_RABModifiedIndIEs := {
                            m_Unknown_ID_IE
                        } // End of template m_E_RABModifiedIndIEs_Unknown_ID
                        
                        template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs_duplicate_eNB(
                                                                                              in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                              in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                              in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value
                        ) modifies m_E_RABModifiedIndIEs := {
                            m_eNB_UE_S1AP_ID(p_eNB_value)
                        } // End of template m_E_RABModifiedIndIEs_duplicate_eNB
                        
                        template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs_no_eNB(
                                                                                          in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                          in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_E_RABToBeModifiedItemBearerModIndList(p_RecordOf_E_RABToBeModifiedItemBearerModInd_value)
                        } // End of template m_E_RABModifiedIndIEs_no_eNB

                        template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs_CSG(
                                                                                              in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                              in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                              in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value,
                                                                                              in template (value) CSGMembershipInfo p_cSGMembershipInfo_value                                                                         
                        ) modifies m_E_RABModifiedIndIEs := {
                            m_cSGMembershipInfo_IE(p_cSGMembershipInfo_value)
                        } // End of template m_E_RABModifiedIndIEs_CSG
garciay's avatar
garciay committed
                        
garciay's avatar
garciay committed
                    } // End of group ERABModifyInd
                    
                    group ERABRelease {
                        template (value) RecordOf_ProtocolIE m_E_RABReleaseReqIEs(
                                    in template (value) MME_UE_S1AP_ID p_MME_value,
                                    in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                    in template (value) RecordOf_E_RABItem p_RecordOf_E_RABItem_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_eNB_UE_S1AP_ID(p_eNB_value),
                            m_E_RABReleaseList(p_RecordOf_E_RABItem_value)
                        } // End of template m_E_RABReleaseReqIEs
                    }
                }
garciay's avatar
garciay committed
                
                /**
                 * @desc Send messages for Context Management procedures
                 */
                group Context_management_group {
                    /**
                     * @desc Send template for InitiatingMessage message with InitialContextSetup payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_InitialContextSetupRequest(
garciay's avatar
garciay committed
                                                                                    in template (value) RecordOf_ProtocolIE p_value,
                                                                                    in template (value) Criticality p_criticality := reject
                    ) := {
                        procedureCode := id_InitialContextSetup,
garciay's avatar
garciay committed
                        criticality := p_criticality,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_InitialContextSetupRequest
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Send template for InitialContextSetupReq message
                     * @param p_eNB_value                               The eNB UE S1AP ID value.
                     * @param p_MME_value                               The MME UE S1AP ID value.
                     * @param p_uEAggregateMaximumBitrate               The UE Aggregate Maximum Bit rate value.
                     * @param p_RecordOf_E_RABToBeSetupItemCtxt_value   The list og E-RAB To Be Setup Item Ctxt values.
                     * @param @param p_uESecurityCapabilities           The UE Security Capabilities value.
                     * @param p_SecurityKey                             The security key value.
                     */
                    template (value) RecordOf_ProtocolIE m_InitialContextSetupReqIEs(
garciay's avatar
garciay committed
                                                                                     in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                     in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                     in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate,
                                                                                     in template (value) RecordOf_E_RABToBeSetupItemCtxtSUReq p_RecordOf_E_RABToBeSetupItemCtxt_value,
                                                                                     in template (value) UESecurityCapabilities p_uESecurityCapabilities,
                                                                                     in template (value) SecurityKey p_SecurityKey
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_UE_aggregate_maximum_bitrate_IE(p_uEAggregateMaximumBitrate),
                        m_E_RABToBeSetupListCtxt(p_RecordOf_E_RABToBeSetupItemCtxt_value),
                        m_UE_securityCapabilities_IE(p_uESecurityCapabilities),
                        m_securityKey_IE(p_SecurityKey)
garciay's avatar
garciay committed
                    } // End of templaunknown_IDunknown_IDte m_InitialContextSetupReqIEs
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Send template for InitialContextSetupReq message, with no eNB ID
                     * @param p_eNB_value                               The eNB UE S1AP ID value.
                     * @param p_MME_value                               The MME UE S1AP ID value.
                     * @param p_uEAggregateMaximumBitrate               The UE Aggregate Maximum Bit rate value.
                     * @param p_RecordOf_E_RABToBeSetupItemCtxt_value   The list og E-RAB To Be Setup Item Ctxt values.
                     * @param @param p_uESecurityCapabilities           The UE Security Capabilities value.
                     * @param p_SecurityKey                             The security key value.
                     */
garciay's avatar
garciay committed
                    template (value) RecordOf_ProtocolIE m_InitialContextSetupReqIEs_noENB(
                                                                                           in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                           in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate,
                                                                                           in template (value) RecordOf_E_RABToBeSetupItemCtxtSUReq p_RecordOf_E_RABToBeSetupItemCtxt_value,
                                                                                           in template (value) UESecurityCapabilities p_uESecurityCapabilities,
                                                                                           in template (value) SecurityKey p_SecurityKey
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_UE_aggregate_maximum_bitrate_IE(p_uEAggregateMaximumBitrate),
                        m_E_RABToBeSetupListCtxt(p_RecordOf_E_RABToBeSetupItemCtxt_value),
                        m_UE_securityCapabilities_IE(p_uESecurityCapabilities),
                        m_securityKey_IE(p_SecurityKey)
                    } // End of templaunknown_IDunknown_IDte m_InitialContextSetupReqIEs_noENB
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Send template for InitialContextSetupReq message, with duplicated eNB ID
                     * @param p_eNB_value                               The eNB UE S1AP ID value.
                     * @param p_MME_value                               The expted MME UE S1AP ID value.
                     * @param p_uEAggregateMaximumBitrate               The UE Aggregate Maximum Bit rate value.
                     * @param p_RecordOf_E_RABToBeSetupItemCtxt_value   The list og E-RAB To Be Setup Item Ctxt values.
                     * @param @param p_uESecurityCapabilities           The UE Security Capabilities value.
                     * @param p_SecurityKey                             The security key value.
                     */
                    template (value) RecordOf_ProtocolIE m_InitialContextSetupReqIEs_duplicate_eNB(
garciay's avatar
garciay committed
                                                                                                   in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                                   in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                                   in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate,
                                                                                                   in template (value) RecordOf_E_RABToBeSetupItemCtxtSUReq p_RecordOf_E_RABToBeSetupItemCtxt_value,
                                                                                                   in template (value) UESecurityCapabilities p_uESecurityCapabilities,
                                                                                                   in template (value) SecurityKey p_SecurityKey
                    ) modifies m_InitialContextSetupReqIEs := {
                        m_eNB_UE_S1AP_ID(p_eNB_value)
garciay's avatar
garciay committed
                    } // End of template m_InitialContextSetupReqIEs_duplicate_eNB
garciay's avatar
garciay committed
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Send template for InitialContextSetupReq message, with some unknown IE
                     * @param p_eNB_value                               The eNB UE S1AP ID value.
                     * @param p_MME_value                               The MME UE S1AP ID value.
                     * @param p_uEAggregateMaximumBitrate               The UE Aggregate Maximum Bit rate value.
                     * @param p_RecordOf_E_RABToBeSetupItemCtxt_value   The list og E-RAB To Be Setup Item Ctxt values.
                     * @param @param p_uESecurityCapabilities           The UE Security Capabilities value.
                     * @param p_SecurityKey                             The security key value.
                     */
garciay's avatar
garciay committed
                    template (value) RecordOf_ProtocolIE m_InitialContextSetupReqIEs_unknown_ID(
                                                                                                in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                                in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                                in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate,
                                                                                                in template (value) RecordOf_E_RABToBeSetupItemCtxtSUReq p_RecordOf_E_RABToBeSetupItemCtxt_value,
                                                                                                in template (value) UESecurityCapabilities p_uESecurityCapabilities,
                                                                                                in template (value) SecurityKey p_SecurityKey
                    ) modifies m_InitialContextSetupReqIEs := {
                        m_Unknown_ID_IE
                    } // End of template m_InitialContextSetupReqIEs
garciay's avatar
garciay committed
                    
                    /**
                     * @desc Send template for InitiatingMessage message with UeContextReleaseRequest payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_UeContextReleaseRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_UEContextReleaseRequest,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeContextReleaseRequest
garciay's avatar
garciay committed
                    
                    template (value) RecordOf_ProtocolIE m_UeContextReleaseRequestIEs(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                            in template (value) Cause p_cause
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_cause_IE(p_cause)
                    } // End of template m_UeContextReleaseRequestIEs_MME
                     * @desc Send template for InitiatingMessage message with UEContextRelease payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_UeContextReleaseCommand(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_UEContextRelease,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeContextReleaseCommand
                    template (value) RecordOf_ProtocolIE m_UeContextReleaseCommandIEs_MME(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) Cause p_cause
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_cause_IE(p_cause)
                    } // End of template m_UeContextReleaseCommandIEs_MME
                    template (value) RecordOf_ProtocolIE m_UeContextReleaseCommandIEs_ENB(
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                            in template (value) Cause p_cause
                    ) := {
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_cause_IE(p_cause)
                    } // End of template m_UeContextReleaseCommandIEs_ENB
                    
                    /**
                     * @desc Send template for InitiatingMessage message with UEContextReleaseComplete payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_UeContextReleaseComplete(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_UEContextRelease,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeContextReleaseComplete                    
                    template (value) RecordOf_ProtocolIE m_UeContextReleaseCompleteIEs(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value)
                    } // End of template m_UeContextReleaseCompleteIEs
rennoch's avatar
rennoch committed
                    
                    /**
                     * @desc Send template for InitiatingMessage message with UEContextSuspendRequest payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
rennoch's avatar
rennoch committed
                     */
                    template (value) InitiatingMessage m_UeContextSuspendRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_UEContextSuspend,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeContextSuspendRequest                    

                    template (value) RecordOf_ProtocolIE m_UeContextSuspendRequestIEs(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value)
                    } // End of template m_UeContextSuspendRequestIEs

rennoch's avatar
rennoch committed
                    /**
                     * @desc Send template for InitiatingMessage message with UEContextResumeRequest payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     * @param p_criticality     The Criticality value. defaulf: reject
rennoch's avatar
rennoch committed
                     */
                    template (value) InitiatingMessage m_UeContextResumeRequest(
garciay's avatar
garciay committed
                                                                                in template (value) RecordOf_ProtocolIE p_value,
                                                                                in template (value) Criticality p_criticality := reject
                    ) := {
rennoch's avatar
rennoch committed
                        procedureCode := id_UEContextResume,
garciay's avatar
garciay committed
                        criticality := p_criticality,
rennoch's avatar
rennoch committed
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
garciay's avatar
garciay committed
                    } // End of template m_UeContextResumeRequest
rennoch's avatar
rennoch committed

                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs(
garciay's avatar
garciay committed
                                                                                     in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                     in template (value) ENB_UE_S1AP_ID p_eNB_value
rennoch's avatar
rennoch committed
                    ) := {
garciay's avatar
garciay committed
                        m_MME_UE_S1AP_ID(p_MME_value, ignore),
                        m_eNB_UE_S1AP_ID(p_eNB_value, ignore)
garciay's avatar
garciay committed
                    } // End of template m_UeContextResumeRequestIEs 
                    
                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_RABFailedToResumeItem(
                                                                                                           in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                                           in template (value) ENB_UE_S1AP_ID p_eNB_value,
garciay's avatar
garciay committed
                                                                                                           in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
garciay's avatar
garciay committed
                    ) modifies m_UeContextResumeRequestIEs := {
garciay's avatar
garciay committed
                        m_E_RABFailedToResumeItemResumeReqList(p_RecordOf_E_RABFailedToResumeItemResumeReq_value)
garciay's avatar
garciay committed
                    } // End of template m_UeContextResumeRequestIEs_RABFailedToResumeItem 
rennoch's avatar
rennoch committed
                    
garciay's avatar
garciay committed
                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_Unknown_ID(
                                                                                                in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                                in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                                in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
                    ) modifies m_UeContextResumeRequestIEs_RABFailedToResumeItem := {
                        m_Unknown_ID_IE(-, reject)
                    } // End of template m_UeContextResumeRequestIEs_Unknown_ID 
                    
garciay's avatar
garciay committed
                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_duplicate_ENB(
                                                                                                in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                                in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                                in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
                    ) modifies m_UeContextResumeRequestIEs_RABFailedToResumeItem := {
                        m_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template m_UeContextResumeRequestIEs_duplicate_ENB 
                    
garciay's avatar
garciay committed
                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_no_eNB(
                                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                            in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value, ignore),
                        m_E_RABFailedToResumeItemResumeReqList(p_RecordOf_E_RABFailedToResumeItemResumeReq_value)
                    } // End of template m_UeContextResumeRequestIEs_no_eNB 
                    
                    /**
                     * @desc Send template for InitiatingMessage message with m_UeContextModificationRequest payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_UeContextModificationRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_UEContextModification,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeContextModificationRequest
                    template (value) RecordOf_ProtocolIE m_ContextModificationReqIEsUEAgg(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                            in template (value) UEAggregateMaximumBitrate p_uEAggregateMaximumBitrate
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_UE_aggregate_maximum_bitrate_IE(p_uEAggregateMaximumBitrate)
                    } // End of template m_ContextModificationReqIEs
                    
                    template (value) RecordOf_ProtocolIE m_ContextModificationReqIEsSecKey(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                            in template (value) CSFallbackIndicator p_CSFallbackIndicator,
                                                                            in template (value) SecurityKey p_SecurityKey
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_CS_Fallback_indicator_IE(p_CSFallbackIndicator),
                        m_securityKey_IE(p_SecurityKey)
                    } // End of template m_ContextModificationReqIEsSecKey
                    template (value) RecordOf_ProtocolIE m_ContextModificationReqIEsSecCap(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                            in template (value) CSFallbackIndicator p_CSFallbackIndicator,
                                                                            in template (value) UESecurityCapabilities p_UeSecurityCapabilities
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_CS_Fallback_indicator_IE(p_CSFallbackIndicator),
                        m_UE_securityCapabilities_IE(p_UeSecurityCapabilities)
                    } // End of template m_ContextModificationReqIEsSecCap
rennoch's avatar
rennoch committed

garciay's avatar
garciay committed
                    /**
                     * @desc Send template for InitiatingMessage message with m_UeContextModificationIndication payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_UeContextModificationIndication(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_UEContextModification,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeContextModificationIndication
rennoch's avatar
rennoch committed

garciay's avatar
garciay committed
                    template (value) RecordOf_ProtocolIE m_UeContextModificationIndicationIEs(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value)
                    } // End of template m_UeContextModificationIndicationIEs
                    
                    template (value) RecordOf_ProtocolIE m_UeContextModificationIndicationIEsCSG(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                            in template (value) CSGMembershipInfo p_cSGMembershipInfo_value                                                                         
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_cSGMembershipInfo_IE(p_cSGMembershipInfo_value)
                    } // End of template m_UeContextModificationIndicationIEsCSG
                    
                    /**
                     * @desc Send template for InitiatingMessage message with m_UeRadioCapabilityMatchRequest payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_UeRadioCapabilityMatchRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_UERadioCapabilityMatch,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeRadioCapabilityMatchRequest
                    template (value) RecordOf_ProtocolIE m_UeRadioCapabilityMatchReqIEs(
                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                            in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                            in template (value) octetstring p_UeRadioCapabilities
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_UE_Radio_capability_IE(p_UeRadioCapabilities)
                    } // End of template m_ContextModificationReqIEsSecCap
                }// End of group Context_management_group
garciay's avatar
garciay committed
                
garciay's avatar
garciay committed
                /**
                 * @desc Send messages for Management procedures
                 */
                group Management_group {
                    
                    /**
                     * @desc Send template for InitiatingMessage message with S1_SETUP_REQUEST payload
                     * @param p_value           The protocol information elements.
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_s1_Setup_Request(
garciay's avatar
garciay committed
                                                                          in template (value) RecordOf_ProtocolIE p_value
garciay's avatar
garciay committed
                    ) := {
                        procedureCode := id_S1Setup,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_s1_Setup_Request
                    
                    /**
                     * @desc Send template for S1_SETUP_REQUEST message
                     * @param p_global_ENB_ID   The Global eNB ID value
                     * @param p_supportedTAs    The list of SupportedTAs-Item protocol IE
                     * @param p_pagingDRXs      The Paging DRX as defined in TS 36.304
garciay's avatar
garciay committed
                     */
                    template (value) RecordOf_ProtocolIE m_s1_Setup_RequestIEs(
                                                                               in template (value) Global_ENB_ID p_global_ENB_ID,
                                                                               in template (value) SupportedTAs p_supportedTAs,
                                                                               in template (value) PagingDRX p_pagingDRXs
                    ) := {
                        m_global_eNB_ID_IE(p_global_ENB_ID),
                        m_supportedTAs_IE(p_supportedTAs),
                        m_pagingDRX_IE(p_pagingDRXs)
                    } // End of template m_s1_Setup_RequestIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with S1_SETUP_RESPONSE payload
                     * @param p_value           The protocol information elements.
garciay's avatar
garciay committed
                     */
                    template (value) SuccessfulOutcome m_s1_Setup_Response(
                                                                           in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_S1Setup,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_s1_Setup_Response
                    
                    /**
                     * @desc Send template for S1_SETUP_RESPONSE message
                     * @param p_global_ENB_ID       The Global eNB ID value.
                     * @param p_relativeMMECapacity The relative MME capacity value.
garciay's avatar
garciay committed
                     */
                    template (value) RecordOf_ProtocolIE m_s1_Setup_ResponseIEs(
                                                                                in template (value) ServedGUMMEIs p_servedGUMMEIs,
                                                                                in template (value) RelativeMMECapacity p_relativeMMECapacity
                    ) := {
                        m_servedGUMMEIs_IE(p_servedGUMMEIs),
                        m_relativeMMECapacity_IE(p_relativeMMECapacity)
                    } // End of template m_s1_Setup_ResponseIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with ENB CONFIGURATION UPDATE payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_eNB_Configuration_Update(
                                                                                  in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_ENBConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_eNB_Configuration_Update
                    
                    /**
                     * @desc Send template for ENB CONFIGURATION UPDATE message
                     * @param p_global_ENB_ID   The Global eNB ID value. Default: ?
                     * @param p_supportedTAs    The list of SupportedTAs-Item protocol IE. Default: ?
                     */
                    template (value) RecordOf_ProtocolIE m_eNB_Configuration_UpdateIEs(
                                                                                       in template (value) Global_ENB_ID p_global_ENB_ID,
                                                                                       in template (value) SupportedTAs p_supportedTAs
                    ) := {
                        m_global_eNB_ID_IE(p_global_ENB_ID),
                        m_supportedTAs_IE(p_supportedTAs)
                    } // End of template m_eNB_Configuration_UpdateIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with ENB CONFIGURATION UPDATE ACKNOWLEDGE payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) SuccessfulOutcome m_eNB_Configuration_Update_Acknowledge(
                                                                                              in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_ENBConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_eNB_Configuration_Update_Acknowledge
                    
                    /**
                     * @desc Send template for ENB CONFIGURATION UPDATE ACKNOWLEDGE message
                     * 
                     */
                    template (value) RecordOf_ProtocolIE m_eNB_Configuration_Update_AcknowledgeIEs := {
                    } // End of template m_eNB_Configuration_Update_AcknowledgeIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with MME CONFIGURATION UPDATE payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) InitiatingMessage m_mME_Configuration_Update(
                                                                                  in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_MMEConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_mME_Configuration_Update
                    
                    /**
                     * @desc Send template for MME CONFIGURATION UPDATE message
                     * @param p_global_MME_ID   The Global mME ID value. Default: ?
                     * @param p_supportedTAs    The list of SupportedTAs-Item protocol IE. Default: ?
                     */
                    template (value) RecordOf_ProtocolIE m_mME_Configuration_UpdateIEs(
                                                                                       in template (value) ServedGUMMEIs p_servedGUMMEIs
                    ) := {
                        m_servedGUMMEIs_IE(p_servedGUMMEIs)
                    } // End of template m_mME_Configuration_UpdateIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with MME CONFIGURATION UPDATE ACKNOWLEDGE payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements.
                     */
                    template (value) SuccessfulOutcome m_mME_Configuration_Update_Acknowledge(
                                                                                              in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_MMEConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template m_mME_Configuration_Update_Acknowledge
                    
                    /**
                     * @desc Send template for MME CONFIGURATION UPDATE ACKNOWLEDGE message
                     * 
                     */
                    template (value) RecordOf_ProtocolIE m_mME_Configuration_Update_AcknowledgeIEs := {
                    } // End of template m_mME_Configuration_Update_AcknowledgeIEs
                    
garciay's avatar
garciay committed
                } // End of group Management_group
                
                /**
                 * @desc Send messages for Reset Procedures
                 */
                group Reset {
                    
                    /**
                     * @desc Send template for InitiatingMessage message with RESET payload
                     * @param p_value           The protocol information elements
                     */
                    template (value) InitiatingMessage m_reset(
                                                               in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_Reset,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_reset
                    
                    /**
                     * @desc Send template for RESET message
                     * @param p_cause       The Cause value
                     * @param p_resetType   The RESET type value
                     */
                    template (value) RecordOf_ProtocolIE m_resetIEs(
                                                                    in template (value) Cause p_cause,
                                                                    in template (value) ResetType p_resetType
                    ) := {
                        m_cause_IE(p_cause),
                        m_resetType_IE(p_resetType)
                    } // End of template m_resetIEs
                    
                } // End of group Reset
garciay's avatar
garciay committed
                /**
                 * @desc Send messages for Warning Message Transmission Procedures
                 */
                group Warning_Message_Transmission_send {
                    
                    /**
                     * @desc Send template for InitiatingMessage message with WRITE-REPLACE WARNING REQUEST payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_write_Replace_Warning_Request(
                                                                                       in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_WriteReplaceWarning,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_write_Replace_Warning_Request
                    
                    /**
                     * @desc Send template for WRITE-REPLACE WARNING REQUEST message
                     * @param p_message_Identifier              The Message Identifier value
                     * @param p_serial_Number                   The Serial Number value
                     * @param p_repetition_Period               The Repetition Period value
garciay's avatar
garciay committed
                     * @param p_number_of_Broadcasts_Requested  The Number of Broadcasts Requested value
                     */
                    template (value) RecordOf_ProtocolIE m_write_Replace_Warning_RequestIEs(
                                                                                            in MessageIdentifier p_message_Identifier,
                                                                                            in SerialNumber p_serial_Number,
                                                                                            in RepetitionPeriod p_repetition_Period,
                                                                                            in NumberOfBroadcasts p_number_of_Broadcasts_Requested
                    ) := {
                        m_message_Identifier(p_message_Identifier),
                        m_serial_Number(p_serial_Number),
                        m_repetition_Period(p_repetition_Period),
                        m_number_of_Broadcasts_Requested(p_number_of_Broadcasts_Requested)
                    } // End of template m_write_Replace_Warning_RequestIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with WRITE-REPLACE WARNING RESPONSE payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_write_Replace_Warning_Response(
                                                                                       in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_WriteReplaceWarning,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_write_Replace_Warning_Response
                    
                    /**
                     * @desc Send template for WRITE-REPLACE WARNING RESPONSE message
                     * @param p_message_Identifier  The Message Identifier value
                     * @param p_serial_Number       The Serial Number value
                     */
                    template (value) RecordOf_ProtocolIE m_write_Replace_Warning_ResponseIEs(
                                                                                            in MessageIdentifier p_message_Identifier,
                                                                                            in SerialNumber p_serial_Number
                    ) := {
                        m_message_Identifier(p_message_Identifier),
                        m_serial_Number(p_serial_Number)
                    } // End of template m_write_Replace_Warning_ResponseIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with KILL REQUEST payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_kill_Request(
                                                                      in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_Kill,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_kill_Request
                    
                    /**
                     * @desc Send template for KILL REQUEST message
                     * @param p_message_Identifier  The Message Identifier value
                     * @param p_serial_Number       The Serial Number value
                     */
                    template (value) RecordOf_ProtocolIE m_kill_RequestIEs(
                                                                           in MessageIdentifier p_message_Identifier,
                                                                           in SerialNumber p_serial_Number
                    ) := {
                        m_message_Identifier(p_message_Identifier),
                        m_serial_Number(p_serial_Number)
                    } // End of template m_kill_RequestIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with KILL REQUEST payload
garciay's avatar
garciay committed
                     * @param p_value           The protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_kill_Response(
                                                                      in template (value) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_Kill,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_kill_Response
                    
                    /**
                     * @desc Send template for KILL REQUEST message
                     * @param p_message_Identifier  The Message Identifier value
                     * @param p_serial_Number       The Serial Number value
                     */
                    template (value) RecordOf_ProtocolIE m_kill_ResponseIEs(
                                                                           in MessageIdentifier p_message_Identifier,
                                                                           in SerialNumber p_serial_Number
                    ) := {
                        m_message_Identifier(p_message_Identifier),
                        m_serial_Number(p_serial_Number)
                    } // End of template m_kill_ResponseIEs
                    
                }// End of group Warning_Message_Transmission_send
                
garciay's avatar
garciay committed
            } // End of group sendClass1 
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            group receiveClass1 {
                
                group HandoverRequired{
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with Handover Required payload
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_HandoverRequired(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverPreparation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverRequired
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverRequiredIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) HandoverType p_HandoverType_value := ?,
                        template (present) Cause p_Cause_value := ?,
                        template (present) TargetID p_TargetId_value := ?,
                        template (present) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_handoverType_IE(p_HandoverType_value),
ulrichst's avatar
ulrichst committed
                            mw_cause_IE(p_Cause_value),
                            mw_TargetID_IE(p_TargetId_value),
                            mw_source_ToTarget_TransparentContainer_IE(p_Source_ToTarget_TransparentContainer_value)
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverRequiredIEs_SRVCCHOIndication(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) HandoverType p_HandoverType_value := ?,
                        template (present) Cause p_Cause_value := ?,
                        template (present) TargetID p_TargetId_value := ?,
                        template (present) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value := ?,
                        template (present) SRVCCHOIndication p_SRVCC_HO_Indication_value := ?
                       ) modifies mw_HandoverRequiredIEs:= {
                            mw_SRVCCHOIndication_IE(p_SRVCC_HO_Indication_value)
                       } // End of template mw_HandoverRequiredIEs_SRVCC
                }// End of group HandoverPreparation
garciay's avatar
garciay committed
                group HandoverPreparation{
                    
                    /**
                     * @desc Receive template for unsuccessfulOutcome message with Handover Preparation Failure payload
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) UnsuccessfulOutcome mw_HandoverPreparationFailure(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverPreparation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverPreparationFailure
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverPreparationFailureIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) Cause p_Cause_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_cause_IE(p_Cause_value)
                    } // End of template mw_HandoverPreparationFailureIEs
                    
                     
                     /**
                     * @desc Receive template for SuccessfulOutcome message with Handover Command payload
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_HandoverCommand(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverPreparation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverCommand
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverCommandIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) HandoverType p_HandoverType_value := ?,
                        template (present) Target_ToSource_TransparentContainer p_Target_ToSource_TransparentContainer_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_handoverType_IE(p_HandoverType_value),
                            mw_target_ToSource_TransparentContainer_IE(p_Target_ToSource_TransparentContainer_value)
                    } // End of template mw_HandoverRequiredIEs
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverCommandIEs_NASSecurity(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) HandoverType p_HandoverType_value := ?,
                        template (present) Target_ToSource_TransparentContainer p_Target_ToSource_TransparentContainer_value := ?,
                        template (present) NASSecurityParameterstoE_UTRAN p_nasSecurityParametersToEutran_value := ?
                       ) modifies mw_HandoverCommandIEs:= {
                           mw_nasSecurityParametersToEutran_IE(p_nasSecurityParametersToEutran_value)
                    } // End of template mw_HandoverCommandIEs_NASSecurity
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverCommandIEs_ERABSubj2FwList(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) HandoverType p_HandoverType_value := ?,
                        template (present) Target_ToSource_TransparentContainer p_Target_ToSource_TransparentContainer_value := ?,
                        template (present) E_RABSubjecttoDataForwardingList p_E_RABSubjecttoDataForwardingList_value := ?
                       ) modifies mw_HandoverCommandIEs:= {
                           mw_E_RABSubjecttoDataForwardingList_IE(p_E_RABSubjecttoDataForwardingList_value)
                    } // End of template mw_HandoverCommandIEs_ERABSubj2FwList

                    template (present) RecordOf_ProtocolIE mw_HandoverCommandIEs_T2STransCont2nd_NASSecurity(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) HandoverType p_HandoverType_value := ?,
                        template (present) Target_ToSource_TransparentContainer p_Target_ToSource_TransparentContainer_value := ?,
                        template (present) Target_ToSource_TransparentContainer p_Target_ToSource_TransparentContainer2_value := ?,
                        template (present) NASSecurityParameterstoE_UTRAN p_nasSecurityParametersToEutran_value := ?
                       ) modifies mw_HandoverCommandIEs:= { 
                           mw_target_ToSource_TransparentContainer_2nd_IE(p_Target_ToSource_TransparentContainer2_value),
                           mw_nasSecurityParametersToEutran_IE(p_nasSecurityParametersToEutran_value)
                    } // End of template mw_HandoverCommandIEs_T2STransCont2nd_NASSecurity
garciay's avatar
garciay committed
                    
                }// End of group HandoverPreparation
                    
                group HandoverResourceAllocation{
                    
                    /**
                    * @desc Receive template for InitiatingMessage message with Handover Request payload
                    * @param p_value           The list of Protocol IE values
                    */
                    template (present) InitiatingMessage mw_HandoverRequest(
                                                                          template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverResourceAllocation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverRequest
            
                    template (present) RecordOf_ProtocolIE mw_HandoverRequestIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) HandoverType p_HandoverType_value := ?,
                        template (present) Cause p_Cause_value := ?,
                        template (present) UEAggregateMaximumBitrate p_UEAggregateMaximumBitrate := ?,
                        template (present) RecordOf_E_RABToBeSetupItemHOReq p_RecordOf_E_RABToBeSetupItem_value := ?,
                        template (present) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value := ?,
                        template (present) UESecurityCapabilities p_UESecurityCapabilities := ?,
                        template (present) SecurityContext p_SecurityContext := ?
                    ) := {
                          mw_MME_UE_S1AP_ID(p_MME_value),
                          mw_handoverType_IE(p_HandoverType_value),
                          mw_cause_IE(p_Cause_value),
                          mw_UE_aggregate_maximum_bitrate_IE(p_UEAggregateMaximumBitrate),
                          mw_E_RABToBeSetupListHOReq(p_RecordOf_E_RABToBeSetupItem_value),
                          mw_source_ToTarget_TransparentContainer_IE(p_Source_ToTarget_TransparentContainer_value),
                          mw_UE_securityCapabilities_IE(p_UESecurityCapabilities, ignore),
                          mw_securityContext_IE(p_SecurityContext)
                    } // End of template mw_HandoverRequestIEs
   
                    template (present) RecordOf_ProtocolIE mw_HandoverRequestIEs_CSGID_CellAccessMode(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) HandoverType p_HandoverType_value := ?,
                        template (present) Cause p_Cause_value := ?,
                        template (present) UEAggregateMaximumBitrate p_UEAggregateMaximumBitrate := ?,
                        template (present) RecordOf_E_RABToBeSetupItemHOReq p_RecordOf_E_RABToBeSetupItem_value := ?,
                        template (present) Source_ToTarget_TransparentContainer p_Source_ToTarget_TransparentContainer_value := ?,
                        template (present) UESecurityCapabilities p_UESecurityCapabilities := ?,
                        template (present) SecurityContext p_SecurityContext := ?,
                        template (present) CSG_Id p_CSG_Id_value := ?,
                        template (present) CellAccessMode p_CellAccessMode_value := ?    
                    ) modifies mw_HandoverRequestIEs := {
                        mw_CSG_Id_IE(p_CSG_Id_value),
                        mw_CellAccessMode_IE(p_CellAccessMode_value)   
                    } // End of template mw_HandoverRequestIEs         

                    /**
                     * @desc Receive template for SuccessfulOutcome message with Handover Cancel payload
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_HandoverRequestAck(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverResourceAllocation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverRequestAck
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverRequestAckIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) RecordOf_E_RABAdmittedItem p_RecordOf_E_RABAdmittedItem_value := ?,
                        template (present) Target_ToSource_TransparentContainer p_Target_ToSource_TransparentContainer_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_E_RABAdmittedList(p_RecordOf_E_RABAdmittedItem_value),
                            mw_target_ToSource_TransparentContainer_IE(p_Target_ToSource_TransparentContainer_value)
                       } // End of template mw_HandoverRequestAckIEs
                    
                    /**
                     * @desc Receive template for UnsuccessfulOutcome message with Handover Failure payload
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) UnsuccessfulOutcome mw_HandoverFailure(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverResourceAllocation,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverFailure
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverFailureIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) Cause p_Cause_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_cause_IE(p_Cause_value)
                       } // End of template mw_HandoverFailureIEs
                
                    
garciay's avatar
garciay committed
                }// End of group HandoverResourceAllocation
                
                group HandoverCancelation{
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with Handover Cancel payload
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_HandoverCancel(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverCancel,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverCancel
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverCancelIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) Cause p_Cause_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_cause_IE(p_Cause_value)
                       } // End of template mw_HandoverCancelIEs

                    /**
                     * @desc Receive template for SuccessfulOutcome message with Handover Cancel Acknowledge payload
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_HandoverCancelAck(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_HandoverCancel,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverCancelAck
                    
                    template (present) RecordOf_ProtocolIE mw_HandoverCancelAckIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value)
                       } // End of template mw_HandoverCancelAckIEs
                         

                    /**
                     * @desc Receive template for InitiatingMessage message with Mme_Status_Transfer payload
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_Mme_Status_Transfer(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_MMEStatusTransfer,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverCancel
                    
                    template (present) RecordOf_ProtocolIE mw_Mme_Status_TransferIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) ENB_StatusTransfer_TransparentContainer p_enb_stc_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_eNBStatusTransferTransparentContainer_IE(p_enb_stc_value)
                       } // End of template mw_Mme_Status_TransferIEs    
                         
                    
                group PathSwitchRequest{
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with Path Switch Request payload
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_PathSwitchRequest(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_PathSwitchRequest,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_PathSwitchRequest

                    
                    /**
                     * @desc Receive template for PATH_SWITCH_REQUEST message
                     * @param p_eNB_value               The expected eNB UE S1AP ID value. Default: ?
                     * @param p_RecordOf_E_RABToBeSwitchedDLItem_value               The expected RecordOf_E_RABToBeSwitchedDLItem_value value. Default: ?
                     * @param p_MME_value               The expected MME UE S1AP ID value. Default: ?
                     * @param p_eUtranCgi               The expected E-UTRAN CGI value.    Default: ?
                     * @param p_tai                     The expected TAI value.            Default: ?
                     * @param p_UESecurityCapabilities  The expected UE Security Capabilities value.    Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_PathSwitchRequestIEs(
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) RecordOf_E_RABToBeSwitchedDLItem p_RecordOf_E_RABToBeSwitchedDLItem_value := ?,
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) EUTRAN_CGI p_eUtranCgi := ?,
                        template (present) TAI p_tai := ?,
                        template (present) UESecurityCapabilities p_UESecurityCapabilities := ?
                       ) := {
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_E_RABToBeSwitchedDLList(p_RecordOf_E_RABToBeSwitchedDLItem_value),
                            mw_sourceMmeUeS1apId(p_MME_value),
                            mw_eUTRAN_CGI_IE(p_eUtranCgi),
                            mw_tAI_IE(p_tai),
                            mw_UE_securityCapabilities_IE(p_UESecurityCapabilities, ignore)
                       } // End of template mw_PathSwitchRequestIEs
  
                    /**
                     * @desc Receive template for InitiatingMessage message with Path Switch Request Ack payload
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_PathSwitchRequestAck(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_PathSwitchRequest,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_PathSwitchRequestAck
                    
                    template (present) RecordOf_ProtocolIE mw_PathSwitchRequestAckIEs(
                            template (present) MME_UE_S1AP_ID p_MME_value :=?,
                            template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                            template (present) SecurityContext p_securityContext := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_securityContext_IE(p_securityContext)
                    } // End of template mw_PathSwitchRequestAckIEs
                    
                    /**
                     * @desc Receive template for UnsuccessfulOutcome message with PathSwitchRequest Failure payload
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) UnsuccessfulOutcome mw_PathSwitchRequestFailure(
                                                                           template (present) RecordOf_ProtocolIE p_value) := {
                        procedureCode := id_PathSwitchRequest,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_PathSwitchRequestFailure
                    
                    template (present) RecordOf_ProtocolIE mw_PathSwitchRequestFailureIEs(
                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                        template (present) Cause p_Cause_value := ?
                       ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_cause_IE(p_Cause_value)
                       } // End of template mw_PathSwitchRequestFailureIEs
                    
                }// End of group PathSwitchRequest
                
                group ERAB_management_group {
                    group ERABModify{
rennoch's avatar
rennoch committed
                        /**
                         * @desc Receive template for SuccessfulOutcome/R-RAB_Modify request message
                         * @param p_value   The expected protocol information elements. Default: ?
                         */
                        template (present) SuccessfulOutcome mw_E_RABModifiedRequest(
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                        ) := {
                            procedureCode := id_E_RABModify,
                            criticality := reject,
                            value_ := {RecordOf_ProtocolIE := p_value}
                        } // End of template mw_E_RABModifiedRequest

                        template (present) RecordOf_ProtocolIE mw_E_RABModifiedReqIEs(
                                                                                   template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                   template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                   template (present) RecordOf_E_RABToBeModifiedItemBearerModReq p_RecordOf_E_RABToBeModifyItem_value := {?}
                        ) := { 
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABToBeModifiedList(p_RecordOf_E_RABToBeModifyItem_value)
                        } // End of template mw_E_RABSetupReqIEs

                        /**
                         * @desc Receive template for InitiatingMessage E_RAB Modification Indication message
                         * @param p_value   The expected protocol information elements. Default: ?
                         */
                        template (present) InitiatingMessage mw_E_RABModificationIndication(
                            template (present) RecordOf_ProtocolIE p_value := ?
                        ) := {
                            procedureCode := id_E_RABModificationIndication,
                            criticality := reject,
                            value_ := { RecordOf_ProtocolIE :=p_value}
                        }// End of template mw_E_RABModificationIndication
                        template (present) RecordOf_ProtocolIE mw_E_RABModificationIndicationIEs(
                           template (present) MME_UE_S1AP_ID p_MME_value := ?,
                           template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                           template RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABModifyItem_value := omit
                        ) := { 
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABModifiedListModIndIE(p_RecordOf_E_RABModifyItem_value)
                        }                    
                        
                          

                        template (present) E_RABToBeModifiedItemBearerModInd mw_E_RABToBeModifiedItemBearerModInd(
                             in template (value) E_RAB_ID p_e_RAB_ID := 0,
                             in template (value) TransportLayerAddress p_transportLayerAddress := '0'B,
                             in template (value) GTP_TEID p_dL_GTP_TEID := '00000000'O
                        ) := {
                            e_RAB_ID              := p_e_RAB_ID,
                            transportLayerAddress := p_transportLayerAddress,
                            dL_GTP_TEID           := p_dL_GTP_TEID,
                            iE_Extensions         := *
                        template (present) RecordOf_ProtocolIE mw_E_RABModifiedResIEs(
                                                                                   template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                   template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                   template (present) RecordOf_E_RABModifyItemBearerModRes p_RecordOf_E_RABModifyItem_value := ?
                        ) := { 
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABModifiedList(p_RecordOf_E_RABModifyItem_value)
                        } // End of template mw_E_RABSetupResIEs
                                       
                        template (present) RecordOf_ProtocolIE mw_E_RABModifiedResIEs_FailedToModifyList(
                             template (present) MME_UE_S1AP_ID p_MME_value := ?,
                             template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                             template (present) RecordOf_E_RABItem p_E_RABItem_value := ?
                        ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABFailedToSetupList(p_E_RABItem_value)
                        } // End of template mw_E_RABSetupResIEs
                        
                                                            
                    }
                    
                    group ERABSetup{
                        
                        /**
                         * @desc Receive template for InitiatingMessage message with E-RABSetup payload
garciay's avatar
garciay committed
                         * @param p_value           The expected protocol information elements. Default: ?
                         */
                        template (present) InitiatingMessage mw_E_RABSetupRequest(
                                                                               template (present) RecordOf_ProtocolIE p_value) := {
                            procedureCode := id_E_RABSetup,
                            criticality := reject,
                            value_ := {RecordOf_ProtocolIE := p_value}
                        } // End of template mw_E_RABSetupRequest
                        
                        template (present) RecordOf_ProtocolIE mw_E_RABSetupReqIEs(
                                                                                template (present) MME_UE_S1AP_ID p_MME_value,
                                                                                template (present) ENB_UE_S1AP_ID p_eNB_value,
                                                                                template (present) RecordOf_E_RABToBeSetupItemBearerSUReq p_RecordOf_E_RABToBeSetupItem_value
                        ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value),
                            mw_eNB_UE_S1AP_ID(p_eNB_value),
                            mw_E_RABToBeSetupList(p_RecordOf_E_RABToBeSetupItem_value)
                        } // End of template mw_E_RABSetupReqIEs
                        
                        template (present) RecordOf_ProtocolIE mw_E_RABSetupResIEs(
                                                                                   template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                   template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                   template (present) RecordOf_E_RABSetupItemBearerSURes p_RecordOf_E_RABSetupItem_value := ?
                        ) := { 
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABSetupList(p_RecordOf_E_RABSetupItem_value)
                        } // End of template mw_E_RABSetupResIEs
    
          
                        template (present) RecordOf_ProtocolIE mw_E_RABSetupResIEs_FailedToSetupList(
                                                                                                     template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                                     template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                                     template (present) RecordOf_E_RABItem p_E_RABItem_value := ?
                        ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABFailedToSetupList(p_E_RABItem_value)
                        } // End of template mw_E_RABSetupResIEs
                        
garciay's avatar
garciay committed
                        template (present) RecordOf_ProtocolIE mw_E_RABSetupResIEs_FailedToSetupList_E_RABSetupItemBearerSURes(
                                                                                                     template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                                     template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                                     template RecordOf_E_RABSetupItemBearerSURes p_RecordOf_E_RABSetupItem_value := omit,
                                                                                                     template (present) RecordOf_E_RABItem p_E_RABItem_value := ?
                        ) := {
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABSetupList(p_RecordOf_E_RABSetupItem_value),
                            mw_E_RABFailedToSetupList(p_E_RABItem_value)
                        } // End of template mw_E_RABSetupResIEs_FailedToSetupList_E_RABSetupItemBearerSURes
                        
                    } // End of group ERABSetup
        
                    group ERABRelease{
                        template (present) RecordOf_ProtocolIE mw_E_RABReleaseResIEs(
                                                                                         template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                         template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                         template (present) RecordOf_E_RABItem p_RecordOf_E_RABItem_value := ?,
                                                                                         template (present) UserLocationInformation p_UserLocationInformation := ?
                         ) := { 
                              mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                              mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                              mw_E_RABReleaseList(p_RecordOf_E_RABItem_value),
garciay's avatar
garciay committed
                              mw_UserLocationInformation_IE(p_UserLocationInformation)
                         } // End of template mw_E_RABReleaseResIEs
                    
garciay's avatar
garciay committed
                        template (present) UserLocationInformation mw_UserLocationInformation(
                                     template (present) EUTRAN_CGI p_EUTRAN_CGI := ?,
                                     template (present) TAI p_TAI := ?
                         ) := { 
                              eutran_cgi := p_EUTRAN_CGI, //mw_eUTRAN_CGI_IE(p_EUTRAN_CGI_value),
                              tai := p_TAI,//mw_tAI_IE(p_TAI_value)
                              iE_Extensions := *
                              
                              
                         } // End of template mw_UserLocationInformation
                    
                         /**
                          * @desc Receive template for UserLocationInformation message
                          * @param p_tAI                 The expected TAI value. Default: ?
                          * @param p_eUTRAN_CGI          The expected Type Request value. Default: ?
                          */
                         template (present) ProtocolIE mw_UserLocationInformation_IE(
                            template (present) UserLocationInformation p_UserLocationInformation_value                                                                                        
                         ) := {
                            id := S1AP_Constants.id_UserLocationInformation,
                               criticality := ignore,
                               value_ := {UserLocationInformation := p_UserLocationInformation_value}
                         } // End of template mw_UserLocationInformation
                        * @desc Receive template for InitiatingMessage message with Release Command payload
                        * @param p_value           The list of Protocol IE values
                        */
                        template (present) InitiatingMessage mw_E_RABReleaseCommand(
                                                                              template (present) RecordOf_ProtocolIE p_value) := {
                            procedureCode := id_E_RABRelease,
                            criticality := reject,
                            value_ := {RecordOf_ProtocolIE := p_value}
                        } // End of template mw_E_RABReleaseCommand

                        template (present) RecordOf_ProtocolIE mw_E_RABReleaseCmdIEs(
                                                                                   template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                   template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                   template (present) RecordOf_E_RABItem p_RecordOf_E_RABReleaseListItem_value := {?}
                        ) := { 
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABReleaseList(p_RecordOf_E_RABReleaseListItem_value)
                        } // End of template mw_E_RABReleaseCmdIEs

                        /**
                        * @desc Receive template for InitiatingMessage message with Modification confirm payload
                        * @param p_value           The list of Protocol IE values
                        */
                        template (present) InitiatingMessage mw_E_RABModificationConfirm(
                                                                              template (present) RecordOf_ProtocolIE p_value) := {
                            procedureCode := id_E_RABRelease,
                            criticality := reject,
                            value_ := {RecordOf_ProtocolIE := p_value}
                        } // End of template mw_E_RABModificationConfirm

                        template (present) RecordOf_ProtocolIE mw_E_RABModificationConfirmIEs(
                                                                                   template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                   template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                   template (present) RecordOf_E_RABItem p_RecordOf_E_RABModifyListItem_value := {?}
                        ) := { 
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABModifyList(p_RecordOf_E_RABModifyListItem_value)
                        } // End of template mw_E_RABModificationConfirmIEs

                        template (present) RecordOf_ProtocolIE mw_E_RABModificationConfirmIEsCSG(
                                                                                   template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                   template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                   template (present) RecordOf_E_RABItem p_RecordOf_E_RABModifyListItem_value := {?},
                                                                                   template (present) CSGMembershipInfo p_CSGMembershipInfo:=?
                        ) := { 
                            mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                            mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                            mw_E_RABModifyList(p_RecordOf_E_RABModifyListItem_value),
                            mw_cSGMembershipInfo_IE(p_CSGMembershipInfo)
                        } // End of template mw_E_RABModificationConfirmIEs
                group Context_management_group{
garciay's avatar
garciay committed
                     * @desc Receive template for InitialContextSetup payload message
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_InitialContextSetupResponse(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_InitialContextSetup,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_InitialContextSetupResponse
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for InitialContextSetup message
                     * @param p_MME_value                       The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value                       The expected eNB UE S1AP ID value. Default: ?
                     * @param p_RecordOf_E_RABSetupItem_value   The expected list of E-_RAB Setup Item value. Default: omit
                     * @param p_E_RABItem_value                 The expected E-RABItem value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_InitialContextSetupResIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                               template (present) RecordOf_E_RABSetupItemBearerSURes p_RecordOf_E_RABSetupItem_value := ?,
                                                                               template (present) RecordOf_E_RABItem p_E_RABItem_value := ?
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
garciay's avatar
garciay committed
                        mw_E_RABSetupList(p_RecordOf_E_RABSetupItem_value),
                        mw_E_RABFailedToSetupList(p_E_RABItem_value)
                    } // End of template mw_InitialContextSetupResIEs
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for InitialContextSetupFailure message
                     * @param p_MME_value   The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value   The expected eNB UE S1AP ID value. Default: ?
                     * @param p_cause       The expected cause value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_InitialContextSetupFailureIEs(
garciay's avatar
garciay committed
                                                                                            template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                            template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                            template (present) Cause p_cause := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause)
garciay's avatar
garciay committed
                    } // End of template mw_InitialContextSetupResIEs
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for InitialContextSetupFailure message with Criticaly Diagnostic IE
                     * @param p_MME_value           The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value           The expected eNB UE S1AP ID value. Default: ?
                     * @param p_cause               The expected cause value. Default: ?
                     * @param p_criticalyDiagnostic The expected criticaly diagnostic value. Default: ?
                     */
garciay's avatar
garciay committed
                    template (present) RecordOf_ProtocolIE mw_InitialContextSetupFailureIEs_CriticalyDiagnostic(
                                                                                                                template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                                                template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                                                template (present) Cause p_cause := ?,
                                                                                                                template (present) CriticalityDiagnostics p_criticalyDiagnostic := ?
                    ) modifies mw_InitialContextSetupFailureIEs := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause),
                        mw_criticalityDiagnostics_IE(p_criticalyDiagnostic)
                    } // End of template mw_InitialContextSetupFailureIEs_CriticalyDiagnostic
                    
                    /**
                     * @desc Receive template for InitialContextSetup message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     * @param p_criticality     The expected criticality value. Default: reject
                     */
                    template (present) SuccessfulOutcome mw_InitialContextSetupRequest(
garciay's avatar
garciay committed
                                                                                       template (present) RecordOf_ProtocolIE p_value := ?,
                                                                                       template (present) Criticality p_criticality := reject
                        procedureCode := id_InitialContextSetup,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_InitialContextSetupRequest
                    template (present) RecordOf_ProtocolIE mw_InitialContextSetupRequestIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                               template (present) UEAggregateMaximumBitrate p_UEAggregateMaximumBitrate := ?,
                                                                               template (present) RecordOf_E_RABToBeSetupItemCtxtSUReq p_RecordOf_E_RABSetupItemCtxt_value,
                                                                               template (present) UESecurityCapabilities p_UESecurityCapabilities:=?,
                                                                               template (present) SecurityKey p_SecurityKey:=?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_UE_aggregate_maximum_bitrate_IE(p_UEAggregateMaximumBitrate),
                        mw_E_RABToBeSetupCtxtList(p_RecordOf_E_RABSetupItemCtxt_value),
                        mw_UE_securityCapabilities_IE(p_UESecurityCapabilities),                       
                        mw_securityKey_IE(p_SecurityKey)
                    } // End of template mw_InitialContextSetupRequestIEs
                    /**
                     * @desc Receive template for UeContextReleaseRequest message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextReleaseRequest(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextReleaseRequest,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextReleaseRequest
                    template (present) RecordOf_ProtocolIE mw_UeContextReleaseRequestIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                               template (present) Cause p_cause := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause)
                    } // End of template mw_UeContextReleaseRequestIEs
                    /**
                     * @desc Receive template for UeContextReleaseCommand message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextReleaseCommand(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextRelease,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextReleaseCommand
                    template (present) RecordOf_ProtocolIE mw_UeContextReleaseCommandIEs_MME(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) Cause p_cause := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_cause_IE(p_cause)
                    } // End of template mw_UeContextReleaseCommandIEs
                    template (present) RecordOf_ProtocolIE mw_UeContextReleaseCommandIEs_ENB(
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                               template (present) Cause p_cause := ?
                    ) := {
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause)
                    } // End of template mw_UeContextReleaseCommandIEs
                    /**
                     * @desc Receive template for UeContextReleaseComplete message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextReleaseComplete(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextRelease,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextReleaseComplete
                    template (present) RecordOf_ProtocolIE mw_UeContextReleaseCompleteIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                               template (present) Cause p_cause := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause)
                    } // End of template mw_UeContextReleaseCompleteIEs
                    
                    /**
                     * @desc Receive template for mw_UeContextModificationResponse message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextModificationResponse(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextModification,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextReleaseComplete
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextModificationResponseIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template mw_UeContextReleaseCompleteIEs
                    
                    /**
                     * @desc Receive template for mw_UeContextModificationFailure message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextModificationFailure(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextModification,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextModificationFailure
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextModificationFailureIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                               template (present) Cause p_cause := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause)
                    } // End of template mw_UeContextModificationFailureIEs
rennoch's avatar
rennoch committed

                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for mw_UeContextModificationRequest message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) SuccessfulOutcome mw_UeContextModificationRequest(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextModification,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextModificationRequest
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextModificationRequestIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
rennoch's avatar
rennoch committed
                                                                               template (present) UEAggregateMaximumBitrate p_UEAggregateMaximumBitrate := ?
garciay's avatar
garciay committed
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_UE_aggregate_maximum_bitrate_IE(p_UEAggregateMaximumBitrate)
                    } // End of template mw_UeContextModificationRequestIEs
                    
                    
                    /**
                     * @desc Receive template for mw_UeContextModificationIndication message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextModificationIndication(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextModification,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextModificationIndication
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextModificationIndicationIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template mw_UeContextModificationIndicationIEs
rennoch's avatar
rennoch committed

                    /**
                     * @desc Receive template for mw_UeContextModificationConfirm message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
rennoch's avatar
rennoch committed
                     */
                    template (present) SuccessfulOutcome mw_UeContextModificationConfirm(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextModification,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextModificationConfirm
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextModificationConfirmIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template mw_UeContextModificationConfirmIEs

                    template (present) RecordOf_ProtocolIE mw_UeContextModificationConfirmIEsCSG(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cSGMembershipInfo_IE
                    } // End of template mw_UeContextModificationConfirmIEsCSG
                    
                    /**
                     * @desc Receive template for mw_UeContextSuspendRequest message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextSuspendRequest(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextSuspend,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextSuspendRequest
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextSuspendRequestIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template mw_UeContextSuspendRequestIEs

garciay's avatar
garciay committed
                     * @desc Receive template for mw_UeContextResumeRequest message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextSuspendResponse(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextSuspend,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextSuspendResponse
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextSuspendResponseIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template mw_UeContextSuspendResponseIEs

garciay's avatar
garciay committed
                     * @desc Receive template for mw_UeContextResumeFailure message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextResumeRequest(
garciay's avatar
garciay committed
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextResume,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextResumeRequest
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextResumeRequestIEs(
garciay's avatar
garciay committed
                                                                                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                        template (present) Cause p_cause := ?,
                                                                                        template (present) CriticalityDiagnostics p_criticalyDiagnostic := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause),
                        mw_criticalityDiagnostics_IE(p_criticalyDiagnostic)
                    } // End of template mw_UeContextResumeRequestIEs
garciay's avatar
garciay committed
                    
                    /**
                     * @desc Receive template for mw_UeContextResumeResponse message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextResumeResponse(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UEContextResume,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextResumeResponse
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextResumeResponseIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template mw_UeContextResumeResponseIEs
rennoch's avatar
rennoch committed
                    /**
                     * @desc Receive template for mw_UeContextResumeFailure message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
rennoch's avatar
rennoch committed
                     */
                    template (present) SuccessfulOutcome mw_UeContextResumeFailure(
garciay's avatar
garciay committed
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
rennoch's avatar
rennoch committed
                    ) := {
                        procedureCode := id_UEContextResume,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeContextResumeFailure
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextResumeFailureIEs(
garciay's avatar
garciay committed
                                                                                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                        template (present) Cause p_cause := ?,
                                                                                        template (present) CriticalityDiagnostics p_criticalyDiagnostic := ?
rennoch's avatar
rennoch committed
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
garciay's avatar
garciay committed
                        mw_cause_IE(p_cause),
                        mw_criticalityDiagnostics_IE(p_criticalyDiagnostic)
rennoch's avatar
rennoch committed
                    } // End of template mw_UeContextResumeFailureIEs
garciay's avatar
garciay committed
                    
                    /**
                     * @desc Receive template for mw_UeRadioCapabilityMatchResponse message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeRadioCapabilityMatchResponse(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UERadioCapabilityMatch,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeRadioCapabilityMatchResponse
                    
                    template (present) RecordOf_ProtocolIE mw_UeRadioCapabilityMatchResponseIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                               template (present) VoiceSupportMatchIndicator p_voice_support_match_indicator := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_voice_support_match_indicator_IE(p_voice_support_match_indicator)
                    } // End of template mw_UeRadioCapabilityMatchResponseIEs

rennoch's avatar
rennoch committed
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for mw_UeRadioCapabilityMatchRequest message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) SuccessfulOutcome mw_UeRadioCapabilityMatchRequest(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UERadioCapabilityMatch,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UeRadioCapabilityMatchRequest
                    
                    template (present) RecordOf_ProtocolIE mw_UeRadioCapabilityMatchRequestIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template mw_UeRadioCapabilityMatchRequestIEs
garciay's avatar
garciay committed
                    
                    /**
                     * @desc Receive template for mw_ConnectionEstablishmentIndication message
garciay's avatar
garciay committed
                     * @param p_value           The expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_ConnectionEstablishmentIndication(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_ConnectionEstablishmentIndication,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_ConnectionEstablishmentIndication
                    
                    template (present) RecordOf_ProtocolIE mw_ConnectionEstablishmentIndicationIEs(
                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template mw_ConnectionEstablishmentIndicationIEs
garciay's avatar
garciay committed
                    
                } // End of group Context_management_group
garciay's avatar
garciay committed
                
garciay's avatar
garciay committed
                /**
                 * @desc Receive messages for Management procedures
                 */
                group Management_group {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with S1_SETUP_REQUEST payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_s1_Setup_Request(
                                                                             template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_S1Setup,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_s1_Setup_Request
                    
                    /**
                     * @desc Receive template for S1_SETUP_REQUEST message
                     * @param p_global_ENB_ID   The expected Global eNB ID value. Default: ?
                     * @param p_supportedTAs    The expected list of SupportedTAs-Item protocol IE. Default: ?
                     * @param p_pagingDRXs      The expected Paging DRX as defined in TS 36.304. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_s1_Setup_RequestIEs(
                                                                                  template (present) Global_ENB_ID p_global_ENB_ID := ?,
                                                                                  template (present) SupportedTAs p_supportedTAs := ?,
                                                                                  template (present) PagingDRX p_pagingDRXs := ?
                    ) := {
                        mw_global_eNB_ID_IE(p_global_ENB_ID),
                        mw_supportedTAs_IE(p_supportedTAs),
                        mw_pagingDRX_IE(p_pagingDRXs)
                    } // End of template mw_s1_Setup_RequestIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with S1_SETUP_RESPONSE payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_s1_Setup_Response(
                                                                              template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_S1Setup,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_s1_Setup_Response
                    
                    /**
                     * @desc Receive template for S1_SETUP_RESPONSE message
                     * @param p_global_ENB_ID   The expected Global eNB ID value. Default: ?
                     * @param p_supportedTAs    The expected list of SupportedTAs-Item protocol IE. Default: ?
                     * @param p_pagingDRXs      The expected Paging DRX as defined in TS 36.304. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_s1_Setup_ResponseIEs(
                                                                                   template (present) ServedGUMMEIs p_servedGUMMEIs := ?,
                                                                                   template (present) RelativeMMECapacity p_relativeMMECapacity := ?
                    ) := {
                        mw_servedGUMMEIs_IE(p_servedGUMMEIs),
                        mw_relativeMMECapacity_IE(p_relativeMMECapacity)
                    } // End of template mw_s1_Setup_ResponseIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with S1_SETUP_RESPONSE payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_s1_Setup_Failure(
                                                                             template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_S1Setup,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_s1_Setup_Failure
                    
                    /**
                     * @desc Receive template for S1_SETUP_RESPONSE message
                     * @param p_cause       The expected Cause value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_s1_Setup_FailureIEs(
                                                                                  template (present) Cause p_cause := ?
                    ) := {
                        mw_cause_IE(p_cause)
                    } // End of template mw_s1_Setup_FailureIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with ENB_CONFIGURATION_UPDATE payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_eNB_Configuration_Update(
                                                                                     template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_ENBConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_eNB_Configuration_Update
                    
                    /**
                     * @desc Receive template for ENB_CONFIGURATION_UPDATE message
                     * @param p_global_ENB_ID   The expected Global eNB ID value. Default: ?
                     * @param p_supportedTAs    The expected list of SupportedTAs-Item protocol IE. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_eNB_Configuration_UpdateIEs(
                                                                                          template (present) Global_ENB_ID p_global_ENB_ID := ?,
                                                                                          template (present) SupportedTAs p_supportedTAs := ?
                    ) := {
                        mw_global_eNB_ID_IE(p_global_ENB_ID),
                        mw_supportedTAs_IE(p_supportedTAs)
                    } // End of template mw_eNB_Configuration_UpdateIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with ENB CONFIGURATION UPDATE ACKNOWLEDGE payload
                     * @param p_value           Expected protocol information elements.
                     */
                    template (present) SuccessfulOutcome mw_eNB_Configuration_Update_Acknowledge(
                                                                                                 template (present) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_ENBConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_eNB_Configuration_Update_Acknowledge
                    
                    /**
                     * @desc Receive template for ENB CONFIGURATION UPDATE ACKNOWLEDGE message
                     * 
                     */
                    template (present) RecordOf_ProtocolIE mw_eNB_Configuration_Update_AcknowledgeIEs := {
                    } // End of template mw_eNB_Configuration_Update_AcknowledgeIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with ENB CONFIGURATION UPDATE FAILURE payload
                     * @param p_value           Expected protocol information elements.
                     */
                    template (present) SuccessfulOutcome mw_eNB_Configuration_Update_Failure(
                                                                                                 template (present) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_ENBConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_eNB_Configuration_Update_Failure
                    
                    /**
                     * @desc Receive template for ENB CONFIGURATION UPDATE FAILURE message
                     * @param p_cause       The expected Cause value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_eNB_Configuration_Update_FailureIEs(
                                                                                                  template (present) Cause p_cause := ?
                    ) := {
                        mw_cause_IE(p_cause)
                    } // End of template mw_eNB_Configuration_Update_FailureIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with MME CONFIGURATION UPDATE ACKNOWLEDGE payload
                     * @param p_value           Expected protocol information elements.
                     */
                    template (present) SuccessfulOutcome mw_mME_Configuration_Update_Acknowledge(
                                                                                                 template (present) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_MMEConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_mME_Configuration_Update_Acknowledge
                    
                    /**
                     * @desc Receive template for MME CONFIGURATION UPDATE ACKNOWLEDGE message
                     * 
                     */
                    template (present) RecordOf_ProtocolIE mw_mME_Configuration_Update_AcknowledgeIEs := {
                    } // End of template mw_mME_Configuration_Update_AcknowledgeIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with MME CONFIGURATION UPDATE FAILURE payload
                     * @param p_value           Expected protocol information elements.
                     */
                    template (present) SuccessfulOutcome mw_mME_Configuration_Update_Failure(
                                                                                             template (present) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_MMEConfigurationUpdate,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_mME_Configuration_Update_Failure
                    
                    /**
                     * @desc Receive template for MME CONFIGURATION UPDATE FAILURE message
                     * @param p_cause       The expected Cause value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_mME_Configuration_Update_FailureIEs(
                                                                                                  template (present) Cause p_cause := ?
                    ) := {
                        mw_cause_IE(p_cause)
                    } // End of template mw_mME_Configuration_Update_FailureIEs
                    
garciay's avatar
garciay committed
                } // End of group Management_group
                
garciay's avatar
garciay committed
                /**
                 * @desc Receive messages for Reset Procedures
                 */
                group Reset_receive {
                    
                    /**
                     * @desc Send template for InitiatingMessage message with RESET payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_reset(
                                                                  template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_Reset,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_reset
                    
                    /**
                     * @desc Send template for RESET message
                     * @param p_cause       The expected Cause value
                     * @param p_resetType   The RESET type value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_resetIEs(
                                                                       template (present) Cause p_cause := ?,
                                                                       template (present) ResetType p_resetType := ?
                    ) := {
                        mw_cause_IE(p_cause),
                        mw_resetType_IE(p_resetType)
                    } // End of template mw_resetIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with RESET ACKNOWLEDGE
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_reset_Acknowledge(
                                                                              template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_Reset,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_reset_Acknowledge
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with RESET ACKNOWLEDGE payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_reset_AcknowledgeIEs(
                                                                                   template (present) UE_associatedLogicalS1_ConnectionListRes p_value := ?
                    ) := {
                        mw_associatedLogicalS1_ConnectionListResAck_IE(p_value)
                    } // End of template mw_reset_AcknowledgeIEs
                    
                    /**
                     * @desc Receive template for RESET ACKNOWLEDGE message
                     * @param p_value           Expected list of UE-associated logical S1-connection. Default: ?
                     */
                    template (present) ProtocolIE mw_associatedLogicalS1_ConnectionListResAck_IE(
                                                                                                 template (present) UE_associatedLogicalS1_ConnectionListRes p_value := ?
                    ) := {
                        id := id_UE_associatedLogicalS1_ConnectionListResAck,
                        criticality := ignore,
                        value_ := {UE_associatedLogicalS1_ConnectionListRes := p_value}
                    } // End of template mw_associatedLogicalS1_ConnectionListResAck_IE
                    
                } // End of group Reset_receive
                
                /**
                 * @desc Receive messages for Warning Message Transmission Procedures
garciay's avatar
garciay committed
                 * @see ETSI TS 136 413 Clause 9.1.13 Warning Message Transmission Messages
                 */
                group Warning_Message_Transmission_receive {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with WRITE-REPLACE WARNING REQUEST/RESPONSE payload
garciay's avatar
garciay committed
                     * @param p_value           Expected procedure code. Default: ?
                     */
                    template (present) InitiatingMessage mw_write_Replace_Warning_RequestResponse(
                                                                                                  template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_WriteReplaceWarning,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_write_Replace_Warning_RequestResponse
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with WRITE-REPLACE WARNING RESPONSE payload
garciay's avatar
garciay committed
                     * @param p_value           Expected procedure code. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_write_Replace_Warning_Response(
                                                                                           template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_WriteReplaceWarning,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_write_Replace_Warning_Response
                    
                    /**
                     * @desc Receive template for WRITE-REPLACE WARNING REQUEST message
                     * @param p_message_Identifier              The expected Message Identifier value. Default: ?
                     * @param p_serial_Number                   The expected Serial Number value. Default: ?
                     * @param p_repetition_Period               The expected Repetition Period value. Default: ?
                     * @param p_number_of_Broadcasts_Requested  The expected Number of Broadcasts Requested value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_write_Replace_Warning_RequestIEs(
                                                                                               template (present) MessageIdentifier p_message_Identifier := ?,
                                                                                               template (present) SerialNumber p_serial_Number := ?,
                                                                                               template (present) RepetitionPeriod p_repetition_Period := ?,
                                                                                               template (present) NumberOfBroadcasts p_number_of_Broadcasts_Requested := ?
                    ) := {
                        mw_message_Identifier_IE(p_message_Identifier),
                        mw_serial_Number_IE(p_serial_Number),
                        mw_repetition_Period_IE(p_repetition_Period),
                        mw_number_of_Broadcasts_Requested_IE(p_number_of_Broadcasts_Requested)
garciay's avatar
garciay committed
                    } // End of template mw_write_Replace_Warning_RequestIEs
                    
                    /**
                     * @desc Receive template for WRITE-REPLACE WARNING REQUEST message
                     * @param p_serial_Number The expected Message Identifier value. Default: ?
                     * @param p_serial_Number The expected Serial Number value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_write_Replace_Warning_ResponseIEs(
                                                                                                template (present) MessageIdentifier p_message_Identifier := ?,
                                                                                                template (present) SerialNumber p_serial_Number := ?
                    ) := {
                        mw_message_Identifier_IE(p_message_Identifier),
                        mw_serial_Number_IE(p_serial_Number)
garciay's avatar
garciay committed
                    } // End of template mw_write_Replace_Warning_ResponseIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with KILL REQUEST/RESPONSE payload
                     * @param p_value           Expected procedure code. Default: ?
                     */
                    template (present) InitiatingMessage mw_kill_RequestResponse(
                                                                                 template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_Kill,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_kill_RequestResponse
                    
                    /**
                     * @desc Send template for InitiatingMessage message with KILL RESPONSE payload
                     * @param p_value           Expected procedure code. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_kill_Response(
                                                                          template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_Kill,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_kill_Response
                    
                    /**
                     * @desc Receive template for KILL REQUEST message
                     * @param p_message_Identifier              The expected Message Identifier value. Default: ?
                     * @param p_serial_Number                   The expected Serial Number value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_kill_RequestIEs(
                                                                              template (present) MessageIdentifier p_message_Identifier := ?,
                                                                              template (present) SerialNumber p_serial_Number := ?
                    ) := {
                        mw_message_Identifier_IE(p_message_Identifier),
                        mw_serial_Number_IE(p_serial_Number)
garciay's avatar
garciay committed
                    } // End of template mw_kill_RequestIEs
                    
                    /**
                     * @desc Receive template for KILL REQUEST message
                     * @param p_message_Identifier  The expected Message Identifier value
                     * @param p_serial_Number       The expected Serial Number value
                     */
                    template (present) RecordOf_ProtocolIE mw_kill_ResponseIEs(
                                                                               template (present) MessageIdentifier p_message_Identifier := ?,
                                                                               template (present) SerialNumber p_serial_Number := ?
                    ) := {
                        mw_message_Identifier_IE(p_message_Identifier),
                        mw_serial_Number_IE(p_serial_Number)
garciay's avatar
garciay committed
                    } // End of template mw_kill_ResponseIEs
                    
                }// End of group Warning_Message_Transmission_receive
                
            } // End of group receiveClass1
            
        } // End of group class1
        
        /**
         * @desc List of S1AP Elementary procedures
         * @see ETSI TS 136 413 Table 2: Class 2 procedures
         */
        group class2 {
            
            group sendClass2 {
                
                /**
                 * @desc Send messages for Traces Procedures
                 */
                group Traces_send {
                    
                    /**
                     * @desc Send template for InitiatingMessage message with TRACE START payload
                     * @param p_value           Expected protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_trace_Start(
                                                                     in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_TraceStart,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_trace_Start
                    
                    /**
                     * @desc Send template for TRACE START message
                     * @param p_traceActivation    The Trace Activation value
                     */
                    template (value) RecordOf_ProtocolIE m_trace_StartIEs(
                                                                          in template (value) TraceActivation p_traceActivation
                    ) := {
                        m_traceActivation_IE(p_traceActivation)
                    } // End of template m_trace_StartIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with DEACTIVATE TRACE payload
                     * @param p_value           Expected protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_deactivate_Trace(
                                                                          in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_DeactivateTrace,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_deactivate_Trace
                    
                    /**
                     * @desc Send template for DEACTIVATE TRACE message
                     * @param p_traceActivation    The Deactivate Trace value
                     */
                    template (value) RecordOf_ProtocolIE m_deactivate_TraceIEs(
                                                                               in template (value) MME_UE_S1AP_ID p_MME_value,
garciay's avatar
garciay committed
                                                                               in template (value) ENB_UE_S1AP_ID p_eNB_value,
garciay's avatar
garciay committed
                                                                               in E_UTRAN_Trace_ID p_eUTRAN_Trace_ID
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        m_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        m_eUTRAN_Trace_ID_IE(p_eUTRAN_Trace_ID)
                    } // End of template m_deactivate_TraceIEs
                    
                } // End of group Traces_send
                
                /**
                 * @desc Send messages for Location Reporting Procedures
                 */
                group Location_reporting_send {
                    
                    /**
                     * @desc Send template for InitiatingMessage message with LOCATION REPORTING CONTROL payload
                     * @param p_value           Expected protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_location_Reporting_Control(
                                                                                    in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_LocationReportingControl,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_location_Reporting_Control
                    
                    /**
                     * @desc Send template for LOCATION REPORTING CONTROL message
                     * @param p_MME_value       MME UE S1AP ID value
garciay's avatar
garciay committed
                     * @param p_eNB_value       eNB UE S1AP ID value
garciay's avatar
garciay committed
                     * @param p_request_Type    The Type Request value
                     */
                    template (value) RecordOf_ProtocolIE m_location_Reporting_ControlIEs(
                                                                                         in template (value) MME_UE_S1AP_ID p_MME_value,
garciay's avatar
garciay committed
                                                                                         in template (value) ENB_UE_S1AP_ID p_eNB_value,
garciay's avatar
garciay committed
                                                                                         in template (value) RequestType p_request_Type
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        m_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        m_request_Type_IE(p_request_Type)
                    } // End of template m_location_Reporting_ControlIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with LOCATION REPORTING CONTROL payload
                     * @param p_value           Expected protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_location_Report(
                                                                         in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_LocationReport,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_location_Report
                    
                    /**
                     * @desc Send template for LOCATION REPORT message
                     * @param p_MME_value       MME UE S1AP ID value
garciay's avatar
garciay committed
                     * @param p_eNB_value       eNB UE S1AP ID value
garciay's avatar
garciay committed
                     * @param p_request_Type    The Type Request value
                     */
                    template (value) RecordOf_ProtocolIE m_location_ReportIEs(
                                                                              in template (value) MME_UE_S1AP_ID p_MME_value,
garciay's avatar
garciay committed
                                                                              in template (value) ENB_UE_S1AP_ID p_eNB_value,
garciay's avatar
garciay committed
                                                                              in template (value) RequestType p_request_Type
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        m_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        m_request_Type_IE(p_request_Type)
                    } // End of template m_location_ReportIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with LOCATION REPORT FAILURE INDICATION payload
                     * @param p_value           Expected protocol information elements
garciay's avatar
garciay committed
                     */
                    template (value) InitiatingMessage m_location_Report_Failure_Indication(
                                                                                            in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_LocationReport,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_location_Report_Failure_Indication
                    
                    /**
                     * @desc Send template for LOCATION REPORT message
                     * @param p_MME_value   The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value   The expected eNB UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_cause       The expected Cause value. Default: ?
                     */
                    template (value) RecordOf_ProtocolIE m_location_Report_Failure_IndicationIEs(
                                                                                                 in template (value) MME_UE_S1AP_ID p_MME_value,
garciay's avatar
garciay committed
                                                                                                 in template (value) ENB_UE_S1AP_ID p_eNB_value,
garciay's avatar
garciay committed
                                                                                                 in template (value) Cause p_cause
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        m_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        m_cause_IE(p_cause)
                    } // End of template m_location_Report_Failure_IndicationIEs
                    
                } // End of group Location_reporting_send
                
                /**
                 * @desc Send messages for NAS transport
                 */
                group NAS_transport_group {
                    
                    /**
                     * @desc Send template for InitiatingMessage message with INITIAL_UE_MESSAGE payload
                     * @param p_value           Expected protocol information elements.
                     */
                    template (value) InitiatingMessage m_initial_uE_Message(
                                                                               template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_initialUEMessage,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_initial_uE_Message
                    
                    /**
                     * @desc Send template for INITIAL_UE_MESSAGE message
                     * @param p_eNB_value           The expected eNB UE S1AP ID value.
                     * @param p_nasPdu              The expected NAS-PDU value.
                     * @param p_tAI                 The expected TAI value.
                     * @param p_eUTRAN_CGI          The expected Type Request value.
                     * @param p_cause               The expected RRC Establishment Cause value.
                     */
                    template (value) RecordOf_ProtocolIE m_initial_uE_MessageIEs(
                                                                                    template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                    template (value) octetstring p_nasPdu,
                                                                                    template (value) TAI p_tAI,
                                                                                    template (value) EUTRAN_CGI p_eUTRAN_CGI,
                                                                                    template (value) Cause p_cause
                    ) := {
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_nAS_Pdu_IE(p_nasPdu),
                        m_tAI_IE(p_tAI),
                        m_eUTRAN_CGI_IE(p_eUTRAN_CGI),
                        m_cause_IE(p_cause)
                    } // End of template m_initial_uE_MessageIEs
                    
                    /**
                     * @desc Send template for InitiatingMessage message with UPLINK_NAS_TRANSPORT payload
                     * @param p_value           Expected protocol information elements.
                     */
                    template (value) InitiatingMessage m_uplink_nAS_Transport(
                                                                                   template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        procedureCode := id_uplinkNASTransport,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_uplink_nAS_Transport
                    
                    /**
                     * @desc Receive template for UPLINK_NAS_TRANSPORT message
                     * @param p_MME_value   The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value   The expected eNB UE S1AP ID value. Default: ?
                     * @param p_nasPdu      The expected NAS-PDU value. Default: ?
                     */
                    template (value) RecordOf_ProtocolIE m_uplink_nAS_TransportIEs(
                                                                                        template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                        template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                        template (value) octetstring p_nasPdu,
                                                                                        template (value) EUTRAN_CGI p_eUTRAN_CGI,
                                                                                        template (value) TAI p_tAI
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value),
                        m_nAS_Pdu_IE(p_nasPdu),
                        m_eUTRAN_CGI_IE(p_eUTRAN_CGI),
                        m_tAI_IE(p_tAI)
                    } // End of template m_uplink_nAS_TransportIEs
                    
                } // End of group NAS_transport_group
                
garciay's avatar
garciay committed
            } // End of group sendClass2
            
            group receiveClass2 {
                
                /**
                 * @desc Receive messages for Handover Notification Procedure
                 */
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with HANDOVER_NOTIFY payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_HandoverNotify(
                                                                             template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_HandoverNotification,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_HandoverNotify
                    
                    /**
                     * @desc Receive template for HANDOVER_NOTIFY message
                     * @param p_MME_value               The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value               The expected eNB UE S1AP ID value. Default: ?
                     * @param p_eUtranCgi               The expected E-UTRAN CGI value.    Default: ?
                     * @param p_tai                     The expected TAI value.            Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_HandoverNotifyIEs(
                                                                                  template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                  template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                  template (present) EUTRAN_CGI p_eUtranCgi := ?,
                                                                                  template (present) TAI p_tai := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_eUTRAN_CGI_IE(p_eUtranCgi),
                        mw_tAI_IE(p_tai)
                    } // End of template mw_HandoverNotifyIEs
                    
                } // End of group HandoverNotification
                
                /**
                 * @desc Receive messages for E_RAB Release Indication
                 */
                group E_RABReleaseIndication {
                    
                    /**
                       * @desc Receive template for InitiatingMessage message with E_RAB Release Indication payload
                       * @param p_value           Expected protocol information elements. Default: ?
                       */
                    template (present) InitiatingMessage mw_E_RABReleaseIndication(
                            template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                           procedureCode := id_E_RABReleaseIndication,
                           criticality := ignore,
                           value_ := { RecordOf_ProtocolIE :=p_value}
                    }// End of template mw_E_RABReleaseIndication
                    
                    /**
                     * @desc Receive template for E_RABReleaseIndication message
                     */
                    template (present) RecordOf_ProtocolIE mw_E_RABReleaseIndicationIEs(
                         template (present) MME_UE_S1AP_ID p_MME_value := ?,
                         template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                         template (present) RecordOf_E_RABItem p_RecordOf_E_RABItem_value := ?,
                         template (present) UserLocationInformation p_UserLocationInformation := ?
                    ) := {
                          mw_MME_UE_S1AP_ID(p_MME_value),
                          mw_eNB_UE_S1AP_ID(p_eNB_value),
                          mw_E_RABReleaseList(p_RecordOf_E_RABItem_value),
                          mw_UserLocationInformation_IE(p_UserLocationInformation)
                    } // End of template mw_E_RABReleaseIndicationIEs
                    
                } // End of group E_RABReleaseIndication
garciay's avatar
garciay committed
                /**
                 * @desc Receive messages for Error Indication Procedures
                 */
                group Error_Indication_receive {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with ERROR_INDICATION payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_error_Indication(
                                                                             template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_ErrorIndication,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_error_Indication
                    
                    /**
                     * @desc Receive template for ERROR_INDICATION message
                     * @param p_MME_value               The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value               The expected eNB UE S1AP ID value. Default: ?
                     * @param p_value                   The expected Cause value or CriticalityDiagnostics value. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) RecordOf_ProtocolIE mw_error_IndicationIEs(
                                                                                  template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                  template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                  template (present) ProtocolIE p_value
garciay's avatar
garciay committed
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                    } // End of template mw_error_IndicationIEs
                    
                } // End of group Error_Indication_receive
                
                 * @desc Receive messages for Paging
                 */
                group Paging_group {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with PAGING payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_paging(
                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_Paging,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_paging
                    
                    /**
                     * @desc Receive template for PAGING message
                     * @param p_uEIdentityIndexValue    The expected UE Identity Index value value. Default: ?
                     * @param p_uEPagingID              The expected UEPagingID value. Default: ?
                     * @param p_cNDomain                The expected CNDomain value. Default: ?
                     * @param p_tAI                     The expected TAI list value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_pagingIEs(
                                                                        template (present) UEIdentityIndexValue p_uEIdentityIndexValue := ?,
                                                                        template (present) UEPagingID p_uEPagingID := ?,
                                                                        template (present) CNDomain p_cNDomain := ?,
                                                                        template (present) TAIList p_tAIs := ?
                    ) := {
                        mw_uEIdentityIndexValue_IE(p_uEIdentityIndexValue),
                        mw_uEPagingID_IE(p_uEPagingID),
                        mw_cNDomain_IE(p_cNDomain),
                        mw_tAIs_IE(p_tAIs)
                    } // End of template mw_pagingIEs
                    
                } // End of group Paging_group
                
                /**
                 * @desc Receive messages for NAS transport
                 */
                group NAS_transport_group {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with INITIAL_UE_MESSAGE payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_initial_uE_Message(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_initialUEMessage,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_initial_uE_Message
                    
                    /**
                     * @desc Receive template for INITIAL_UE_MESSAGE message
                     * @param p_eNB_value           The expected eNB UE S1AP ID value. Default: ?
                     * @param p_nasPdu              The expected NAS-PDU value. Default: ?
                     * @param p_tAI                 The expected TAI value. Default: ?
                     * @param p_eUTRAN_CGI          The expected Type Request value. Default: ?
                     * @param p_cause               The expected RRC Establishment Cause value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_initial_uE_MessageIEs(
                                                                                    template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                    template (present) octetstring p_nasPdu := ?,
                                                                                    template (present) TAI p_tAI := ?,
                                                                                    template (present) EUTRAN_CGI p_eUTRAN_CGI := ?,
                                                                                    template (present) Cause p_cause := ?
                    ) := {
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_nAS_Pdu_IE(p_nasPdu),
                        mw_tAI_IE(p_tAI),
                        mw_eUTRAN_CGI_IE(p_eUTRAN_CGI),
                        mw_cause_IE(p_cause)
                    } // End of template mw_initial_uE_MessageIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with DOWNLINK_NAS_TRANSPORT payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_downlink_nAS_Transport(
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_downlinkNASTransport,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_downlink_nAS_Transport
                    
                    /**
                     * @desc Receive template for DOWNLINK_NAS_TRANSPORT message
                     * @param p_MME_value   The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value   The expected eNB UE S1AP ID value. Default: ?
                     * @param p_nasPdu      The expected NAS-PDU value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_downlink_nAS_TransportIEs(
                                                                                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                        template (present) octetstring p_nasPdu := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_nAS_Pdu_IE(p_nasPdu)
                    } // End of template mw_downlink_nAS_TransportIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with UPLINK_NAS_TRANSPORT payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_uplink_nAS_Transport(
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_uplinkNASTransport,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_uplink_nAS_Transport
                    
                    /**
                     * @desc Receive template for UPLINK_NAS_TRANSPORT message
                     * @param p_MME_value   The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value   The expected eNB UE S1AP ID value. Default: ?
                     * @param p_nasPdu      The expected NAS-PDU value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_uplink_nAS_TransportIEs(
                                                                                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                        template (present) octetstring p_nasPdu := ?,
                                                                                        template (present) EUTRAN_CGI p_eUTRAN_CGI := ?,
                                                                                        template (present) TAI p_tAI := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_nAS_Pdu_IE(p_nasPdu),
                        mw_eUTRAN_CGI_IE(p_eUTRAN_CGI),
                        mw_tAI_IE(p_tAI)
                    } // End of template mw_uplink_nAS_TransportIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with NAS_NON_DELIVERY_INDICATION payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_nAS_Non_Delivery_Indication(
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_NASNonDeliveryIndication,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_nAS_Non_Delivery_Indication
                    
                    /**
                     * @desc Receive template for NAS_NON_DELIVERY_INDICATION message
                     * @param p_MME_value   The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value   The expected eNB UE S1AP ID value. Default: ?
                     * @param p_nasPdu      The expected NAS-PDU value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_nAS_Non_Delivery_IndicationIEs(
                                                                                             template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                             template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                             template (present) octetstring p_nasPdu := ?,
                                                                                             template (present) Cause p_cause := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_nAS_Pdu_IE(p_nasPdu),
                        mw_cause_IE(p_cause)
                    } // End of template mw_nAS_Non_Delivery_IndicationIEs
                    
                    /**
                     * @desc Receive template for REROUTE_NAS_REQUEST message
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_reroute_nAS_Request(
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_RerouteNASRequest,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_reroute_nAS_Request
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with REROUTE_NAS_REQUEST payload
                     * @param p_MME_value     The expected MME UE S1AP ID value. Default: ?
                     * @param p_eNB_value     The expected eNB UE S1AP ID value. Default: ?
                     * @param p_s1Message     The expected INITIAL UE MESSAGE value. Default: ?
                     * @param p_mME_Group_ID  The expected MME_Group_ID value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_reroute_nAS_RequestIEs(
                                                                                    template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                    template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                    template (present) octetstring p_s1Message := ?,
                                                                                    template (present) MME_Group_ID p_mME_Group_ID := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_s1_Message_IE(p_s1Message),
                        mw_mME_Group_ID_IE(p_mME_Group_ID)
                    } // End of template mw_reroute_nAS_RequestIEs
                    
                } // End of group NAS_transport_group
                
                /**
                 * @desc Receive messages for Management procedures
                 */
                group Management_group {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with OVERLOAD_START payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_eNB_Overload_Start(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_OverloadStart,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_eNB_Overload_Start
                    
                    /**
                     * @desc Receive template for OVERLOAD_START message
                     * @param p_overloadResponse   The expected required behaviour of the eNB in an overload situation. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_eNB_Overload_StartIEs(
                                                                                    template (present) OverloadResponse p_overloadResponse := ?
                    ) := {
                        mw_overloadResponse_IE(p_overloadResponse)
                    } // End of template mw_eNB_Overload_StartIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with OVERLOAD_STOP payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_eNB_Overload_Stop(
                                                                              template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_OverloadStop,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_eNB_Overload_Stop
                    
                    /**
                     * @desc Receive template for OVERLOAD_STOP message
                     * @param p_overloadResponse   The expected required behaviour of the eNB in an overload situation. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_eNB_Overload_StopIEs(
                                                                                   template (present) GUMMEIList p_gUMMEIList := ?
                    ) := {
                        mw_gUMMEIList_IE(p_gUMMEIList)
                    } // End of template mw_eNB_Overload_StopIEs
                    
                } // End of group Management_group
                
garciay's avatar
garciay committed
                /**
                 * @desc Receive messages for CDMA2000 Tunnelling
                 */
                group S1_CDMA2000_Tunnelling_receive {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with DOWNLINK S1 CDMA2000 TUNNELLING payload
                     * @param p_value           Expected protocol information elements
                     */
                    template (present) InitiatingMessage mw_downlink_S1_CDMA2000_Tunnelling(
                                                                                            template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_DownlinkS1cdma2000tunnelling,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_downlink_S1_CDMA2000_Tunnelling
                    
                    /**
                     * @desc Receive template for DOWNLINK S1 CDMA2000 TUNNELLING message
                     * @param p_MME_value               The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value               The expected eNB UE S1AP ID value. Default: ?
                     * @param p_eRABDataForwardingItem  The expected list of E-RABs Subject to Forwarding. Default: ?
                     * @param p_cdma2000Pdu             The expected CDMA2000-PDU value. Default: ?
garciay's avatar
garciay committed
                     * @param p_cdma2000RATType         The expected CDMA2000 RAT Type value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_downlink_S1_CDMA2000_TunnellingIEs(
                                                                                                 template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                                 template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                                 template (present) RecordOf_E_RABDataForwardingItem p_eRABDataForwardingItems := ?,
                                                                                                 template (present) octetstring p_cdma2000Pdu := ?,
                                                                                                 template (present) Cdma2000RATType p_cdma2000RATType := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_eRABDataForwardingItem_IE(p_eRABDataForwardingItems),
                        mw_cdma2000_Pdu_IE(p_cdma2000Pdu),
                        mw_cdma2000_RAT_Type_IE(p_cdma2000RATType)
                        
                    } // End of template mw_downlink_S1_CDMA2000_TunnellingIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with UPLINK S1 CDMA2000 TUNNELLING payload
                     * @param p_value           Expected protocol information elements
                     */
                    template (present) InitiatingMessage mw_uplink_S1_CDMA2000_Tunnelling(
                                                                                          template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UplinkS1cdma2000tunnelling,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_uplink_S1_CDMA2000_Tunnelling
                    
                    /**
                     * @desc Receive template for UPLINK S1 CDMA2000 TUNNELLING message
                     * @param p_MME_value           The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value           The expected eNB UE S1AP ID value. Default: ?
                     * @param p_cdma2000RATType     The expected CDMA2000 RAT Type value. Default: ?,
                     * @param p_cdma2000SectorId    The expected CDMA2000 Sector ID value. Default: ,
                     * @param p_cdma2000Pdu         The expected CDMA2000-PDU value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_uplink_S1_CDMA2000_TunnellingIEs(
                                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                               template (present) Cdma2000RATType p_cdma2000RATType := ?,
                                                                                               template (present) octetstring p_cdma2000SectorId := ?,
                                                                                               template (present) octetstring p_cdma2000Pdu := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_cdma2000_RAT_Type_IE(p_cdma2000RATType),
                        mw_cdma2000_SectorId_IE(p_cdma2000SectorId),
                        mw_cdma2000_Pdu_IE(p_cdma2000Pdu)
                    } // End of template mw_uplink_S1_CDMA2000_TunnellingIEs
                    
                } // End of group S1_CDMA2000_Tunnelling_receive
                
garciay's avatar
garciay committed
                /**
                 * @desc Receive messages for UE Capability Info
                 */
                group UE_Capability_Info_receive {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with UE CAPABILITY INFO INDICATION payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_uE_Capability_Info_Indication(
                                                                                          template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_UECapabilityInfoIndication,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_uE_Capability_Info_Indication
                    
                    /**
                     * @desc Receive template for UE CAPABILITY INFO INDICATION message
                     * @param p_MME_value           The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value           The expected eNB UE S1AP ID value. Default: ?
                     * @param p_uE_Radio_capability The UE radion capability value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_uE_Capability_Info_IndicationIEs(
                                                                                               template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                               template (present) octetstring p_uE_Radio_capability := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_ueRadioCapability_IE(p_uE_Radio_capability)
                    } // End of template mw_uE_Capability_Info_IndicationIEs
                    
                } // End of group UE_Capability_Info_receive
                
                /**
                 * @desc Receive messages for eNB Status Transfer Procedure
                 */
                group EnbStatusTransfer {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with eNB Status Transfer payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_EnbStatusTransfer(
                                                                             template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_eNBStatusTransfer,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_EnbStatusTransfer
                    
                    template (present) RecordOf_ProtocolIE mw_EnbStatusTransferIEs(
                                                                                  template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                  template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                  template (present) ENB_StatusTransfer_TransparentContainer p_statusTransfer_tc_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_eNBStatusTransferTransparentContainer_IE(p_statusTransfer_tc_value)
                    } // End of template mw_EnbStatusTransferIEs
                    
                } // End of group EnbStatusTransfer
                
garciay's avatar
garciay committed
                /**
                 * @desc Receive messages for Traces Procedures
                 */
                group Traces_receive {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with TRACE START payload
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) InitiatingMessage mw_trace_Start(
                                                                        template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_TraceStart,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_trace_Start
                    
                    /**
                     * @desc Receive template for TRACE START message
                     * @param p_traceActivation    The Trace Activation present. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) RecordOf_ProtocolIE mw_trace_StartIEs(
                                                                             template (present) TraceActivation p_traceActivation := ?
                    ) := {
                        mw_traceActivation_IE(p_traceActivation)
                    } // End of template mw_trace_StartIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with TRACE FAILURE INDICATION payload
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) InitiatingMessage mw_trace_Failure_Indication(
                                                                                     template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_TraceFailureIndication,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_trace_Failure_Indication
                    
                    /**
                     * @desc Receive template for TRACE FAILURE INDICATION message
                     * @param p_MME_value           The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value           The expected eNB UE S1AP ID value. Default: ?
                     * @param p_eUTRAN_Trace_ID_IE  The expected E-UTRAN Trace ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_cause               The expected Cause value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_trace_Failure_IndicationIEs(
                                                                                          template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                          template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                                          template (present) E_UTRAN_Trace_ID p_eUTRAN_Trace_ID := ?,
                                                                                          template (present) Cause p_cause := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        mw_eUTRAN_Trace_ID_IE(p_eUTRAN_Trace_ID),
garciay's avatar
garciay committed
                    } // End of template mw_trace_Failure_IndicationIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with CELL TRAFFIC TRACE payload
                     * @param p_value           Expected protocol information elements. Default: ?
                     */
                    template (present) InitiatingMessage mw_cell_Traffic_Trace(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_CellTrafficTrace,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_cell_Traffic_Trace
                    
                    /**
                     * @desc Receive template for CELL TRAFFIC TRACE message
                     * @param p_MME_value                       The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value                       The expected eNB UE S1AP ID value. Default: ?
                     * @param p_eUTRAN_Trace_ID_IE              The expected E-UTRAN Trace ID value. Default: ?
                     * @param p_eUTRAN_CGI                      The expected Type Request value. Default: ?
                     * @param p_traceCollectionEntityIPAddress  The expected Transport Layer Address value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_cell_Traffic_TraceIEs(
                                                                                    template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                    template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                    template (present) E_UTRAN_Trace_ID p_eUTRAN_Trace_ID := ?,
                                                                                    template (present) EUTRAN_CGI p_eUTRAN_CGI := ?,
                                                                                    template (present) bitstring p_traceCollectionEntityIPAddress := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
                        mw_eUTRAN_Trace_ID_IE(p_eUTRAN_Trace_ID),
                        mw_eUTRAN_CGI_IE(p_eUTRAN_CGI),
                        mw_transportLayerAddress_IE(p_traceCollectionEntityIPAddress)
                    } // End of template mw_cell_Traffic_TraceIEs
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for InitiatingMessage message with DEACTIVATE TRACE payload
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) InitiatingMessage mw_deactivate_Trace(
                                                                             template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_DeactivateTrace,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_deactivate_Trace
                    
                    /**
                     * @desc Receive template for DEACTIVATE TRACE message
                     * @param p_MME_value           The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value           The expected eNB UE S1AP ID value. Default: ?
                     * @param p_eUTRAN_Trace_ID_IE  The expected E-UTRAN Trace ID value. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) RecordOf_ProtocolIE mw_deactivate_TraceIEs(
                                                                                  template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                  template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                                  template (present) E_UTRAN_Trace_ID p_eUTRAN_Trace_ID := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        mw_eUTRAN_Trace_ID_IE(p_eUTRAN_Trace_ID)
                    } // End of template mw_deactivate_TraceIEs
                    
                } // End of group Traces_receive
                
                /**
                 * @desc Receive messages for Location Reporting Procedures
                 */
                group Location_reporting_receive {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with LOCATION REPORTING CONTROL payload
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) InitiatingMessage mw_location_Reporting_Control(
                                                                                       template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_LocationReportingControl,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_location_Reporting_Control
                    
                    /**
                     * @desc Receive template for LOCATION REPORTING CONTROL message
                     * @param p_MME_value       MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value       eNB UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_request_Type    The Type Request value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_location_Reporting_ControlIEs(
                                                                                            template (present) MME_UE_S1AP_ID p_MME_value,
garciay's avatar
garciay committed
                                                                                            template (present) ENB_UE_S1AP_ID p_eNB_value,
garciay's avatar
garciay committed
                                                                                            template (present) RequestType p_request_Type
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        mw_request_Type_IE(p_request_Type)
                    } // End of template mw_location_Reporting_ControlIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with LOCATION REPORT payload
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) InitiatingMessage mw_location_Report(
                                                                            template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_LocationReport,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_location_Report
                    
                    /**
                     * @desc Receive template for LOCATION REPORT message
                     * @param p_MME_value       The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value       The expected eNB UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eUTRAN_CGI      The expected Type Request value. Default: ?
                     * @param p_tAI             The expected TAI value. Default: ?
                     * @param p_request_Type    The expected Type Request value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_location_ReportIEs(
                                                                                 template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                 template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                                 template (present) EUTRAN_CGI p_eUTRAN_CGI := ?,
                                                                                 template (present) TAI p_tAI := ?,
                                                                                 template (present) RequestType p_request_Type := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        mw_eUTRAN_CGI_IE(p_eUTRAN_CGI),
garciay's avatar
garciay committed
                        mw_tAI_IE(p_tAI),
garciay's avatar
garciay committed
                        mw_request_Type_IE(p_request_Type)
                    } // End of template mw_location_ReportIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with LOCATION REPORT FAILURE INDICATION payload
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) InitiatingMessage mw_location_Report_Failure_Indication(
                                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_LocationReport,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_location_Report_Failure_Indication
                    
                    /**
                     * @desc Receive template for LOCATION REPORT message
                     * @param p_MME_value   The expected MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value   The expected eNB UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_cause       The expected Cause value. Default: ?
                     */
                    template (present) RecordOf_ProtocolIE mw_location_Report_Failure_IndicationIEs(
                                                                                                    template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                                    template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                                                    template (present) Cause p_cause := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value),
garciay's avatar
garciay committed
                        mw_cause_IE(p_cause)
                    } // End of template mw_location_Report_Failure_IndicationIEs
                    
                } // End of group Location_reporting_send
                
                /**
                 * @desc Receive messages for Warning message transmission group
                 */
                group Warning_Message_Transmission_receive {
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with PWS RESTART INDICATION payload
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) InitiatingMessage mw_pWS_Restart_Indication(
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_PWSRestartIndication,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_pWS_Restart_Indication
                    
                    /**
                     * @desc Receive template for PWS RESTART INDICATION message
                     * @param p_eCGIListForFailure              The expected E-CGI List for Restart value. Default: ?
                     * @param p_global_ENB_ID                   The expected Global eNB ID value. Default: ?
                     * @param p_tAIListForRestart               The expected TAI List for Restart va. Default: ?lue
                     * @param p_emergencyAreaIDListForRestart   The expected Emergency Area ID List for Restart value. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) RecordOf_ProtocolIE mw_pWS_Restart_IndicationIEs(
                                                                                        template (present) ECGIListForRestart p_eCGIListForRestart := ?,
                                                                                        template (present) Global_ENB_ID p_global_ENB_ID := ?,
                                                                                        template (present) TAIListForRestart p_tAIListForRestart := ?,
                                                                                        template (present) EmergencyAreaIDListForRestart p_emergencyAreaIDListForRestart := ?
                    ) := {
                        mw_eCGIListForRestart(p_eCGIListForRestart),
garciay's avatar
garciay committed
                        mw_global_eNB_ID_IE(p_global_ENB_ID),
garciay's avatar
garciay committed
                        mw_tAIListForRestart(p_tAIListForRestart),
                        mw_emergencyAreaIDListForRestart(p_emergencyAreaIDListForRestart)
                    } // End of template mw_pWS_Restart_IndicationIEs
                    
                    /**
                     * @desc Receive template for InitiatingMessage message with PWS RESTART INDICATION payload
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) InitiatingMessage mw_pWS_Failure_Indication(
                                                                                   template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_PWSFailureIndication,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_pWS_Failure_Indication
                    
                    /**
                     * @desc Receive template for PWS RESTART INDICATION message
                     * @param p_pWSfailedECGIList   The expected PWS failed E-CGI List value. Default: ?
                     * @param p_global_ENB_ID       The expected Global eNB ID value. Default: ?
garciay's avatar
garciay committed
                     */
                    template (present) RecordOf_ProtocolIE mw_pWS_Failure_IndicationIEs(
                                                                                        template (present) PWSfailedECGIList p_pWSfailedECGIList := ?,
                                                                                        template (present) Global_ENB_ID p_global_ENB_ID := ?
                    ) := {
                        mw_pWSfailedECGIList(p_pWSfailedECGIList),
garciay's avatar
garciay committed
                        mw_global_eNB_ID_IE(p_global_ENB_ID)
garciay's avatar
garciay committed
                    } // End of template mw_pWS_Failure_IndicationIEs
                    
                } // End of group Warning_Message_Transmission_receive
                
                /**
                 * @desc Receive message for eNB direct information transfer group
                 */
                group direct_information_transfer_group {
                    
                    /**
                     * @desc Receive template for InitiatingMessage/eNB_DIRECT_INFORMATION_TRANSFER message
                     * @param p_value           Expected protocol information elements. Default: ?
garciay's avatar
garciay committed
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.14 eNB DIRECT INFORMATION TRANSFER
                     */
                    template (present) InitiatingMessage mw_eNB_Direct_Information_Transfer(
                                                                                            template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_eNBDirectInformationTransfer,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_eNB_Direct_Information_Transfer
                    
                    /**
                     * @desc Receive template eNB_DIRECT_INFORMATION_TRANSFER/IEs message 
                     * @param p_RIMTransfer  TIM transfer value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.14 eNB DIRECT INFORMATION TRANSFER
                     */
                    template (present) RecordOf_ProtocolIE mw_eNBDirectInformationTransfer_EDT(
                                                                                               template (present) Inter_SystemInformationTransferType p_value := ?
                    ) := {
                        {
                            id := S1AP_Constants.id_Inter_SystemInformationTransferTypeEDT,
                            criticality := reject,
                            value_ := { Inter_SystemInformationTransferType := p_value }
                        }
                    } // End of template mw_eNBDirectInformationTransferIEs_EDT
                    
                    /**
                     * @desc Receive template MME_DIRECT_INFORMATION_TRANSFER/IEs message 
                     * @param p_RIMTransfer  TIM transfer value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.15 MME DIRECT INFORMATION TRANSFER
                     */
                    template (present) RecordOf_ProtocolIE mw_mMEDirectInformationTransfer(
                                                                                           template (present) Inter_SystemInformationTransferType p_value := ?
                    ) := {
                        {
                            id := S1AP_Constants.id_Inter_SystemInformationTransferTypeEDT,
                            criticality := reject,
                            value_ := { Inter_SystemInformationTransferType := p_value }
                        }
                    } // End of template mw_eNBDirectInformationTransferIEs_EDT
                    
                    /**
                     * @desc Receive template for ENBDirectInformationTransferIEs message 
                     * @param p_RIMTransfer  Expected RIM value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.55 Inter-system Information Transfer Type
                     */
                    template (present) Inter_SystemInformationTransferType mw_Inter_SystemInformationTransferType(
                                                                                                                  template (present) RIMTransfer p_RIMTransfer := ?
                    ) := {
                        rIMTransfer := p_RIMTransfer
                    } // End of template mw_Inter_SystemInformationTransferType
                    
                    /**
                     * @desc Receive template for RIMTransfer message 
                     * @param p_RIMTransfer  Expected RIM value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.23 RIM Transfer
                     */
                    template RIMTransfer mw_RIMTransfer(
                                                        template (present) RIMInformation p_rIMInformation := ?,
                                                        template RIMRoutingAddress p_rIMRoutingAddress := *
                    ) := {
                        rIMInformation     := p_rIMInformation,
                        rIMRoutingAddress  := p_rIMRoutingAddress,
                        iE_Extensions      := omit
                    } // End of template mw_RIMTransfer
                    
                    /**
                     * @desc Receive template for RIMRoutingAddress/GERAN-Cell-ID message 
                     * @param p_gERAN_Cell_ID  Expected GERAN_Cell_ID value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.25 RIM Routing Address
                     */
                    template (present) RIMRoutingAddress mw_rIMRoutingAddress_gERAN_Cell_ID(
                                                                                            template (present) GERAN_Cell_ID p_gERAN_Cell_ID := ?
                    ) := {
                        gERAN_Cell_ID := p_gERAN_Cell_ID
                    } // End of template mw_rIMRoutingAddress_gERAN_Cell_ID
                    
                    /**
                     * @desc Receive template for RIMRoutingAddress/TargetRNC-ID message 
                     * @param p_gERAN_Cell_ID  Expected TargetRNC_ID value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.25 RIM Routing Address
                     */
                    template (present) RIMRoutingAddress mw_rIMRoutingAddress_targetRNC_ID(
                                                                                           template (present) TargetRNC_ID p_targetRNC_ID := ?
                    ) := {
                        targetRNC_ID := p_targetRNC_ID
                    } // End of template mw_rIMRoutingAddress_targetRNC
                    
                    /**
                     * @desc Receive template for RIMRoutingAddress/eHRPD-Sector-ID message 
                     * @param p_gERAN_Cell_ID  Expected eHRPD-Sector-ID value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.25 RIM Routing Address
                     */
                    template (present) RIMRoutingAddress mw_rIMRoutingAddress_eHRPD_Sector_ID(
                                                                                              template (present) Oct16 p_eHRPD_Sector_ID := ?
                    ) := {
                        eHRPD_Sector_ID := p_eHRPD_Sector_ID
                    } // End of template mw_rIMRoutingAddress_eHRPD_Sector_ID
                    
                    /**
                     * @desc Receive template for InitiatingMessage/MME_DIRECT_INFORMATION_TRANSFER message
                     * @param p_value           Expected values. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.15 MME DIRECT INFORMATION TRANSFER
                     */
                    template (present) InitiatingMessage mw_Mme_Direct_Information_Transfer(
                                                                                            template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_MMEDirectInformationTransfer,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_Mme_Direct_Information_Transfer
                    
                    
                } // End of group direct_information_transfer_group 
                
                /**
                 * @desc Receive message for MME configuration transfer group
                 */
                group configuration_transfer_group {
garciay's avatar
garciay committed
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for InitiatingMessage/eNB_CONFIGURATION_TRANSFER message
                     * @param p_value           Expected values. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.16 eNB CONFIGURATION TRANSFER
                     */
                    template (present) InitiatingMessage mw_eNB_Configuration_Transfer(
                                                                                       template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_eNBConfigurationTransfer,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_eNB_Configuration_Transfer
garciay's avatar
garciay committed
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for InitiatingMessage/MME_CONFIGURATION_TRANSFER message
                     * @param p_value           Expected values. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.17 MME CONFIGURATION TRANSFER
                     */
                    template (present) InitiatingMessage mw_Mme_Configuration_Transfer(
                                                                                       template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_MMEConfigurationTransfer,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_Mme_Configuration_Transfer
garciay's avatar
garciay committed
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template for SON Configuration Transfer on MME side
                     * @param p_value Expected SONConfigurationTransfer value
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.26 SON Configuration Transfer
                     */
                    template (present) RecordOf_ProtocolIE mw_sON_Configuration_Transfer_MCT(
                                                                                             template (present) SONConfigurationTransfer p_value := ?
                    ) := {
                        {
                            id := S1AP_Constants.id_SONConfigurationTransferMCT,
                            criticality := ignore,
                            value_ := { SONConfigurationTransfer := p_value }
                        }
                    } // End of template mw_sON_Configuration_Transfer_MCT
                    
                    /**
                     * @desc Receive template for SON Configuration Transfer on ENB side
                     * @param p_value Expected SONConfigurationTransfer value
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.26 SON Configuration Transfer
                     */
                    template (present) RecordOf_ProtocolIE mw_sON_Configuration_Transfer_ECT(
                                                                                             template (present) SONConfigurationTransfer p_value := ?
                    ) := {
                        {
                            id := S1AP_Constants.id_SONConfigurationTransferECT,
                            criticality := ignore,
                            value_ := { SONConfigurationTransfer := p_value }
                        }
                    } // End of template mw_sON_Configuration_Transfer_ECT
                    
                } // End of group configuration_transfer_group
garciay's avatar
garciay committed
                
garciay's avatar
garciay committed
                /**
                 * @desc Receive messages for LPPa transport group
                 */
                group LPPa_transport_group {
garciay's avatar
garciay committed
                    
                    /**
garciay's avatar
garciay committed
                     * @desc Receive template for InitiatingMessage/UPLINK_UE_ASSOCIATED_LPPA_TRANSPORT message
                     * @param p_value           Expected values. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.2 UPLINK UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) InitiatingMessage mw_UplinkUEAssociatedLppaTransport(
                                                                                            template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_uplinkUEAssociatedLPPaTransport,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UplinkUEAssociatedLppaTransport
                    
                    /**
                     * @desc Receive template for InitiatingMessage/DOWNLINK_UE_ASSOCIATED_LPPA_TRANSPORT message
                     * @param p_value           Expected values. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.1 DOWNLINK UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) InitiatingMessage mw_DownlinkUEAssociatedLppaTransport(
                                                                                              template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_downlinkUEAssociatedLPPaTransport,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_DownlinkUEAssociatedLppaTransport
                    
                    /**
                     * @desc Receive template for SuccessfulOutcome/UPLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT message
                     * @param p_value           Expected values. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.4 UPLINK NONE UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) InitiatingMessage mw_UplinkNonUEAssociatedLppaTransport(
                                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                    ) := {
                        procedureCode := id_uplinkNonUEAssociatedLPPaTransport,
                        criticality := ignore,
                        value_ := {RecordOf_ProtocolIE := p_value}
                    } // End of template mw_UplinkNonUEAssociatedLppaTransport
                    
                    /**
                     * @desc Receive template for InitiatingMessage/DOWNLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT message
garciay's avatar
garciay committed
                     * @param p_value           Expected procedure code. Default: ?
garciay's avatar
garciay committed
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.3 DOWNLINK NONE UE ASSOCIATED LPPA TRANSPORT
garciay's avatar
garciay committed
                     */
garciay's avatar
garciay committed
                    template (present) InitiatingMessage mw_DownlinkNonUEAssociatedLppaTransport(
                                                                                                 template (present) RecordOf_ProtocolIE p_value := ?
garciay's avatar
garciay committed
                    ) := {
garciay's avatar
garciay committed
                        procedureCode := id_downlinkNonUEAssociatedLPPaTransport,
                        criticality := ignore,
garciay's avatar
garciay committed
                        value_ := {RecordOf_ProtocolIE := p_value}
garciay's avatar
garciay committed
                    } // End of template mw_DownlinkNonUEAssociatedLppaTransport
pintar's avatar
pintar committed
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template UPLINK_UE_ASSOCIATED_LPPA_TRANSPORT/IEs message 
                     * @param p_MME_value   MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value   eNB UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_Routing_ID  Routing ID value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.2 UPLINK UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) RecordOf_ProtocolIE mw_UplinkUEAssociatedLppaTransportIEs(
                                                                                                 template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                                 template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                                                 template (present) UInt8 p_Routing_ID := ?
pintar's avatar
pintar committed
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_routing_ID_IE(p_Routing_ID)
garciay's avatar
garciay committed
                    } // End of template mw_UplinkUEAssociatedLppaTransportIEs
pintar's avatar
pintar committed
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template UPLINK_UE_ASSOCIATED_LPPA_TRANSPORT/IEs message 
                     * @param p_MME_value   MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value   eNB UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_Routing_ID  Routing ID value. Default: ?
                     * @param p_LPPa_PDU    LPPa-PDU value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.2 UPLINK UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) RecordOf_ProtocolIE mw_UplinkUEAssociatedLppaTransportIEs_LPPa_PDU(
                                                                                                          template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                                          template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                                                          template (present) UInt8 p_Routing_ID := ?,
                                                                                                          template (present) octetstring p_LPPa_PDU := ?
                    ) modifies mw_UplinkUEAssociatedLppaTransportIEs := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_routing_ID_IE(p_Routing_ID),
                        mw_LPPa_PDU_IE(p_LPPa_PDU)
garciay's avatar
garciay committed
                    } // End of template mw_UplinkUEAssociatedLppaTransportIEs_LPPa_PDU
                    
                    /**
                     * @desc Receive template UPLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT/IEs message 
                     * @param p_Routing_ID  Routing ID value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.4 UPLINK NON UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) RecordOf_ProtocolIE mw_UplinkNonUEAssociatedLppaTransportIEs(
                                                                                                    template (present) UInt8 p_Routing_ID := ?
                    ) := {
garciay's avatar
garciay committed
                        mw_routing_ID_IE(p_Routing_ID)
garciay's avatar
garciay committed
                    } // End of template mw_UplinkNonUEAssociatedLppaTransportIEs
                    
                    /**
                     * @desc Receive template UPLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT/IEs message 
                     * @param p_Routing_ID  Routing ID value. Default: ?
                     * @param p_LPPa_PDU    LPPa-PDU value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.4 UPLINK UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) RecordOf_ProtocolIE mw_UplinkNonUEAssociatedLppaTransportIEs_LPPa_PDU(
                                                                                                             template (present) UInt8 p_Routing_ID := ?,
                                                                                                             template (present) octetstring p_LPPa_PDU := ?
                    ) modifies mw_UplinkNonUEAssociatedLppaTransportIEs := {
garciay's avatar
garciay committed
                        mw_routing_ID_IE(p_Routing_ID),
                        mw_LPPa_PDU_IE(p_LPPa_PDU)
garciay's avatar
garciay committed
                    } // End of template mw_UplinkNonUEAssociatedLppaTransportIEs_LPPa_PDU
                    
                    /**
                     * @desc Receive template DOWNLINK_UE_ASSOCIATED_LPPA_TRANSPORT/IEs message 
                     * @param p_MME_value   MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value   eNB UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_Routing_ID  Routing ID value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.1 DOWNLINK UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) RecordOf_ProtocolIE mw_DownlinkUEAssociatedLppaTransportIEs(
                                                                                                   template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                                   template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                                                   template (present) UInt8 p_Routing_ID := ?
pintar's avatar
pintar committed
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_routing_ID_IE(p_Routing_ID)
garciay's avatar
garciay committed
                    } // End of template mw_DownlinkUEAssociatedLppaTransportIEs
garciay's avatar
garciay committed
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Receive template DOWNLINK_UE_ASSOCIATED_LPPA_TRANSPORT/IEs message 
                     * @param p_MME_value   MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_eNB_value   eNB UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                     * @param p_Routing_ID  Routing ID value. Default: ?
                     * @param p_LPPa_PDU    LPPa-PDU value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.1 DOWNLINK UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) RecordOf_ProtocolIE mw_DownlinkUEAssociatedLppaTransportIEs_LPPa_PDU(
                                                                                                            template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                                            template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
garciay's avatar
garciay committed
                                                                                                            template (present) UInt8 p_Routing_ID := ?,
                                                                                                            template (present) octetstring p_LPPa_PDU := ?
                    ) modifies mw_DownlinkUEAssociatedLppaTransportIEs := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_routing_ID_IE(p_Routing_ID),
                        mw_LPPa_PDU_IE(p_LPPa_PDU)
garciay's avatar
garciay committed
                    } // End of template mw_DownlinkUEAssociatedLppaTransportIEs_LPPa_PDU
                    
                    /**
                     * @desc Receive template DOWNLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT/IEs message 
                     * @param p_Routing_ID  Routing ID value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.2 DOWNLINK UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) RecordOf_ProtocolIE mw_DownlinkNonUEAssociatedLppaTransportIEs(
                                                                                                      template (present) UInt8 p_Routing_ID := ?
                    ) := {
garciay's avatar
garciay committed
                        mw_routing_ID_IE(p_Routing_ID)
garciay's avatar
garciay committed
                    } // End of template mw_DownlinkNonUEAssociatedLppaTransportIEs
                    
                    /**
                     * @desc Receive template DOWNLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT/IEs message 
                     * @param p_Routing_ID  Routing ID value. Default: ?
                     * @param p_LPPa_PDU    LPPa-PDU value. Default: ?
                     * @see ETSI TS 136 413 V13.4.0 Clause 9.1.19.3 DOWNLINK NON UE ASSOCIATED LPPA TRANSPORT
                     */
                    template (present) RecordOf_ProtocolIE mw_DownlinkNonUEAssociatedLppaTransportIEs_LPPa_PDU(
                                                                                                               template (present) UInt8 p_Routing_ID := ?,
                                                                                                               template (present) octetstring p_LPPa_PDU := ?
                    ) modifies mw_DownlinkNonUEAssociatedLppaTransportIEs := {
garciay's avatar
garciay committed
                        mw_routing_ID_IE(p_Routing_ID),
                        mw_LPPa_PDU_IE(p_LPPa_PDU)
garciay's avatar
garciay committed
                    } // End of template mw_DownlinkNonUEAssociatedLppaTransportIEs_LPPa_PDU
                    
                } // End of group LPPa_transport_group
garciay's avatar
garciay committed
            } // End of group receiveClass2
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
        } //End of group class2
        
    } // End of group g_S1AP
    
    group S1AP_Protocol_IEs {
garciay's avatar
garciay committed
        
garciay's avatar
garciay committed
        group Send_IEs {
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
             * @desc Send template for Cause protocol IE
             * @param p_cause  Expected Cause value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.3 Cause
garciay's avatar
garciay committed
            template (value) ProtocolIE m_cause_IE(
garciay's avatar
garciay committed
                                                   in template (value) Cause p_cause,
                                                   in template (value) ProtocolIE.criticality p_criticality := ignore
garciay's avatar
garciay committed
            ) := {
                id := S1AP_Constants.id_Cause,
garciay's avatar
garciay committed
                criticality := p_criticality,
garciay's avatar
garciay committed
                value_ := {Cause := valueof(p_cause)}
            } // End of template m_cause_IE
            
            /**
             * @desc Send template for TargetID protocol IE
             * @param p_cause  Expected Cause value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.8 TargetID
             */
            template (value) ProtocolIE m_targetID_IE(
                                                   in template (value) TargetID p_target,
                                                   in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_TargetID,
                criticality := p_criticality,
                value_ := {TargetID := valueof(p_target)}
            } // End of template m_targetID_IE
            
            template (value) TargetID m_TargeteNB_ID (
                in template (value) Global_ENB_ID p_global_ENB_ID,  
                in template (value) TAI p_selected_TAI
            ) := {
                targeteNB_ID :={
                    global_ENB_ID := p_global_ENB_ID,
                    selected_TAI := p_selected_TAI,
                    iE_Extensions := omit
                 }
            }
            
            template (value) Global_ENB_ID m_Global_ENB_ID(
                in template (value) PLMNidentity p_PLMNidentity,  
                in template (value) ENB_ID p_ENB_ID
            ) := {
                pLMNidentity := p_PLMNidentity,
                eNB_ID := p_ENB_ID,
                iE_Extensions := omit
            }
            
            template  ENB_ID m_ENB_ID_macro:={
                macroENB_ID :='00000000000000000001'B
            }
            
            template  ENB_ID m_ENB_ID_home:={
                homeENB_ID :='0000000000000000000000000001'B
            }
                        
            /**
             * @desc Send template for TAI protocol IE
             * @param p_tai  Expected tai value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.16 TAI
             */
            template (value) ProtocolIE m_tAI_IE(
                                                   in template (value) TAI p_tai,
                                                   in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_TAI,
                criticality := p_criticality,
                value_ := {TAI := valueof(p_tai)}
            } // End of template m_tAI_IE
            
            template (value) TAI m_TAI (
                in template (value) PLMNidentity p_PLMNidentity,  
                in template (value) TAC p_TAC
            ) :={
                pLMNidentity := p_PLMNidentity,
                tAC := p_TAC,
                iE_Extensions := omit
            }
            
            template (value) TargetID m_TargetRNC_ID (
                in template (value) LAI p_lAI,  
                in template (value) RNC_ID p_rNC_ID
            ) := {
                targetRNC_ID :={
                     lAI := p_lAI,
                     rAC:= omit,
                     rNC_ID := p_rNC_ID,
                     extendedRNC_ID := omit,
                     iE_Extensions := omit
                 }
            }
            
            template (value) LAI m_LAI(
                in template (value) PLMNidentity p_PLMNidentity,  
                in template (value) LAC p_lAC
            ) := {
                pLMNidentity := p_PLMNidentity,
                lAC := p_lAC,
                iE_Extensions := omit
            }
            
            template (value) RNC_ID m_rNC_Id := 1;
            
            template (value) TargetID m_Target_CGI (
                in template (value) PLMNidentity p_pLMNidentity,  
                in template (value) LAC p_lAC,
                in template (value) CI p_cI
            ) := {
                cGI :={
                     pLMNidentity := p_pLMNidentity,
                     lAC := p_lAC,
                     cI := p_cI,
                     rAC := omit,
                     iE_Extensions := omit
                 }
            }
            /**
             * @desc Send template for SRVCCHOIndication protocol IE
             * @param p_SRVCCHOIndication  SRVCCHOIndication value.
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.59
             */
            template (value) ProtocolIE m_SRVCCHOIndication_IE(
                template (value) SRVCCHOIndication p_SRVCCHOIndication,
                template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_SRVCCHOIndication,
                criticality := p_criticality,
                value_ := {SRVCCHOIndication := valueof(p_SRVCCHOIndication)}
            } // End of template mw_SRVCCHOIndication_IE
            
            template (value) ProtocolIE m_CSG_Id_IE(
                                       in template (value) CSG_Id p_value,
                                       in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_CSG_Id,
                criticality := p_criticality,
                value_ := {CSG_Id := valueof(p_value)}
            } // End of template m_CSG_Id_IE

            //template (value) CellAccessMode m_CellAccessMode_hybrid := hybrid;
            
            template (value) ProtocolIE m_CellAccessMode_IE(
                           in template (value) CellAccessMode p_value,
                           in template (value) ProtocolIE.criticality p_criticality := reject
			) := {
			    id := S1AP_Constants.id_CellAccessMode,
			    criticality := p_criticality,
			    value_ := {CellAccessMode := valueof(p_value)}
			} // End of template m_CellAccessMode_IE
            template (value) ProtocolIE m_eUTRAN_CGI_IE(
                in template (value) EUTRAN_CGI p_eUTRAN_CGI,
                in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_EUTRAN_CGI,
                criticality := p_criticality,
                value_ := {EUTRAN_CGI := valueof(p_eUTRAN_CGI)}
            } // End of template m_eUTRAN_CGI_IE
          
            /**
             * @desc Send template for UE aggregate maxmum bitrate IE
             * @param p_value  UEAggregateMaximumBitrate value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.20 UEAggregateMaximumBitrate
             */
            template (value) ProtocolIE m_UE_aggregate_maximum_bitrate_IE(
                                                   in template (value) UEAggregateMaximumBitrate p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_uEaggregateMaximumBitrate,
                criticality := p_criticality,
                value_ := {UEAggregateMaximumBitrate := valueof(p_value)}
            } // End of template m_UE_aggregate_maximum_bitrate_IE
            /**
             * @desc Send template for UE security Capabilities IE
             * @param p_value  UESecurityCapabilities value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.40 UESecurityCapabilities
             */
            template (value) ProtocolIE m_UE_securityCapabilities_IE(
                                                   in template (value) UESecurityCapabilities p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_UESecurityCapabilities,
                criticality := p_criticality,
                value_ := {UESecurityCapabilities := valueof(p_value)}
            } // End of template m_UE_securityCapabilities_IE
            /**
             * @desc Send template for NAS-PDU
             * @param p_nasPDU The expected NAS-PDU value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.5 NAS-PDU
             */
            template (value) ProtocolIE m_nAS_Pdu_IE(
                                                     in template (value) octetstring p_nasPDU
            ) := {
                id := S1AP_Constants.id_NAS_PDU,
                criticality := reject,
                value_ := {octetstring := valueof(p_nasPDU)}
            } // End of template m_nAS_Pdu_IE
            
            /**
             * @desc Send template for security key IE
             * @param p_value  SecurityKey value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.41 Security Key
             */
            template (value) ProtocolIE m_securityKey_IE(
                                                   in template (value) SecurityKey p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_SecurityKey,
                criticality := p_criticality,
                value_ := {SecurityKey := valueof(p_value)}
            } // End of template m_securityKey_IE
            /**
             * @desc Send template for security context IE
             * @param p_value  SecurityContext value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.26 Security Context
             */
            template (value) ProtocolIE m_securityContext_IE(
                                                   in template (value) SecurityContext p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_SecurityContext,
                criticality := p_criticality,
                value_ := {SecurityContext := valueof(p_value)}
            } // End of template m_securityContext_IE

            /**
             * @desc Send template for nas Security Parameters To Eutran IE
             * @param p_value  SecurityContext value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.31 NAS Security Parameters to E_UTRAN
             */
            template (value) ProtocolIE m_nasSecurityParametersToEutran_IE(
                                                   in template (value) NASSecurityParameterstoE_UTRAN p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_NASSecurityParameterstoE_UTRAN,
                criticality := p_criticality,
                value_ := {NASSecurityParameterstoE_UTRAN := valueof(p_value)}
            } // End of template m_nasSecurityParametersToEutran_IE
            
            /**
             * @desc receive template for eNBStatusTransferTransparentContainer IE
             * @param p_value  eNBStatusTransferTransparentContainer value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.31 eNBStatusTransferTransparentContainer
             */
            template (value) ProtocolIE m_eNBStatusTransferTransparentContainer_IE(
                                                   in template (value) ENB_StatusTransfer_TransparentContainer p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_eNB_StatusTransfer_TransparentContainer,
                criticality := p_criticality,
                value_ := {ENB_StatusTransfer_TransparentContainer := valueof(p_value)}
            } // End of template m_eNBStatusTransferTransparentContainer_IE
            /**
             * @desc 
             */
            template (value) ENB_StatusTransfer_TransparentContainer m_eNBStatusTransferTransparentContainer (
                in template (value) Bearers_SubjectToStatusTransferList p_bearers_SubjectToStatusTransferList):= {
              bearers_SubjectToStatusTransferList := p_bearers_SubjectToStatusTransferList,
              iE_Extensions := omit
            }
//            /**
//             * @desc 
//             */
//            template (value) Bearers_SubjectToStatusTransfer_ItemIEs m_Bearers_SubjectToStatusTransfer_ItemIEs (
//                in template (value) Bearers_SubjectToStatusTransfer_Item p_bearers_SubjectToStatusTransfer,
//                in template (value) ProtocolIE.criticality p_criticality := ignore
//            
//            ):= {
//                id := S1AP_Constants.id_Bearers_SubjectToStatusTransfer_Item,
//                criticality := p_criticality,
//                value_ := {Bearers_SubjectToStatusTransfer_Item := valueof(p_bearers_SubjectToStatusTransfer)}
//            }
            
            template (value) Bearers_SubjectToStatusTransfer_Item m_Bearers_SubjectToStatusTransfer_Item(
                in template (value) E_RAB_ID p_e_RAB_ID,
                in template (value) COUNTvalue p_uL_COUNTvalue,
                in template (value) COUNTvalue p_dL_COUNTvalue
            ):= {
                e_RAB_ID:= p_e_RAB_ID,
                uL_COUNTvalue:=p_uL_COUNTvalue,
                dL_COUNTvalue:=p_dL_COUNTvalue,
                //ReceiveStatusofULPDCPSDUs
                receiveStatusofULPDCPSDUs := omit,
                iE_Extensions := omit
            }
             
            template (value) COUNTvalue m_COUNTvalue(
                in template (value) PDCP_SN p_PDCP_SN_value,
                in template (value) HFN p_HFN_value
            ):={
                pDCP_SN := valueof(p_PDCP_SN_value),
                hFN := valueof(p_HFN_value),
                iE_Extensions := omit
            }
            
            /**
             * @desc Send template for correlation ID IE
             * @param p_value  UESecurityCapabilities value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.80 correlation ID
             */
            template (value) ProtocolIE m_correlationID_IE(
                                                   in template (value) Correlation_ID p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_Correlation_ID,
                criticality := p_criticality,
                value_ := {Correlation_ID := valueof(p_value)}
            } // End of template m_correlationID_IE
            /**
             * @desc Send template for correlation ID IE
             * @param p_value  UESecurityCapabilities value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.80 SIPTO correlation ID
             */
            template (value) ProtocolIE m_SIPTO_correlationID_IE(
                                                   in template (value) Correlation_ID p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_SIPTO_Correlation_ID,
                criticality := p_criticality,
                value_ := {Correlation_ID := valueof(p_value)}
            } // End of template m_SIPTO_correlationID_IE
            
            /**
             * @desc Send template for CS Fallback indicator IE
             * @param p_value  CSFallbackIndicator value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.21 CS Fallback indicator
             */
            template (value) ProtocolIE m_CS_Fallback_indicator_IE(
                                                   in template (value) CSFallbackIndicator p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_CSFallbackIndicator,
                criticality := p_criticality,
                value_ := {CSFallbackIndicator := valueof(p_value)}
            } // End of template m_CS_Fallback_indicator_IE
garciay's avatar
garciay committed
            /**
             * @desc Send template for UE E-RAB Failed To Resume Item IEs
             * @param p_value  E_RABFailedToResumeItemResumeReq value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.1.4.17 UE CONTEXT RESUME REQUEST
             */
            template (value) ProtocolIE m_E_RABFailedToResumeListResumeReq_IE(
                                                                              in template (value) E_RABFailedToResumeItemResumeReq p_value,
                                                                              in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_E_RABFailedToResumeListResumeReq,
                criticality := p_criticality,
                value_ := {E_RABFailedToResumeItemResumeReq := valueof(p_value)}
            }
            /**
             * @desc Send template for UE Radio capability IE
             * @param p_value  UESecurityCapabilities value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.27 UE Radio capability
             */
            template (value) ProtocolIE m_UE_Radio_capability_IE(
                                                   in template (value) octetstring p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_UERadioCapability,
                criticality := p_criticality,
                value_ := {octetstring := valueof(p_value)}
            } // End of template m_UE_Radio_capability_IE
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            /**
             * @desc Send template for an unknown IE
             * @param p_value  Unknown value
             */
            template (value) ProtocolIE m_Unknown_ID_IE(
                                                        in template (value) octetstring p_value := '00000000'O,
                                                        in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := 65535,
                criticality := p_criticality,
                value_ := {octetstring := valueof(p_value)}
            } // End of template m_Unknown_ID_IE
            
            /**
             * @desc Send template for CSG Membership Status IE
             * @param p_value  CSG Membership Status value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.73 CSG Membership Status
             */
            template (value) ProtocolIE m_cSGMembershipStatus_IE(
                                                   in template (value) CSGMembershipStatus p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_CSGMembershipStatus,
                criticality := p_criticality,
                value_ := {CSGMembershipStatus := valueof(p_value)}
            } // End of template m_cSGMembershipStatus_IE
            
garciay's avatar
garciay committed
            template (value) ProtocolIE m_cSGMembershipInfo_IE(
                                                   in template (value) CSGMembershipInfo p_value,
                                                   in template (value) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_CSGMembershipInfo,
                criticality := p_criticality,
                value_ := {CSGMembershipInfo := valueof(p_value)}
            } // End of template m_cSGMembershipInfoIE
            
garciay's avatar
garciay committed
            group E_RAB_IEsend {
                template (value) ProtocolIE m_E_RABReleaseList(
                                                                        template (present) RecordOf_E_RABItem p_value := { ? }
                ) := {
                    id := S1AP_Constants.id_E_RABToBeReleasedList,
                    criticality := ignore,
                    value_ := { RecordOf_E_RABItem := p_value }
                } // End of template m_E_RABReleaseList
                
garciay's avatar
garciay committed
                 * @desc Send template for MME UE S1AP ID protocol IE
                 * @param p_value  MME/UE S1AP identifier. Default: 1
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.3 MME UE S1AP ID
garciay's avatar
garciay committed
                template (value) ProtocolIE m_MME_UE_S1AP_ID(
                                                             in template (value) MME_UE_S1AP_ID p_value := 1,
                                                             in template (value) ProtocolIE.criticality p_criticality := reject
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_MME_UE_S1AP_ID,
                    criticality := p_criticality,
                    value_ := { MME_UE_S1AP_ID := valueof(p_value) }
                } // End of template m_MME_UE_S1AP_ID
garciay's avatar
garciay committed
                 * @desc Send template for ENB ID protocol IE
                 * @param p_value  ENB identifier. Default: 1
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.4 eNB UE S1AP ID
garciay's avatar
garciay committed
                template (value) ProtocolIE m_eNB_UE_S1AP_ID(
garciay's avatar
garciay committed
                                                             in template (value) ENB_UE_S1AP_ID p_value := 1,
                                                             in template (value) ProtocolIE.criticality p_criticality := reject
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_eNB_UE_S1AP_ID,
                    criticality := p_criticality,
                    value_ := { ENB_UE_S1AP_ID := p_value }
garciay's avatar
garciay committed
                } // End of template m_eNB_UE_S1AP_ID
                /**
                 * @desc Send template for source MME UE S1AP ID protocol IE
                 * @param p_value  MME/UE S1AP identifier. Default: 1
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.3 MME UE S1AP ID
                 */
	            template (present) ProtocolIE m_sourceMmeUeS1apId(
	                                                         in template (value) MME_UE_S1AP_ID p_value,
	                                                         in template (value) ProtocolIE.criticality p_criticality := reject
	            ) := {
	                id := S1AP_Constants.id_SourceMME_UE_S1AP_ID,
	                criticality := p_criticality,
	                value_ := {MME_UE_S1AP_ID := valueof(p_value)}
	            } // End of template m_sourceMmeUeS1apId
                
garciay's avatar
garciay committed
                 * @desc Send template for E-RABToBeSetupListBearerSUReq protocol IE
                 * @param p_value  Protocol IE value. Default: m_E_RABToBeSetupItemBearerSUReq
garciay's avatar
garciay committed
                template (value) ProtocolIE m_E_RABToBeSetupList(
                                                                 in template (value) RecordOf_E_RABToBeSetupItemBearerSUReq p_value := { m_E_RABToBeSetupItemBearerSUReq }
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_E_RABToBeSetupListBearerSUReq,
                    criticality := reject,
                    value_ := { RecordOf_E_RABToBeSetupItemBearerSUReq := valueof(p_value) }
                } // End of template m_E_RABToBeSetupList
                /**
                 * @desc Send template for E-RABToBeSetupListCtxtSUReq protocol IE
                 * @param p_value  Protocol IE value. Default: m_E_RABToBeSetupListCtxtSUReq
                 */
                template (value) ProtocolIE m_E_RABToBeSetupListCtxt(
                                                                 in template (value) RecordOf_E_RABToBeSetupItemCtxtSUReq p_value := { m_E_RABToBeSetupItemCtxtSUReq }
                ) := {
                    id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq,
                    criticality := reject,
                    value_ := { RecordOf_E_RABToBeSetupItemCtxtSUReq := valueof(p_value) }
                } // End of template m_E_RABToBeSetupListCtxt
                
                /**
                 * @desc Send template for E-RABToBeSetupListBearerSUReq protocol IE
                 * @param p_value  Protocol IE value. Default: m_E_RABToBeSetupItemBearerSUReq
                 */
                template (value) ProtocolIE m_E_RABToBeSetupListHOReq(
                                                                 in template (value) RecordOf_E_RABToBeSetupItemHOReq p_value := { m_E_RABToBeSetupItemHOReq }
                ) := {
                    id := S1AP_Constants.id_E_RABToBeSetupListHOReq,
                    criticality := reject,
                    value_ := { RecordOf_E_RABToBeSetupItemHOReq := valueof(p_value) }
                } // End of template m_E_RABToBeSetupListHOReq
garciay's avatar
garciay committed
                
                 * @desc Send template for E_RABTAdmitedItemIEs protocol IE
                 * @param p_value  Protocol IE value. Default: E_RABTAdmitedItem
                 */
                template (value) ProtocolIE m_E_RABTAdmitedItemIEs(
                                                                 in template (value) E_RABAdmittedList p_value
                ) := {
                    id := S1AP_Constants.id_E_RABAdmittedList,
                    criticality := reject,
                    value_ := { E_RABAdmittedList := valueof(p_value) }
                } // End of template m_E_RABTAdmitedItemIEs
                
                /**
                 * @desc Send template for E-RABToBeSwitchedDLList protocol IE
                 * @param p_value  Protocol IE value. Default: mw_E_RABToBeSwitchedDLItem
                 */
                template (value) ProtocolIE m_E_RABToBeSwitchedDLList(
                                                                 in template (value) RecordOf_E_RABToBeSwitchedDLItem p_value := { m_E_RABToBeSwitchedDLItem(0,-,-,-) }
                ) := {
                    id := S1AP_Constants.id_E_RABToBeSwitchedDLList,
                    criticality := reject,
                    value_ := { RecordOf_E_RABToBeSwitchedDLItem := valueof(p_value) }
                } // End of template m_E_RABToBeSwitchedDLList
            
                /**
                 * @desc 
                 * @param p_e_RAB_ID
                 */
                template (value) E_RABToBeSwitchedDLItem m_E_RABToBeSwitchedDLItem(
                                                                  in template (value) E_RAB_ID p_e_RAB_ID,
                                                                  in template (value) TransportLayerAddress p_transportLayerAddress := '0'B,
                                                                  in template (value) GTP_TEID p_gTP_TEID := '00000000'O,
                                                                  in template (omit) E_RABToBeSwitchedDLItem.iE_Extensions p_iE_Extensions := omit
                ) :=  {
                     e_RAB_ID                        := valueof(p_e_RAB_ID),
                     transportLayerAddress           := p_transportLayerAddress,
                     gTP_TEID                        := p_gTP_TEID,
                     iE_Extensions                   := p_iE_Extensions
                } // End of template m_E_RABToBeSwitchedDLItem
                
                /**
                 * @desc Send template for E-RABSetupListBearerSURes protocol IE
                 * @param p_value  Protocol IE value. Default: m_E_RABToBeSetupItemBearerSUReq
                 */
                template (value) ProtocolIE m_E_RABSetupList(
                                                                 in template (value) RecordOf_E_RABSetupItemBearerSURes p_value := { m_E_RABSetupItemBearerSURes }
                ) := {
                    id := S1AP_Constants.id_E_RABSetupListBearerSURes,
                    criticality := reject,
                    value_ := { RecordOf_E_RABSetupItemBearerSURes := valueof(p_value) }
                } // End of template m_E_RABSetupList
                /**
                 * @desc Send template for E-RABToBeModifiedItemBearerModReq protocol IE
                 * @param p_value  Protocol IE value. Default: m_E_RABToBeSetupItemBearerSUReq
                 */
                template (value) ProtocolIE m_E_RABToBeModifiedList(
garciay's avatar
garciay committed
                                                                    in template (value) RecordOf_E_RABToBeModifiedItemBearerModReq p_value := { m_E_RABToBeModifiedItemBearerSUReq }
                ) := {
                    id := S1AP_Constants.id_E_RABToBeModifiedItemBearerModReq,
                    criticality := reject,
                    value_ := { RecordOf_E_RABToBeModifiedItemBearerModReq := valueof(p_value) }
                } // End of template m_E_RABToBeSetupList
                
garciay's avatar
garciay committed
                /**
                 * @desc Send template for E-RABToBeModifiedItemBearerModInd protocol IE
                 * @param p_value  Protocol IE value
                 */
                template (value) ProtocolIE m_E_RABToBeModifiedItemBearerModIndList(
                                                                                    in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_value
                ) := {
                    id := S1AP_Constants.id_E_RABToBeModifiedItemBearerModInd,
                    criticality := reject,
                    value_ := { RecordOf_E_RABToBeModifiedItemBearerModInd := valueof(p_value) }
                } // End of template m_E_RABToBeModifiedItemBearerModIndList
garciay's avatar
garciay committed
                /**
                 * @desc Send template for E-RABFailedToResumeItemResumeReq protocol IE
                 * @param p_value  Protocol IE value
                 */
                template (value) ProtocolIE m_E_RABFailedToResumeItemResumeReqList(
                                                                                   in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_value
                ) := {
                    id := S1AP_Constants.id_E_RABFailedToResumeItemResumeReq,
                    criticality := reject,
                    value_ := { RecordOf_E_RABFailedToResumeItemResumeReq := valueof(p_value) }
                } // End of template m_E_RABFailedToResumeItemResumeReqList
                /**
                 * @desc Send template for InitiatingMessage message with E-RABSetup response payload
                 * @param p_value           The procedure code value
                 */
                template (value) InitiatingMessage m_E_RABSetupResponse(
                                                                       in template (value) RecordOf_ProtocolIE p_value) := {
                    procedureCode := id_E_RABSetup,
                    criticality := reject,
                    value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                } // End of template m_E_RABSetupResponse

                        
               /**
                 * @desc Send template for InitiatingMessage message with E-RABModifyInd payload
                 * @param p_value           The procedure code value
                 */
                template (value) InitiatingMessage m_E_RABModifiedInd(
                                                                      in template (value) RecordOf_ProtocolIE p_value) := {
                    procedureCode := id_E_RABModificationIndication,
                    criticality := reject,
                    value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                } // End of template m_E_RABModifiedInd
                        

                /**
                 * @desc Send template for InitiatingMessage message with E-RABModify payload
                 * @param p_value           The protocol information elements.
                 */
                template (value) InitiatingMessage m_E_RABModifiedRequest(
                                                                       in template (value) RecordOf_ProtocolIE p_value) := {
                    procedureCode := id_E_RABModify,
                    criticality := reject,
                    value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                } // End of template m_E_RABModifiedRequest        
                        
               /**
                 * @desc Send template for InitiatingMessage message with E-RABRelease payload
                 * @param p_value           The protocol information elements.
                 */
                template (value) InitiatingMessage m_E_RABReleaseRequest(
                                                                       in template (value) RecordOf_ProtocolIE p_value) := {
                    procedureCode := id_E_RABRelease,
                    criticality := reject,
                    value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                } // End of template m_E_RABRleaseRequest        

                /**
                 * @desc Send template for InitiatingMessage message with E-RABSetup payload
                 * @param p_value           The protocol information elements.
                 */
                template (value) InitiatingMessage m_E_RABSetupRequest(
                                                                       in template (value) RecordOf_ProtocolIE p_value) := {
                    procedureCode := id_E_RABSetup,
                    criticality := reject,
                    value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                } // End of template m_E_RABSetupRequest
                        

                
garciay's avatar
garciay committed
            } // End of group E_RAB_IEsend
            /**
             * @desc Handover signalling group
             * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.4 Handover signalling group
             */
            group Handover_group {
            
                /**
                 * @desc 
                 * @param p_handoverType
                 * @param p_criticality
                 */
                template (value) ProtocolIE m_handoverType_IE(
                    in template (value) HandoverType p_handoverType,
                    in template (value) ProtocolIE.criticality p_criticality := reject
                ) := {
                    id := S1AP_Constants.id_HandoverType,
                    criticality := p_criticality,
                    value_ := { HandoverType := valueof(p_handoverType) }
                } // End of template m_handoverType
            
                /**
                 * @desc 
                 * @param p_value
                 * @param p_criticality
                 */
                template (value) ProtocolIE m_source_ToTarget_TransparentContainer_IE(
                    in template (value) Source_ToTarget_TransparentContainer p_value,
                    in template (value) ProtocolIE.criticality p_criticality := reject
                ) := {
                    id := S1AP_Constants.id_Source_ToTarget_TransparentContainer,
                    criticality := p_criticality,
                    value_ := { Source_ToTarget_TransparentContainer := p_value }
                } // End of template m_source_ToTarget_TransparentContainer_IE
            
                /**
                 * @desc 
                 * @param p_value
                 * @param p_criticality
                 */
                template (value) ProtocolIE m_source_ToTarget_TransparentContainer_2nd_IE(
                    in template (value) Source_ToTarget_TransparentContainer p_value,
                    in template (value) ProtocolIE.criticality p_criticality := reject
                ) := {
                    id := S1AP_Constants.id_Source_ToTarget_TransparentContainer_Secondary,
                    criticality := p_criticality,
                    value_ := { Source_ToTarget_TransparentContainer := p_value }
                } // End of template m_source_ToTarget_TransparentContainer_2nd_IE
                
            
                /**
                 * @desc 
                 * @param p_value
                 * @param p_criticality
                 */
                template (value) ProtocolIE m_target_ToSource_TransparentContainer_IE(
                    in template (value) Target_ToSource_TransparentContainer p_value,
                    in template (value) ProtocolIE.criticality p_criticality := reject
                ) := {
                    id := S1AP_Constants.id_Target_ToSource_TransparentContainer,
                    criticality := p_criticality,
                    value_ := { Target_ToSource_TransparentContainer := p_value }
                } // End of template m_target_ToSource_TransparentContainer_IE
            
                /**
                 * @desc 
                 * @param p_value
                 * @param p_criticality
                 */
                template (value) ProtocolIE m_MSClassmark2_IE(
                    in template (value) MSClassmark2 p_value,
                    in template (value) ProtocolIE.criticality p_criticality := reject
                ) := {
                    id := S1AP_Constants.id_MSClassmark2,
                    criticality := p_criticality,
                    value_ := { MSClassmark2 := p_value }
                } // End of template m_MSClassMark2_IE
 
                /**
                 * @desc 
                 * @param p_value
                 * @param p_criticality
                 */
                template (value) ProtocolIE m_MSClassmark3_IE(
                    in template (value) MSClassmark3 p_value,
                    in template (value) ProtocolIE.criticality p_criticality := ignore
                ) := {
                    id := S1AP_Constants.id_MSClassmark3,
                    criticality := p_criticality,
                    value_ := { MSClassmark3 := p_value }
                } // End of template m_MSClassMark3_IE
                
garciay's avatar
garciay committed
            } // End of group Handover_group
            /**
             * @desc Management group
             * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.7 Management group
             */
            group Management_group {
                
                /**
                 * @desc Send template for ResetType protocol IE 
                 * @param p_value The ResetType value.
                 */
                template (value) ProtocolIE m_resetType_IE(
                                                           in template (value) ResetType p_resetType
                ) := {
                    id := S1AP_Constants.id_ResetType,
                    criticality := reject,
                    value_ := {ResetType := valueof(p_resetType)}
                } // End of template m_resetType_IE
                
                /**
                 * @desc Send template for UE_associatedLogicalS1_ConnectionItem protocol IE 
                 * @param p_value The UE_associatedLogicalS1_ConnectionItem value.
                 */
                template (value) ProtocolIE m_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                                                                             in template (value) UE_associatedLogicalS1_ConnectionItem p_value
                ) := {
                    id := S1AP_Constants.id_UE_associatedLogicalS1_ConnectionItem,
                    criticality := reject,
                    value_ := { UE_associatedLogicalS1_ConnectionItem := valueof(p_value) }
                } // End of template m_uE_associatedLogicalS1_ConnectionItemResAck_IE
                
                /**
                 * @desc Send template for UE_associatedLogicalS1_ConnectionItem protocol IE
                 * @param p_MME_value   MME UE S1AP ID value
garciay's avatar
garciay committed
                 * @param p_eNB_value   eNB UE S1AP ID value
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.1.8.1 RESET
                 */
                template (value) UE_associatedLogicalS1_ConnectionItem m_uE_associatedLogicalS1_ConnectionItem(
                                                                                                               in template (value) MME_UE_S1AP_ID p_MME_value,
garciay's avatar
garciay committed
                                                                                                               in template (value) ENB_UE_S1AP_ID p_eNB_value
                ) := {
                    mME_UE_S1AP_ID  := p_MME_value,
garciay's avatar
garciay committed
                    eNB_UE_S1AP_ID  := p_eNB_value,
                    iE_Extensions   := omit
                } // End of template m_uE_associatedLogicalS1_ConnectionItem
                
garciay's avatar
garciay committed
                /**
                 * @desc Send template for Global eNB ID protocol IE
                 * @param p_global_ENB_ID The Global eNB ID value
                 */
                template (value) ProtocolIE m_global_eNB_ID_IE(
                                                               in template (value) Global_ENB_ID p_global_ENB_ID
                ) := {
                    id := S1AP_Constants.id_Global_ENB_ID,
                    criticality := ignore,
                    value_ := { Global_ENB_ID := valueof(p_global_ENB_ID) }
                } // End of template m_global_eNB_ID_IE
                
                /**
                 * @desc Send template for SupportedTAs protocol IE 
                 * @param p_value The SupportedTAs value.
                 */
                template (value) ProtocolIE m_supportedTAs_IE(
                                                              in template (value) SupportedTAs p_value
                ) := {
                    id := S1AP_Constants.id_SupportedTAs,
                    criticality := reject,
                    value_ := {SupportedTAs := valueof(p_value)}
                } // End of template m_supportedTAs_IE
                
                /**
                 * @desc Send template for PagingDRX protocol IE 
                 * @param p_value The PagingDRX value.
                 */
                template (value) ProtocolIE m_pagingDRX_IE(
                                                           in template (value) PagingDRX p_value
                ) := {
                    id := S1AP_Constants.id_pagingDRX,
                    criticality := reject,
                    value_ := {PagingDRX := valueof(p_value)}
                } // End of template m_pagingDRX_IE
                
                /**
                 * @desc Send template for the list of globally unique MME identity.
                 * @param p_value   The list of the unique MME identities
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.9 GUMMEI
                 */
                template (value) ProtocolIE m_servedGUMMEIs_IE(
                                                               in template (value) ServedGUMMEIs p_value
                ) := {
                    id := S1AP_Constants.id_ServedGUMMEIs,
                    criticality := reject,
                    value_ := { ServedGUMMEIs := valueof(p_value) }
                } // End of template m_servedGUMMEIs_IE
                
                /**
                 * @desc Send template for the list of the relative processing capacity of an MME.
                 * @param p_value   The list of the relative processing capacity of an MME
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.17 Relative MME Capacity
                 */
                template (value) ProtocolIE m_relativeMMECapacity_IE(
                                                                     in template (value) RelativeMMECapacity p_value
                ) := {
                    id := S1AP_Constants.id_RelativeMMECapacity,
                    criticality := ignore,
                    value_ := { RelativeMMECapacity := valueof(p_value) }
                } // End of template m_relativeMMECapacity_IE
                
            /**
             * @desc Send template for Cause protocol IE
             * @param p_criticalityDiagnostics  Information about which IEs were not comprehended or were missing.
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.3 Cause
             */
            template (value) ProtocolIE m_criticalityDiagnostics_IE(
                                                                    in template (value) CriticalityDiagnostics p_criticalityDiagnostics,
                                                                    in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_CriticalityDiagnostics,
                criticality := p_criticality,
                value_ := {CriticalityDiagnostics := valueof(p_criticalityDiagnostics)}
            } // End of template m_criticalityDiagnostics_IE
            
            } // End of group Management_group
            
garciay's avatar
garciay committed
             * @desc Warning message transmission group
             * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.10  Trace group
garciay's avatar
garciay committed
            group Trace_group {
garciay's avatar
garciay committed
                 * @desc Send template for Trace Activation
                 * @param p_traceActivation Trace Activation value
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.4 Trace Activation
garciay's avatar
garciay committed
                template (value) ProtocolIE m_traceActivation_IE(
                                                                 in template (value) TraceActivation p_traceActivation
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_TraceActivation,
                    criticality := reject,
                    value_ := {TraceActivation := valueof(p_traceActivation)}
                } // End of template m_traceActivation_IE
garciay's avatar
garciay committed
                 * @desc Send template for E-UTRAN Trace ID
                 * @param p_eUTRAN_Trace_ID E-UTRAN Trace ID value
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.4 Trace Activation
garciay's avatar
garciay committed
                template (value) ProtocolIE m_eUTRAN_Trace_ID_IE(
                                                                 in template (value) E_UTRAN_Trace_ID p_eUTRAN_Trace_ID
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_E_UTRAN_Trace_ID,
                    criticality := reject,
                    value_ := {E_UTRAN_Trace_ID := valueof(p_eUTRAN_Trace_ID)}
                } // End of template m_eUTRAN_Trace_ID_IE
garciay's avatar
garciay committed
            } // End of group Trace_group
garciay's avatar
garciay committed
             * @desc Warning message transmission group
             * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.11  Location reporting group
garciay's avatar
garciay committed
            group Location_reporting_group {
garciay's avatar
garciay committed
                 * @desc Send template for RequestType
                 * @param p_request_Type Request Type value
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.34 RequestType
garciay's avatar
garciay committed
                template (value) ProtocolIE m_request_Type_IE(
                                                              in template (value) RequestType p_request_Type
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_RequestType,
                    criticality := reject,
                    value_ := { RequestType := valueof(p_request_Type) }
                } // End of template m_request_Type_IE
garciay's avatar
garciay committed
            } // End of group Location_reporting_group
            
            group Warning_Message_Transmission {
garciay's avatar
garciay committed
                 * @desc Send template for MessageIdentifier IE
                 * @param p_message_Identifier The message identifier value
                 * @see ETSI TS 136 413 Clause 9.2.1.44 Message Identifier
garciay's avatar
garciay committed
                template (value) ProtocolIE m_message_Identifier(
                                                                 in MessageIdentifier p_message_Identifier
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_MessageIdentifier,
                    criticality := reject,
                    value_ := { MessageIdentifier := p_message_Identifier }
                } // End of template m_message_Identifier
garciay's avatar
garciay committed
                 * @desc Send template for SerialNumber IE
                 * @param p_serial_Number The serial number value
                 * @see ETSI TS 136 413 Clause 9.2.1.45 Serial Number
garciay's avatar
garciay committed
                template (value) ProtocolIE m_serial_Number(
                                                            in SerialNumber p_serial_Number
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_SerialNumber,
                    criticality := reject,
                    value_ := { SerialNumber := p_serial_Number }
                } // End of template m_serial_Number
garciay's avatar
garciay committed
                
                /**
garciay's avatar
garciay committed
                 * @desc Send template for SerialNumber IE
                 * @param p_serial_Number The serial number value
                 * @see ETSI TS 136 413 Clause 9.2.1.46 Warning Area List
garciay's avatar
garciay committed
                 */
garciay's avatar
garciay committed
                template (value) ProtocolIE m_warning_Area_List(
                                                                in template (value) WarningAreaList p_warningAreaList
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_WarningAreaList,
                    criticality := ignore,
                    value_ := { WarningAreaList := p_warningAreaList }
                } // End of template m_warning_Area_List
garciay's avatar
garciay committed
                
                /**
garciay's avatar
garciay committed
                 * @desc Send template for The Repetition Period IE
                 * @param p_repetition_Period The repetition period value
                 * @see ETSI TS 136 413 Clause 9.2.1.48 Repetition Period
garciay's avatar
garciay committed
                 */
garciay's avatar
garciay committed
                template (value) ProtocolIE m_repetition_Period(
                                                                in RepetitionPeriod p_repetition_Period
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_RepetitionPeriod,
                    criticality := reject,
                    value_ := { RepetitionPeriod := p_repetition_Period }
                } // End of template m_repetition_Period
garciay's avatar
garciay committed
                
                /**
garciay's avatar
garciay committed
                 * @desc Send template for SerialNumber IE
                 * @param p_number_of_Broadcasts_Requested The number of Broadcasts Requested
                 * @see ETSI TS 136 413 Clause 9.2.1.49 Number of Broadcasts Requested
garciay's avatar
garciay committed
                 */
garciay's avatar
garciay committed
                template (value) ProtocolIE m_number_of_Broadcasts_Requested(
                                                                             in NumberOfBroadcasts p_number_of_Broadcasts_Requested
garciay's avatar
garciay committed
                    id := S1AP_Constants.id_NumberofBroadcastRequest,
garciay's avatar
garciay committed
                    criticality := reject,
garciay's avatar
garciay committed
                    value_ := { NumberOfBroadcasts := p_number_of_Broadcasts_Requested }
                } // End of template m_number_of_Broadcasts_Requested
garciay's avatar
garciay committed
                
garciay's avatar
garciay committed
            } // End of group Warning_Message_Transmission
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            group Unknown_unforseen_errorneous_group {
                
                /**
                 * @desc Send template for CriticalityDiagnostics IE
                 * @param p_number_of_Broadcasts_Requested The number of Broadcasts Requested
                 * @see ETSI TS 136 413 Clause 9.2.1.21 Criticality Diagnostics
                 */
                template (value) CriticalityDiagnostics m_criticalityDiagnostics(
                                                                                 in template (value) ProcedureCode p_procedureCode,
                                                                                 in template (value) TriggeringMessage p_triggeringMessage,
                                                                                 in template (value) Criticality p_procedureCriticality
                ) := {
                    procedureCode               := p_procedureCode,
                    triggeringMessage           := p_triggeringMessage,
                    procedureCriticality        := p_procedureCriticality,
                    iEsCriticalityDiagnostics   := omit,
                    iE_Extensions               := omit
                } // End of template m_criticalityDiagnostics
                
            } // End of group Unknown_unforseen_errorneous_group
            
garciay's avatar
garciay committed
        } // End of group Send_IEs
        
        group Receive_IEs{
            
            /**
garciay's avatar
garciay committed
             * @desc Receive template for MME UE S1AP ID protocol IE
             * @param p_value  Expected MME/UE S1AP identifier. Default: ?
garciay's avatar
garciay committed
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.3 MME UE S1AP ID
garciay's avatar
garciay committed
             */
pintar's avatar
pintar committed
            template (present) ProtocolIE mw_MME_UE_S1AP_ID(
                                                            template (present) MME_UE_S1AP_ID p_parm := ?,
                                                            template (present) ProtocolIE.criticality p_criticality := reject
garciay's avatar
garciay committed
            ) := {
                id := S1AP_Constants.id_MME_UE_S1AP_ID,
pintar's avatar
pintar committed
                criticality := p_criticality,
garciay's avatar
garciay committed
                value_ := {MME_UE_S1AP_ID := p_parm}
pintar's avatar
pintar committed
            } // End of template mw_MME_UE_S1AP_ID
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Receive template for ENB ID protocol IE
             * @param p_value  Expected ENB identifier. Default: ?
garciay's avatar
garciay committed
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.4 eNB UE S1AP ID
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_eNB_UE_S1AP_ID(
                                                            template (present) ENB_UE_S1AP_ID p_parm := ?,
                                                            template (present) ProtocolIE.criticality p_criticality := reject
garciay's avatar
garciay committed
            ) := {
                id := S1AP_Constants.id_eNB_UE_S1AP_ID,
pintar's avatar
pintar committed
                criticality := p_criticality,
garciay's avatar
garciay committed
                value_ := {ENB_UE_S1AP_ID := p_parm}
garciay's avatar
garciay committed
            } // End of template mw_eNB_UE_S1AP_ID
garciay's avatar
garciay committed
            
            /**
             * @desc Receive template for MME UE S1AP ID protocol IE
             * @param p_value  Expected MME/UE S1AP identifier. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.3 MME UE S1AP ID
             */
            template (present) ProtocolIE mw_sourceMmeUeS1apId(
                                                            template (present) MME_UE_S1AP_ID p_parm := ?,
                                                            template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_SourceMME_UE_S1AP_ID,
                criticality := p_criticality,
                value_ := {MME_UE_S1AP_ID := p_parm}
            } // End of template mw_sourceMmeUeS1apId
            
            template (present) ProtocolIE mw_E_RABReleaseList(
                                                                    template (present) RecordOf_E_RABItem p_value := { ? }
            ) := {
                id := S1AP_Constants.id_E_RABToBeReleasedList,
                criticality := ignore,
                value_ := { RecordOf_E_RABItem := p_value }
            } // End of template mw_E_RABReleaseList
            
            template (present) ProtocolIE mw_E_RABModifyList(
                                                                    template (present) RecordOf_E_RABItem p_value := { ? }
            ) := {
                id := S1AP_Constants.id_E_RABToBeReleasedList,
                criticality := ignore,
                value_ := { RecordOf_E_RABItem := p_value }
            } // End of template mw_E_RABModifyList            
            
garciay's avatar
garciay committed
            /**
pintar's avatar
pintar committed
             * @desc Receive template for E-RABSetupListBearerSUReq protocol IE
             * @param p_value  Expected protocol IE value. Default: mw_E_RABToBeSetupItemBearerSUReq
garciay's avatar
garciay committed
             */
pintar's avatar
pintar committed
            template (present) ProtocolIE mw_E_RABSetupList(
                                                            template (present) RecordOf_E_RABSetupItemBearerSURes p_value := { mw_E_RABSetupItemBearerSURes }
            ) := {
garciay's avatar
garciay committed
                id := S1AP_Constants.id_E_RABSetupListBearerSURes,
                criticality := ignore,
                value_ := { RecordOf_E_RABSetupItemBearerSURes := p_value }
            } // End of template 
            /**
             * @desc Receive template for E-RABSetupListCtxtSUReq protocol IE
             * @param p_value  Expected protocol IE value. Default: mw_E_RABToBeSetupItemCtxtSU
             */
            template (present) ProtocolIE mw_E_RABSetupListCtxt(
                                                            template (present) RecordOf_E_RABToBeSetupItemCtxtSUReq p_value := { mw_E_RABToBeSetupItemCtxtSUReq }
            ) := {
                id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq,
                criticality := ignore,
                value_ := { RecordOf_E_RABToBeSetupItemCtxtSUReq := p_value }
            } // End of template 
            /**
             * @desc Receive template for E-RABToBeSetupListBearerSUReq protocol IE
             * @param p_value  Protocol IE value. Default: mw_E_RABToBeSetupItemBearerSUReq
             */
            template (present) ProtocolIE mw_E_RABToBeSetupList(
                                                             template (present) RecordOf_E_RABToBeSetupItemBearerSUReq p_value := { mw_E_RABToBeSetupItemBearerSUReq }
            ) := {
                id := S1AP_Constants.id_E_RABToBeSetupListBearerSUReq,
                criticality := reject,
                value_ := { RecordOf_E_RABToBeSetupItemBearerSUReq := p_value }
            } // End of template mw_E_RABToBeSetupList
            /**
             * @desc Receive template for E-RABToBeSetupListCtxtSUReq protocol IE
             * @param p_value  Protocol IE value. Default: mw_E_RABToBeSetupItemCtxtSUReq
             */
            template (present) ProtocolIE mw_E_RABToBeSetupCtxtList(
                                                             template (present) RecordOf_E_RABToBeSetupItemCtxtSUReq p_value := { mw_E_RABToBeSetupItemCtxtSUReq }
            ) := {
                id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq,
                criticality := reject,
                value_ := { RecordOf_E_RABToBeSetupItemCtxtSUReq := p_value }
            } // End of template mw_E_RABToBeSetupCtxtList
                
            /**
             * @desc Send template for E-RABToBeSetupListHOReq protocol IE
             * @param p_value  Protocol IE value. Default: mw_E_RABToBeSetupItemHOReq
             */
            template (present) ProtocolIE mw_E_RABToBeSetupListHOReq(
                                                             template (present) RecordOf_E_RABToBeSetupItemHOReq p_value := { mw_E_RABToBeSetupItemHOReq }
            ) := {
                id := S1AP_Constants.id_E_RABToBeSetupListHOReq,
                criticality := reject,
                value_ := { RecordOf_E_RABToBeSetupItemHOReq := p_value }
            } // End of template mw_E_RABToBeSetupListHOReq
            /**
             * @desc Receive template for E-RABModifiedListBearerModReq protocol IE
             * @param p_value  Expected protocol IE value. Default: m_E_RABToBeSetupItemBearerSUReq
             */
            template (present) ProtocolIE mw_E_RABModifiedList(
                                                            template (present) RecordOf_E_RABModifyItemBearerModRes p_value := { mw_E_RABModifyItemBearerModRes }
            ) := {
                id := S1AP_Constants.id_E_RABModifyListBearerModRes,
                criticality := ignore,
                value_ := { RecordOf_E_RABModifyItemBearerModRes := p_value }
            } // End of template 
rennoch's avatar
rennoch committed

            /**
             * @desc Receive template for E-RABModifiedListBearerModReq protocol IE
             * @param p_value  Expected protocol IE value. Default: m_E_RABToBeModifyItemBearerSUReq
             */
            template (present) ProtocolIE mw_E_RABToBeModifiedList(
                                                            template (present) RecordOf_E_RABToBeModifiedItemBearerModReq p_value := { ? }
            ) := {
                id := S1AP_Constants.id_E_RABToBeModifiedListBearerModReq,
                criticality := reject,
                value_ := { RecordOf_E_RABToBeModifiedItemBearerModReq := p_value }
            } // End of template 
pintar's avatar
pintar committed
            template (present) ProtocolIE mw_E_RABFailedToSetupList(
                                                                    template (present) RecordOf_E_RABItem p_value := { ? }
            ) := {
garciay's avatar
garciay committed
                id := S1AP_Constants.id_E_RABFailedToSetupListBearerSURes,
                criticality := ignore,
                value_ := { RecordOf_E_RABItem := p_value }
pintar's avatar
pintar committed
            } // End of template mw_E_RABFailedToSetupList
            /**
             * @desc Receive template for E-RABAdmittedList protocol IE
             * @param p_value  Expected protocol IE value. Default: mw_E_RABAdmittedItem
             */
            template (present) ProtocolIE mw_E_RABAdmittedList(
                                                            template (present) RecordOf_E_RABAdmittedItem p_value := { mw_E_RABAdmittedItem }
            ) := {
                id := S1AP_Constants.id_E_RABAdmittedList,
                criticality := ignore,
                value_ := { RecordOf_E_RABAdmittedItem := p_value }
            } // End of template mw_E_RABAdmittedList
 
            /**
             * @desc Receive template for E-RABToBeSwitchedDLList protocol IE
             * @param p_value  Protocol IE value. Default: mw_E_RABToBeSwitchedDLItem
             */
            template (present) ProtocolIE mw_E_RABToBeSwitchedDLList(
                                                             template (present) RecordOf_E_RABToBeSwitchedDLItem p_value := { mw_E_RABToBeSwitchedDLItem }
            ) := {
                id := S1AP_Constants.id_E_RABToBeSwitchedDLList,
                criticality := reject,
                value_ := { RecordOf_E_RABToBeSwitchedDLItem := p_value }
            } // End of template mw_E_RABToBeSwitchedDLList
    
            /**
                 * @desc Receive template for CSG protocol IE
                 * @param p_value  Protocol IE value. Default: ?
                 */        
            template (present) ProtocolIE mw_CSG_Id_IE(
                                       in template (present) CSG_Id p_value,
                                       in template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_CSG_Id,
                criticality := p_criticality,
                value_ := {CSG_Id := p_value}
            } // End of template mw_CSG_Id_IE
    
            /**
                 * @desc Receive template for CellAccessMode protocol IE
                 * @param p_value  Protocol IE value. Default: ?
                 */        
            template (present) ProtocolIE mw_CellAccessMode_IE(
                           in template (present) CellAccessMode p_value,
                           in template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_CellAccessMode,
                criticality := p_criticality,
                value_ := {CellAccessMode := p_value}
            } // End of template mw_CellAccessMode_IE
            
            /**
             * @desc Receive template for UE aggregate maxmum bitrate IE
             * @param p_value  UEAggregateMaximumBitrate value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.20 UEAggregateMaximumBitrate
             */
            template ProtocolIE mw_UE_aggregate_maximum_bitrate_IE(
                                                   template (present) UEAggregateMaximumBitrate p_value
            ) := {
                id := S1AP_Constants.id_uEaggregateMaximumBitrate,
                criticality := reject,
                value_ := {UEAggregateMaximumBitrate := p_value}
            } // End of template mw_UE_aggregate_maximum_bitrate_IE
garciay's avatar
garciay committed
            /**
             * @desc Receive template for ResetType protocol IE 
             * @param p_value The ResetType value. Default: ?
             */
            template (present) ProtocolIE mw_resetType_IE(
                                                          template (present) ResetType p_resetType := ?
            ) := {
                id := S1AP_Constants.id_ResetType,
                criticality := reject,
                value_ := {ResetType := p_resetType}
            } // End of template mw_resetType_IE
garciay's avatar
garciay committed
            /**
             * @desc Receive template for the list of globally unique MME identity.
             * @param p_value   The list of the unique MME identities. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.9 GUMMEI
             */
            template (present) ProtocolIE mw_servedGUMMEIs_IE(
                                                              template (present) ServedGUMMEIs p_value := ?
            ) := {
                id := S1AP_Constants.id_ServedGUMMEIs,
                criticality := reject,
                value_ := { ServedGUMMEIs := p_value }
            } // End of template mw_servedGUMMEIs_IE
            
            /**
             * @desc Receive template for the list of the relative processing capacity of an MME.
             * @param p_value   The list of the relative processing capacity of an MME. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.17 Relative MME Capacity
             */
            template (present) ProtocolIE mw_relativeMMECapacity_IE(
                                                                    template (present) RelativeMMECapacity p_value := ?
            ) := {
                id := S1AP_Constants.id_RelativeMMECapacity,
                criticality := ignore,
                value_ := { RelativeMMECapacity := p_value }
            } // End of template mw_relativeMMECapacity_IE
            
            /**
             * @desc Receive template for NAS-PDU
             * @param p_nasPDU The expected NAS-PDU value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.5 NAS-PDU
             */
            template (present) ProtocolIE mw_nAS_Pdu_IE(
                                                        template (present) octetstring p_nasPDU := ?
            ) := {
                id := S1AP_Constants.id_NAS_PDU,
                criticality := reject,
                value_ := {octetstring := p_nasPDU}
            } // End of template mw_nAS_Pdu_IE
            
garciay's avatar
garciay committed
            /**
             * @desc Receive template for SupportedTAs protocol IE 
             * @param p_value The SupportedTAs value. Default: ?
             */
            template (present) ProtocolIE mw_supportedTAs_IE(
                                                             template (present) SupportedTAs p_value := ?
            ) := {
                id := S1AP_Constants.id_SupportedTAs,
                criticality := reject,
                value_ := {SupportedTAs := p_value}
            } // End of template mw_supportedTAs_IE
            
            /**
             * @desc Receive template for PagingDRX protocol IE 
             * @param p_value The PagingDRX value. Default: ?
             */
            template (present) ProtocolIE mw_pagingDRX_IE(
                                                             template (present) PagingDRX p_value := ?
            ) := {
                id := S1AP_Constants.id_pagingDRX,
                criticality := reject,
                value_ := {PagingDRX := p_value}
            } // End of template mw_pagingDRX_IE
            
            /**
             * @desc Receive template for Overload Response protocol IE 
             * @param p_value The required behaviour of the eNB in an overload situation value. Default: ?
             */
            template (present) ProtocolIE mw_overloadResponse_IE(
                                                                 template (present) OverloadResponse p_value := ?
            ) := {
                id := S1AP_Constants.id_OverloadResponse,
                criticality := reject,
                value_ := {OverloadResponse := p_value}
            } // End of template mw_overloadResponse_IE
            
            /**
             * @desc Receive template for UE_associatedLogicalS1_ConnectionItem protocol IE 
             * @param p_value The UE_associatedLogicalS1_ConnectionItem value. Default: ?
             */
            template (present) ProtocolIE mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                                                                            template (present) UE_associatedLogicalS1_ConnectionItem p_value := ?
            ) := {
                id := S1AP_Constants.id_UE_associatedLogicalS1_ConnectionItem,
                criticality := reject,
                value_ := { UE_associatedLogicalS1_ConnectionItem := p_value }
            } // End of template mw_uE_associatedLogicalS1_ConnectionItemResAck_IE
            /**
             * @desc Receive template for UEIdentityIndexValue protocol IE 
             * @param p_value The expected UE Identity Index value IE is used by the eNB to calculate the Paging Frame TS 36.304. Default: ?
             */
            template (present) ProtocolIE mw_uEIdentityIndexValue_IE(
                                                                     template (present) UEIdentityIndexValue p_value := ?
            ) := {
                id := S1AP_Constants.id_UEIdentityIndexValue,
                criticality := ignore,
                value_ := { UEIdentityIndexValue := p_value }
            } // End of template mw_uEIdentityIndexValue_IE
            
            /**
             * @desc Receive template for UEPagingID protocol IE 
             * @param p_value The expected Identity with which the UE is paged. Default: ?
             */
            template (present) ProtocolIE mw_uEPagingID_IE(
                                                           template (present) UEPagingID p_value := ?
            ) := {
                id := S1AP_Constants.id_UEPagingID,
                criticality := ignore,
                value_ := { UEPagingID := p_value }
            } // End of template mw_uEPagingID_IE
            
            /**
             * @desc Receive template for CNDomain protocol IE 
             * @param p_value The expected CN Domain. Default: ?
             */
            template (present) ProtocolIE mw_cNDomain_IE(
                                                         template (present) CNDomain p_value := ?
            ) := {
                id := S1AP_Constants.id_CNDomain,
                criticality := ignore,
                value_ := { CNDomain := p_value }
            } // End of template mw_cNDomain_IE
            
            /**
             * @desc Receive template for GUMMEIList protocol IE 
             * @param p_gUMMEIList The GUMMEIList value. Default: ?
             */
            template (present) ProtocolIE mw_gUMMEIList_IE(
                                                           template (present) GUMMEIList p_gUMMEIList := ?
            ) := {
                id := S1AP_Constants.id_GUMMEIList,
                criticality := ignore,
                value_ := { GUMMEIList := p_gUMMEIList }
            } // End of template mw_gUMMEIList_IE
            
            /**
             * @desc Receive template for TAI protocol IE 
             * @param p_tAI The TAI value. Default: ?
             */
            template (present) ProtocolIE mw_tAIs_IE(
                                                     template (present) TAIList p_tAIs := ?
            ) := {
                id := S1AP_Constants.id_TAIList,
                criticality := ignore,
                value_ := { TAIList := p_tAIs }
            } // End of template mw_tAs_IE
            
            /**
             * @desc Receive template for TAI protocol IE 
             * @param p_tAI The TAI value. Default: ?
             */
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_tAI_IE(
garciay's avatar
garciay committed
                                                    template (present) TAI p_tAI := ?
garciay's avatar
garciay committed
                id := S1AP_Constants.id_TAI,
                criticality := ignore,
                value_ := { TAI := p_tAI }
garciay's avatar
garciay committed
            } // End of template mw_tAI_IE
            /**
             * @desc Receive template for Global eNB ID protocol IE
             * @param p_global_ENB_ID The Global eNB ID value. Default: ?
             */
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_global_eNB_ID_IE(
garciay's avatar
garciay committed
                                                              template (present) Global_ENB_ID p_global_ENB_ID := ?
garciay's avatar
garciay committed
                id := S1AP_Constants.id_Global_ENB_ID,
                criticality := ignore,
                value_ := { Global_ENB_ID := p_global_ENB_ID }
garciay's avatar
garciay committed
            } // End of template mw_global_eNB_ID_IE
            /**
             * @desc Receive template for the list of E-RABs Subject to Forwarding protocol IE
             * @param p_eRABDataForwardingItem The list of E-RABs Subject to Forwarding. Default: ?
             */
            template (present) ProtocolIE mw_eRABDataForwardingItem_IE(
                                                                       template (present) RecordOf_E_RABDataForwardingItem p_eRABDataForwardingItems := ?
            ) := {
                id := S1AP_Constants.id_E_RABDataForwardingItem,
                criticality := ignore,
                value_ := { RecordOf_E_RABDataForwardingItem := p_eRABDataForwardingItems}
            } // End of template mw_eRABDataForwardingItem_IE
            
garciay's avatar
garciay committed
             * @desc Receive template for E-UTRAN CGI protocol IE
             * @param p_eUTRAN_CGI  Expected E-UTRAN CGI value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.38 E-UTRAN CGI
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_eUTRAN_CGI_IE(
                                                           template (present) EUTRAN_CGI p_eUTRAN_CGI := ?
garciay's avatar
garciay committed
                id := S1AP_Constants.id_EUTRAN_CGI,
                criticality := reject,
                value_ := {EUTRAN_CGI := p_eUTRAN_CGI}
            } // End of template mw_eUTRAN_CGI_IE
garciay's avatar
garciay committed
             * @desc Receive template for E-UTRAN Trace ID protocol IE
             * @param p_eUTRAN_CGI  Expected E-UTRAN Trace ID value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.1.11.2 TRACE FAILURE INDICATION
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_eUTRAN_Trace_ID_IE(
                                                                template (present) E_UTRAN_Trace_ID p_eUTRAN_Trace_ID := ?
garciay's avatar
garciay committed
                id := S1AP_Constants.id_E_UTRAN_Trace_ID,
                criticality := reject,
                value_ := {E_UTRAN_Trace_ID := p_eUTRAN_Trace_ID}
            } // End of template mw_eUTRAN_Trace_ID_IE
garciay's avatar
garciay committed
             * @desc Receive template for Type Request protocol IE
             * @param p_request_Type  Expected RequestType value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.34 Request Type
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_request_Type_IE(
                                                             template (present) RequestType p_request_Type := ?
garciay's avatar
garciay committed
                id := S1AP_Constants.id_RequestType,
                criticality := reject,
                value_ := {RequestType := p_request_Type}
            } // End of template mw_request_Type_IE
garciay's avatar
garciay committed
             * @desc Receive template for Cause protocol IE
             * @param p_cause  Expected Cause value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.3 Cause
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_cause_IE(
garciay's avatar
garciay committed
                                                      template (present) Cause p_cause := ?,
                                                      template (present) ProtocolIE.criticality p_criticality := ignore
garciay's avatar
garciay committed
                id := S1AP_Constants.id_Cause,
garciay's avatar
garciay committed
                criticality := p_criticality,
garciay's avatar
garciay committed
                value_ := {Cause := p_cause}
            } // End of template mw_cause_IE
            /**
             * @desc Receive template for TargetID protocol IE
             * @param p_TargetID  Expected Target value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.6 Cause
             */
            template (present) ProtocolIE mw_TargetID_IE(
                                                      template (present) TargetID p_TargetID := ?,
                                                      template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_TargetID,
                criticality := p_criticality,
                value_ := {TargetID := p_TargetID}
            } // End of template mw_TargetID_IE
            
            /**
             * @desc Receive template for SRVCCHOIndication protocol IE
             * @param p_SRVCCHOIndication  Expected SRVCCHOIndication value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.59
             */
            template (present) ProtocolIE mw_SRVCCHOIndication_IE(
                template (present) SRVCCHOIndication p_SRVCCHOIndication := ?,
                template (present) ProtocolIE.criticality p_criticality := reject
			) := {
			    id := S1AP_Constants.id_SRVCCHOIndication,
			    criticality := p_criticality,
			    value_ := {SRVCCHOIndication := p_SRVCCHOIndication}
			} // End of template mw_SRVCCHOIndication_IE
            
            
garciay's avatar
garciay committed
            /**
             * @desc Receive template for Cause protocol IE
             * @param p_cause  Expected Cause value. Default: ?
garciay's avatar
garciay committed
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.21 Criticality Diagnostics
garciay's avatar
garciay committed
             */
            template (present) ProtocolIE mw_criticalityDiagnostics_IE(
                                                                       template (present) CriticalityDiagnostics p_criticalityDiagnostics := ?,
                                                                       template (present) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_CriticalityDiagnostics,
                criticality := p_criticality,
                value_ := {CriticalityDiagnostics := p_criticalityDiagnostics}
            } // End of template mw_criticalityDiagnostics_IE
            
            /**
             * @desc Receive template for CDMA2000-PDU
             * @param p_cdma2000PDU The expected CDMA2000-PDU value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.23 CDMA2000-PDU
             */
            template (present) ProtocolIE mw_cdma2000_Pdu_IE(
                                                             template (present) octetstring p_cdma2000PDU := ?
            ) := {
                id := S1AP_Constants.id_cdma2000PDU,
                criticality := reject,
                value_ := {octetstring := p_cdma2000PDU}
            } // End of template mw_cdma2000_Pdu_IE
            
            /**
             * @desc Receive template for CDMA2000 RAT Type
             * @param p_traceActivation The expected CDMA2000-PDU value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.24 CDMA2000 RAT Type. Default: ?
             */
            template (present) ProtocolIE mw_cdma2000_RAT_Type_IE(
                                                                  template (present) Cdma2000RATType p_cdma2000RATType := ?
            ) := {
                id := S1AP_Constants.id_cdma2000RATType,
                criticality := reject,
                value_ := {Cdma2000RATType := p_cdma2000RATType}
            } // End of template mw_cdma2000_RAT_Type_IE
            
            /**
             * @desc Receive template for CDMA2000-SectorId
             * @param p_traceActivation The expected CDMA2000-SectorId value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.23 CDMA2000-SectorId. Default: ?
             */
            template (present) ProtocolIE mw_cdma2000_SectorId_IE(
                                                                  template (present) octetstring p_cdma2000SectorId := ?
            ) := {
                id := S1AP_Constants.id_cdma2000SectorID,
                criticality := reject,
                value_ := {octetstring := p_cdma2000SectorId}
            } // End of template mw_cdma2000_SectorId_IE
            
            /**
             * @desc Receive template for E Radio Capability
             * @param p_traceActivation The expected E Radio Capability value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.27 UE Radio Capability. Default: ?
             */
            template (present) ProtocolIE mw_ueRadioCapability_IE(
                                                                  template (present) octetstring p_ueRadioCapability := ?
            ) := {
                id := S1AP_Constants.id_UERadioCapability,
                criticality := reject,
                value_ := {octetstring := p_ueRadioCapability}
            } // End of template mw_ueRadioCapability_IE
            
            /**
             * @desc Receive template for CDMA2000 RAT Type
             * @param p_traceActivation The expected CDMA2000-PDU value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.28 CDMA2000 HO Status. Default: ?
             */
            template (present) ProtocolIE mw_cdma2000_HO_Status_IE(
                                                                   template (present) Cdma2000HOStatus p_cdma2000HOStatus := ?
            ) := {
                id := S1AP_Constants.id_cdma2000HOStatus,
                criticality := reject,
                value_ := {Cdma2000HOStatus := p_cdma2000HOStatus}
            } // End of template mw_cdma2000_HO_Status_IE
            
            /**
             * @desc Receive template for CDMA2000 RAT Type
             * @param p_traceActivation The expected CDMA2000-PDU value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.29 CDMA2000 HO Required Indication. Default: ?
             */
            template (present) ProtocolIE mw_cdma2000_Required_Indication_IE(
                                                                             template (present) Cdma2000HORequiredIndication p_cdma2000HORequiredIndication := ?
            ) := {
                id := S1AP_Constants.id_cdma2000HORequiredIndication,
                criticality := reject,
                value_ := {Cdma2000HORequiredIndication := p_cdma2000HORequiredIndication}
            } // End of template mw_cdma2000_Required_Indication_IE
            
garciay's avatar
garciay committed
             * @desc Receive template for Trace Activation
             * @param p_traceActivation The expected Trace Activation value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.4 Trace Activation
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_traceActivation_IE(
                                                                template (present) TraceActivation p_traceActivation := ?
garciay's avatar
garciay committed
                id := S1AP_Constants.id_TraceActivation,
                criticality := reject,
                value_ := {TraceActivation := p_traceActivation}
            } // End of template mw_traceActivation_IE
garciay's avatar
garciay committed
             * @desc Receive template for Deactivate Trace
             * @param p_traceActivation The expected Trace Deactivate Trace. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.1.11.3 DEACTIVATE TRACE
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_deactivateTrace_IE(
                                                                template (present) DeactivateTrace p_deactivateTrace := ?
garciay's avatar
garciay committed
                id := S1AP_Constants.id_DeactivateTrace,
                criticality := reject,
                value_ := {DeactivateTrace := p_deactivateTrace}
            } // End of template mw_deactivateTrace_IE
            /**
             * @desc  Receive template for Transport Layer Address
             * @param p_transportLayerAddress  Transport Layer Address value. Default: ?.
             */
            template (present) ProtocolIE mw_transportLayerAddress_IE(
                                                                      template (present) bitstring p_transportLayerAddress := ?
            ) := {
                id := S1AP_Constants.id_TraceCollectionEntityIPAddress,
                criticality := reject,
                value_ := { bitstring := p_transportLayerAddress }
            } // End of template mw_transportLayerAddress_IE
            
            /**
             * @desc Receive template for LPPa-PDU
garciay's avatar
garciay committed
             * @param p_value The expected Routing ID value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.32 LPPa-PDU
            template (present) ProtocolIE mw_LPPa_PDU_IE(
                                                         template (present) octetstring p_value := ?
            ) := {
                id := S1AP_Constants.id_LPPa_PDU,
                criticality := ignore,
                value_ := { LPPa_PDU := p_value }
            } // End of template mw_LPPa_PDU_IE
garciay's avatar
garciay committed
             * @param p_value The expected Routing ID value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.33 Routing ID
garciay's avatar
garciay committed
            template (present) ProtocolIE mw_routing_ID_IE(
                                                           template (present) UInt8 p_value := ?
            ) := {
                id := S1AP_Constants.id_Routing_ID,
                criticality := ignore,
                value_ := { Routing_ID := p_value }
garciay's avatar
garciay committed
            } // End of template mw_routing_ID_IE
            /**
             * @desc Receive template for S1 Message
             * @param p_value The expected S1 Message value. Default: ?
             */
            template (present) ProtocolIE mw_s1_Message_IE(
                                                           template (present) octetstring p_value := ?
            ) := {
                id := S1AP_Constants.id_S1_Message,
                criticality := ignore,
                value_ := { octetstring := p_value }
            } // End of template mw_s1_Message_IE
            
            /**
             * @desc Receive template for MME Group ID
             * @param p_value The expected MME Group ID value. Default: ?
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.44 MME Group ID
             */
            template (present) ProtocolIE mw_mME_Group_ID_IE(
                                                             template (present) MME_Group_ID p_value := ?
            ) := {
                id := S1AP_Constants.id_MME_Group_ID,
                criticality := ignore,
                value_ := { MME_Group_ID := p_value }
            } // End of template mw_mME_Group_ID_IE
            
garciay's avatar
garciay committed
            /**
             * @desc Send template for MessageIdentifier IE
             * @param p_message_Identifier The expected message identifier value. Default: ?
             * @see ETSI TS 136 413 Clause 9.2.1.44 Message Identifier
             */
            template (present) ProtocolIE mw_message_Identifier_IE(
                                                                   template (present) MessageIdentifier p_message_Identifier := ?
garciay's avatar
garciay committed
            ) := {
                id := S1AP_Constants.id_MessageIdentifier,
                criticality := reject,
                value_ := { MessageIdentifier := p_message_Identifier }
            } // End of template mw_Message_Identifier
            
            /**
             * @desc Receive template for SerialNumber IE
             * @param p_serial_Number The expected serial number value. Default: ?
             * @see ETSI TS 136 413 Clause 9.2.1.45 Serial Number
             */
           template (present) ProtocolIE mw_serial_Number_IE(
                                                             template (present) SerialNumber p_serial_Number := ?
garciay's avatar
garciay committed
            ) := {
                id := S1AP_Constants.id_SerialNumber,
                criticality := reject,
                value_ := { SerialNumber := p_serial_Number }
            } // End of template mw_serial_Number_IE
garciay's avatar
garciay committed
            
            /**
             * @desc Receive template for SerialNumber IE
             * @param p_serial_Number The expected warning area value. Default: ?
             * @see ETSI TS 136 413 Clause 9.2.1.46 Warning Area List
             */
            template (present) ProtocolIE mw_warning_Area_List_IE(
                                                                  template (present) WarningAreaList p_warningAreaList := ?
garciay's avatar
garciay committed
            ) := {
                id := S1AP_Constants.id_WarningAreaList,
                criticality := ignore,
                value_ := { WarningAreaList := p_warningAreaList }
            } // End of template mw_warning_Area_List_IE
garciay's avatar
garciay committed
            
            /**
             * @desc Receive template for The Repetition Period IE
             * @param p_repetition_Period The expected repetition period value. Default: ?
             * @see ETSI TS 136 413 Clause 9.2.1.48 Repetition Period
             */
            template (present) ProtocolIE mw_repetition_Period_IE(
                                                                  template (present) RepetitionPeriod p_repetition_Period := ?
garciay's avatar
garciay committed
            ) := {
                id := S1AP_Constants.id_RepetitionPeriod,
                criticality := reject,
                value_ := { RepetitionPeriod := p_repetition_Period }
            } // End of template mw_repetition_Period_IE
garciay's avatar
garciay committed
            
            /**
             * @desc Receive template for SerialNumber IE
             * @param p_number_of_Broadcasts_Requested The expected number of Broadcasts Requested value. Default: ?
             * @see ETSI TS 136 413 Clause 9.2.1.49 Number of Broadcasts Requested
             */
            template (present) ProtocolIE mw_number_of_Broadcasts_Requested_IE(
                                                                               template (present) NumberOfBroadcasts p_number_of_Broadcasts_Requested := ?
garciay's avatar
garciay committed
            ) := {
                id := S1AP_Constants.id_NumberofBroadcastRequest,
                criticality := reject,
                value_ := { NumberOfBroadcasts := p_number_of_Broadcasts_Requested }
            } // End of template mw_number_of_Broadcasts_Requested_IE
garciay's avatar
garciay committed
            
            /**
             * @desc Receive template for E-CGI List for Restart
             * @param p_eCGIListForRestart
             * @see ETSI TS 136 413 Clause 9.2.1.38 E-CGI
             */
            template (present) ProtocolIE mw_eCGIListForRestart(
                                                                template (present) ECGIListForRestart p_eCGIListForRestart := ?
            ) := {
                id := S1AP_Constants.id_ECGIListForRestart,
                criticality := reject,
                value_ := { ECGIListForRestart := p_eCGIListForRestart }
            } // End of template mw_eCGIListForRestart
            
            /**
             * @desc Receive template for E-CGI List for Failure
             * @param p_eCGIListForFailure
             * @see ETSI TS 136 413 Clause 9.2.1.38 E-CGI
             */
            template (present) ProtocolIE mw_pWSfailedECGIList(
                                                                template (present) PWSfailedECGIList p_pWSfailedECGIList := ?
            ) := {
                id := S1AP_Constants.id_PWSfailedECGIList,
                criticality := reject,
                value_ := { PWSfailedECGIList := p_pWSfailedECGIList }
            } // End of template mw_pWSfailedECGIList
            
            /**
             * @desc Receive template for TAI List for Restart
             * @param p_eCGIListForRestart
             * @see ETSI TS 136 413 Clause 9.2.3.16 TAI
             */
            template (present) ProtocolIE mw_tAIListForRestart(
                                                               template (present) TAIListForRestart p_tAIListForRestart := ?
            ) := {
                id := S1AP_Constants.id_TAIListForRestart,
                criticality := reject,
                value_ := { TAIListForRestart := p_tAIListForRestart }
            } // End of template mw_tAIListForRestart
            
            /**
             * @desc 
             * @param p_emergencyAreaIDListForRestart
             */
            template (present) ProtocolIE mw_emergencyAreaIDListForRestart(
                                                                           template (present) EmergencyAreaIDListForRestart p_emergencyAreaIDListForRestart := ?
            ) := {
                id := S1AP_Constants.id_EmergencyAreaIDListForRestart,
                criticality := reject,
                value_ := { EmergencyAreaIDListForRestart := p_emergencyAreaIDListForRestart }
            } // End of template mw_emergencyAreaIDListForRestart
            
            /**
             * @desc 
             * @param p_handoverType
             * @param p_criticality
             */
            template (present) ProtocolIE mw_handoverType_IE(
                template (present) HandoverType p_handoverType := ?,
                template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_HandoverType,
                criticality := p_criticality,
                value_ := { HandoverType := p_handoverType }
            } // End of template mw_handoverType
            
            /**
             * @desc 
             * @param p_value
             * @param p_criticality
             */
            template (present) ProtocolIE mw_source_ToTarget_TransparentContainer_IE(
                template (present) Source_ToTarget_TransparentContainer p_value := ?,
                template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_Source_ToTarget_TransparentContainer,
                criticality := p_criticality,
                value_ := { Source_ToTarget_TransparentContainer := p_value }
            } // End of template mw_source_ToTarget_TransparentContainer_IE
            
            /**
             * @desc 
             * @param p_value
             * @param p_criticality
             */
            template (present) ProtocolIE mw_target_ToSource_TransparentContainer_IE(
                template (present) Target_ToSource_TransparentContainer p_value := ?,
                template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_Target_ToSource_TransparentContainer,
                criticality := p_criticality,
                value_ := { Target_ToSource_TransparentContainer := p_value }
            } // End of template mw_target_ToSource_TransparentContainer_IE
       
            /**
             * @desc 
             * @param p_value
             * @param p_criticality
             */
            template (present) ProtocolIE mw_target_ToSource_TransparentContainer_2nd_IE(
                template (present) Target_ToSource_TransparentContainer p_value := ?,
                template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_Target_ToSource_TransparentContainer_Secondary,
                criticality := p_criticality,
                value_ := { Target_ToSource_TransparentContainer := p_value }
            } // End of template mw_target_ToSource_TransparentContainer_2nd_IE
            /**
             * @desc 
             * @param p_value
             * @param p_criticality
             */
            template (present) ProtocolIE mw_voice_support_match_indicator_IE(
                template (present) VoiceSupportMatchIndicator p_value := ?,
                template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_VoiceSupportMatchIndicator,
                criticality := p_criticality,
                value_ := { VoiceSupportMatchIndicator := p_value }
            } // End of template mw_handoverType   
            
            /**
             * @desc receive template for UE security Capabilities IE
             * @param p_value  UESecurityCapabilities value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.40 UESecurityCapabilities
             */
            template (present) ProtocolIE mw_UE_securityCapabilities_IE(
                                                   in template (present) UESecurityCapabilities p_value:=?,
                                                   in template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_UESecurityCapabilities,
                criticality := p_criticality,
                value_ := {UESecurityCapabilities := p_value}
            } // End of template mw_UE_securityCapabilities_IE
            /**
             * @desc receive template for security key IE
             * @param p_value  UESecurityCapabilities value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.41 Security Key
             */
            template (present) ProtocolIE mw_securityKey_IE(
                                                   in template (present) SecurityKey p_value:=?,
                                                   in template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_SecurityKey,
                criticality := p_criticality,
                value_ := {SecurityKey := p_value}
            } // End of template mw_securityKey_IE
            /**
             * @desc Receive template for security context IE
             * @param p_value  SecurityContext value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.26 Security Context
             */
            template (present) ProtocolIE mw_securityContext_IE(
                                                   in template (present) SecurityContext p_value,
                                                   in template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_SecurityContext,
                criticality := p_criticality,
                value_ := {SecurityContext := p_value}
            } // End of template m_securityContext_IE
            
            /**
             * @desc receive template for nas Security Parameters To Eutran IE
             * @param p_value  SecurityContext value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.31 NAS Security Parameters to E_UTRAN
             */
            template (present) ProtocolIE mw_nasSecurityParametersToEutran_IE(
                                                   in template (present) NASSecurityParameterstoE_UTRAN p_value,
                                                   in template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_NASSecurityParameterstoE_UTRAN,
                criticality := p_criticality,
                value_ := {NASSecurityParameterstoE_UTRAN := p_value}
            } // End of template m_nasSecurityParametersToEutran_IE

            /**
             * @desc receive template for security key IE
             * @param p_value  UESecurityCapabilities value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.41 Security Key
             */
            template (present) ProtocolIE mw_eNBStatusTransferTransparentContainer_IE(
                                                   in template (present) ENB_StatusTransfer_TransparentContainer p_value:=?,
                                                   in template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_eNB_StatusTransfer_TransparentContainer,
                criticality := p_criticality,
                value_ := {ENB_StatusTransfer_TransparentContainer := p_value}
            } // End of template mw_eNBStatusTransferTransparentContainer_IE
garciay's avatar
garciay committed
            
            template (value) ProtocolIE mw_cSGMembershipInfo_IE(
                                                   in template (present) CSGMembershipInfo p_value:=?,
                                                   in template (present) ProtocolIE.criticality p_criticality := reject
            ) := {
                id := S1AP_Constants.id_CSGMembershipInfo,
                criticality := p_criticality,
                value_ := {CSGMembershipInfo := p_value}
            } // End of template mw_cSGMembershipInfoIE

            template (present) ProtocolIE mw_E_RABModifiedListModIndIE(
                template (present) RecordOf_E_RABToBeModifiedItemBearerModInd p_value := ?
            ) := {
                id := S1AP_Constants.id_E_RABToBeModifiedListBearerModInd,
                criticality := reject,
                value_ := { RecordOf_E_RABToBeModifiedItemBearerModInd := p_value}
            }
            
            template (present) ProtocolIE mw_E_RABSubjecttoDataForwardingList_IE(
                template (present) E_RABSubjecttoDataForwardingList p_value := ?
	        ) := {
	            id := S1AP_Constants.id_E_RABSubjecttoDataForwardingList,
	            criticality := reject,
	            value_ := { E_RABSubjecttoDataForwardingList := p_value}
	        }
            
            /**
             * @desc Receive template for SuccessfulOutcome/R-RAB_Setup message
             * @param p_value   The expected protocol information elements. Default: ?
             */
            template (present) SuccessfulOutcome mw_E_RABReleaseResponseIE(
                                                                       template (present) RecordOf_ProtocolIE p_value := ?
            ) := {
                procedureCode := id_E_RABRelease,
                criticality := reject,
                value_ := {RecordOf_ProtocolIE := p_value}
            } // End of template mw_E_RABResponse
            
            /**
             * @desc Receive template for SuccessfulOutcome/R-RAB_Setup message
             * @param p_procedureCode   Expected procedure code. Default: ?
             * @param p_value           Expected procedure code. Default: ?
             */
            template (present) SuccessfulOutcome mw_E_RABModifiedResponse(
                                                                       template (present) RecordOf_ProtocolIE p_value := ?
            ) := {
                procedureCode := id_E_RABModify,
                criticality := reject,
                value_ := {RecordOf_ProtocolIE := p_value}
            } // End of template mw_E_RABResponse

            
            /**
             * @desc Receive template for SuccessfulOutcome/R-RAB_Setup message
             * @param p_procedureCode   Expected procedure code. Default: ?
             * @param p_value           Expected procedure code. Default: ?
             */
            template (present) SuccessfulOutcome mw_E_RABSetupResponse(
                                                                       template (present) RecordOf_ProtocolIE p_value := ?
            ) := {
                procedureCode := id_E_RABSetup,
                criticality := reject,
                value_ := {RecordOf_ProtocolIE := p_value}
            } // End of template mw_E_RABSetupResponse
garciay's avatar
garciay committed
        } // End of group Receive_IEs
        
        group g_IEParameters {
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            group causes {
                
                template(value) Cause m_cause_nas(
                                                  in template (value) CauseNas p_nas
                ) := {
                    nas := p_nas
                } // End of template m_cause_nas
                
                template(value) Cause m_cause_ran(
                                                  in template (value) CauseRadioNetwork p_radioNetwork
                ) := {
                    radioNetwork := p_radioNetwork
                } // End of template m_cause_ran
                                
garciay's avatar
garciay committed
                template(present) Cause mw_cause_ran(
                                                     template (present) CauseRadioNetwork p_radioNetwork := ?
                ) := {
                    radioNetwork := p_radioNetwork
                } // End of template mw_cause_ran
                
                template(present) Cause mw_cause_transport(
                                                           template (present) CauseTransport p_transport := ?
                ) := {
                    transport := p_transport
                } // End of template mw_cause_transport
                
                template(present) Cause mw_cause_nas(
                                                     template (present) CauseNas p_nas := ?
                ) := {
                    nas := p_nas
                } // End of template mw_cause_nas
                
                template(present) Cause mw_cause_protocol(
                                                          template (present) CauseProtocol p_protocol := ?
                ) := {
                    protocol := p_protocol
                } // End of template mw_cause_protocol
                
                template(present) Cause mw_cause_misc(
                                                      template (present) CauseMisc p_misc := ?
                ) := {
                    misc := p_misc
                } // End of template mw_cause_misc
                
            } // End of group causes
            
garciay's avatar
garciay committed
            /**
             * @desc 
             */
            template (omit) E_RABToBeSetupItemBearerSUReq m_E_RABToBeSetupItemBearerSUReq(
                                                                                         in E_RAB_ID p_e_RAB_ID := 0,
                                                                                         in template (value) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := m_e_RABlevelQoSParameters,
                                                                                         in template (value) TransportLayerAddress p_transportLayerAddress := '0'B,
                                                                                         in template (value) GTP_TEID p_gTP_TEID := '00000000'O,
                                                                                         in template (value) NAS_PDU p_nAS_PDU := '0000'O,
                                                                                         in template (omit) E_RABToBeSetupItemBearerSUReq.iE_Extensions p_iE_Extensions := omit
garciay's avatar
garciay committed
            ) := {
                e_RAB_ID := p_e_RAB_ID,
                e_RABlevelQoSParameters := valueof(p_e_RABlevelQoSParameters),
                transportLayerAddress := p_transportLayerAddress,
                gTP_TEID := p_gTP_TEID,
                nAS_PDU := p_nAS_PDU,
                iE_Extensions := p_iE_Extensions
garciay's avatar
garciay committed
            } // End of template m_E_RABToBeSetupItemBearerSUReq
            /**
             * @desc 
             */
            template (present) E_RABToBeSetupItemBearerSUReq mw_E_RABToBeSetupItemBearerSUReq(
                                                                                          template (present) E_RAB_ID p_e_RAB_ID := 0,
                                                                                          template (present) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := mw_e_RABlevelQoSParameters,
                                                                                          template (present) TransportLayerAddress p_transportLayerAddress := '0'B,
                                                                                          template (present) GTP_TEID p_gTP_TEID := '00000000'O,
                                                                                          template (present) NAS_PDU p_nAS_PDU := '0000'O,
                                                                                          template E_RABToBeSetupItemBearerSUReq.iE_Extensions p_iE_Extensions := *
            ) := {
                e_RAB_ID := p_e_RAB_ID,
                e_RABlevelQoSParameters := p_e_RABlevelQoSParameters,
                transportLayerAddress := p_transportLayerAddress,
                gTP_TEID := p_gTP_TEID,
                nAS_PDU := p_nAS_PDU,
                iE_Extensions := p_iE_Extensions
            } // End of template mw_E_RABToBeSetupItemBearerSUReq
            template(omit) E_RABToBeModifiedItemBearerModReq m_E_RABToBeModifiedItemBearerSUReq(
                                                                                                in E_RAB_ID p_e_RAB_ID := 0,
                                                                                                in template (value) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := m_e_RABlevelQoSParameters,
                                                                                                in template (value) NAS_PDU p_nAS_PDU := '0000'O,
                                                                                                in template (omit) E_RABToBeModifiedItemBearerModReq.iE_Extensions p_iE_Extensions := omit
            ) := {
                e_RAB_ID := p_e_RAB_ID,
                e_RABLevelQoSParameters := valueof(p_e_RABlevelQoSParameters),
                nAS_PDU := p_nAS_PDU,
                iE_Extensions := p_iE_Extensions
            } // End of template m_E_RABToBeSetupItemBearerSUReq
            /**
             * @desc 
             */
            template(present) E_RABToBeModifiedItemBearerModReq mw_E_RABToBeModifiedItemBearerSUReq(
garciay's avatar
garciay committed
                                                                                                template (present) E_RAB_ID p_e_RAB_ID := 0,
                                                                                                template (present) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := ?,
                                                                                                template (present) NAS_PDU p_nAS_PDU := '0000'O,
                                                                                                template (omit) E_RABToBeModifiedItemBearerModReq.iE_Extensions p_iE_Extensions := omit
            ) := {
                e_RAB_ID := p_e_RAB_ID,
                e_RABLevelQoSParameters := p_e_RABlevelQoSParameters,
                nAS_PDU := p_nAS_PDU,
                iE_Extensions := p_iE_Extensions
            } // End of template mw_E_RABToBeSetupItemBearerSUReq

            /**
             * @desc 
             */
            template (value) E_RABItem m_E_RABItem(
                                                   in E_RAB_ID p_e_RAB_ID := 0,
                                                   in template (value) Cause p_cause
            ) := {
                e_RAB_ID        := p_e_RAB_ID,
                cause           := p_cause,
                iE_Extensions   := omit
            } // End of template m_E_RABItem
garciay's avatar
garciay committed
            
            /**
             * @desc 
             * @param p_qCI
             */
            template (value) E_RABLevelQoSParameters m_e_RABlevelQoSParameters(
                                                                               in QCI p_qCI := 0
garciay's avatar
garciay committed
                qCI := p_qCI,
                allocationRetentionPriority := {
                    priorityLevel := 0,
                    pre_emptionCapability := shall_not_trigger_pre_emption,
                    pre_emptionVulnerability := pre_emptable,
                    iE_Extensions := omit
                },
                gbrQosInformation := omit,
                iE_Extensions := omit
            } // End of template m_e_RABlevelQoSParameters
            
            /**
             * @desc 
             * @param p_qCI
             */
            template (present) E_RABLevelQoSParameters mw_e_RABlevelQoSParameters(
garciay's avatar
garciay committed
                                                                                  template (present) QCI p_qCI := ?
            ) := {
                qCI := p_qCI,
                allocationRetentionPriority := {
                    priorityLevel :=?,
                    pre_emptionCapability := ?,
                    pre_emptionVulnerability := ?,
                    iE_Extensions := *
                },
                gbrQosInformation := *,
                iE_Extensions := *
            } // End of template mw_e_RABlevelQoSParameters
            
garciay's avatar
garciay committed
            /**
             * @desc 
             * @param p_e_RAB_ID
             * @param p_cause
             */
            template (present) E_RABSetupItemBearerSURes mw_E_RABSetupItemBearerSURes(
                                                                                      template(present) E_RAB_ID p_e_RAB_ID := ?
garciay's avatar
garciay committed
                 e_RAB_ID                        := p_e_RAB_ID,
                 transportLayerAddress           := '?'B,
                 gTP_TEID                        := ?,
                 iE_Extensions                   := *
            } // End of template mw_E_RABSetupItemBearerSURes
garciay's avatar
garciay committed
            
            /**
             * @desc 
             * @param p_e_RAB_ID
             * @param p_cause
             */
            template (present) E_RABSetupItemBearerSURes m_E_RABSetupItemBearerSURes(
                                                                                      in template (value) E_RAB_ID p_e_RAB_ID := 0,
                                                                                      in template (value) TransportLayerAddress p_transportLayerAddress := '0'B,
                                                                                      in template (value) GTP_TEID p_gTP_TEID := '00000000'O,                                                                                      
                                                                                      in template (omit) E_RABSetupItemBearerSURes.iE_Extensions p_iE_Extensions := omit
            ) :=  {
                 e_RAB_ID                        := p_e_RAB_ID,
                 transportLayerAddress           := p_transportLayerAddress,
                 gTP_TEID                        := p_gTP_TEID,
                 iE_Extensions                   := p_iE_Extensions
            } // End of template mw_E_RABSetupItemBearerSURes
garciay's avatar
garciay committed
            
            /**
             * @desc 
             * @param p_e_RAB_ID
             * @param p_cause
             */
            template (present) E_RABModifyItemBearerModRes mw_E_RABModifyItemBearerModRes(
                                                                                      template(present) E_RAB_ID p_e_RAB_ID := ?
            ) :=  {
                 e_RAB_ID                        := p_e_RAB_ID,
                 iE_Extensions                   := *
            } // End of template mw_E_RABSetupItemBearerSURes
            template (omit) E_RABToBeSetupItemCtxtSUReq m_E_RABToBeSetupItemCtxtSUReq(
                                                                                          in E_RAB_ID p_e_RAB_ID := 0,
                                                                                          in template (value) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := m_e_RABlevelQoSParameters,
                                                                                          in template (value) TransportLayerAddress p_transportLayerAddress := '0'B,
                                                                                          in template (value) GTP_TEID p_gTP_TEID := '00000000'O,
                                                                                          in template (omit) NAS_PDU p_nAS_PDU := '0000'O,
                                                                                          in template (omit) E_RABToBeSetupItemCtxtSUReq.iE_Extensions p_iE_Extensions := omit
            ) := {
                e_RAB_ID := p_e_RAB_ID,
                e_RABlevelQoSParameters := valueof(p_e_RABlevelQoSParameters),
                transportLayerAddress := p_transportLayerAddress,
                gTP_TEID := p_gTP_TEID,
                nAS_PDU := p_nAS_PDU,
                iE_Extensions := p_iE_Extensions
            } // End of template m_E_RABToBeSetupItemCtxtSUReq

            /**
             * @desc 
             */
            template (present) E_RABToBeSetupItemCtxtSUReq mw_E_RABToBeSetupItemCtxtSUReq(
                                                                                          template (present) E_RAB_ID p_e_RAB_ID := 0,
                                                                                          template (present) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := mw_e_RABlevelQoSParameters,
                                                                                          template (present) TransportLayerAddress p_transportLayerAddress := '0'B,
                                                                                          template (present) GTP_TEID p_gTP_TEID := '00000000'O,
                                                                                          template NAS_PDU p_nAS_PDU := ?,
                                                                                          template E_RABToBeSetupItemCtxtSUReq.iE_Extensions p_iE_Extensions := *
            ) := {
                e_RAB_ID := p_e_RAB_ID,
                e_RABlevelQoSParameters := p_e_RABlevelQoSParameters,
                transportLayerAddress := p_transportLayerAddress,
                gTP_TEID := p_gTP_TEID,
                nAS_PDU := p_nAS_PDU,
                iE_Extensions := p_iE_Extensions
            } // End of template mw_E_RABToBeSetupItemCtxtSUReq
            
            /**
             * @desc 
             */
            template (omit) E_RABToBeSetupItemHOReq m_E_RABToBeSetupItemHOReq(
                in E_RAB_ID p_e_RAB_ID := 0,
                in template (value) TransportLayerAddress p_transportLayerAddress := '0'B,
                in template (value) GTP_TEID p_gTP_TEID := '00000000'O,
                in template (value) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := m_e_RABlevelQoSParameters,
                in template (omit) E_RABToBeSetupItemHOReq.iE_Extensions p_iE_Extensions := omit
            ) := {
                e_RAB_ID := p_e_RAB_ID,
                transportLayerAddress := p_transportLayerAddress,
                gTP_TEID := p_gTP_TEID,
                e_RABlevelQosParameters := valueof(p_e_RABlevelQoSParameters),
                iE_Extensions := p_iE_Extensions
            } // End of template m_E_RABToBeSetupItemHOReq
            
            /**
             * @desc 
             */
            template (present) E_RABToBeSetupItemHOReq mw_E_RABToBeSetupItemHOReq(
                in template (present) E_RAB_ID p_e_RAB_ID := ?,
                in template (present) TransportLayerAddress p_transportLayerAddress := ?,
                in template (present) GTP_TEID p_gTP_TEID := ?,
                in template (present) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := ?,
                in template E_RABToBeSetupItemHOReq.iE_Extensions p_iE_Extensions := *
            ) := {
                e_RAB_ID := p_e_RAB_ID,
                transportLayerAddress := p_transportLayerAddress,
                gTP_TEID := p_gTP_TEID,
                e_RABlevelQosParameters := p_e_RABlevelQoSParameters,
                iE_Extensions := p_iE_Extensions
            } // End of template mw_E_RABToBeSetupItemHOReq
            
            /**
             * @desc 
             * @param p_e_RAB_ID
             */
            template (present) E_RABAdmittedItem mw_E_RABAdmittedItem(
                                                                                      template(present) E_RAB_ID p_e_RAB_ID := ?
            ) :=  {
                 e_RAB_ID                        := p_e_RAB_ID,
                 transportLayerAddress           := '?'B,
                 gTP_TEID                        := ?,
                 dL_transportLayerAddress        := *,
                 dL_gTP_TEID                     := *,
                 uL_TransportLayerAddress        := *,
                 uL_GTP_TEID                     := *,
                 iE_Extensions                   := *
            } // End of template mw_E_RABAdmittedItem
            
            /**
             * @desc 
             * @param p_e_RAB_ID
             */
            template (present) E_RABToBeSwitchedDLItem mw_E_RABToBeSwitchedDLItem(
                                                                                      template(present) E_RAB_ID p_e_RAB_ID := ?
            ) :=  {
                 e_RAB_ID                        := p_e_RAB_ID,
                 transportLayerAddress           := '?'B,
                 gTP_TEID                        := ?,
                 iE_Extensions                   := *
            } // End of template mw_E_RABAdmittedItem
            
garciay's avatar
garciay committed
            /**
             * @desc 
             */
            template (present) E_RABItem mw_E_RABItem(
                                                      template (present) E_RAB_ID p_e_RAB_ID := ?,
                                                      template (present) Cause p_cause := ?
            ) := {
                e_RAB_ID := p_e_RAB_ID,cause := p_cause,iE_Extensions := *
            } // End of template mw_E_RABItem
            /**
             * @desc 
             */
            template (value) UEAggregateMaximumBitrate m_UEAggregateMaximumBitrate (BitRate p_dl, BitRate p_ul):= {
              uEaggregateMaximumBitRateDL := p_dl,
              uEaggregateMaximumBitRateUL := p_ul,
              iE_Extensions := omit
            }
            /**
             * @desc 
             */
            template (present) UEAggregateMaximumBitrate mw_UEAggregateMaximumBitrate (template (present) BitRate p_dl, template (present) BitRate p_ul):= {
              uEaggregateMaximumBitRateDL := p_dl,
              uEaggregateMaximumBitRateUL := p_ul,
              iE_Extensions := *
            }

            /**
             * @desc 
             */
            template (present) ENB_StatusTransfer_TransparentContainer mw_eNBStatusTransferTransparentContainer (
                template (present) Bearers_SubjectToStatusTransferList p_bearers_SubjectToStatusTransferList := ?):= {
              bearers_SubjectToStatusTransferList := p_bearers_SubjectToStatusTransferList,
              iE_Extensions := *
            }

garciay's avatar
garciay committed
            template(value) UESecurityCapabilities m_UESecurityCapabilities(
                                                                            in template (value) EncryptionAlgorithms p_encryptionAlgorithms,
                                                                            in template (value) IntegrityProtectionAlgorithms p_integrityProtectionAlgorithms
            ) := {
                encryptionAlgorithms := p_encryptionAlgorithms,
                integrityProtectionAlgorithms := p_integrityProtectionAlgorithms,
                iE_Extensions := omit
            }

            /**
             * @desc
             */
            template (present) UESecurityCapabilities mw_UESecurityCapabilities(
                                                                                template (present) EncryptionAlgorithms p_encryptionAlgorithms := ?,
                                                                                template (present) IntegrityProtectionAlgorithms p_integrityProtectionAlgorithms := ?
            ) := {
                encryptionAlgorithms := p_encryptionAlgorithms,
                integrityProtectionAlgorithms := p_integrityProtectionAlgorithms,
                iE_Extensions := omit
            }
garciay's avatar
garciay committed
            /**
             * @desc
             */
            template(value) CSGMembershipInfo m_CSGMembershipInfo
            (in template (value) CSGMembershipStatus p_cSGMembershipStatus := member,
			 in template (value) CSG_Id p_cSGId := '010101010101010101010101010'B,
			 in template (omit) CellAccessMode p_cellAccessMode:= omit) := {
garciay's avatar
garciay committed
                cSGMembershipStatus := p_cSGMembershipStatus,
                cSG_Id := p_cSGId,
				cellAccessMode := p_cellAccessMode,
garciay's avatar
garciay committed
                pLMNidentity := omit,
                iE_Extensions := omit
            }
rennoch's avatar
rennoch committed

            /**
             * @desc
             */
            template(present) CSGMembershipInfo mw_CSGMembershipInfo
            (in template (present) CSGMembershipStatus p_cSGMembershipStatus := ?,
             in template (present) CSG_Id p_cSGId := ?) := {
                cSGMembershipStatus := p_cSGMembershipStatus,
                cSG_Id := p_cSGId,
                cellAccessMode := *,
                pLMNidentity := *,
                iE_Extensions := omit
            }

            template (value) SecurityKey m_securityKey := oct2bit('012345678901234567890123456789AB012345678901234567890123456789AB'O); // 32 octets = 256 bits

            /**
             * @desc
             */
            template (value) SecurityContext m_securityContext (
                in template (value) integer p_nextHop := 1,
                in template (value) SecurityKey p_securityKey := m_securityKey
            ) := { 
                nextHopChainingCount := p_nextHop,
                nextHopParameter := p_securityKey,
                iE_Extensions := omit
            
            }//end template m_securityContext
garciay's avatar
garciay committed
            
            group Management_group {
                
                template (value) ResetType m_resetType_all := {
                    s1_Interface := reset_all
                } // End of template m_resetType_all
                
                template (value) ResetType m_resetType_partOfS1_Interface(
                                                                          in template (value) UE_associatedLogicalS1_ConnectionListRes p_partOfS1_Interface
                ) := {
                    partOfS1_Interface := p_partOfS1_Interface
                } // End of template m_resetType_partOfS1_Interface
                 
                template (present) ResetType mw_resetType_partOfS1_Interface(
garciay's avatar
garciay committed
                                                                             in template (present) UE_associatedLogicalS1_ConnectionListRes p_partOfS1_Interface := ?
                ) := {
                    partOfS1_Interface := p_partOfS1_Interface
                } // End of template mw_resetType_partOfS1_Interface
garciay's avatar
garciay committed
                
                template (value) ServedGUMMEIsItem m_servedGUMMEIsItem(
                                                                      in template (value) ServedPLMNs p_servedPLMNs,
                                                                      in template (value) ServedGroupIDs p_servedGroupIDs,
                                                                      in template (value) ServedMMECs p_servedMMECs
                ) := {
                    servedPLMNs    := valueof(p_servedPLMNs),
                    servedGroupIDs := valueof(p_servedGroupIDs),
                    servedMMECs    := valueof(p_servedMMECs),
                    iE_Extensions  := omit
                } // End of template m_servedGUMMEIsItem
                
                template (present) ServedGUMMEIsItem mw_servedGUMMEIsItem(
                                                                          template (present) ServedPLMNs p_servedPLMNs := ?,
                                                                          template (present) ServedGroupIDs p_servedGroupIDs := ?,
                                                                          template (present) ServedMMECs p_servedMMECs := ?
                ) := {
                    servedPLMNs    := p_servedPLMNs,
                    servedGroupIDs := p_servedGroupIDs,
                    servedMMECs    := p_servedMMECs,
                    iE_Extensions  := *
                } // End of template mw_servedGUMMEIsItem
                
            } // End of group Management_group
garciay's avatar
garciay committed
            
            /**
             * @desc Radio Network Layer Related IEs group
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1 Radio Network Layer Related IEs
garciay's avatar
garciay committed
             */
            group radioNetworkLayerRelated_IEs { 
                
                /**
                 * @desc Receive template for E-RABs Subject to Forwarding List
                 */
                template (present) E_RABDataForwardingItem mw_eRABDataForwardingItem(
                                                                                     template (present) E_RAB_ID p_e_RAB_ID := ?,
                                                                                     template (present) TransportLayerAddress p_dL_transportLayerAddress := ?,
                                                                                     template (present) GTP_TEID p_dL_gTP_TEID := ?,
                                                                                     template (present) TransportLayerAddress p_uL_TransportLayerAddress := ?,
                                                                                     template (present) GTP_TEID p_uL_GTP_TEID := ?
                ) := {
                    e_RAB_ID                    := p_e_RAB_ID,
                    dL_transportLayerAddress    := p_dL_transportLayerAddress,
                    dL_gTP_TEID                 := p_dL_gTP_TEID,
                    uL_TransportLayerAddress    := p_uL_TransportLayerAddress,
                    uL_GTP_TEID                 := p_uL_GTP_TEID,
                    iE_Extensions               := omit
                } // End of template mw_eRABDataForwardingItem
                
                /**
                 * @desc Receive template for RequestType
                 * @param p_eventType    Event Type value
                 * @param p_reportArea   Report Area value
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.34 RequestType
                 */
                template (value) RequestType m_request_Type(
                                                            in template (value) EventType p_eventType,
                                                            in template (value) ReportArea p_reportArea := ecgi
                ) := {
                    eventType       := p_eventType,
                    reportArea      := p_reportArea,
                    iE_Extensions   := omit
                } // End of template m_request_Type
                
                /**
                 * @desc Defines parameters related to a trace activation
                 * @param p_eUTRAN_Trace_ID                 The E-UTRAN Trace ID value. 
                 * @param p_interfacesToTrace               The Interfaces To Trace value. 
                 * @param p_traceDepth                      The Trace depth value. 
                 * @param p_traceCollectionEntityIPAddress  The Transport Layer Address value. 
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.4 Trace Activation
                 */
                template (value) TraceActivation m_traceActivation(
                                                                   in E_UTRAN_Trace_ID p_eUTRAN_Trace_ID,
                                                                   in InterfacesToTrace p_interfacesToTrace,
                                                                   in TraceDepth p_traceDepth,
                                                                   in TransportLayerAddress p_traceCollectionEntityIPAddress
                ) := {
                    e_UTRAN_Trace_ID                := p_eUTRAN_Trace_ID,
                    interfacesToTrace               := p_interfacesToTrace,
                    traceDepth                      := p_traceDepth,
                    traceCollectionEntityIPAddress  := p_traceCollectionEntityIPAddress,
                    iE_Extensions                   := omit
                } // End of template m_traceActivation
                
garciay's avatar
garciay committed
                /**
                 * @desc Send template for Global eNB ID protocol IE
                 * @param p_pLMNidentity  Expected PLMNidentity.
                 * @param p_eNB_ID        Expected eNodeB identifier.
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.37 Global eNB ID
                 */
                template (value) Global_ENB_ID m_Global_eNB_ID(
                                                               in template (value) PLMNidentity p_pLMNidentity,
                                                               in template (value) ENB_ID p_eNB_ID
                ) := {
                    pLMNidentity    := p_pLMNidentity,
                    eNB_ID          := p_eNB_ID,
                    iE_Extensions   := omit
                } // End of template m_Global_eNB_ID
                
                /**
                 * @desc Receive template for Global eNB ID protocol IE
                 * @param p_pLMNidentity  Expected PLMNidentity. Default: ?
                 * @param p_eNB_ID        Expected eNodeB identifier. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.37 Global eNB ID
                 */
garciay's avatar
garciay committed
                template (present) Global_ENB_ID mw_Global_eNB_ID(
                                                                  template (present) PLMNidentity p_pLMNidentity := ?,
                                                                  template (present) ENB_ID p_eNB_ID := ?
                ) := {
                    pLMNidentity    := p_pLMNidentity,
                    eNB_ID          := p_eNB_ID,
garciay's avatar
garciay committed
                    iE_Extensions   := *
                } // End of template mw_Global_eNB_ID

                /**
                 * @desc Send template for E-UTRAN CGI
                 * @param p_pLMNidentity    Expected PLMNidentity. Default: ?
                 * @param p_cell_ID         Expected cell identifier. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.38 E-UTRAN CGI
                 */
                template (value) EUTRAN_CGI m_eUTRAN_CGI(
                                                            in template (value) PLMNidentity p_pLMNidentity,
                                                            in template (value) CellIdentity p_cell_ID
                ) := {
                    pLMNidentity    := valueof(p_pLMNidentity),
                    cell_ID         := valueof(p_cell_ID),
                    iE_Extensions   := omit
                } // End of template m_eUTRAN_CGI
                
                
                /**
                 * @desc Receive template for E-UTRAN CGI
                 * @param p_pLMNidentity    Expected PLMNidentity. Default: ?
                 * @param p_cell_ID         Expected cell identifier. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.38 E-UTRAN CGI
                 */
                template (present) EUTRAN_CGI mw_eUTRAN_CGI(
                                                            template (present) PLMNidentity p_pLMNidentity := ?,
                                                            template (present) CellIdentity p_cell_ID := ?
                ) := {
                    pLMNidentity    := p_pLMNidentity,
                    cell_ID         := p_cell_ID,
                    iE_Extensions   := omit
                } // End of template mw_eUTRAN_CGI
                
                /**
                 * @desc Receive template for RequestType
                 * @param p_eventType    Expected PLMNidentity. Default: ?
                 * @param p_reportArea   Expected cell identifier. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.34 RequestType
                 */
                template (present) RequestType mw_request_Type(
                                                               template (present) EventType p_eventType := ?,
                                                               template (present) ReportArea p_reportArea := ?
                ) := {
                    eventType       := p_eventType,
                    reportArea      := p_reportArea,
                    iE_Extensions   := omit
                } // End of template mw_request_Type
                
                /**
                 * @desc Defines parameters related to a trace activation
                 * @param p_eUTRAN_Trace_ID                 The expected E-UTRAN Trace ID value. Default: ?
                 * @param p_interfacesToTrace               The expected Interfaces To Trace value. Default: ?
                 * @param p_traceDepth                      The expected Trace depth value. Default: ?
                 * @param p_traceCollectionEntityIPAddress  The expected Transport Layer Address value. Default: ?
                 * 
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.1.4 Trace Activation
                 */
                template (present) TraceActivation mw_traceActivation(
                                                                      template (present) E_UTRAN_Trace_ID p_eUTRAN_Trace_ID := ?,
                                                                      template (present) InterfacesToTrace p_interfacesToTrace := ?,
                                                                      template (present) TraceDepth p_traceDepth := ?,
                                                                      template (present) TransportLayerAddress p_traceCollectionEntityIPAddress := ?
                ) := {
                    e_UTRAN_Trace_ID                := p_eUTRAN_Trace_ID,
                    interfacesToTrace               := p_interfacesToTrace,
                    traceDepth                      := p_traceDepth,
                    traceCollectionEntityIPAddress  := p_traceCollectionEntityIPAddress,
                    iE_Extensions                   := omit
                } // End of template mw_traceActivation
                
            } // End of group radioNetworkLayerRelated_IEs
garciay's avatar
garciay committed
            
            /**
             * @desc Transport Network Layer Related IEs group
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.2 Transport Network Layer Related IEs
garciay's avatar
garciay committed
             */
            group transportNetworkLayerRelated_IEs { 
                
            } // End of group transportNetworkLayerRelated_IEs
garciay's avatar
garciay committed
            
            /**
             * @desc NAS Related IEs group
             * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3 NAS Related IEs
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
                template (value) SupportedTAs_Item m_supportedTAs_Item(
                                                                       in template (value) TAC p_tAC,
                                                                       in template (value) BPLMNs p_broadcastPLMNs
                ) := {
                    tAC             := p_tAC,
                    broadcastPLMNs  := p_broadcastPLMNs,
                    iE_Extensions   := omit
                } // End of template m_supportedTAs_Item
                
                template (present) SupportedTAs_Item mw_supportedTAs_Item(
                                                                          template (present) TAC p_tAC := ?,
                                                                          template (present) BPLMNs p_broadcastPLMNs := ?
                ) := {
                    tAC             := p_tAC,
                    broadcastPLMNs  := p_broadcastPLMNs,
                    iE_Extensions   := *
                } // End of template mw_supportedTAs_Item
                
                /**
                 * @desc Receive template for UE_associatedLogicalS1_ConnectionItem protocol IE
                 * @param p_MME_value   MME UE S1AP ID value. Default: ?
garciay's avatar
garciay committed
                 * @param p_eNB_value   eNB UE S1AP ID value. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.1.8.2 RESET ACKNOWLEDGE
                 */
                template (present) UE_associatedLogicalS1_ConnectionItem mw_uE_associatedLogicalS1_ConnectionItem(
                                                                                                                  template (present) MME_UE_S1AP_ID p_MME_value := ?,
garciay's avatar
garciay committed
                                                                                                                  template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                ) := {
                    mME_UE_S1AP_ID  := p_MME_value,
garciay's avatar
garciay committed
                    eNB_UE_S1AP_ID  := p_eNB_value,
                    iE_Extensions   := *
                } // End of template mw_uE_associatedLogicalS1_ConnectionItem
                
                /**
                 * @desc Receive template for UEPagingID protocol IE
                 * @param p_s_tMSI   The Temporary Mobile Subscriber Identity. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.6 S-TMSI
                 */
                template (present) UEPagingID mw_uEPagingID_s_tMSI(
                                                                   template (present) S_TMSI p_s_tMSI := ?
                ) := {
                    s_TMSI := p_s_tMSI
                } // End of template mw_uEPagingID_s_tMSI
                
                /**
                 * @desc Receive template for UEPagingID protocol IE
                 * @param p_s_tMSI   The International Mobile Subscriber Identity. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.11 IMSI
                 */
                template (present) UEPagingID mw_uEPagingID_iMSI(
                                                                 template (present) IMSI p_iMSI := ?
                ) := {
                    iMSI := p_iMSI
                } // End of template mw_uEPagingID_iMSI
                
                /**
                 * @desc Send template for GUMMEI protocol IE
                 * @param p_pLMNidentity  The expected PLMNidentity value.
                 * @param p_mME_Group_ID  The expected MME_Group_ID value.
                 * @param p_mME_Code      The expected MME_Code value.
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.9 GUMMEI
                 */
                template (value) GUMMEI m_gUMMEI(
                                                 in template (value) PLMNidentity p_pLMNidentity,
                                                 in template (value) MME_Group_ID p_mME_Group_ID,
                                                 in template (value) MME_Code p_mME_Code
                ) := {
                    pLMN_Identity  := valueof(p_pLMNidentity),
                    mME_Group_ID   := valueof(p_mME_Group_ID),
                    mME_Code       := valueof(p_mME_Code),
                    iE_Extensions  := omit
                } // End of template m_gUMMEI
                
                /**
                 * @desc Receive template for GUMMEI protocol IE
                 * @param p_pLMNidentity  The expected PLMNidentity value. Default: ?
                 * @param p_mME_Group_ID  The expected MME_Group_ID value. Default: ?
                 * @param p_mME_Code      The expected MME_Code value. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.9 GUMMEI
                 */
                template (present) GUMMEI mw_gUMMEI(
                                                    template (present) PLMNidentity p_pLMNidentity := ?,
                                                    template (present) MME_Group_ID p_mME_Group_ID := ?,
                                                    template (present) MME_Code p_mME_Code := ?
                ) := {
                    pLMN_Identity  := valueof(p_pLMNidentity),
                    mME_Group_ID   := valueof(p_mME_Group_ID),
                    mME_Code       := valueof(p_mME_Code),
                    iE_Extensions  := omit
                } // End of template mw_gUMMEI
                
                /**
                 * @desc Receive template for TAI protocol IE
                 * @param p_overloadAction  Expected required behaviour of the eNB in an overload situation. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.19 Overload Response
                 */
                template (present) OverloadResponse mw_OverloadResponse(
                                                                        template (present) OverloadAction p_overloadAction := ?
                ) := {
                    overloadAction := p_overloadAction
                } // End of template mw_OverloadResponse
                
                /**
                 * @desc Receive template for TAI protocol IE
                 * @param p_pLMNidentity  Expected PLMNidentity. Default: ?
                 * @param p_tAC           Expected TAC. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.16 TAI
                 */
                template (present) TAI mw_TAI(
                                              template (present) PLMNidentity p_pLMNidentity := ?,
                                              template (present) TAC p_tAC := ?
                ) := {
                    pLMNidentity    := p_pLMNidentity,
                    tAC             := p_tAC,
                    iE_Extensions   := *
                } // End of template mw_TAI
                
                /**
                 * @desc Receive template for TargeteNB-ID protocol IE
                 * @param p_global_ENB_ID  Expected Global eNB identifier. Default: ?
                 * @param p_selected_TAI   Expected TAI value. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.26 SON Configuration Transfer
                 */
                template (present) TargeteNB_ID mw_TargeteNB_ID(
                                                                template (present) Global_ENB_ID p_global_ENB_ID := ?,
                                                                template (present) TAI p_selected_TAI := ?
                ) := {
                    global_ENB_ID   := p_global_ENB_ID,
                    selected_TAI    := p_selected_TAI,
                    iE_Extensions   := *
                } // End of template mw_TargeteNB_ID
                
                /**
                 * @desc Receive template for TargeteNB-ID protocol IE
                 * @param p_global_ENB_ID  Expected Global eNB identifier. Default: ?
                 * @param p_selected_TAI   Expected TAI value. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.26 SON Configuration Transfer
                 */
                template (present) SourceeNB_ID mw_SourceeNB_ID(
                                                                template (present) Global_ENB_ID p_global_ENB_ID := ?,
                                                                template (present) TAI p_selected_TAI := ?
                ) := {
                    global_ENB_ID   := p_global_ENB_ID,
                    selected_TAI    := p_selected_TAI,
                    iE_Extensions   := *
                } // End of template mw_SourceeNB_ID
                
                /**
                 * @desc Receive template for SON Configuration Transfer
                 * @param p_value The Routing ID value
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.26 SON Configuration Transfer
                 */
                template (present) SONConfigurationTransfer mw_sON_Configuration_Transfer(
                                                                                          template (present) TargeteNB_ID p_target_eNB_ID := ?,
                                                                                          template (present) SourceeNB_ID p_source_eNB_ID := ?,
                                                                                          template (present) SONInformation p_sONInformation := ?
                ) := {
                    targeteNB_ID    := p_target_eNB_ID,
                    sourceeNB_ID    := p_source_eNB_ID,
                    sONInformation  := p_sONInformation,
                    iE_Extensions   := *
                } // End of template mw_sON_Configuration_Transfer
                
                /**
                 * @desc Receive template for SONInformation/Request
                 * @param p_sONInformationRequest   Expected SONInformationRequest value. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.27 SON Information
                 */
                template (present) SONInformation mw_sONInformation_Request(
                                                                            template (present) SONInformationRequest p_sONInformationRequest := ?
                ) := {
                    sONInformationRequest := p_sONInformationRequest
                } // End of template mw_sONInformation_Request
                
                /**
                 * @desc Receive template for SONInformation/Reply
                 * @param p_sONInformationReply   Expected SONInformationReply value. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.28 SON Information Reply
                 */
                template (present) SONInformation mw_sONInformation_Reply(
                                                                          template (present) SONInformationReply p_sONInformationReply := ?
                ) := {
                    sONInformationReply := p_sONInformationReply
                } // End of template mw_sONInformation_Reply
                
                /**
                 * @desc Receive template for SONInformation/Report
                 * @param p_sONInformationReport   Expected SONInformationReport value. Default: ?
                 * @see ETSI TS 136 413 V13.4.0 Clause 9.2.3.39 SON Information Report
                 */
                template (present) SONInformation mw_sONInformation_Report(
                                                                           template (present) SONInformation_Extension p_sONInformationReport := ?
                ) := {
                    sONInformation_Extension := p_sONInformationReport
                } // End of template mw_sONInformation_Report
                
            } // End of group nasRelated_IEs
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            /**
             * @desc NAS Related IEs group
             * @see ETSI TS 136 413 V13.4.0 Clause 10 Handling of Unknown, Unforeseen and Erroneous Protocol Data
             */
garciay's avatar
garciay committed
            group Unknown_unforseen_errorneous_group {
                
                /**
                 * @desc Receive template for CriticalityDiagnostics IE
                 * @param p_procedureCode           The procedure code value. Default: ?
                 * @param p_triggeringMessage       The trigering message value. Default: ?
                 * @param p_procedureCriticality    The procedure critcality value. Default: ?
                 * @see ETSI TS 136 413 Clause 9.2.1.21 Criticality Diagnostics
                 */
                template (present) CriticalityDiagnostics mw_criticalityDiagnostics(
                                                                                    template (present) ProcedureCode p_procedureCode := ?,
                                                                                    template (present) TriggeringMessage p_triggeringMessage := ?,
                                                                                    template (present) Criticality p_procedureCriticality := ?,
                                                                                    template CriticalityDiagnostics_IE_List p_iEsCriticalityDiagnostics := *
                ) := {
                    procedureCode               := p_procedureCode,
                    triggeringMessage           := p_triggeringMessage,
                    procedureCriticality        := p_procedureCriticality,
                    iEsCriticalityDiagnostics   := p_iEsCriticalityDiagnostics,
                    iE_Extensions               := *
                } // End of template mw_criticalityDiagnostics
                
                /**
                 * @desc Receive template for CriticalityDiagnostics_IE_Item IE
                 * @param p_iECriticality   The procedure code value. Default: ?
                 * @param p_iE_ID           The trigering message value. Default: ?
                 * @param p_typeOfError     The procedure critcality value. Default: ?
                 * @see ETSI TS 136 413 Clause 9.2.1.21 Criticality Diagnostics
                 */
                template (present) CriticalityDiagnostics_IE_Item mw_criticalityDiagnostics_IE_Item(
                                                                                                    template (present) Criticality p_iECriticality := ?,
                                                                                                    template (present) ProtocolIE_ID p_iE_ID := ?,
                                                                                                    template (present) TypeOfError p_typeOfError := ?
                ) := {
                    iECriticality  := p_iECriticality,
                    iE_ID          := p_iE_ID,
                    typeOfError    := p_typeOfError,
                    iE_Extensions  := *
                }
garciay's avatar
garciay committed
                
                template (value) E_RABFailedToResumeItemResumeReq m_E_RABFailedToResumeItemResumeReq(
                                                                                                     in template (value) E_RAB_ID p_e_RAB_ID,
                                                                                                     in template (value) Cause p_cause
                ) := {
                    e_RAB_ID        := p_e_RAB_ID,
                    cause           := p_cause,
                    iE_Extensions   := omit
                } // End of template m_E_RABFailedToResumeItemResumeReq
                
garciay's avatar
garciay committed
                template (value) E_RABToBeModifiedItemBearerModInd m_E_RABToBeModifiedItemBearerModInd( 
garciay's avatar
garciay committed
                                                                                                       in template (value) E_RAB_ID p_e_RAB_ID,
garciay's avatar
garciay committed
                                                                                                       in template (value) TransportLayerAddress p_transportLayerAddress := PX_TPORT_LAYER_ADDR,
                                                                                                       in template (value) GTP_TEID p_dL_GTP_TEID := PX_DL_GTP_TEID
garciay's avatar
garciay committed
                ) := {
                    e_RAB_ID                := p_e_RAB_ID,
                    transportLayerAddress   := p_transportLayerAddress,
                    dL_GTP_TEID             := p_dL_GTP_TEID,
                    iE_Extensions           := omit
                } // End of template m_E_RABToBeModifiedItemBearerModInd
                
garciay's avatar
garciay committed
            } // End of group Unknown_unforseen_errorneous_group
            
garciay's avatar
garciay committed
        } // End of group g_IEParameters
        
    } // End of group S1AP_Protocol_IEs
garciay's avatar
garciay committed
    /** 
     * @desc Type functions 
     */
    group functionsForTemplates {
        
    } // End of group functionsForTemplates
    
} // End of module LibS1AP_Templates