提取38.331协议中RRC的ANS1内容,生成asn文件

当前最尝用的工具是txt2asn1.exe。奈何官网txt2asn1.exe要收费,破解版有待验证。此外有些网站提供是固定版本的,无法定制自己的。本文提供一个通过脚本提取38.331协议中RRC的ANS1内容攻略。

以下为提取生成asn文件的步骤

1.从Directory Listing /ftp/Specs/latest下载一本你想提取的38.331协议,如38331-i51.docx

2.打开word文档,时间可能会有点长,耐心等待,另存为38331-i51.txt,编码格式为unicode(utf-8)

3.找一个linux环境执行perl extract_asn1_from_spce.pl 38331-i51.txt

perl extract_asn1_from_spce.pl 38331-i51.txt

4.然后同目录下会看到asn文件。

[root@hcss-ecs-5181 workspace]# ls
38331-i51.txt  extract_asn1_from_spce.pl  NR-RRC-38331.asn 

extract_asn1_from_spce.pl脚本下载地址https://download.youkuaiyun.com/download/xixixixixi0/90939559

如果没有生成asn,可能本地没有安装asn1c,找个开源项目本地编译安装一下就可以了。

生成的asn文件存在大量的未展开的SetupRelease,如

BWP-DownlinkDedicated ::=           SEQUENCE {
    pdcch-Config                        SetupRelease { PDCCH-Config }                                     OPTIONAL,   -- Need M
    pdsch-Config                        SetupRelease { PDSCH-Config }                                     OPTIONAL,   -- Need M
    sps-Config                          SetupRelease { SPS-Config }                                       OPTIONAL,   -- Need M
    radioLinkMonitoringConfig           SetupRelease { RadioLinkMonitoringConfig }                        OPTIONAL,   -- Need M
    ...,

此时的ASN文件无法直接被asn1tools使用,建议在结构体定义中直接展开,通过如下脚本。3GPP 38331 or 36331 RRC ASN1 SetupRelase的预处理Python脚本

https://download.youkuaiyun.com/download/xixixixixi0/90969052

执行命令如下

 python .\proc_38331_rrc_asn1_setupRelase.py .\NR-RRC-38331.asn -o .\NR-RRC-38331_SetupRelease.asn -b


#原始文件 NR-RRC-38331.asn
#目标文件 NR-RRC-38331_SetupRelease.asn

处理之后为,保留原始文件的缩进

BWP-DownlinkDedicated ::=           SEQUENCE {
    pdcch-Config                        CHOICE {
        release         NULL,
        setup           PDCCH-Config 
    }                                     OPTIONAL,   -- Need M
    pdsch-Config                        CHOICE {
        release         NULL,
        setup           PDSCH-Config 
    }                                     OPTIONAL,   -- Need M
    sps-Config                          CHOICE {
        release         NULL,
        setup           SPS-Config 
    }                                       OPTIONAL,   -- Need M
    radioLinkMonitoringConfig           CHOICE {
        release         NULL,
        setup           RadioLinkMonitoringConfig 
    }                        OPTIONAL,   -- Need M
    ...,

执行完脚本之后,把原始的SetupRelease定义删除,或屏蔽。后面就可以直接被asn1tools编译使用了。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值