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