-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************

S1AP-PDU-Descriptions  { 
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-PDU-Descriptions (0)}

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************

IMPORTS
    S1ap-Criticality,
    S1ap-ProcedureCode
FROM S1AP-CommonDataTypes

    S1ap-CellTrafficTrace,
    S1ap-DeactivateTrace,
    S1ap-DownlinkUEAssociatedLPPaTransport,
    S1ap-DownlinkNASTransport,
    S1ap-DownlinkNonUEAssociatedLPPaTransport,
    S1ap-DownlinkS1cdma2000tunneling,
    S1ap-ENBDirectInformationTransfer,
    S1ap-ENBStatusTransfer,
    S1ap-ENBConfigurationUpdate,
    S1ap-ENBConfigurationUpdateAcknowledge,
    S1ap-ENBConfigurationUpdateFailure,
    S1ap-ErrorIndication,
    S1ap-HandoverCancel,
    S1ap-HandoverCancelAcknowledge,
    S1ap-HandoverCommand,
    S1ap-HandoverFailure,
    S1ap-HandoverNotify,
    S1ap-HandoverPreparationFailure,
    S1ap-HandoverRequest,
    S1ap-HandoverRequestAcknowledge,
    S1ap-HandoverRequired,
    S1ap-InitialContextSetupFailure,
    S1ap-InitialContextSetupRequest,
    S1ap-InitialContextSetupResponse,
    S1ap-InitialUEMessage,
    S1ap-KillRequest,
    S1ap-KillResponse,
    S1ap-LocationReportingControl,
    S1ap-LocationReportingFailureIndication,
    S1ap-LocationReport,
    S1ap-MMEConfigurationUpdate,
    S1ap-MMEConfigurationUpdateAcknowledge,
    S1ap-MMEConfigurationUpdateFailure,
    S1ap-MMEDirectInformationTransfer,
    S1ap-MMEStatusTransfer,
    S1ap-NASNonDeliveryIndication,
    S1ap-OverloadStart,
    S1ap-OverloadStop,
    S1ap-Paging,
    S1ap-PathSwitchRequest,
    S1ap-PathSwitchRequestAcknowledge,
    S1ap-PathSwitchRequestFailure,
    S1ap-PrivateMessage,
    S1ap-Reset,
    S1ap-ResetAcknowledge,
    S1ap-S1SetupFailure,
    S1ap-S1SetupRequest,
    S1ap-S1SetupResponse,
    E-S1ap-RABModifyRequest,
    E-S1ap-RABModifyResponse,
    E-S1ap-RABReleaseCommand,
    E-S1ap-RABReleaseResponse,
    E-S1ap-RABReleaseIndication,
    E-S1ap-RABSetupRequest,
    E-S1ap-RABSetupResponse,
    S1ap-TraceFailureIndication,
    S1ap-TraceStart,
    S1ap-UECapabilityInfoIndication,
    S1ap-UEContextModificationFailure,
    S1ap-UEContextModificationRequest,
    S1ap-UEContextModificationResponse,
    S1ap-UEContextReleaseCommand,
    S1ap-UEContextReleaseComplete,
    S1ap-UEContextReleaseRequest,
    S1ap-UplinkUEAssociatedLPPaTransport,
    S1ap-UplinkNASTransport,
    S1ap-UplinkNonUEAssociatedLPPaTransport,
    S1ap-UplinkS1cdma2000tunneling,
    S1ap-WriteReplaceWarningRequest,
    S1ap-WriteReplaceWarningResponse,
    S1ap-ENBConfigurationTransfer,
    S1ap-MMEConfigurationTransfer

FROM S1AP-PDU-Contents

    id-CellTrafficTrace,
    id-DeactivateTrace,
    id-downlinkUEAssociatedLPPaTransport,
    id-downlinkNASTransport,
    id-downlinkNonUEAssociatedLPPaTransport,
    id-DownlinkS1cdma2000tunneling,
    id-eNBStatusTransfer,
    id-ErrorIndication,
    id-HandoverCancel,
    id-HandoverNotification,
    id-HandoverPreparation,
    id-HandoverResourceAllocation,
    id-InitialContextSetup,
    id-initialUEMessage,
    id-ENBConfigurationUpdate,
    id-Kill,
    id-LocationReportingControl,
    id-LocationReportingFailureIndication,
    id-LocationReport,
    id-eNBDirectInformationTransfer,
    id-MMEConfigurationUpdate,
    id-MMEDirectInformationTransfer,
    id-MMEStatusTransfer,
    id-NASNonDeliveryIndication,
    id-OverloadStart,
    id-OverloadStop,
    id-Paging,
    id-PathSwitchRequest,
    id-PrivateMessage,
    id-Reset,
    id-S1Setup,
    id-E-RABModify,
    id-E-RABRelease,
    id-E-RABReleaseIndication,
    id-E-RABSetup,
    id-TraceFailureIndication,
    id-TraceStart,
    id-UECapabilityInfoIndication,
    id-UEContextModification,
    id-UEContextRelease,
    id-UEContextReleaseRequest,
    id-uplinkUEAssociatedLPPaTransport,
    id-uplinkNASTransport,
    id-uplinkNonUEAssociatedLPPaTransport,
    id-UplinkS1cdma2000tunneling,
    id-WriteReplaceWarning,
    id-eNBConfigurationTransfer,
    id-MMEConfigurationTransfer
