一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种ASN.1-PER信令消息解码方法、系统、装置及介质与流程

2021-12-04 01:12:00 来源:中国专利 TAG:

一种asn.1

per信令消息解码方法、系统、装置及介质
技术领域
1.本发明涉及通信技术领域,尤其涉及一种asn.1

per信令消息解码方法、系统、装置及介质。


背景技术:

2.在电信领域,目前得到广泛的asn.1编码方法有两种:一种是ber(基本编码规则)和per(压缩编码规则)。
3.ber编码因其在大小上的开销过大而受人诟病,和真实编码数据相比,平均需要增加50%的额外数据。per编码以比特为最小编码单位进行编码,能最大限度的压缩编码,因而在voip、视频电话、多媒体以及3g等需要高速数据传输的领域有广泛应用。
4.per编解码必须依赖于asn.1文档。也就是说,收发双方也必须知道消息的具体结构,这样编码和解码的才能被编译和识别。
5.在通信系统中,越来越多的通信协议采用asn.1

per进行编码,例如lte时代的s1ap、lte

rrc协议,5g时代的ngap、nr

rrc协议等,信令分析系统必须对其进行解码才能获取通信参数进行后续数据分析。
6.现有技术公开一种通过输入用户配置选项和asn.1文本,对asn.1

per数据的进行编解码的方法,其核心是介绍一种可按需定制数据结构接口的编解码方法。而现有的方法存有以下缺点:1)通常一种asn.1

per协议中包含了大量的数据结构,各种数据结构的类型各有不同,需要为每种数据结构类型编写不同的解析代码,而且需要开发者了解协议的细节,对开发效率影响较大。2)着重介绍可定制输出静态或动态的数据结构接口,没有从代码实现的角度介绍如何方便用户进行后期开发。


技术实现要素:

7.为至少一定程度上解决现有技术中存在的技术问题之一,本发明的目的在于提供一种asn.1

per信令消息解码方法、系统、装置及介质。
8.本发明所采用的技术方案是:
9.一种asn.1

per信令消息解码方法,包括以下步骤:
10.获取需要数据解析的asn.1文本格式的描述文件,创建解码类的头文件和源文件;
11.逐行读取所述描述文件,获取数据结构描述;
12.遍历每个所述数据结构描述,采用关键字匹配方式解析所述数据结构描述,获取所述数据结构描述的数据结构类型;
13.根据所述数据结构类型调用与所述数据结构类型相对应的解码流程进行处理;
14.遍历玩所有的所述数据结构描述,实现解码器代码生成;
15.其中,所述数据结构类型包括数据类型、基本结构类型以及复合结构类型。
16.进一步,当数据结构类型为数据类型时,所述解码流程对所述数据结构描述进行如下处理:
17.根据所述数据类型对所述数据结构描述进行解析,提取所述数据结构描述的具体数据类型,以及提取并记录数值;
18.以解码类成员常量形式,将解析获得的所述具体数据类型和所述数值写入所述头文件中。
19.进一步,当数据结构类型为基本结构类型时,所述解码流程对所述数据结构描述进行如下处理:
20.通过关键字匹配识别,判断所述数据结构描述的数据结构定义的类型;
21.根据判断获得的类型对所述数据结构描述进行解析,生成基本结构类型的处理函数代码;
22.以解码类成员函数形式,将生成的函数代码写入所述头文件和所述源文件。
23.进一步,当数据结构类型为复合结构类型时,所述解码流程对所述数据结构描述进行如下处理:
24.根据复合结构类型对所述数据结构描述进行解析,获取所述数据结构描述的具体类型和子结构成员;
25.对所述子结构成员进行遍历,识别所述子结构成员的子结构类型,根据所述子结构类型调取对应的解码流程进行处理;
26.在遍历所有的所述子结构成员后,生成复合结构类型的处理函数代码;
27.以解码类成员函数形式,将生成的处理函数代码写入头文件和源文件;
28.其中,所述子结构类型包括匿名基本结构类型和匿名复合结构类型。
29.进一步,所述根据所述子结构类型调取对应的解码流程进行处理,包括:
30.若所述子结构类型为匿名基本结构类型,执行以下步骤:
31.调用处理基本结构类型对应的解码流程来处理所述子结构成员;
32.若所述子结构类型为匿名复合结构类型,执行以下步骤:
33.递归重复调用处理复合结构类型对应的解码流程来处理所述子结构成员。
34.进一步,所述一种asn.1

