Remote-Operations-Useful-Definitions {joint-iso-itu-t remote-operations(4) useful-definitions(7) version1(0)} 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 ::= { 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.&Supplier} SUPPLIER INVOKES {package.&Consumer} ID id } combine {OPERATION-PACKAGE:ConsumerConsumes, OPERATION-PACKAGE:ConsumerSupplies, OPERATION-PACKAGE:base} OPERATION-PACKAGE ::= { OPERATIONS {ConsumerConsumes.&Both | ConsumerSupplies.&Both} CONSUMER INVOKES {ConsumerConsumes.&Supplier | ConsumerSupplies.&Consumer} SUPPLIER INVOKES {ConsumerConsumes.&Consumer | ConsumerSupplies.&Supplier} 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}}} END -- end of useful definitions.