Commit 4b9be1b2 authored by garciay's avatar garciay
Browse files

STF519 Week #19:

- Implementation of eNB/Unknown, Unforseen and Erroneous Protocol Data group TPs
parent 327731ab
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ module LibS1AP_Pixits {
    
    // LibS1AP
    import from S1AP_IEs language "ASN.1:1997" all;
    import from S1AP_CommonDataTypes language "ASN.1:1997" all;
    
    /**
     * @desc Define the network transportation layer
@@ -216,5 +217,16 @@ module LibS1AP_Pixits {
     */
    modulepar CNDomain PX_CNDOMAIN := ps;
    
    /** @desc Indicates a not supported algorithm.
     * @see ETSI TS 136 413 Clause 9.2.1.40 UE Security Capabilities
     */
    modulepar EncryptionAlgorithms PX_UNSUPPORTED_ENCRYPTION_ALGORITHM := '1111111111111111'B;
    
    modulepar ProcedureCode PX_PROCEURE_CODE := 0;
    
    modulepar TriggeringMessage PX_TRIGGERING_CODE := initiating_message;
    
    modulepar Criticality PX_CRITICALITY := reject;
    
} // End of module LibS1AP_Pixits
+27 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ module LibS1AP_Steps {
    import from LibCommon_BasicTypesAndValues all;
    
    // LibS1AP
    import from S1AP_CommonDataTypes language "ASN.1:1997" all;
    import from S1AP_PDU_Descriptions language "ASN.1:1997" all;
    import from S1AP_IEs language "ASN.1:1997" all;
    
@@ -259,9 +260,14 @@ module LibS1AP_Steps {
         * @param p_value Receive template for InitialContext_SetupRequest IEs
         */
        function f_recv_InitialContext_SetupRequest(
                                           template (present) RecordOf_ProtocolIE p_value := ?
        ) runs on S1APComponent {
            f_recv_S1AP_successfulOutcome(mw_InitialContextSetupRequest(p_value))
                                                    template (present) RecordOf_ProtocolIE p_value := ?,
                                                    template (present) Criticality p_criticality := reject
        ) runs on S1APComponent {
            f_recv_S1AP_successfulOutcome(
                mw_InitialContextSetupRequest(
                    p_value,
                    p_criticality
            ))
        } // End of f_recv_InitialContext_SetupRequest
        
        /**
@@ -959,9 +965,15 @@ module LibS1AP_Steps {
         * @desc Send S1AP Message InitialContext_SetupRequest
         * @param p_value Send template with IE for InitialContext_SetupRequest
         */
        function f_send_InitialContext_SetupRequest(in template (value) RecordOf_ProtocolIE p_value
        function f_send_InitialContext_SetupRequest(
                                                    in template (value) RecordOf_ProtocolIE p_value,
                                                    in template (value) Criticality p_criticality := reject
        ) runs on S1APComponent {
            f_send_S1AP_initiatingMessage(m_InitialContextSetupRequest(p_value))
            f_send_S1AP_initiatingMessage(
                m_InitialContextSetupRequest(
                     p_value,
                     p_criticality
            ))
        } // End of function f_send_InitialContext_SetupRequest
        
        /**
@@ -1212,6 +1224,15 @@ module LibS1AP_Steps {
            f_send_S1AP_initiatingMessage(m_UeRadioCapabilityMatchRequest(p_value))
        } // End of f_send_UE_Radio_Capability_Match_Request
        
        /**
         * @desc Send S1AP Message ERROR INDICATION
         * @param p_value Send template with IE for ERROR INDICATION
         */
        function f_send_Error_Indication(
                                         in template (value) RecordOf_ProtocolIE p_value
        ) runs on S1APComponent {
            // TODO f_send_S1AP_initiatingMessage(m_error_Indication(p_value))
        } // End of function f_send_Error_Indication
        
    } // End of group sendPDU
    
+188 −34
Original line number Diff line number Diff line
@@ -220,6 +220,22 @@ module LibS1AP_Templates {
                            m_E_RABToBeSetupList(p_RecordOf_E_RABToBeSetupItem_value)
                        } // End of template m_E_RABSetupReqIEs
    
                        template (value) RecordOf_ProtocolIE m_E_RABSetupReqIEs_noENB(
                                                                                      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)
                        } // End of template m_E_RABSetupReqIEs_noENB
    
                        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,
@@ -283,6 +299,7 @@ module LibS1AP_Templates {
                        } // End of template m_E_RABReleaseReqIEs
                    }
                }
                
                /**
                 * @desc Send messages for Context Management procedures
                 */