per信令消息解码方法,还包括以下步骤:
35.针对per编码中的解析,通过封装一个比特指针类来对比特流进行读取;
36.其中,所述比特指针类封装两个成员变量,所述两个成员变量分别为字节指针m_pos与字节中位偏移量m_bit_offset。
37.进一步,所述一种asn.1

per信令消息解码方法,还包括以下步骤:
38.利用c 类添加成员函数的特性,为所述比特指针类添加成员函数或重载运算符。
39.本发明所采用的另一技术方案是:
40.一种asn.1

per信令消息解码系统,包括:
41.文件获取模块,用于获取需要数据解析的asn.1文本格式的描述文件,创建解码类的头文件和源文件;
42.文件读取模块,用于逐行读取所述描述文件,获取数据结构描述;
43.文件解析模块,用于遍历每个所述数据结构描述,采用关键字匹配方式解析所述数据结构描述,获取所述数据结构描述的数据结构类型;
44.文件解码模块,用于根据所述数据结构类型调用与所述数据结构类型相对应的解码流程进行处理;
45.代码生成模块,用于遍历玩所有的所述数据结构描述,实现解码器代码生成;
46.其中,所述数据结构类型包括数据类型、基本结构类型以及复合结构类型。
47.本发明所采用的另一技术方案是:
48.一种asn.1

per信令消息解码装置,包括:
49.至少一个处理器;
50.至少一个存储器,用于存储至少一个程序;
51.当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上所述方法。
52.本发明所采用的另一技术方案是:
53.一种存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于执行如上所述方法。
54.本发明的有益效果是:本发明根据不同的数据结构类型调用不同的解码函数,对asn.1描述文件进行解析,生成代码,能快速适配新的per编码通信协议;另外,采用c 语言来实现,兼有c语言的速度,适用于信令分析系统等大数据量场景的解析处理。
附图说明
55.为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本发明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
56.图1是本发明实施例中一种asn.1

per信令消息解码方法的流程示意图;
57.图2是本发明实施例中基于数据结构类型进行解码流程的示意图;
58.图3是本发明实施例中生成函数调用关系示意图;
59.图4是本发明实施例中bitptr类示意图。
具体实施方式
60.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
61.在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
62.在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
63.本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
64.本实施例提供一种生成简洁asn.1

per解析代码的实现方法,在本实施例中,利用c 封装特性,来实现asn.1

per解析代码。以下,通过从封装比特指针类、设计per数据结构解析函数、从asn.1文档提取结构关键信息、生成解析代码等步骤展开详细说明。
65.(1)封装比特指针类
66.per编码是以比特为最小单元进行编解码的,而传统协议的编解码是以字节(8位组)为最小单元进行编解码的,计算机程序语言基本都是以字节作为内存寻址的最小单元来处理数据的。因此,针对per编码的解析,本实施例提出通过封装一个比特指针类(bitptr类)来对比特流进行读取的操作方法。
67.bitptr类封装两个成员变量,分别是字节指针m_pos与字节中位偏移量m_bit_offset,通过两个成员变量可以表示流中任一比特的位置。如图4所示,图4为bitptr类的示意图。
68.除此之外,利用c 类可以添加成员函数的特性,为比特指针添加一些成员函数或重载运算符,例如:
69.1)添加基于比特位的向后移位的重载运算符函数,使比特指针的使用上像字节指针一样方便。
70.2)添加基于比特位的整形取值函数,传入指定比特位数作为参数,返回当前比特位置开始若干比特位在网络字节序下所表示的整形数值。
71.3)添加获取若干长度的字节流取值函数,传入指定比特位数与字节流输出缓冲区指针作为参数,把当前比特位置开始若干比特位的数据填充到输出缓冲区。
72.4)针对per对齐方式编码,添加对齐函数,供对齐操作使用。
73.(2)设计per数据结构通用解析函数
74.per编码的数据类型包括基本数据结构和复合数据结构。本实施例支持per编码所支持的基本数据结构解析,包括null类型、boolean类型、enumerated类型、integer类型、bit string类型、octet string类型。基本数据结构解析函数传入当前比特位指针与结构数量上下限值,输出该类型所包含的信息解码结果。本实施例支持per编码所支持的复合数据结构解析,主要包括choice类型、sequence类型和sequence of类型。复合数据结构解析函数传入当前比特位指针、结构数量上下限值与该结构特定的子结构类型解析函数指针,逐项遍历进行解析。解析函数指针采用模板类型传值。
75.其中,choice类型解析函数可输出选项序号值解码信息。针对choice与sequence类型存在扩展项情况,此类型解析函数采用重载同名函数方式实现,其中函数指针以数组形式传值,传入的解析函数指针数组分为基础与扩展两项,以适配两种情况下的数据解析。该设计保证子结构数量值与指针值的一致性,降低后期开发维护中因数量问题导致的出错机率。
76.所有per数据结构解析函数构成通用解码函数库。所有通用解析函数按传入参数区分调用对齐或非对齐方式进行解码。
77.(3)从asn.1文档提取结构关键信息,生成解码类处理函数代码
78.如背景介绍所说,per编译码必须依赖于asn.1描述文档,因此,针对一种asn.1