FROM S1AP-Constants;


-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************

S1AP-ELEMENTARY-PROCEDURE ::= CLASS {
    &InitiatingMessage                ,
    &SuccessfulOutcome                OPTIONAL,
    &UnsuccessfulOutcome                OPTIONAL,
    &procedureCode            ProcedureCode     UNIQUE,
    &criticality            Criticality     DEFAULT ignore
}
WITH SYNTAX {
    INITIATING MESSAGE            &InitiatingMessage
    [SUCCESSFUL OUTCOME            &SuccessfulOutcome]
    [UNSUCCESSFUL OUTCOME        &UnsuccessfulOutcome]
    PROCEDURE CODE                &procedureCode
    [CRITICALITY                &criticality]
}

-- **************************************************************
--
-- Interface PDU Definition
--
-- **************************************************************

S1AP-PDU ::= CHOICE {
    initiatingMessage    InitiatingMessage,
    successfulOutcome    SuccessfulOutcome,
    unsuccessfulOutcome    UnsuccessfulOutcome,
    ...
}

InitiatingMessage ::= SEQUENCE {
    procedureCode    S1AP-ELEMENTARY-PROCEDURE.&procedureCode    ({S1AP-ELEMENTARY-PROCEDURES}),
    criticality    S1AP-ELEMENTARY-PROCEDURE.&criticality            ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
    value        S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage    ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}

SuccessfulOutcome ::= SEQUENCE {
    procedureCode    S1AP-ELEMENTARY-PROCEDURE.&procedureCode    ({S1AP-ELEMENTARY-PROCEDURES}),
    criticality    S1AP-ELEMENTARY-PROCEDURE.&criticality            ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
    value        S1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome    ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}

UnsuccessfulOutcome ::= SEQUENCE {
    procedureCode    S1AP-ELEMENTARY-PROCEDURE.&procedureCode    ({S1AP-ELEMENTARY-PROCEDURES}),
    criticality    S1AP-ELEMENTARY-PROCEDURE.&criticality            ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
    value        S1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome    ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}

-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************

S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= {
    S1AP-ELEMENTARY-PROCEDURES-CLASS-1        |
    S1AP-ELEMENTARY-PROCEDURES-CLASS-2,
    ...
}


S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= {
    handoverPreparation                |
    handoverResourceAllocation        |
    pathSwitchRequest                 |
    e-RABSetup                        |
    e-RABModify                        |
    e-RABRelease                    |
    initialContextSetup                |
    handoverCancel                    |
    kill                            |
    reset                            |
    s1Setup                            |
    uEContextModification            |
    uEContextRelease                |
    eNBConfigurationUpdate            |
    mMEConfigurationUpdate            |
    writeReplaceWarning                ,
    ...
}

S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= {    
    handoverNotification            |
    e-RABReleaseIndication            |
    paging                             |
    downlinkNASTransport            |
    initialUEMessage                |
    uplinkNASTransport                |
    errorIndication                    |
    nASNonDeliveryIndication        |
    uEContextReleaseRequest            |
    downlinkS1cdma2000tunneling        |
    uplinkS1cdma2000tunneling        |
    uECapabilityInfoIndication        |
    eNBStatusTransfer                |
    mMEStatusTransfer                |
    deactivateTrace                    |
    traceStart                        |
    traceFailureIndication            |
    cellTrafficTrace                |
    locationReportingControl        |
    locationReportingFailureIndication    |
    locationReport                    |
    overloadStart                    |
    overloadStop                    |
    eNBDirectInformationTransfer    |
    mMEDirectInformationTransfer    |
    eNBConfigurationTransfer        |
    mMEConfigurationTransfer        |
    privateMessage                    ,
    ...,
    downlinkUEAssociatedLPPaTransport    |
    uplinkUEAssociatedLPPaTransport    |
    downlinkNonUEAssociatedLPPaTransport    |
    uplinkNonUEAssociatedLPPaTransport
}

