Remote-Operations-Useful-Definitions {joint-iso-itu-t remote-operations(4) useful-definitions(7) version2(1)}
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
-- exports everything
IMPORTS
OPERATION, ERROR, OPERATION-PACKAGE, Code
FROM Remote-Operations-Information-Objects
{joint-iso-itu-t remote-operations(4) informationObjects(5) version1(0)}
InvokeId, ROS{}
FROM Remote-Operations-Generic-ROS-PDUs
{joint-iso-itu-t remote-operations(4) generic-ROS-PDUs(6) version1(0)};
emptyBind OPERATION ::= {ERRORS {refuse} SYNCHRONOUS TRUE}
emptyUnbind OPERATION ::= { SYNCHRONOUS TRUE }
refuse ERROR ::= {CODE local:-1}
no-op OPERATION ::=
{
IDEMPOTENT TRUE
ALWAYS RESPONDS FALSE
CODE local:-1
}
Forward {OPERATION:OperationSet} OPERATION ::=
{
OperationSet |
OperationSet.&Linked.&Linked |
OperationSet.&Linked.&Linked.&Linked.&Linked
}
Reverse {OPERATION:OperationSet} OPERATION ::=
{Forward{{OperationSet.&Linked}}}
ConsumerPerforms {OPERATION-PACKAGE:package} OPERATION ::=
{
Forward{{package.&Consumer}} |
Forward{{package.&Both}} |
Reverse{{package.&Supplier}} |
Reverse{{package.&Both}}
}
SupplierPerforms {OPERATION-PACKAGE:package} OPERATION ::=
{
Forward{{package.&Supplier}} |
Forward{{package.&Both}} |
Reverse{{package.&Consumer}} |
Reverse{{package.&Both}}
}
AllOperations {OPERATION-PACKAGE:package} OPERATION ::=
{
ConsumerPerforms {package} |
SupplierPerforms {package}
}
recode {OPERATION:operation, Code:code} OPERATION ::=
{
ARGUMENT operation.&ArgumentType
OPTIONAL operation.&argumentTypeOptional
RESULT operation.&ResultType
OPTIONAL operation.&resultTypeOptional
RETURN RESULT operation.&returnResult
ERRORS {operation.&Errors}
LINKED {operation.&Linked}
SYNCHRONOUS operation.&synchronous
ALWAYS RESPONDS operation.&alwaysReturns
INVOKE PRIORITY {operation.&InvokePriority}
RESULT-PRIORITY {operation.&ResultPriority}
CODE code
}
switch {OPERATION-PACKAGE:package, OBJECT IDENTIFIER:id} OPERATION-PACKAGE ::=
{
OPERATIONS {package.&Both}
CONSUMER INVOKES {package.&Consumer}
SUPPLIER INVOKES {package.&Supplier}
ID id
}
combine {OPERATION-PACKAGE:ConsumerConsumes,OPERATION-PACKAGE:ConsumerSupplies,
OPERATION-PACKAGE:base
} OPERATION-PACKAGE ::=
{
OPERATIONS {ConsumerConsumes.&Both | ConsumerSupplies.&Both}
CONSUMER INVOKES {ConsumerConsumes.&Consumer | ConsumerSupplies.&Supplier}
SUPPLIER INVOKES {ConsumerConsumes.&Supplier | ConsumerSupplies.&Consumer}
ID base.&id
}
ROS-SingleAS {InvokeId:InvokeIdSet, OPERATION-PACKAGE:package} ::= ROS
{{InvokeIdSet}, {AllOperations{package}}, {AllOperations{package}}}
ROS-ConsumerAS {InvokeId:InvokeIdSet, OPERATION-PACKAGE:package} ::= ROS
{{InvokeIdSet}, {ConsumerPerforms{package}}, {SupplierPerforms{package}}}
ROS-SupplierAS {InvokeId:InvokeIdSet, OPERATION-PACKAGE:package} ::= ROS
{{InvokeIdSet}, {SupplierPerforms{package}}, {ConsumerPerforms{package}}}
probe OPERATION ::=
{
ARGUMENT SEQUENCE
{
invokeId [0] InvokeId
}
RESULT ENUMERATED{running(0), finished(1), unknown(2), ...}
IDEMPOTENT TRUE
CODE local:-2
}
acknowledge OPERATION ::=
{
ARGUMENT InvokeId
RESULT ENUMERATED{acknowledged(0), unknown(1), ...}
IDEMPOTENT TRUE
CODE local:-3
}
ProbeAndAcknowledge OPERATION ::= {probe | acknowledge}
cancel OPERATION ::=
{
ARGUMENT InvokeId
ERRORS {cancelFailed}
IDEMPOTENT TRUE
CODE local:-4
}
cancelFailed ERROR ::=
{
PARAMETER SET
{
problem [0] CancelProblem,
operation [1] InvokeId
}
CODE local:-2
}
CancelProblem ::= ENUMERATED
{unknownOperation(0), tooLate(1), operationNotCancellable(2), ...}
cancelled ERROR ::= {CODE local:-3}
END -- end of useful definitions.