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

    X2ap-CellActivationRequest,
    X2ap-CellActivationResponse,
    X2ap-CellActivationFailure,
    X2ap-ENBConfigurationUpdate,
    X2ap-ENBConfigurationUpdateAcknowledge,
    X2ap-ENBConfigurationUpdateFailure,
    X2ap-ErrorIndication,
    X2ap-HandoverCancel,
    X2ap-HandoverReport,
    X2ap-HandoverPreparationFailure,
    X2ap-HandoverRequest,
    X2ap-HandoverRequestAcknowledge,
    X2ap-LoadInformation,
    X2ap-PrivateMessage,
    X2ap-ResetRequest,
    X2ap-ResetResponse,
    X2ap-ResourceStatusFailure,
    X2ap-ResourceStatusRequest,
    X2ap-ResourceStatusResponse,
    X2ap-ResourceStatusUpdate,
    X2ap-RLFIndication,
    X2ap-SNStatusTransfer,
    X2ap-UEContextRelease,
    X2SetupFailure, X2SetupRequest,
    X2SetupResponse,
    X2ap-MobilityChangeRequest,
    X2ap-MobilityChangeAcknowledge,
    X2ap-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
