/*
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2016 Ericsson Telecom AB
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
///////////////////////////////////////////////////////////////////////////////
//
//  File:               Remote_Operations_Information_Objects.asn
//  Rev:                R2B
//  Updated:            2007-02-20
//  Prodnr:             CNL 113 369
//  Contact:            http://ttcn.ericsson.se
//  Reference:          ITU-T Recommentations X.880
*/ 
-- Module Remote-Operations-Information-Objects (X.880:07/1994)
Remote-Operations-Information-Objects {joint-iso-itu-t remote-operations(4)
  informationObjects(5) version2(1)} DEFINITIONS ::=
BEGIN

IMPORTS ;

-- exports everything
/*IMPORTS
  emptyBind, emptyUnbind
    FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
      remote-operations(4) useful-definitions(7) version2(1)};
*/
OPERATION ::= CLASS {
  &ArgumentType          OPTIONAL,
  &argumentTypeOptional  BOOLEAN OPTIONAL,
  &returnResult          BOOLEAN DEFAULT TRUE,
  &ResultType            OPTIONAL,
  &resultTypeOptional    BOOLEAN OPTIONAL,
  &Errors                ERROR OPTIONAL,
  &Linked                OPERATION OPTIONAL,
  &synchronous           BOOLEAN DEFAULT FALSE,
  &idempotent            BOOLEAN DEFAULT FALSE,
  &alwaysReturns         BOOLEAN DEFAULT TRUE,
  &invokePriority        Priority OPTIONAL,
  &resultPriority        Priority OPTIONAL,
  &operationCode         Code UNIQUE OPTIONAL
}
WITH SYNTAX {
  [ARGUMENT &ArgumentType
   [OPTIONAL &argumentTypeOptional]]
  [RESULT &ResultType
   [OPTIONAL &resultTypeOptional]]
  [RETURN RESULT &returnResult]
  [ERRORS &Errors]
  [LINKED &Linked]
  [SYNCHRONOUS &synchronous]
  [IDEMPOTENT &idempotent]
  [ALWAYS RESPONDS &alwaysReturns]
  [INVOKE PRIORITY &invokePriority]
  [RESULT-PRIORITY &resultPriority]
  [CODE &operationCode]
}

ERROR ::= CLASS {
  &ParameterType          OPTIONAL,
  &parameterTypeOptional  BOOLEAN OPTIONAL,
  &errorPriority          Priority OPTIONAL,
  &errorCode              Code UNIQUE OPTIONAL
}
WITH SYNTAX {
  [PARAMETER &ParameterType
   [OPTIONAL &parameterTypeOptional]]
  [PRIORITY &errorPriority]
  [CODE &errorCode]
}

OPERATION-PACKAGE ::= CLASS {
  &Both      OPERATION OPTIONAL,
  &Consumer  OPERATION OPTIONAL,
  &Supplier  OPERATION OPTIONAL,
  &id        OBJECT IDENTIFIER UNIQUE OPTIONAL
}
-- continued on the next page
WITH SYNTAX {
  [OPERATIONS &Both]
  [CONSUMER INVOKES &Supplier]
  [SUPPLIER INVOKES &Consumer]
  [ID &id]
}
/*
CONNECTION-PACKAGE ::= CLASS {
  &bind                OPERATION DEFAULT emptyBind,
  &unbind              OPERATION DEFAULT emptyUnbind,
  &responderCanUnbind  BOOLEAN DEFAULT FALSE,
  &unbindCanFail       BOOLEAN DEFAULT FALSE,
  &id                  OBJECT IDENTIFIER UNIQUE OPTIONAL
}
WITH SYNTAX {
  [BIND &bind]
  [UNBIND &unbind]
  [RESPONDER UNBIND &responderCanUnbind]
  [FAILURE TO UNBIND &unbindCanFail]
  [ID &id]
}
*/
CONTRACT ::= CLASS {
/*  &connection           CONNECTION-PACKAGE OPTIONAL,*/
  &OperationsOf         OPERATION-PACKAGE OPTIONAL,
  &InitiatorConsumerOf  OPERATION-PACKAGE OPTIONAL,
  &InitiatorSupplierOf  OPERATION-PACKAGE OPTIONAL,
  &id                   OBJECT IDENTIFIER UNIQUE OPTIONAL
}
WITH SYNTAX {
/*  [CONNECTION &connection]*/
  [OPERATIONS OF &OperationsOf]
  [INITIATOR CONSUMER OF &InitiatorConsumerOf]
  [RESPONDER CONSUMER OF &InitiatorSupplierOf]
  [ID &id]
}

ROS-OBJECT-CLASS ::= CLASS {
  &Is                    ROS-OBJECT-CLASS OPTIONAL,
  &Initiates             CONTRACT OPTIONAL,
  &Responds              CONTRACT OPTIONAL,
  &InitiatesAndResponds  CONTRACT OPTIONAL,
  &id                    OBJECT IDENTIFIER UNIQUE
}
WITH SYNTAX {
  [IS &Is]
  [BOTH &InitiatesAndResponds]
  [INITIATES &Initiates]
  [RESPONDS &Responds]
  ID &id
}

Code ::= CHOICE {local   INTEGER,
                 global  OBJECT IDENTIFIER
}

Priority ::= INTEGER(0..MAX)

END -- end of Information Object specifications

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

