python asn1tools - сбой компиляции asn.1 - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь скомпилировать спецификацию 3GPP 38.331 ASN.1 здесь - которая была извлечена из spe c документа

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'.

Я мог видеть определение SetupRelease в файле .asn

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

1 Ответ

2 голосов
/ 20 января 2020

Весьма вероятно, что ваш компилятор не поддерживает параметризованные типы.

Вы можете написать спецификацию другим способом (поддерживая ее совместимость)

Подумайте об удалении этого из вашей спецификации c. ..

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
}
...