python asn工具无法编译asn.1

2024-03-28 14:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编译3GPP 38.331 ASN.1规范here,它是从spec document中提取的

import asn1tools
rrc = asn1tools.compile_files('./data/asn/38331-f80.docx.asn', 'uper')

但是,这会抛出错误asn1tools.errors.CompileError: Type 'SetupRelease' not found in module 'NR-RRC-Definitions'.

我可以在.asn文件中看到SetupRelease定义

SetupRelease { ElementTypeParam } ::= CHOICE {
    release         NULL,
    setup           ElementTypeParam
}

Tags: import规范dataherefilesdocumentdocxcompile
1条回答
网友
1楼 · 发布于 2024-03-28 14:21:47

很可能您的编译器不支持参数化类型

您可以用不同的方式编写规范(保持兼容)

请考虑从你的规格中删除这个……p>
SetupRelease { ElementTypeParam } ::= CHOICE {
    release         NULL,
    setup           ElementTypeParam
}

每次在规范中引用此类型时,将ElementTypeParam替换为实际类型

例如

LocationMeasurementIndication-IEs ::=       SEQUENCE {
    measurementIndication                       SetupRelease {LocationMeasurementInfo},
    lateNonCriticalExtension                    OCTET STRING                                                            OPTIONAL,
    nonCriticalExtension                        SEQUENCE{}                                                              OPTIONAL
}

应该成为

LocationMeasurementIndication-IEs ::=       SEQUENCE {
    measurementIndication  CHOICE {
        release         NULL,
        setup           LocationMeasurementInfo
    },
    lateNonCriticalExtension   OCTET STRING   OPTIONAL,
    nonCriticalExtension    SEQUENCE{}        OPTIONAL
}

相关问题 更多 >