help-libtasn1
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]: Circular definitions


From: Yaroslav Gaydash
Subject: Re[2]: Circular definitions
Date: Tue, 26 Feb 2013 09:53:25 +0400


 That's interesting. What does this structure mean actually? How are you
expected to parse it?

You can always use something like IMPLICIT SEQUENCE OF ANY, and then
read the raw der data from there and parse it as Data. However, that
structure definition looks like a test for a parser rather than a useful
structure.


regards,
Nikos



Actually MMS is the protocol which suggests an infrastructure to applied protocols through accessing to variables. Variable object model defined as

 UNNAMED-VARIABLE ::= CLASS {
     &address  Address,
     &accessControl Identifier,
     &typeDescription    TypeDescription,
     &value    Data,
     &accessMethod  ENUMERATED {
        public    
     }
}

Here Data is a variable data value and is returned as a part of AccessResult structure of accessing to a MMS variable object.

The whole Data's structure is

Data ::= CHOICE {
    -- context tag 0 is reserved for AccessResult
    array     [1] IMPLICIT SEQUENCE OF Data,
    structure [2] IMPLICIT SEQUENCE OF Data,
    boolean   [3] IMPLICIT BOOLEAN,
    bit-string     [4] IMPLICIT BIT STRING,
    integer   [5] IMPLICIT INTEGER,
    unsigned  [6] IMPLICIT INTEGER, -- shall not be negative
    floating-point [7] IMPLICIT FloatingPoint,
    --   [8] is reserved
    octet-string   [9] IMPLICIT OCTET STRING,
    visible-string [10] IMPLICIT VisibleString,
    generalized-time    [11] IMPLICIT GeneralizedTime,
    binary-time    [12] IMPLICIT TimeOfDay,
    bcd  [13] IMPLICIT INTEGER, -- shall not be negative
    booleanArray   [14] IMPLICIT BIT STRING,
    objId     [15] IMPLICIT OBJECT IDENTIFIER,
    mMSString [16] IMPLICIT MMSString
}

MMS variable object's value could be not just a simple value but a tree-like structure of values like this

Report (which is Data.array)
    ReferenceNumber (which is Data.integer)
    Name (which is Data.mMSString)
    NumberOfFloatingPoint1 (which is Data.unsigned)
    ListOfFloatingPointValues (which is Data.array)
        Matrix_Id
        FloatArray_XX (which is Data.array)
            Value1(which is Data.floating-point), Value2, Value3, Value4,...

IEC60870-6-503's Bilateral Table object, Transfer Set objects and other are mapped to MMS Named variables objects. Therefore their access results such complex data value structures generating.

I suppose when a structure is been created asn1_create_element() shouldn't go futher in depth than member which actually represents CHOICE. I think of CHOICE member is something like subtree's connection point. If I wish to construct leaf which actually tree I call asn1_write_value() with another value been created by asn1_create_element() call.

Regards, Yaroslav.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]