-- **************************************************************
--
-- 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
    Criticality,
    ProcedureCode
FROM S1AP-CommonDataTypes

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