(* $Workfile:   rose.tpl  $ $Revision:   3.6  $ *)
(* ROSE.TPL *)
(*****************************************************************************)
(* ASN.1 ROSE DATA-TYPE TEMPLATE                                             *)
(*                                                                           *)
(*    - ROSE APDU Definitions                                                *)
(*                                                                           *)
(* Known simplifications:                                                    *)
(*   - setting of 'S' for potential constructor octet primitives             *)
(*****************************************************************************)

(*****************************************************************************)
(* REMOTE OPERATIONS APDU DEFINITIONS                                        *)
(*****************************************************************************)

ROSEapdu                   LABEL     = Rapdu
                           STRUCTURE = CHOICE
                           TAG       = (C 0 C)
                           CHILDREN  = { <Rroiv, C  1 C,O,0>,
                                         <Rrors, C  2 C,O,0>,
                                         <Rroer, C  3 C,O,0>,
                                         <Rrorj, C  4 C,O,0> }

(*****************************************************************************)
(* RO INVOKE                                                                 *)
(*****************************************************************************)
ROIVapdu                   LABEL     = Rroiv
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Rinid, U  2 P,M,0>,
                                         <Rlkid, C  0 P,O,0>,
                                         <Roper, U  0 P,M,0>*,
                                         <Rargs, U  0 P,O,0> }

InvokeID                   LABEL     = Rinid
                           STRUCTURE = INTEGER

LinkedID                   LABEL     = Rlkid
                           STRUCTURE = INTEGER

Operation                  LABEL     = Roper
                           STRUCTURE = CHOICE
                           CHILDREN  = { <Cintg, U  2 P,O,0>*,
                                         <Cobid, U  6 P,O,0>* }

(* this is an untagged any defined by ! *)
Arguments                  LABEL     = Rargs
                           STRUCTURE = ANY DEFINED BY
                           DEFGLABEL = Roper
                           REGISTER  = { <01,Rargy, U  0 P,0>,
                                         <03,3msub, U 16 C,0>,
                                         <04,3penv, U 17 C,0>,
                                         <05,3mdlv, U 16 C,0>,
                                         <06,3rdlv, U 17 C,0>,
                                         <07,Mmtid, A  4 C,0>,
                                         <08,Rargy, U  0 P,0>,
                                         <09,3mrdl, U 16 C,0>,
                                         <14,7asum, U 17 C,0>,
                                         <15,7alst, U 17 C,0>,
                                         <16,7afch, U 17 C,0>,
                                         <17,7adel, U 17 C,0>,
                                         <18,7areg, U 17 C,0>,
                                         <19,7alrt, U 17 C,0> }

CommonArgument             LABEL     = Rargy
                           STRUCTURE = ANY
                           CHILDREN  = { }

(*****************************************************************************)
(* RO RESULT                                                                 *)
(*****************************************************************************)
RORSapdu                   LABEL     = Rrors
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Rinid, U  2 P,M,0>,
                                         <Rrslt, U 16 C,O,0> }

ResultPair                 LABEL     = Rrslt
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Roper, U  0 P,M,0>*,
                                         <Rrlts, U  0 P,M,0> }

(* this is an untagged any defined by !  nb 3mrdr is for multi-rcpt delivery *)
Results                    LABEL     = Rrlts
                           STRUCTURE = ANY DEFINED BY
                           DEFGLABEL = Roper
                           REGISTER  = { <03,3msrs, U 17 C,0>,
                                         <04,3psrs, U 17 C,0>,
                                         <05,3mdrs, U 17 C,0>,
                                         <07,Cnull, U  5 P,0>,
                                         <09,3mrdr, U 16 C,0>,
                                         <14,7smrs, U 17 C,0>,
                                         <15,7rlst, U 17 C,0>,
                                         <16,7rfch, U 17 C,0>,
                                         <17,Cnull, U  5 P,0>,
                                         <18,Cnull, U  5 P,0>,
                                         <19,Cnull, U  5 P,0> }

(*****************************************************************************)
(* RO ERROR                                                                  *)
(*****************************************************************************)
ROERapdu                   LABEL     = Rroer
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Rinid, U  2 P,M,0>,
                                         <Rerrv, U  0 P,M,0>*,
                                         <Rerrp, U  0 P,O,0>  }