per编码协议的解析,我们首先需要获取它的asn.1描述文档,然后对每个类型描述提取关键信息,生成解析类处理函数代码。
79.一种协议生成一个解码类,同一协议内的自定义结构解析函数以解码类的成员函数方式实现,调用通用解码函数库或其它成员函数完成解码。
80.解码类的成员函数参数统一以当前比特位指针的引用与剩余比特长度作为输入参数,以实现使用统一函数指针进行调用。
81.自定义结构指asn.1描述文本中以“::=”符号定义的数据结构。
82.为方便统一调用,复合数据结构解析函数传入的子结构函数指针类型统一为解码类的成员函数指针。
83.当复合数据结构的子结构类型为per编码定义的基本数据结构和复合数据结构时,将其视为一个匿名内部数据类型,采用父结构名称 子结构名称组成新的结构名称,将其定义解码类的成员函数进行处理。
84.另建立一个数组,内容为每个处理的自定义结构名称与序号,在解码过程中标记调用栈,用于后续开发者根据数据结构层级进行字段定位与取值。
85.基于上述的描述,以下结合附图,对处理asn.1文档,生成解码器代码的步骤进行详细说明。
86.如图1和图2所示,本实施例提供一种asn.1

per信令消息解码方法,包括以下步骤:
87.s1、获取需要数据解析的asn.1文本格式的描述文件,创建解码类的头文件和源文件.
88.获取所需解析数据的asn.1文本格式描述文档,将文件内容读入内存缓冲区,创建解码类头文件和源文件。
89.s2、逐行读取所述描述文件,获取数据结构描述。逐行读取文本,忽略空行与注释,直至读完一个完整的数据结构描述。
90.s3、遍历每个所述数据结构描述,采用关键字匹配方式解析所述数据结构描述,获取所述数据结构描述的数据结构类型。所述数据结构类型包括数据类型、基本结构类型以及复合结构类型。
91.通过关键字匹配方式解析步骤2获得的数据结构描述,当数据结构类型是数据类型时转入下面步骤s41处理,当类型是基本结构类型时转入下面步骤s42处理,当类型是复合结构类型时则转入步骤s43处理。
92.s4、根据所述数据结构类型调用与所述数据结构类型相对应的解码流程进行处理。
93.其中,步骤s4包括步骤s41

