-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
X2AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Descriptions (0) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
    Criticality,
    ProcedureCode
    FROM X2AP-CommonDataTypes
    CellActivationRequest,
    CellActivationResponse,
    CellActivationFailure,
    ENBConfigurationUpdate,
    ENBConfigurationUpdateAcknowledge,
    ENBConfigurationUpdateFailure,
    ErrorIndication,
    HandoverCancel,
    HandoverReport,
    HandoverPreparationFailure,
    HandoverRequest,
    HandoverRequestAcknowledge,
    LoadInformation,
    PrivateMessage,
    ResetRequest,
    ResetResponse,
    ResourceStatusFailure,
    ResourceStatusRequest,
    ResourceStatusResponse,
    ResourceStatusUpdate,
    RLFIndication,
    SNStatusTransfer,
    UEContextRelease,
    X2SetupFailure, X2SetupRequest,
    X2SetupResponse,
    MobilityChangeRequest,
    MobilityChangeAcknowledge,
    MobilityChangeFailure
    FROM X2AP-PDU-Contents
    id-cellActivation,
    id-eNBConfigurationUpdate,
    id-errorIndication,
    id-handoverCancel,
    id-handoverReport,
    id-handoverPreparation,
    id-loadIndication,
    id-privateMessage,
    id-reset,
    id-resourceStatusReporting,
    id-resourceStatusReportingInitiation,
    id-rLFIndication,
    id-snStatusTransfer,
    id-uEContextRelease,
    id-x2Setup,
    id-mobilitySettingsChange
    FROM X2AP-Constants;

-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
X2AP-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
--
-- **************************************************************
X2AP-PDU ::= CHOICE {
    initiatingMessage InitiatingMessage,
    successfulOutcome SuccessfulOutcome,
    unsuccessfulOutcome UnsuccessfulOutcome,
    ...
}
InitiatingMessage ::= SEQUENCE {
    procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
    criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
    value X2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
    procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
    criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
    value X2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
    procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
    criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
    value X2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURES X2AP-ELEMENTARY-PROCEDURE ::= {
    X2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
    X2AP-ELEMENTARY-PROCEDURES-CLASS-2 ,
    ...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 X2AP-ELEMENTARY-PROCEDURE ::= {
    handoverPreparation |
    reset |
    x2Setup |
    resourceStatusReportingInitiation |
    eNBConfigurationUpdate |
    mobilitySettingsChange |
    cellActivation ,
    ...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 X2AP-ELEMENTARY-PROCEDURE ::= {
    snStatusTransfer |
    uEContextRelease |
    handoverCancel |
    errorIndication |
    resourceStatusReporting |
    loadIndication |
    privateMessage |
    rLFIndication | handoverReport,
    ...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
handoverPreparation X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE HandoverRequest
    SUCCESSFUL OUTCOME HandoverRequestAcknowledge
    UNSUCCESSFUL OUTCOME HandoverPreparationFailure
    PROCEDURE CODE id-handoverPreparation
    CRITICALITY reject
}
snStatusTransfer X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE SNStatusTransfer
    PROCEDURE CODE id-snStatusTransfer
    CRITICALITY ignore
}
uEContextRelease X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE UEContextRelease
    PROCEDURE CODE id-uEContextRelease
    CRITICALITY ignore
}
handoverCancel X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE HandoverCancel
    PROCEDURE CODE id-handoverCancel
    CRITICALITY ignore
}
handoverReport X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE HandoverReport
    PROCEDURE CODE id-handoverReport
    CRITICALITY ignore
}
errorIndication X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE ErrorIndication
    PROCEDURE CODE id-errorIndication
    CRITICALITY ignore
}
reset X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE ResetRequest
    SUCCESSFUL OUTCOME ResetResponse
    PROCEDURE CODE id-reset
    CRITICALITY reject
}
x2Setup X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE X2SetupRequest
    SUCCESSFUL OUTCOME X2SetupResponse
    UNSUCCESSFUL OUTCOME X2SetupFailure
    PROCEDURE CODE id-x2Setup
    CRITICALITY reject
}
loadIndication X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE LoadInformation
    PROCEDURE CODE id-loadIndication
    CRITICALITY ignore
}
eNBConfigurationUpdate X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE ENBConfigurationUpdate
    SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge
    UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure
    PROCEDURE CODE id-eNBConfigurationUpdate
    CRITICALITY reject
}
resourceStatusReportingInitiation X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE ResourceStatusRequest
    SUCCESSFUL OUTCOME ResourceStatusResponse
    UNSUCCESSFUL OUTCOME ResourceStatusFailure
    PROCEDURE CODE id-resourceStatusReportingInitiation
    CRITICALITY reject
}
resourceStatusReporting X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE ResourceStatusUpdate
    PROCEDURE CODE id-resourceStatusReporting
    CRITICALITY ignore
}
rLFIndication X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE RLFIndication
    PROCEDURE CODE id-rLFIndication
    CRITICALITY ignore
}
privateMessage X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE PrivateMessage
    PROCEDURE CODE id-privateMessage
    CRITICALITY ignore
}
mobilitySettingsChange X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE MobilityChangeRequest
    SUCCESSFUL OUTCOME MobilityChangeAcknowledge
    UNSUCCESSFUL OUTCOME MobilityChangeFailure
    PROCEDURE CODE id-mobilitySettingsChange
    CRITICALITY reject
}
cellActivation X2AP-ELEMENTARY-PROCEDURE ::= {
    INITIATING MESSAGE CellActivationRequest
    SUCCESSFUL OUTCOME CellActivationResponse
    UNSUCCESSFUL OUTCOME CellActivationFailure
    PROCEDURE CODE id-cellActivation
    CRITICALITY reject
}
END
