-- Module DirectoryInformationShadowProtocol (X.519:02/2001)
-- See also ITU-T X.519 (02/2001)
-- See also the index of all ASN.1 assignments needed in this document

DirectoryInformationShadowProtocol {joint-iso-itu-t ds(5) module(1) disp(16) 4}
DEFINITIONS ::=
BEGIN

-- EXPORTS All 
-- The types and values defined in this module are exported for use in the other ASN.1 modules contained 
-- within the Directory Specifications, and for the use of other applications which will use them to access 
-- Directory services. Other applications may use them for their own purposes, but this will not constrain
-- extensions and modifications needed to maintain or improve the Directory service.
IMPORTS
  -- from ITU-T Rec. X.501 | ISO/IEC 9594-2
  directoryShadowAbstractService, protocolObjectIdentifiers
    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
      usefulDefinitions(0) 4}
  -- from ITU-T Rec. X.519 | ISO/IEC 9594-5
  id-ac-shadowConsumerInitiatedAC, id-ac-shadowConsumerInitiatedAsynchronousAC,
    id-ac-shadowSupplierInitiatedAC,
    id-ac-shadowSupplierInitiatedAsynchronousAC,
    id-ac-reliableShadowConsumerInitiatedAC,
    id-ac-reliableShadowSupplierInitiatedAC, id-as-directoryReliableShadowAS,
    id-as-directoryShadowAS, id-as-reliableShadowBindingAS,
    id-contract-shadowConsumer, id-contract-shadowSupplier,
    id-package-dispConnection, id-package-shadowConsumer,
    id-package-shadowSupplier, id-rosObject-initiatingConsumerDSA,
    id-rosObject-initiatingSupplierDSA, id-rosObject-respondingSupplierDSA,
    id-rosObject-respondingConsumerDSA
    FROM ProtocolObjectIdentifiers {joint-iso-itu-t ds(5) module(1)
      protocolObjectIdentifiers(4) 4}
  -- from ITU-T Rec. X.525 | ISO/IEC 9594-9
  coordinateShadowUpdate, dSAShadowBind, dSAShadowUnbind, requestShadowUpdate,
    updateShadow
    FROM DirectoryShadowAbstractService {joint-iso-itu-t ds(5) module(1)
      directoryShadowAbstractService(15) 4}
  -- from ITU-T Rec. X.880 | ISO/IEC 13712-1
  Code, CONNECTION-PACKAGE, CONTRACT, OPERATION, OPERATION-PACKAGE,
    ROS-OBJECT-CLASS
    FROM Remote-Operations-Information-Objects {joint-iso-itu-t
      remote-operations(4) informationObjects(5) version1(0)}
  Bind{}, InvokeId, ROS{}, Unbind{}
    FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
      remote-operations(4) generic-ROS-PDUs(6) version1(0)}
  -- from ITU-T Rec. X.881 | ISO/IEC 13712-2
  APPLICATION-CONTEXT
    FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
      remote-operations(4) informationObjects-extensions(8) version1(0)}
  -- from ITU-T Rec. X.882 | ISO/IEC 13712-3
  acse, association-by-RTSE, pData, transfer-by-RTSE
    FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
      realizations(9) version1(0)}
  acse-abstract-syntax
    FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
      remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)}
  -- from ITU-T Rec. X.218 | ISO/IEC 9066-1
  RTORQapdu, RTOACapdu, RTORJapdu
    FROM Reliable-Transfer-APDU {joint-iso-itu-t reliable-transfer(3) apdus(0)};

RTSE-apdus ::= CHOICE {
  rtorq-apdu  [16] IMPLICIT RTORQapdu,
  rtoac-apdu  [17] IMPLICIT RTOACapdu,
  rtorj-apdu  [18] IMPLICIT RTORJapdu,
  rttp-apdu   RTTPapdu,
  rttr-apdu   RTTRapdu,
  rtab-apdu   [22] IMPLICIT RTABapdu
}

RTTPapdu ::= -- priority-- INTEGER

RTTRapdu ::= OCTET STRING

RTABapdu ::= SET {
  abortReason         [0] IMPLICIT AbortReason OPTIONAL,
  reflectedParameter  [1] IMPLICIT BIT STRING OPTIONAL,
  -- 8 bits maximum, only if abortReason is invalidParameter
  userdataAB          [2]  TYPE-IDENTIFIER.&Type OPTIONAL
} -- only in normal mode and if abortReason

-- is userError 
AbortReason ::= INTEGER {
  localSystemProblem(0),
  invalidParameter(1), -- reflectedParameter supplied
  unrecognizedActivity(2),
  temporaryProblem(3),
  -- the RTSE cannot accept a session for a period of time
  protocolError(4), -- RTSE level protocol error
  permanentProblem(5), --provider-abort solely in normal mode 
  userError(6), -- user-abort solely in normal mode
  transferCompleted(7) -- activity can't be discarded--}

-- application contexts 
shadowSupplierInitiatedAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowSupplierContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-shadowSupplierInitiatedAC
}

shadowSupplierInitiatedAsynchronousAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowSupplierContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-shadowSupplierInitiatedAsynchronousAC
}

shadowConsumerInitiatedAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowConsumerContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-shadowConsumerInitiatedAC
}

shadowConsumerInitiatedAsynchronousAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowConsumerContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-shadowConsumerInitiatedAsynchronousAC
}

reliableShadowSupplierInitiatedAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowSupplierContract
  ESTABLISHED BY            association-by-RTSE
  INFORMATION TRANSFER BY   transfer-by-RTSE
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | reliableShadowBindingAbstractSyntax |
      directoryReliableShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-reliableShadowSupplierInitiatedAC
}

reliableShadowConsumerInitiatedAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowConsumerContract
  ESTABLISHED BY            association-by-RTSE
  INFORMATION TRANSFER BY   transfer-by-RTSE
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | reliableShadowBindingAbstractSyntax |
      directoryReliableShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-reliableShadowConsumerInitiatedAC
}

-- ROS objects 
initiating-consumer-dsa ROS-OBJECT-CLASS ::= {
  INITIATES  {shadowConsumerContract}
  ID         id-rosObject-initiatingConsumerDSA
}

responding-supplier-dsa ROS-OBJECT-CLASS ::= {
  RESPONDS  {shadowConsumerContract}
  ID        id-rosObject-respondingSupplierDSA
}

initiating-supplier-dsa ROS-OBJECT-CLASS ::= {
  INITIATES  {shadowSupplierContract}
  ID         id-rosObject-initiatingSupplierDSA
}

responding-consumer-dsa ROS-OBJECT-CLASS ::= {
  RESPONDS  {shadowSupplierContract}
  ID        id-rosObject-respondingConsumerDSA
}

-- contracts 
shadowConsumerContract CONTRACT ::= {
  CONNECTION             dispConnectionPackage
  INITIATOR CONSUMER OF  {shadowConsumerPackage}
  ID                     id-contract-shadowConsumer
}

shadowSupplierContract CONTRACT ::= {
  CONNECTION             dispConnectionPackage
  RESPONDER CONSUMER OF  {shadowSupplierPackage}
  ID                     id-contract-shadowSupplier
}

-- connection package 
dispConnectionPackage CONNECTION-PACKAGE ::= {
  BIND    dSAShadowBind
  UNBIND  dSAShadowUnbind
  ID      id-package-dispConnection
}

-- packages 
shadowConsumerPackage OPERATION-PACKAGE ::= {
  CONSUMER INVOKES  {requestShadowUpdate}
  SUPPLIER INVOKES  {updateShadow}
  ID                id-package-shadowConsumer
}

shadowSupplierPackage OPERATION-PACKAGE ::= {
  SUPPLIER INVOKES  {coordinateShadowUpdate | updateShadow}
  ID                id-package-shadowSupplier
}

-- abstract syntaxes 
directoryShadowAbstractSyntax ABSTRACT-SYNTAX ::= {
  DISP-PDUs
  IDENTIFIED BY  id-as-directoryShadowAS
}

directoryReliableShadowAbstractSyntax ABSTRACT-SYNTAX ::= {
  Reliable-DISP-PDUs
  IDENTIFIED BY  id-as-directoryReliableShadowAS
}

reliableShadowBindingAbstractSyntax ABSTRACT-SYNTAX ::= {
  ReliableShadowBinding-PDUs
  IDENTIFIED BY  id-as-reliableShadowBindingAS
}

DISP-PDUs ::= CHOICE {
  basicROS  ROS{{DISP-InvokeIDSet}, {DISP-Invokable}, {DISP-Returnable}},
  bind      Bind{dSAShadowBind},
  unbind    Unbind{dSAShadowUnbind}
}

Reliable-DISP-PDUs ::=
  ROS{{DISP-InvokeIDSet}, {DISP-Invokable}, {DISP-Returnable}}

ReliableShadowBinding-PDUs ::= CHOICE {
  rTS     [0]  RTSE-apdus,
  bind    Bind{dSAShadowBind},
  unbind  Unbind{dSAShadowUnbind}
}

DISP-InvokeIDSet ::= InvokeId(ALL EXCEPT absent:NULL)

DISP-Invokable OPERATION ::=
  {requestShadowUpdate | updateShadow | coordinateShadowUpdate}

DISP-Returnable OPERATION ::=
  {requestShadowUpdate | updateShadow | coordinateShadowUpdate}

--  remote operation codes 
id-opcode-requestShadowUpdate Code ::= local:1

id-opcode-updateShadow Code ::= local:2

id-opcode-coordinateShadowUpdate Code ::= local:3

-- remote error codes 
id-errcode-shadowError Code ::= local:1

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