-- Module TC-Notation-Extensions (Q.775:06/1997)

TC-Notation-Extensions {itu-t recommendation q 775 modules(2)
  notation-extension(4) version1(1)} DEFINITIONS ::=
BEGIN

IMPORTS
  TCMessage{}
    FROM TCAPMessages {itu-t recommendation q 773 modules(2) messages(1)
      version3(3)}
  Bind{}, Unbind{}
    FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
      remote-operations(4) generic-ROS-PDUs(6) version1(0)}
  AllOperations{}, ConsumerPerforms{}, SupplierPerforms{}, combine{}
    FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
      remote-operations(4) useful-definitions(7) version1(0)}
  CONTRACT, OPERATION-PACKAGE
    FROM Remote-Operations-Information-Objects {joint-iso-itu-t
      remote-operations(4) informationObjects(5) version1(0)}
  UniDialoguePDU, uniDialogue-as-id
    FROM UnidialoguePDUs {itu-t recommendation q 773 modules(2)
      unidialoguePDUs(3) version1(1)}
  DialoguePDU, dialogue-as-id
    FROM DialoguePDUs {itu-t recommendation q 773 modules(2) dialoguePDUs(2)
      version1(1)};

APPLICATION-CONTEXT ::= CLASS {
  &associationContract           CONTRACT,
  &dialogueMode                  DialogueMode,
  &termination                   Termination OPTIONAL,
  &componentGrouping             BOOLEAN DEFAULT TRUE,
  &dialogueAndComponentGrouping  BOOLEAN DEFAULT TRUE,
  &AdditionalASEs                OBJECT IDENTIFIER OPTIONAL,
  &AbstractSyntaxes              ABSTRACT-SYNTAX,
  &applicationContextName        OBJECT IDENTIFIER UNIQUE
}
WITH SYNTAX {
  CONTRACT &associationContract
  DIALOGUE MODE &dialogueMode
  [TERMINATION &termination]
  [COMPONENT GROUPING ALLOWED &componentGrouping]
  [DIALOGUE WITH COMPONENTS ALLOWED &dialogueAndComponentGrouping]
  [ADDITIONAL ASES &AdditionalASEs]
  ABSTRACT SYNTAXES &AbstractSyntaxes
  APPLICATION CONTEXT NAME &applicationContextName
}

DialogueMode ::= ENUMERATED {structured(1), unstructured(2)}

Termination ::= ENUMERATED {basic(1), prearranged(2)}

dialogue-abstract-syntax ABSTRACT-SYNTAX ::= {
  DialoguePDU
  IDENTIFIED BY  dialogue-as-id
}

uniDialogue-abstract-syntax ABSTRACT-SYNTAX ::= {
  UniDialoguePDU
  IDENTIFIED BY  uniDialogue-as-id
}

TCSingleAS{OPERATION-PACKAGE:package} ::=
  TCMessage{{AllOperations  {package}}, {AllOperations  {package}}}

TCConsumerAS{OPERATION-PACKAGE:package} ::=
  TCMessage{{ConsumerPerforms  {package}}, {ConsumerPerforms  {package}}}

TCSupplierAS{OPERATION-PACKAGE:package} ::=
  TCMessage{{SupplierPerforms  {package}}, {SupplierPerforms  {package}}}

AllPackagesAS{APPLICATION-CONTEXT:ac} ::=
  TCSingleAS
    {combine{{ac.&associationContract.&OperationsOf |
            ac.&associationContract.&InitiatorConsumerOf |
            ac.&associationContract.&InitiatorSupplierOf},
            {...}, --was illegaly empty, needs to be changed 
            { -- Information Object of class OPERATION-PACKAGE to be defined --}}}

ConnectionAS{APPLICATION-CONTEXT:ac} ::= CHOICE {
  bind    Bind{ac.&associationContract.&connection.&bind},
  unbind  Unbind{ac.&associationContract.&connection.&unbind}
}

END

-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D

