LibS1AP_Templates.ttcn 191 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_Containers 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;
pintar's avatar
pintar committed
    import from LibS1AP_Interface 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_initiatingMessage
            
        } // 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 {
garciay's avatar
garciay committed
                
                group HandoverPreparation {
                    
                    group initiatingMessage {
                    } // End of group initiatingMessage
                    
                    group successfulOutcome {
                    } // End of group successfulOutcome
                    
                    group unsuccessfulOutcome {
                    } // End of group unsuccessfulOutcome
                    
                } // End of group HandoverPreparation
                
                group HandoverResourceAllocation {
                    
                }// End of group HandoverResourceAllocation
                
                group ERABSetup{
                    
garciay's avatar
garciay committed
                    /**
                     * @desc Send template for InitiatingMessage message with E-RABSetup payload
                     * @param p_value           The procedure code value
garciay's avatar
garciay committed
                     */
pintar's avatar
pintar committed
                    template (value) InitiatingMessage m_E_RABSetupRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
garciay's avatar
garciay committed
                        procedureCode := id_E_RABSetup,
                        criticality := reject,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
pintar's avatar
pintar committed
                    } // End of template m_E_RABSetupRequest
                    
                    template (value) RecordOf_ProtocolIE m_E_RABSetupReqIEs(
                                                                            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,
                                                                            in template (value) RecordOf_E_RABToBeSetupItemBearerSUReq p_RecordOf_E_RABToBeSetupItem_value
                    ) := {
pintar's avatar
pintar committed
                        m_MME_UE_S1AP_ID(p_MME_value),
garciay's avatar
garciay committed
                        m_eNB_UE_S1AP_ID(p_eNB_value),
pintar's avatar
pintar committed
                        m_E_RABToBeSetupList(p_RecordOf_E_RABToBeSetupItem_value)
                    } // End of template m_E_RABSetupReqIEs
garciay's avatar
garciay committed
                    
                }// End of group ERABSetup

				/**
				 * @desc Send messages for Context Management procedures
				 */
				group Context_management_group {

					/**
					 * @desc Send template for InitiatingMessage message with InitialContextSetup payload
					 * @param p_value           Expected procedure code
					 */
					template (value) InitiatingMessage m_InitialContextSetupRequest(
																		   in template (value) RecordOf_ProtocolIE p_value) := {
						procedureCode := id_InitialContextSetup,
						criticality := reject,
						value_ := {RecordOf_ProtocolIE := valueof(p_value)}
					} // End of template m_InitialContextSetupRequest
                    
					template (value) RecordOf_ProtocolIE m_InitialContextSetupReqIEs(
																			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,
																			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_RABToBeSetupList(p_RecordOf_E_RABToBeSetupItem_value),
						m_UE_securityCapabilities_IE(p_uESecurityCapabilities),
						m_securityKey_IE(p_SecurityKey)
					} // End of template m_InitialContextSetupReqIEs
					
                }// 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(
                                                                           in template (value) RecordOf_ProtocolIE p_value
                    ) := {
                        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
                     * @param p_value           Expected 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
                     * @param p_value           Expected 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
                     * @param p_value           Expected 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
                     * @param p_value           Expected 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
                     * @param p_value           The procedure code value
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
                     * @param p_value           Expected procedure code
                     */
                    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
                     * @param p_value           The procedure code value
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
                     * @param p_value           The procedure code value
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
                //TODO: Other....
garciay's avatar
garciay committed
                
            } // End of group sendClass1 
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            group receiveClass1 {
                
garciay's avatar
garciay committed
                group HandoverPreparation{
                    
                }// End of group HandoverPreparation
                    
                group HandoverResourceAllocation{
                    
                }// End of group HandoverResourceAllocation
                
                group ERABSetup{
                    
                    /**
                     * @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
                    
                    template (present) RecordOf_ProtocolIE mw_E_RABSetupResIEs(
                                                                               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) RecordOf_E_RABSetupItemBearerSURes p_RecordOf_E_RABSetupItem_value := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
garciay's avatar
garciay committed
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
garciay's avatar
garciay committed
                        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 := ?,
garciay's avatar
garciay committed
                                                                                                 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),
garciay's avatar
garciay committed
                        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_E_RABSetupResIEs
                    
                } // End of group ERABSetup

				group Context_management_group{
                    
					/**
					 * @desc Receive template for InitialContextSetup message
					 * @param p_procedureCode   Expected procedure code. Default: ?
					 * @param p_value           Expected procedure code. Default: ?
					 */
					template (present) SuccessfulOutcome mw_InitialContextSetupResponse(
																			   template (present) RecordOf_ProtocolIE p_value := ?
					) := {
						procedureCode := id_E_RABSetup,
						criticality := reject,
						value_ := {RecordOf_ProtocolIE := p_value}
					} // End of template mw_InitialContextSetupResponse
                    
					template (present) RecordOf_ProtocolIE mw_InitialContextSetupResIEs(
																			   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_InitialContextSetupResIEs
                    
                    
				} // 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
                
                //TODO: Other....
                
            } // 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),