-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
SABP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) sabp (3) version1 (1) sabp-PDU-Descriptions (0)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
 Criticality,
 ProcedureCode
FROM SABP-CommonDataTypes
 Error-Indication,
 Failure,
 Kill,
 Kill-Complete,
 Kill-Failure,
 Load-Query,
 Load-Query-Complete,
 Load-Query-Failure,
 Reset,
 Reset-Complete,
 Reset-Failure,
 Restart,
 Message-Status-Query,
 Message-Status-Query-Complete,
 Message-Status-Query-Failure,
 Write-Replace,
 Write-Replace-Complete,
 Write-Replace-Failure
FROM SABP-PDU-Contents
 id-Error-Indication,
 id-Failure-Indication,
 id-Kill,
 id-Reset, 
 id-Restart-Indication,
 id-Load-Status-Enquiry,
 id-Message-Status-Query,
 id-Write-Replace
FROM SABP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
SABP-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
--
-- **************************************************************
SABP-PDU ::= CHOICE {
 initiatingMessage InitiatingMessage,
 successfulOutcome SuccessfulOutcome,
 unsuccessfulOutcome UnsuccessfulOutcome,
 ...
}
InitiatingMessage ::= SEQUENCE {
 procedureCode SABP-ELEMENTARY-PROCEDURE.&procedureCode ({SABP-ELEMENTARY-PROCEDURES}),
 criticality SABP-ELEMENTARY-PROCEDURE.&criticality ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}),
 value SABP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
 procedureCode SABP-ELEMENTARY-PROCEDURE.&procedureCode ({SABP-ELEMENTARY-PROCEDURES}),
 criticality SABP-ELEMENTARY-PROCEDURE.&criticality ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}),
 value SABP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode})
} 
UnsuccessfulOutcome ::= SEQUENCE {
 procedureCode SABP-ELEMENTARY-PROCEDURE.&procedureCode ({SABP-ELEMENTARY-PROCEDURES}),
 criticality SABP-ELEMENTARY-PROCEDURE.&criticality ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}),
 value SABP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
SABP-ELEMENTARY-PROCEDURES SABP-ELEMENTARY-PROCEDURE ::= {
 SABP-ELEMENTARY-PROCEDURES-CLASS-1 |
 SABP-ELEMENTARY-PROCEDURES-CLASS-2 ,
 ...
}
SABP-ELEMENTARY-PROCEDURES-CLASS-1 SABP-ELEMENTARY-PROCEDURE ::= {
 write-Replace |
 kill |
 load-Status-Enquiry |
 message-Status-Query |
 reset ,
 ...
}
SABP-ELEMENTARY-PROCEDURES-CLASS-2 SABP-ELEMENTARY-PROCEDURE ::= {
 restart-Indication |
 failure-Indication |
 error-Indication ,
 ...
}
write-Replace SABP-ELEMENTARY-PROCEDURE ::= {
 INITIATING MESSAGE Write-Replace
 SUCCESSFUL OUTCOME Write-Replace-Complete
 UNSUCCESSFUL OUTCOME Write-Replace-Failure
 PROCEDURE CODE id-Write-Replace
 CRITICALITY reject
}
kill SABP-ELEMENTARY-PROCEDURE ::= {
 INITIATING MESSAGE Kill
 SUCCESSFUL OUTCOME Kill-Complete
 UNSUCCESSFUL OUTCOME Kill-Failure
 PROCEDURE CODE id-Kill
 CRITICALITY reject
}
load-Status-Enquiry SABP-ELEMENTARY-PROCEDURE ::= {
 INITIATING MESSAGE Load-Query
 SUCCESSFUL OUTCOME Load-Query-Complete
 UNSUCCESSFUL OUTCOME Load-Query-Failure 
 PROCEDURE CODE id-Load-Status-Enquiry
 CRITICALITY reject
}
message-Status-Query SABP-ELEMENTARY-PROCEDURE ::= {
 INITIATING MESSAGE Message-Status-Query
 SUCCESSFUL OUTCOME Message-Status-Query-Complete
 UNSUCCESSFUL OUTCOME Message-Status-Query-Failure
 PROCEDURE CODE id-Message-Status-Query
 CRITICALITY reject
}
reset SABP-ELEMENTARY-PROCEDURE ::= {
 INITIATING MESSAGE Reset
 SUCCESSFUL OUTCOME Reset-Complete
 UNSUCCESSFUL OUTCOME Reset-Failure
 PROCEDURE CODE id-Reset
 CRITICALITY reject
}
restart-Indication SABP-ELEMENTARY-PROCEDURE ::= {
 INITIATING MESSAGE Restart
 PROCEDURE CODE id-Restart-Indication
 CRITICALITY ignore
}
failure-Indication SABP-ELEMENTARY-PROCEDURE ::= {
 INITIATING MESSAGE Failure
 PROCEDURE CODE id-Failure-Indication
 CRITICALITY ignore
}
error-Indication SABP-ELEMENTARY-PROCEDURE ::= {
 INITIATING MESSAGE Error-Indication
 PROCEDURE CODE id-Error-Indication
 CRITICALITY ignore
}
END