@@ -293,9 +310,11 @@ module LibS1AP_Templates {
                     * @param p_value           Expected procedure code
                     */
                    template (value) InitiatingMessage m_InitialContextSetupRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                                                                                    in template (value) RecordOf_ProtocolIE p_value,
                                                                                    in template (value) Criticality p_criticality := reject
                    ) := {
                        procedureCode := id_InitialContextSetup,
                        criticality := reject,
                        criticality := p_criticality,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_InitialContextSetupRequest
                    
@@ -313,6 +332,42 @@ module LibS1AP_Templates {
                        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
                    
                    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
                    
                    template (value) RecordOf_ProtocolIE m_InitialContextSetupReqIEs_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) 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)
                    } // End of templaunknown_IDunknown_IDte m_InitialContextSetupReqIEs_duplicate_ENB
                    
                    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
                    
                    /**
@@ -326,7 +381,6 @@ module LibS1AP_Templates {
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeContextReleaseRequest
                    

                    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,
@@ -1094,13 +1148,26 @@ module LibS1AP_Templates {
                        mw_cause_IE(p_cause)
                    } // End of template mw_InitialContextSetupResIEs
                    
                    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
                     * @param p_procedureCode   Expected procedure code. Default: ?
                     * @param p_value           Expected procedure code. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_InitialContextSetupRequest(
                                                                               template (present) RecordOf_ProtocolIE p_value := ?
                                                                                       template (present) RecordOf_ProtocolIE p_value := ?,
                                                                                       template (present) Criticality p_criticality := reject
                    ) := {
                        procedureCode := id_InitialContextSetup,
                        criticality := reject,
@@ -3207,6 +3274,18 @@ module LibS1AP_Templates {
                value_ := {octetstring := valueof(p_value)}
            } // End of template m_UE_Radio_capability_IE
            
            /**
             * @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
@@ -3610,6 +3689,27 @@ module LibS1AP_Templates {
                
            } // End of group Warning_Message_Transmission
            
            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
            
        } // End of group Send_IEs
        
        group Receive_IEs{
@@ -4557,7 +4657,7 @@ module LibS1AP_Templates {
             * @param p_qCI
             */
            template (present) E_RABLevelQoSParameters mw_e_RABlevelQoSParameters(
                                                                               template (present) QCI p_qCI := 0
                                                                                  template (present) QCI p_qCI := ?
            ) := {
                qCI := p_qCI,
                allocationRetentionPriority := {
@@ -4721,9 +4821,22 @@ module LibS1AP_Templates {
            /**
             * @desc
             */
            template(value) UESecurityCapabilities m_UESecurityCapabilities
            (in template (value) EncryptionAlgorithms p_encryptionAlgorithms,
             in template (value) IntegrityProtectionAlgorithms p_integrityProtectionAlgorithms) := {
            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
@@ -5144,6 +5257,47 @@ module LibS1AP_Templates {
                
            } // End of group nasRelated_IEs
            
            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  := *
                }
            } // End of group Unknown_unforseen_errorneous_group
            
        } // End of group g_IEParameters
        
    } // End of group S1AP_Protocol_IEs
+8 −3
Original line number Diff line number Diff line
@@ -11,8 +11,8 @@
 */
module S1AP_Pixits {
    
    // LibCommon
//    import from LibCommon_BasicTypesAndValues all;
    // LibS1AP
    import from S1AP_CommonDataTypes language "ASN.1:1997" all;
    
    group S1AP_Port_and_addresses {
        
@@ -96,6 +96,11 @@ module S1AP_Pixits {
        */
        modulepar integer PX_VA := 1;
        
        /**
         * @desc Variant for Criticality values
         */
        modulepar Criticality PX_VA_CRITICALITY := reject;
        
        /** 
        * @desc    integer for timer TS1RELOCOverall, 
        * @see ETSI  TS 136 413, chapter 9.5
+636 −217

File changed.

Preview size limit exceeded, changes collapsed.

Loading