s43:
94.s41、根据步骤s3得到的数据类型,解析其具体类型,记录数据;生成的数据定义,以解码类成员常量形式追加写入到前面创建的头文件中。转至步骤s2继续处理下一个数据结构描述。
95.s42、根据步骤s3得到的基本结构类型,通过关键字匹配识别,判断数据结构定义具体是哪一种类型。通过解析参数信息,生成对应类型处理函数代码,以解码类成员函数形
式追加写入头文件和源文件。转至步骤s2继续处理下一个数据结构描述。
96.s43、根据步骤s3得到的复合结构类型,解析其具体类型和子结构成员,遍历子结构成员,当子结构类型是匿名基本结构类型,以《复合结构名称_子结构名称》为全局名称,调用步骤s42处理;当子结构类型是匿名复合结构类型,以《复合结构名称_子结构名称》为全局名称,递归重复调用步骤s43处理,遍历完成后根据所有子结构的处理函数名生成复合数据结构处理函数代码,以解码类成员函数形式追加写入头文件和源文件。
97.s5、遍历玩所有的所述数据结构描述,实现解码器代码生成。
98.基于上述说的函数调用,如图3所示,图3为一个生成函数调用关系示意图。图中方框表示各种解析函数,包括通用基本结构解析函数、通用复合结构解析函数、类成员基本结构解析函数、类成员复合结构解析函数。各种解析函数间为调用关系,根据asn.1文档定义,形成树形结构调用方式。其中叶子节点必定为通用基本结构解析函数。
99.解析函数统一使用《parse_类型名称》形式命名。
100.parse_integer、parse_enumerated、parse_octet_string、parse_bit_string、parse_boolean称为通用基本结构解析函数。
101.parse_sequence等包含子结构的定义类型解析函数称为通用复合结构解析函数。图中方框中包含的内容表示解析该复合结构类型的子结构时要使用的解析函数名。
102.通用解析函数用于基本结构类型与复合结构类型数据的解析,通用函数意味着不依赖特定asn.1文档生成。
103.如图3所示,parse_a1、parse_a2、parse_a5、parse_b2、parse_type1_item3为类成员基本结构解析函数,直接调用通用基本结构解析函数进行处理。
104.parse_type1、parse_type1_item4为类成员复合结构解析函数,包含子结构信息,需要将子结构的解析函数组成数组作为参数传入对应通用复合结构解析函数(如parse_sequence)进行处理。
105.解码类成员解析函数用于asn.1文档定义的结构类型解析,根据不同asn.1协议文档生成,图3示意图所示的生成函数均指生成解码类成员解析函数。通常一个asn.1协议文档生成一个解码类。
106.综上所述,本实施例方法,相对于现有技术,具有如下有益效果:
107.(1)以比特作为内存寻址最小单元对数据进行读取的实现方法。本实施例实现了对比特指针的封装处理,实现一个以比特作为最小寻址单元的指针,解决现有技术在开发过程中对比特流格式数据处理难以维护的问题。
108.(2)采用c 方式实现asn.1

per编码数据的解析处理方法。本实施例利用c 语言面向对象的特性,提升代码可读性与可维护性。采用c 语言实现,相比于其它语言,c 作为一种静态类型的语言,既能保持面向对象的特性,又兼有c语言的速度,适用于信令分析系统等大数据量场景的解析处理。利用c 的类封装与函数模板特性,实现比特指针的封装统一处理,简化了代码结构;在后期开发维护中可以轻松添加接口成员变量而不用修改函数接口或使用全局变量,保证代码可读性与可维护性。
109.(3)从asn.1描述文件提取信息生成c 解析代码方法。采用从asn.1描述文件提取信息生成代码方法,能快速适配新的per编码通信协议,降低开发工作量,提升解析功能的通用性和可扩展性。
110.本实施例还提供一种asn.1

per信令消息解码系统,包括:
111.文件获取模块,用于获取需要数据解析的asn.1文本格式的描述文件,创建解码类的头文件和源文件;
112.文件读取模块,用于逐行读取所述描述文件,获取数据结构描述;
113.文件解析模块,用于遍历每个所述数据结构描述,采用关键字匹配方式解析所述数据结构描述,获取所述数据结构描述的数据结构类型;
114.文件解码模块,用于根据所述数据结构类型调用与所述数据结构类型相对应的解码流程进行处理;
115.代码生成模块,用于遍历玩所有的所述数据结构描述,实现解码器代码生成;
116.其中,所述数据结构类型包括数据类型、基本结构类型以及复合结构类型。
117.本实施例的一种asn.1

per信令消息解码系统,可执行本发明方法实施例所提供的一种asn.1

per信令消息解码方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
118.本实施例还提供一种asn.1

per信令消息解码装置,包括:
119.至少一个处理器;
120.至少一个存储器,用于存储至少一个程序;
121.当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现图1所示方法。
122.本实施例的一种asn.1

per信令消息解码装置,可执行本发明方法实施例所提供的一种asn.1

per信令消息解码方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
123.本技术实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图1所示的方法。
124.本实施例还提供了一种存储介质,存储有可执行本发明方法实施例所提供的一种asn.1

per信令消息解码方法的指令或程序,当运行该指令或程序时,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
125.在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
126.此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的
常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
127.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
128.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
129.计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
130.应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
131.在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
132.尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
133.以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟
悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本技术权利要求所限定的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献