InfoObjectAsn1Example.asn1
(
ASN.1 Examples |
Home )
InfoObject-ASN1Module { 1 3 6 1 4 1 3817 99 1 2 3 }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
OpCode ::= INTEGER
--
-- Define OPERATION class and Operations
--
OPERATION ::= CLASS
{
&ArgumentType OPTIONAL,
&ResultType OPTIONAL,
&operationCode OpCode UNIQUE
}
WITH SYNTAX
{
[ ARGUMENT &ArgumentType]
[ RESULT &ResultType ]
CODE &operationCode
}
getOp OPERATION ::=
{
ARGUMENT GetArgument
RESULT GetResult
CODE 1
}
setOp OPERATION ::=
{
ARGUMENT SetArgument
RESULT SetResult
CODE 2
}
OperationSet OPERATION ::= { getOp | setOp }
--
-- Define ATTRIBUTE class and attributes
--
AttributeId ::= INTEGER
ATTRIBUTE ::= CLASS
{
&id AttributeId UNIQUE,
&Type
}
WITH SYNTAX
{
ID &id
TYPE &Type
}
nameAttribute ATTRIBUTE ::= { ID 1 TYPE GraphicString }
ageAttribute ATTRIBUTE ::= { ID 2 TYPE INTEGER }
idAttribute ATTRIBUTE ::= { ID 3 TYPE NumericString }
-- Defined a set of ATTRIBUTEs
AttributeSet ATTRIBUTE ::= { nameAttribute | ageAttribute | idAttribute }
Attribute ::= SEQUENCE
{
id ATTRIBUTE.&id({AttributeSet}),
value ATTRIBUTE.&Type({AttributeSet}{@.id})
}
AttributeList ::= SET OF Attribute
AttributeIdList ::= SET OF AttributeId
--
-- OPERATION &ArgumentType and &ResultType ASN.1 types
--
SetArgument ::= AttributeList
SetResult ::= AttributeList
GetArgument ::= AttributeIdList
GetResult ::= AttributeList
--
-- Message structure containing result and responses
--
Message ::= CHOICE
{
request [0] SEQUENCE
{
opCode OPERATION.&operationCode({OperationSet}),
argument OPERATION.&ArgumentType({OperationSet}{@.opCode})
},
response [1] SEQUENCE
{
opCode OPERATION.&operationCode({OperationSet}),
result OPERATION.&ResultType({OperationSet}{@.opCode})
}
}
getRequestMessage Message ::= request:
{
opCode getOp.&operationCode,
argument
{
nameAttribute.&id,
ageAttribute.&id,
idAttribute.&id
}
}
getResponseMessage Message ::= response:
{
opCode getOp.&operationCode,
result
{
{ id nameAttribute.&id, value "David Webb" },
{ id ageAttribute.&id, value 30 },
{ id idAttribute.&id, value "123456" }
}
}
setRequestMessage Message ::= request:
{
opCode setOp.&operationCode,
argument
{
{ id nameAttribute.&id, value "Tony Stark" },
{ id ageAttribute.&id, value 40 },
{ id idAttribute.&id, value "654321" }
}
}
END