[erlang-questions] testing ASN.1 compiled module returns error

Martin Dimitrov <>
Fri Nov 18 16:02:05 CET 2011


Hello,

I have an ASN.1 definition file (given bellow). It compiles all right
but when I test the ExtensionContainer type, it crashes with the following:

** exception error: no case clause matching
                    {error,
                        {asn1_error,nyi,
                            {'ObjectClassFieldType',
                                {'Externaltypereference',54,
                                   
'MAP-ExtensionDataTypes','MAP-EXTENSION'},
                                [],
                                {extensionId,[]},
                                {fixedtypevaluefield,extensionId,
                                    {type,[],'OBJECT
IDENTIFIER',[],[],no}}}}}
     in function  asn1ct:test/2
     in call from asn1ct:test_each/2

I traced the error to asn1ct_value:get_type_prim(D,Erule) where the
D#type.def equals to:

 {'ObjectClassFieldType',
     {'Externaltypereference',54,'MAP-ExtensionDataTypes',
         'MAP-EXTENSION'},
     [],
     {extensionId,[]},
     {fixedtypevaluefield,extensionId,
         {type,[],'OBJECT IDENTIFIER',[],[],no}}}

The case clause in the function doesn't have such a match. That is why
XX ->
        exit({asn1_error,nyi,XX})
is executed.

Can anyone bring some light to this problem? Isn't
'ObjectClassFieldType' supported by the current implementation of ASN.1
in Erlang?

Thanks a lot.

Martin


-- $Id: MAP-ExtensionDataTypes.asn 24270 2008-02-05 06:10:34Z etxrab $
-- MAP-ExtensionDataTypes.asn
--
-- Taken from 3GPP TS 29.002 V8.4.0 (2007-12)
--
http://www.3gpp.org/ftp/Specs/archive/29_series/29.002/29002-840.zip/29002-840.doc
--
-- 17.7.11 Extension data types
--

MAP-ExtensionDataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version11 (11)}

DEFINITIONS

IMPLICIT TAGS

::=

BEGIN

EXPORTS

    PrivateExtension,
    ExtensionContainer,
    SLR-ArgExtensionContainer;


-- IOC for private MAP extensions


MAP-EXTENSION  ::= CLASS {
    &ExtensionType                OPTIONAL,
    &extensionId     OBJECT IDENTIFIER }
    -- The length of the Object Identifier shall not exceed 16 octets
and the
    -- number of components of the Object Identifier shall not exceed 16

-- data types

ExtensionContainer ::= SEQUENCE {
    privateExtensionList    [0]PrivateExtensionList    OPTIONAL,
    pcs-Extensions    [1]PCS-Extensions    OPTIONAL,
    ...}

SLR-ArgExtensionContainer ::= SEQUENCE {
    privateExtensionList    [0]PrivateExtensionList    OPTIONAL,
    slr-Arg-PCS-Extensions    [1]SLR-Arg-PCS-Extensions    OPTIONAL,
    ...}

PrivateExtensionList ::= SEQUENCE SIZE (1..maxNumOfPrivateExtensions) OF
                PrivateExtension

PrivateExtension ::= SEQUENCE {
    extId        MAP-EXTENSION.&extensionId
                ({ExtensionSet}),
    extType        MAP-EXTENSION.&ExtensionType
                ({ExtensionSet}{@extId})    OPTIONAL}

maxNumOfPrivateExtensions  INTEGER ::= 10

ExtensionSet        MAP-EXTENSION ::=
        {...
         -- ExtensionSet is the set of all defined private extensions
    }
    -- Unsupported private extensions shall be discarded if received.

PCS-Extensions ::= SEQUENCE {
    ...}

SLR-Arg-PCS-Extensions ::= SEQUENCE {
    ...,
    na-ESRK-Request    [0]    NULL        OPTIONAL }

END




More information about the erlang-questions mailing list