-- Module Remote-Operations-Useful-Definitions (X.880:07/1994)
-- See also ITU-T X.880 (1994) Amend. 1 (11/1995)
-- See also the index of all ASN.1 assignments needed in this document

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) version2(1)}
  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
}

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
}

cancelled ERROR ::= {CODE  local:-3
}

CancelProblem ::= ENUMERATED {
  unknownOperation(0), tooLate(1), operationNotCancellable(2), ...
  }

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}}

-- continued on the next page
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}}}

END -- end of useful definitions.
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D