ErrorValue                 LABEL     = Rerrv
                           STRUCTURE = CHOICE
                           CHILDREN  = { <Rerri, U  2 P,O,0>*,
                                         <Rerro, U  6 P,O,0>* }

ErrorValueInteger          LABEL     = Rerri
                           STRUCTURE = INTEGER

ErrorValueObjectIdentifier LABEL     = Rerro
                           STRUCTURE = OBJECT IDENTIFIER

(* this is an untagged any defined by ! *)
ErrorParameters            LABEL     = Rerrp
                           STRUCTURE = ANY DEFINED BY
                           DEFGLABEL = Rerrv
                           REGISTER  = { <01,Cnull, U  5 P,0>,
                                         <02,Cnull, U  5 P,0>,
                                         <03,3isrp, U 16 C,0>,
                                         <04,Cnull, U  5 P,0>,
                                         <05,Cnull, U  5 P,0>,
                                         <06,Cnull, U  5 P,0>,
                                         <07,Cnull, U  5 P,0>,
                                         <08,Cnull, U  5 P,0>,
                                         <0A,Cnull, U  5 P,0>,
                                         <0B,Cnull, U  5 P,0>,
                                         <0C,3spro, U  2 P,0>,
                                         <0D,Cnull, U  5 P,0>,
                                         <0E,Cnull, U  5 P,0>,
                                         <0F,Cnull, U  5 P,0>,
                                         <15,7ater, U 17 C,0>,
                                         <16,7aaer, U 17 C,0>,
                                         <17,7dler, U 17 C,0>,
                                         <18,7frer, U 17 C,0>,
                                         <19,7rger, U 17 C,0>,
                                         <1A,3spro, U  2 P,0>,
                                         <1B,7sver, U 17 C,0>,
                                         <1C,7sner, U 17 C,0>,
                                         <1D,Cnull, U  5 P,0>,
                                         <21,Cnull, U  5 P,0>,
                                         <22,Cnull, U  5 P,0> }

(*****************************************************************************)
(* RO REJECT                                                                 *)
(*****************************************************************************)
RORJapdu                   LABEL     = Rrorj
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Rinrj, U  0 P,M,0>,
                                         <Rprob, U  0 P,M,0> }

RORJInvokeidChoice         LABEL     = Rinrj
                           STRUCTURE = CHOICE
                           CHILDREN  = { <Rinid, U  2 P,O,0>,
                                         <Cnull, U  5 P,O,0> }

RORJProblemChoice          LABEL     = Rprob
                           STRUCTURE = CHOICE
                           CHILDREN  = { <Rgrlp, C  0 P,O,0>,
                                         <Rivkp, C  1 P,O,0>,
                                         <Rrrsp, C  2 P,O,0>,
                                         <Rrerp, C  3 P,O,0> }

GeneralProblem             LABEL     = Rgrlp
                           STRUCTURE = INTEGER

InvokeProblem              LABEL     = Rivkp
                           STRUCTURE = INTEGER

ReturnResultProblem        LABEL     = Rrrsp
                           STRUCTURE = INTEGER

ReturnErrorProblem         LABEL     = Rrerp
                           STRUCTURE = INTEGER


(*****************************************************************************)
(* DEFINITIONS FOR UA                                                        *)
(*****************************************************************************)

User Data                  LABEL     = Ruser
                           STRUCTURE = UNTAGGED CHOICE
                           CHILDREN  = { <Rsimp, A  0 P,O,0>,
                                         <Rfull, A  1 C,O,0> }

Simply Encoded Data        LABEL     = Rsimp
                           STRUCTURE = OCTETSTRING

Fully Encoded Data         LABEL     = Rfull
                           STRUCTURE = SEQUENCE OF
                           CHILDREN  = { <Rpdvl, U 16 C,O,0> }

PDV list                   LABEL     = Rpdvl
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cobid, U  6 P,O,0>,
                                         <Rpcid, U  2 P,M,0>,
                                         <Rpval, U  0 P,M,0> }

Pres. Context Id.          LABEL     = Rpcid
                           STRUCTURE = INTEGER

Pres. Data Values          LABEL     = Rpval
                           STRUCTURE = CHOICE
                           CHILDREN  = { <Rapdu, C  0 C,O,0>,
                                         <Cocts, C  1 P,O,0>,
                                         <Cbits, C  2 P,O,0> }

!
