-- Module Reliable-Transfer-APDU (X.228:11/1988)
-- See also ITU-T X.228 (11/1988)
-- See also the index of all ASN.1 assignments needed in this Recommendation

Reliable-Transfer-APDU {joint-iso-itu-t reliable-transfer(3) apdus(0)}
DEFINITIONS ::=
BEGIN

EXPORTS
  rTSE, rTSE-abstract-syntax, RTORQapdu, RTOACapdu, RTORJapdu, RTABapdu; --	for use by Presentation Layer only

IMPORTS
  CONTRACT
    FROM Remote-Operations-Information-Objects {joint-iso-itu-t
      remote-operations(4) informationObjects(5) version1(0)};

OPEN ::= CLASS {&Type  
}WITH SYNTAX {TYPE &Type
}

rTSE-abstract-syntax OBJECT IDENTIFIER ::=
  {joint-iso-itu-t reliable-transfer(3) abstract-syntax(2)}

rTSE CONTRACT ::= {ID  {joint-iso-itu-t reliable-transfer(3) aseID(1)}
}

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
}

-- Tags [19], [20], [21] are used by the values of the UNBIND macro of the RO-notation of
-- Recommendation X.219. Tags [0] to [15] inclusive are reserved for the 
-- use by the APDUs of ROSE (Recommendation X229). Any occurrence of 
-- ANY in this module shall be replaced by a single ASN. 1 type (if any) in an RTSE-user
-- protocol specification. In addition any RTSE-user protocol sharing a single named
-- abstract syntax with the RTSE protocol shall use distinct tags for the single
-- presentation data values in the user data parameters of the RT-CLOSE (if any) and
-- RT- TRANSFER services. These tags shall be distinct from the tag values [16], [17],
-- [18] and [22] and from the ASN. 1 types INTEGER and OCTET STRING.
-- Note - The above conditions are ensured, if the RTSE-user protocol specification uses the
-- RO-notation of Recommendation X229.
-- In X.410-1984 mode only the components of RTORQapdu, RTOACapdu, RTORJapdu
-- and RTABapdu are used by the presentation layer. This has the effect that the following
-- APDU types appear in the protocol in X.410-1984 mode instead of the alternative types
-- of the RTSE-apdus type:
-- 			RTORQapdu
-- 			RTOACapdu
-- 			RTORJapdu
-- 			RTTPapdu
-- 			RTTRapdu
-- 			RTABapdu
RTORQapdu ::= SET {
  checkpointSize       [0] IMPLICIT INTEGER DEFAULT 0,
  windowSize           [1] IMPLICIT INTEGER DEFAULT 3,
  dialogueMode
    [2] IMPLICIT INTEGER {monologue(0), twa(1)} DEFAULT monologue,
  connectionDataRQ     [3]  ConnectionData,
  applicationProtocol
    [4] IMPLICIT INTEGER OPTIONAL --solely in X.410-1984 mode--
}

RTOACapdu ::= SET {
  checkpointSize    [0] IMPLICIT INTEGER DEFAULT 0,
  windowSize        [1] IMPLICIT INTEGER DEFAULT 3,
  connectionDataAC  [2]  ConnectionData
}

RTORJapdu ::= SET {
  refuseReason  [0] IMPLICIT RefuseReason OPTIONAL, -- only in X.410-1984 mode
  userDataRJ
    [1]  OPEN.&Type OPTIONAL -- RTSE user data, only in normal mode--
}

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]  OPEN.&Type OPTIONAL -- only in normal mode and if abortReason--
  -- is userError 
}

ConnectionData ::= CHOICE {
  open     [0]  OPEN.&Type, -- RTSE user data
  
  -- this alternative is encoded as [0] IMPLICIT NULL
  -- in the case of absence of RTSE user data,
  recover  [1] IMPLICIT SessionConnectionIdentifier
}

SessionConnectionIdentifier ::= SEQUENCE {
  callingSSuserReference          CallingSSuserReference,
  commonReference                 CommonReference,
  additionalReferenceInformation
    [0] IMPLICIT AdditionalReferenceInformation OPTIONAL
}

RefuseReason ::= INTEGER {
  rtsBusy(0), cannotRecover(1), validationFailure(2),
  unacceptableDialogueMode(3)}

CallingSSuserReference ::= CHOICE {
  t61String    T61String -- solely in X.410-1984 --,
  octetString  OCTET STRING -- solely in normal mode --
}

CommonReference ::= UTCTime

AdditionalReferenceInformation ::= T61String

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

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