-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************

handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    HandoverRequired
    SUCCESSFUL OUTCOME    HandoverCommand
    UNSUCCESSFUL OUTCOME    HandoverPreparationFailure
    PROCEDURE CODE            id-HandoverPreparation
    CRITICALITY        reject
}

handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    HandoverRequest
    SUCCESSFUL OUTCOME    HandoverRequestAcknowledge
    UNSUCCESSFUL OUTCOME    HandoverFailure
    PROCEDURE CODE            id-HandoverResourceAllocation
    CRITICALITY        reject
}

handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    HandoverNotify
    PROCEDURE CODE            id-HandoverNotification
    CRITICALITY        ignore
}

pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    PathSwitchRequest
    SUCCESSFUL OUTCOME    PathSwitchRequestAcknowledge
    UNSUCCESSFUL OUTCOME    PathSwitchRequestFailure
    PROCEDURE CODE            id-PathSwitchRequest
    CRITICALITY        reject
}

e-RABSetup S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    E-RABSetupRequest
    SUCCESSFUL OUTCOME    E-RABSetupResponse
    PROCEDURE CODE        id-E-RABSetup
    CRITICALITY        reject
}

e-RABModify S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    E-RABModifyRequest
    SUCCESSFUL OUTCOME    E-RABModifyResponse
    PROCEDURE CODE        id-E-RABModify
    CRITICALITY        reject
}

e-RABRelease S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    E-RABReleaseCommand
    SUCCESSFUL OUTCOME    E-RABReleaseResponse
    PROCEDURE CODE        id-E-RABRelease
    CRITICALITY        reject
}

e-RABReleaseIndication S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    E-RABReleaseIndication
    PROCEDURE CODE        id-E-RABReleaseIndication
    CRITICALITY        ignore
}

initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    InitialContextSetupRequest
    SUCCESSFUL OUTCOME    InitialContextSetupResponse
    UNSUCCESSFUL OUTCOME InitialContextSetupFailure
    PROCEDURE CODE        id-InitialContextSetup
    CRITICALITY        reject
}

uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        UEContextReleaseRequest
    PROCEDURE CODE            id-UEContextReleaseRequest
    CRITICALITY                ignore
}

paging S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    Paging
    PROCEDURE CODE        id-Paging
    CRITICALITY            ignore
}

downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        DownlinkNASTransport
    PROCEDURE CODE            id-downlinkNASTransport
    CRITICALITY                ignore
}

initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        InitialUEMessage
    PROCEDURE CODE            id-initialUEMessage
    CRITICALITY                ignore
}

uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        UplinkNASTransport
    PROCEDURE CODE            id-uplinkNASTransport
    CRITICALITY                ignore
}
nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        NASNonDeliveryIndication
    PROCEDURE CODE            id-NASNonDeliveryIndication
    CRITICALITY                ignore
}

handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    HandoverCancel
    SUCCESSFUL OUTCOME    HandoverCancelAcknowledge
    PROCEDURE CODE            id-HandoverCancel
    CRITICALITY        reject
}

reset S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    Reset
    SUCCESSFUL OUTCOME    ResetAcknowledge
    PROCEDURE CODE        id-Reset
    CRITICALITY            reject
}

errorIndication S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    ErrorIndication
    PROCEDURE CODE        id-ErrorIndication
    CRITICALITY        ignore
}

s1Setup S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        S1SetupRequest
    SUCCESSFUL OUTCOME        S1SetupResponse
    UNSUCCESSFUL OUTCOME     S1SetupFailure
    PROCEDURE CODE            id-S1Setup
    CRITICALITY                reject
}

eNBConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        ENBConfigurationUpdate
    SUCCESSFUL OUTCOME        ENBConfigurationUpdateAcknowledge
    UNSUCCESSFUL OUTCOME     ENBConfigurationUpdateFailure
    PROCEDURE CODE            id-ENBConfigurationUpdate
    CRITICALITY                reject
}

mMEConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        MMEConfigurationUpdate
    SUCCESSFUL OUTCOME        MMEConfigurationUpdateAcknowledge
    UNSUCCESSFUL OUTCOME     MMEConfigurationUpdateFailure
    PROCEDURE CODE            id-MMEConfigurationUpdate
    CRITICALITY                reject
}

downlinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        DownlinkS1cdma2000tunneling
    PROCEDURE CODE            id-DownlinkS1cdma2000tunneling
    CRITICALITY                ignore
}

uplinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        UplinkS1cdma2000tunneling
    PROCEDURE CODE            id-UplinkS1cdma2000tunneling
    CRITICALITY                ignore
}

uEContextModification S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        UEContextModificationRequest
    SUCCESSFUL OUTCOME        UEContextModificationResponse
    UNSUCCESSFUL OUTCOME     UEContextModificationFailure

    PROCEDURE CODE        id-UEContextModification
    CRITICALITY        reject
}

uECapabilityInfoIndication S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        UECapabilityInfoIndication
    PROCEDURE CODE            id-UECapabilityInfoIndication
    CRITICALITY                ignore
}

uEContextRelease S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        UEContextReleaseCommand
    SUCCESSFUL OUTCOME        UEContextReleaseComplete
    PROCEDURE CODE            id-UEContextRelease
    CRITICALITY                reject
}

eNBStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        ENBStatusTransfer
    PROCEDURE CODE            id-eNBStatusTransfer
    CRITICALITY                ignore
}

mMEStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        MMEStatusTransfer
    PROCEDURE CODE            id-MMEStatusTransfer
    CRITICALITY                ignore
}

deactivateTrace S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        DeactivateTrace
    PROCEDURE CODE            id-DeactivateTrace
    CRITICALITY                ignore
}

traceStart S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    TraceStart
    PROCEDURE CODE        id-TraceStart
    CRITICALITY            ignore
}

traceFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    TraceFailureIndication
    PROCEDURE CODE        id-TraceFailureIndication
    CRITICALITY            ignore
}
cellTrafficTrace S1AP-ELEMENTARY-PROCEDURE ::={
INITIATING MESSAGE CellTrafficTrace
PROCEDURE CODE      id-CellTrafficTrace
CRITICALITY         ignore
}

locationReportingControl S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        LocationReportingControl
    PROCEDURE CODE            id-LocationReportingControl
    CRITICALITY                ignore
}

locationReportingFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        LocationReportingFailureIndication
    PROCEDURE CODE            id-LocationReportingFailureIndication
    CRITICALITY                ignore
}

locationReport S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        LocationReport
    PROCEDURE CODE            id-LocationReport
    CRITICALITY                ignore
}

overloadStart S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    OverloadStart
    PROCEDURE CODE        id-OverloadStart
    CRITICALITY        ignore
}

overloadStop S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    OverloadStop
    PROCEDURE CODE        id-OverloadStop
    CRITICALITY        reject
}

writeReplaceWarning S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    WriteReplaceWarningRequest
    SUCCESSFUL OUTCOME    WriteReplaceWarningResponse
    PROCEDURE CODE        id-WriteReplaceWarning
    CRITICALITY            reject
}

eNBDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    ENBDirectInformationTransfer
    PROCEDURE CODE        id-eNBDirectInformationTransfer
    CRITICALITY            ignore
}

mMEDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    MMEDirectInformationTransfer
    PROCEDURE CODE        id-MMEDirectInformationTransfer
    CRITICALITY            ignore
}

eNBConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        ENBConfigurationTransfer
    PROCEDURE CODE            id-eNBConfigurationTransfer
    CRITICALITY                ignore
}

mMEConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        MMEConfigurationTransfer
    PROCEDURE CODE            id-MMEConfigurationTransfer
    CRITICALITY                ignore
}


privateMessage S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    PrivateMessage
    PROCEDURE CODE        id-PrivateMessage
    CRITICALITY            ignore
}

kill S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE    KillRequest
    SUCCESSFUL OUTCOME    KillResponse
    PROCEDURE CODE        id-Kill
    CRITICALITY            reject
}

downlinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        DownlinkUEAssociatedLPPaTransport
    PROCEDURE CODE            id-downlinkUEAssociatedLPPaTransport
    CRITICALITY                ignore
}

uplinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        UplinkUEAssociatedLPPaTransport
    PROCEDURE CODE            id-uplinkUEAssociatedLPPaTransport
    CRITICALITY                ignore
}
downlinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        DownlinkNonUEAssociatedLPPaTransport
    PROCEDURE CODE            id-downlinkNonUEAssociatedLPPaTransport
    CRITICALITY                ignore
}

uplinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE        UplinkNonUEAssociatedLPPaTransport
    PROCEDURE CODE            id-uplinkNonUEAssociatedLPPaTransport
    CRITICALITY                ignore
}

END
