CN106131034B - 一种解析包装数据协议单元的方法和装置 - Google Patents
一种解析包装数据协议单元的方法和装置 Download PDFInfo
- Publication number
- CN106131034B CN106131034B CN201610573919.9A CN201610573919A CN106131034B CN 106131034 B CN106131034 B CN 106131034B CN 201610573919 A CN201610573919 A CN 201610573919A CN 106131034 B CN106131034 B CN 106131034B
- Authority
- CN
- China
- Prior art keywords
- data
- mpdu
- frame
- mpdu data
- framing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本申请涉及一种解析包装数据协议单元的方法和装置,通过对MPDU数据进行组帧,包括:将首帧MPDU数据进行缓存;计算后续接收的MPDU数据相对于首帧MPDU数据的帧间隔数;根据帧间隔数确定后续接收的MPDU数据的缓存地址;根据后续接收的MPDU数据的缓存地址,缓存MPDU数据的信息,并将已经接收的MPDU数据标记为待组帧MPDU数据;解析待组帧MPDU数据为包装数据协议单元EPDU数据。由此,在MPDU数据乱序、丢帧、中断等情况下,保证了解析出的EPDU数据的正确性。
Description
技术领域
本发明涉及航天测控技术领域,尤其涉及一种解析包装数据协议单元的方法和装置。
背景技术
空间数据系统咨询委员会(英文:Consultative Committee for the Space DataSystems,缩写:CCSDS)建议实现了高效的空间数据通信,优化利用空间资源,扩大了国际合作的范围。采用CCSDS建议为航天器提供更大的覆盖率与费效比。地面测控数据处理系统所接收的CCSDS数据不局限于遥测数据,还包括话音、图像、有效载荷实验数据等,接收后的数据应根据CCSDS建议数据结构的定义、用户的需求等进行数据的组帧及还原,并分发给不同用户,由其进行最终业务处理。常见的一类数据还原处理是:从多路协议数据单元(英文:Multiplex Protocol Data Unit,缩写:MPDU)数据中还原出每个独立的包装协议数据单(英文:Encaptured Protocol Data Unit,缩写:EPDU)数据。
本发明的发明人发现,目前对于MPDU数据组帧未考虑乱序、丢帧等情况,按接收的顺序进行缓存,在MPDU数据乱序(即接收的数据顺序与发送的数据顺序不一致)、丢帧、中断等情况下,会解析出错误的EPDU数据,从而影响飞行器的状态判读。
现有的按接收顺序进行组帧的方法是一种理想化的方法。在数据传输过程中可能存在的数据乱序、丢帧、中断等影响因素没有考虑或者考虑不全面,会产生错误的数据顺序,从而会还原或解析出错误的数据,导致遥测参数错误、图像马赛克等。
发明内容
技术问题
有鉴于此,本发明要解决的技术问题是,在从MPDU解析出EPDU的过程中,如何在数据乱序、丢帧、中断等情况下,实现数据的正确组帧并解析出正确的EPDU数据。
解决方案
为解决以上技术问题,本发明在第一方面提供一种解析包装数据协议单元的方法,包括:
对多路协议数据单元MPDU数据进行组帧,包括:
将接收到的第一个MPDU数据作为首帧MPDU数据进行缓存;
根据首帧MPDU数据和后续接收的MPDU数据的虚拟信道计数及虚拟信道时标进行计算,得到后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数;
根据帧间隔数确定后续接收的MPDU数据的缓存位置;
根据后续接收的MPDU数据的缓存位置,缓存后续的MPDU数据的信息,包括数据区、首导头指针和时标,并将所述后续接收的MPDU数据标记为待组帧MPDU数据;
根据待组帧MPDU数据解析包装数据协议单元EPDU数据,包括:
根据待组帧MPDU数据的首导头指针,确定待组帧MPDU数据的源包的起始地址;
根据待组帧MPDU数据的数据区长度、源包的长度、有效数据组帧长度及组帧标志,从源包的起始地址开始,对已缓存的所述MPDU数据的有效数据进行组帧;以及
当待组帧MPDU数据长度大于或等于所述EPDU数据的主导头长度与包长加1之和时,解析出所述EPDU数据。
在一种可能的实现方式中,在所述对多个多路协议数据单元MPDU数据进行组帧之前,还包括:
根据第一公式计算最长的所述EPDU数据所占的MPDU数据的帧数,所述第一公式为:EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum为最长的所述EPDU数据所占的MPDU数据的帧数,MaxEpduLen为最长的EPDU数据的源包长度,MpduDataLen为MPDU数据的数据区长度。
在一种可能的实现方式中,根据首帧MPDU数据的虚拟信道计数值和后续接收的MPDU数据的虚拟信道计数值,计算后续接收的MPDU数据相对于首帧MPDU数据的帧间隔数,包括:
根据第二公式计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,所述第二公式为:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq为后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,CurMpduVcduSeq为所述后续接收的MPDU数据对应的虚拟信道计数,FirstMpduVcduSeq为所述首帧MPDU数据对应的虚拟信道计数。
在一种可能的实现方式中,在解析出所述EPDU数据之后,还包括:
根据第三公式,更新待解析的首帧MPDU数据的首导头指针,所述第三公式为:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;(%为取模运算)
其中,NewFirstMpduStartAddr为待解析的首帧MPDU数据的首导头指针,OldFirstMpduStartAddr为源包解析之前的首帧MPDU数据的首导头指针,EpduDataLen为本次解析出的源包包长,EpduHeadLen为源包EPDU主导头长度,MpduDataLen为MPDU的数据区长度。
在一种可能的实现方式中,在解析出EPDU数据之后,还包括:
根据第四公式,计算缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,所述第四公式为:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum为缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,OldMaxMpduNum为源包解析之前缓存中待处理的MPDU与首帧MPDU的最大帧间隔数;FillMpduNum为解析过程中MPDU数据的填充数。
为解决以上技术问题,本发明在第二方面提供一种解析包装数据协议单元的装置,包括:
组帧模块,用于对多个多路协议数据单元MPDU数据进行组帧,所述组帧模块被配置为:
将接收到的第一个MPDU数据作为首帧MPDU数据进行缓存;
根据所述首帧MPDU数据的虚拟信道计数值和后续接收的MPDU数据的虚拟信道计数值,计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数;
根据所述帧间隔数确定所述后续接收的MPDU数据的缓存地址;
根据所述后续接收的MPDU数据的缓存地址,缓存所述后续的MPDU数据的信息,所述后续接收的MPDU数据的信息包括数据区、首导头指针和测站时标,并将所述后续接收的MPDU数据标记为已组帧MPDU数据;
解析模块,用于根据所述待组帧MPDU数据解析包装数据协议单元EPDU数据,所述解析模块被配置为:
根据所述待组帧MPDU数据的首导头指针,确定所述待组帧MPDU数据的源包的起始地址;
根据所述待组帧MPDU数据的数据区长度、所述源包的长度、有效数据组帧长度及组帧标志,从所述源包的起始地址开始,对已缓存的所述MPDU数据的有效数据进行组帧;以及
当待组帧MPDU数据长度大于或等于所述EPDU数据的主导头长度与包长加1之和时,解析出所述EPDU数据。
在一种可能的实现方式中,所述装置还包括:计算模块,用于在所述对多个多路协议数据单元MPDU数据进行组帧之前,根据第一公式计算最长的所述EPDU数据所占的MPDU数据的帧数,所述第一公式为:
EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum为最长的所述EPDU数据所占的MPDU数据的帧数,MaxEpduLen为最长的EPDU数据的源包长度,MpduDataLen为MPDU数据的数据区长度。
在一种可能的实现方式中,所述组帧模块还用于:
根据第二公式计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,所述第二公式为:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq为所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,CurMpduVcduSeq为所述后续接收的MPDU数据对应的虚拟信道计数,FirstMpduVcduSeq为所述首帧MPDU数据对应的虚拟信道计数。
在一种可能的实现方式中,所述计算模块还用于在解析出所述EPDU数据之后,根据第三公式,更新待解析的所述首帧MPDU数据的首导头指针,所述第三公式为:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;(%为取模运算)
其中,NewFirstMpduStartAddr为待解析的所述首帧MPDU数据的首导头指针,OldFirstMpduStartAddr为源包解析之前的所述首帧MPDU数据的首导头指针,EpduDataLen为本次解析出的源包包长,EpduHeadLen为源包EPDU主导头长度,MpduDataLen为MPDU的数据区长度。
在一种可能的实现方式中,所述计算模块还用于在解析出所述EPDU数据之后,根据第四公式,计算缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,所述第四公式为:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum为缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,OldMaxMpduNum为源包解析之前缓存中待处理的MPDU与首帧MPDU的最大帧间隔数,FillMpduNum为解析过程中MPDU数据的填充数。
有益效果
本发明实施例提供的解析包装数据协议单元的方法和装置,对接收过程中未收到的数据标识为丢帧。每次组帧后,对缓存中的数据进行解析,跨过MPDU的填充帧,复原出独立源包,直至遇到丢帧或不完整源包。在数据有丢帧时,如果没有超过数据时序容错性或实时性要求,则等待接收下一个MPDU数据;如果超过数据时序容错性,则跳过丢帧数据,将其中完整的源包复原,如果不满足实时性要求,则该源包只记盘不发送,如果满足实时性,则发送该源包给相关专业进行处理。由此,在时序混乱、丢帧、数据中断情况下,保证MPDU数据组帧的正确性,也因此而保证了解析出的EPDU数据的正确性。
本发明实施例提供的解析包装数据协议单元的方法和装置,能够为不同的数据帧频、MPDU的数据长度、EPDU格式,MPDU数据提供通用的组帧方法,能够适应于不同的数据帧频、MPDU的数据长度、EPDU的数据格式。
本发明实施例提供的解析包装数据协议单元的方法和装置,通过更新首帧MPDU数据的首导头指针,能够有效避免跨帧数据处理中的丢帧问题。
本发明实施例提供的解析包装数据协议单元的方法和装置,通过根据第四公式,计算缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,能够保证数据不超过最大缓存,满足数据的实时性要求。
根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1示出本发明实施例提供的一种解析包装数据协议单元的方法的流程图;
图2示出本发明另一实施例提供的一种解析包装数据协议单元的方法的流程图;
图3示出本发明实施例提供的一种解析包装数据协议单元的装置的结构示意图;
图4示出本发明另一实施例提供的一种解析包装数据协议单元的装置的结构示意图。
具体实施方式
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
实施例1
飞行器将采集的数据打包成EPDU后,将多种类型的EPDU级联成固定长度的MPDU,加上虚拟信道导头、字尾、校验码信息等进一步封装成虚拟信道数据单元VCDU,具体每个虚拟信道的数据格式可以独立规定。在VCDU前增加四字节同步序列,形成信道访问数据单元(英文:Channel Access Data Unit,缩写:CADU)。地面接收端接收到下行数据后,按器上组装的逆顺序还原出每个独立的EPDU数据。
CCSDS建议的CADU与VCDU的数据格式如表1所示。
表1
CCSDS建议的MPDU格式如表2所示:
表2
其中MPDU导头中的首导头指针直接指向第一个源包的起始位置,根据源包中包长度的标志就可以区分出每个独立的源包。如果多路协议数据单元包域第一个字节就是源包头的第一字节,则首导头指针为0;如果多路协议数据单元中不包含源包包头,那么首导头指针域通过指定的二进制数据标识为“不含包头”;如果多路协议数据单元中不包含任何有效的用户数据(即填充包),那么再通过另一个指定的二进制数据标识为“填充包”。
如果一个源包的导头被分在两个MPDU中(被分割的源包分在MPDU(x)和MPDU(x+1)中),如果该源包是MPDU(x)的第一个源包,那么MPDU(x)的首导头指针域指向这个源包首地址。如果不是MPDU(x)的第一个源包,那么MPDU(x+1)的首导头指针指向被分割源包的后一个源包头。
包装协议数据单元EPDU由飞行器各分系统不同类型的数据源产生,这些数据可能通过不同的虚拟信道进行传输,但按照规定的格式进行封装,格式如表3所示。其中包长为从副导头的第一个字节开始至该源包未尾的总字节数,实际长度为包长加1。
表3
图1示出本发明实施例提供的一种解析包装数据协议单元的方法的流程图,如图1所示,本方法从MPDU还原EPDU的处理主要包括:对多个多路协议数据单元MPDU数据进行组帧的步骤和根据所述已组帧MPDU数据解析包装数据协议单元EPDU数据的步骤,其中,对多个多路协议数据单元MPDU数据进行组帧的步骤具体可以包括:
步骤S11、将接收到的第一个MPDU数据作为首帧MPDU数据进行缓存。
器上MPDU的构造是把CCSDS包格式的数据单元级联在一起,直到超过MPDU数据区的长度,任何超过MPDU数据区长度的CCSDS包会被分割,即把MPDU填满后,再把CCSDS包余下的部分填到虚拟信道的下一个新的MPDU中。如果用户得不到足够的业务数据单元,多路复用功能可以产生适当长度的填充包(格式为源包格式),填入MPDU中,最短的填充包长度为7字节(6字节导头,1字节填充数据),如果一个MPDU中所需的填充数据小于7字节,则产生一个长为7字节的填充包,此包填满当前的MPDU后,剩余部分填入下一个MPDU中。由设置的MPDU导头域的首导头指针指示出第一个完整的CCSDS包的位置,便于接收端提取MPDU包区的各个源包,实现包的分路。
根据MPDU格式设计缓存数据结构,数据结构覆盖MPDU格式所有属性。对每个虚拟信道数据分别开辟缓存空间,将接收到的首个MPDU数据作为首帧数据进行缓存。
步骤S12、根据所述首帧MPDU数据的虚拟信道计数值和后续接收的MPDU数据的虚拟信道计数值,计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数。
后续接收的MPDU数据,通过同类数据的数据下传频率、虚拟信道计数值,计算当前MPDU相对首帧MPDU的帧间隔数。
步骤S13、根据所述帧间隔数确定所述后续接收的MPDU数据的缓存地址。
步骤S14、根据所述后续接收的MPDU数据的缓存地址,缓存所述后续的MPDU数据的信息,所述后续接收的MPDU数据的信息包括数据区、首导头指针和测站时标,并将所述后续接收的MPDU数据标记为已组帧MPDU数据。
确定当前MPDU的缓存地址,缓存当前MPDU的数据区、首导头指针、测站时标(或器上时间)等,如果MPDU为填充数据,则将当前MPDU数据标识为“填充”。如果组帧过程中出现丢帧,则保留初始设置的“丢帧”标志。
根据所述待组帧MPDU数据解析包装数据协议单元EPDU数据的步骤,具体可以包括:
步骤S21、根据所述待组帧MPDU数据的首导头指针,确定所述已组帧MPDU数据的源包的起始地址。
步骤S22、根据所述待组帧MPDU数据的数据区长度、所述源包的长度、有效数据组帧长度及组帧标志,从所述源包的起始地址开始,对已缓存的所述MPDU数据的有效数据进行组帧。
步骤S23、当待组帧MPDU数据长度大于或等于所述EPDU数据的主导头长度与包长加1之和时,解析出所述EPDU数据。
在一种可能的实现方式中,如果满足实时性要求,则进行发送,否则对该EPDU数据进行记盘;计算完整解析的MPDU数目,并清空其所占缓存。
本发明实施例提供的解析包装数据协议单元的方法,对接收过程中未收到的数据标识为丢帧。每次组帧后,对缓存中的数据进行解析,跨过MPDU的填充帧,复原出独立源包,直至遇到丢帧或不完整源包。在数据有丢帧时,如果没有超过数据时序容错性或实时性要求,则等待接收下一个MPDU数据;如果超过数据时序容错性,则跳过丢帧数据,将其中完整的源包复原,如果不满足实时性要求,则该源包只记盘不发送,如果满足实时性,则发送该源包给相关专业进行处理。由此,在时序混乱、丢帧、数据中断情况下,保证MPDU数据组帧的正确性,也因此而保证了解析出的EPDU数据的正确性。
本发明实施例提供的解析包装数据协议单元的方法,能够为不同的数据帧频、MPDU的数据长度、EPDU格式,MPDU数据提供通用的组帧方法,能够适应于不同的数据帧频、MPDU的数据长度、EPDU的数据格式。
实施例2
图2示出本发明另一实施例提供的一种解析包装数据协议单元的方法的流程图。在图2中与图1采用相同附图标记的步骤,均与图1适用于相同的文字说明,在此不再赘述。
在一种可能的实现方式中,在步骤S11之前,还可以包括:
步骤S31、根据第一公式计算最长的所述EPDU数据所占的MPDU数据的帧数。
所述第一公式为:EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum为最长的所述EPDU数据所占的MPDU数据的帧数,MaxEpduLen为最长的EPDU数据的源包长度,MpduDataLen为MPDU数据的数据区长度。公式中的数字:第一个“1”为MaxEpduLen/MpduDataLen要向上取整;第二个“1”为EPDU向上取整的基础上可能还会多占用一个MPDU。
数据时序混乱可能的最大帧数,以MaxDisorderNum表示;以及所组帧MPDU数据最大的帧周期,以MaxFrameTime表示。对于MaxDisorderNum,可以将5作为乱序可能的最大值,一般不超过3。结合乱序程度以及数据实时性的要求,对于高频数据,MaxDisorderNum可以调大一些;低频数据,该值可以调小一些;非固定频率数据,按最高频率设置。
确定当前MPDU数据缓存位置主要分为以下几种情况:
1)如果缓存为空,则分帧间隔数为0,将当前MPDU数据区作为首帧MPDU存入缓存区。
2)如果缓存中已经有首帧,则对当前MPDU首先计算该帧MPDU与首帧MPDU的测站时标差(或器上时差)。
3)如果时差超过最大时效范围内,认为当前帧数据不能与缓存的数据进行组帧,且缓存中数据已失效,例如上一次出站遗留的数据,则清空当前缓存,将当前MPDU缓存为首帧。
4)如果缓存中已经有首帧,且当前MPDU与首帧MPDU的测站时标差或器上时差在最大时效范围内,但超出(MaxDisorderNum+EpduMaxMpduNum)*2*MaxFrameTime的时间范围,则对缓存中数据进行解析。在源包解包时如果遇到MPDU数据有丢帧,则舍弃不完整源包,将下一个“待组帧”的MPDU数据更新为缓存中的第一帧,继续调用EPDU数据解包处理,直至缓存中待解析的MPDU帧数小于(MaxDisorderNum+EpduMaxMpduNum)*2个,并清空已完整处理MPDU所占的缓存,并将下一个“待组帧”的MPDU数据更新为缓存首帧,继续步骤4)。
如果缓存中已经有首帧,则计算该帧MPDU与首帧MPDU的测站时标差(或器上时差),如果时差未超出(MaxDisorderNum+EpduMaxMpduNum)*2*MaxFrameTime,则计算当前帧相对首帧的帧间隔数(表示为MpduSubSeq)。
在一种可能的实现方式中,步骤S12具体可以包括:
根据第二公式计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,所述第二公式为:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq为所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,CurMpduVcduSeq为所述后续接收的MPDU数据对应的虚拟信道计数,FirstMpduVcduSeq为所述首帧MPDU数据对应的虚拟信道计数。
(1)如果MpduSubSeq值为正且小于或等于(MaxDisorderNum+EpduMaxMpduNum)*2,则将当前MPDU的数据区数据存入相对首帧后第MpduSubSeq个分帧的位置。
(2)如果MpduSubSeq值为正且大于(MaxDisorderNum+EpduMaxMpduNum)*2,则当前帧数据作为异常数据不处理,并将异常数据帧计数增1;判断异常数据帧计数大于2,则转入(6)。
(3)如果MpduSubSeq值为负且绝对值小于或等于(MaxDisorderNum+EpduMaxMpduNum)*2,则将当前MPDU的数据区数据存入相对首帧往前第|MpduSubSeq|个分帧的位置,并将当前帧更新为首帧。
(4)如果MpduSubSeq值为负且绝对值大于16777216-(MaxDisorderNum+EpduMaxMpduNum),则按公式3重新计算当前MPDU相对首个MPDU的帧间隔数,并将当前MPDU的数据存入相对首帧往前第|MpduSubSeq|个分帧的位置。
公式3:MpduSubSeq=CurMpduVcduSeq–FirstMpduVcduSeq+16777216;
其中16777216为三字节虚拟信道计数的模。
(5)如果MpduSubSeq值为负且绝对值大于(MaxDisorderNum+EpduMaxMpduNum)*2且小于16777216-(MaxDisorderNum+EpduMaxMpduNum),则当前帧数据作为异常数据不处理,并将异常数据帧计数增1。判断异常数据帧计数大于2,则转入(6)。
(6)调用EPDU数据解包处理,对缓存中的MPDU数据进行处理,遇到MPDU数据丢帧情况,则舍弃不完整源包,将下一个“已组帧”的MPDU数据更新为缓存中的第一帧,继续调用EPDU数据解包处理,直至无法解析出完整源包为止,并将首个待处理的MPDU更新为缓存中的首帧,再重新调用公式2计算当前MPDU帧与更新后的第一帧数据的帧间隔,定位并缓存当前帧的MPDU数据。
本发明实施例提供的解析包装数据协议单元的方法,对接收过程中未收到的数据标识为丢帧。每次组帧后,对缓存中的数据进行解析,跨过MPDU的填充帧,复原出独立源包,直至遇到丢帧或不完整源包。在数据有丢帧时,如果没有超过数据时序容错性或实时性要求,则等待接收下一个MPDU数据;如果超过数据时序容错性,则跳过丢帧数据,将其中完整的源包复原,如果不满足实时性要求,则该源包只记盘不发送,如果满足实时性,则发送该源包给相关专业进行处理。由此,在时序混乱、丢帧、数据中断情况下,保证MPDU数据组帧的正确性,也因此而保证了解析出的EPDU数据的正确性。
本发明实施例提供的解析包装数据协议单元的方法,能够为不同的数据帧频、MPDU的数据长度、EPDU格式,MPDU数据提供通用的组帧方法,能够适应于不同的数据帧频、MPDU的数据长度、EPDU的数据格式。
每解包出一个EPDU后,需要更新以下几项信息,换言之,在一种可能的实现方式中,步骤S23之后还可以包括:
步骤S41、根据第三公式,更新待解析的所述首帧MPDU数据的首导头指针,所述第三公式为:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;(%为取模运算)
其中,NewFirstMpduStartAddr为待解析的所述首帧MPDU数据的首导头指针,OldFirstMpduStartAddr为源包解析之前的所述首帧MPDU数据的首导头指针,EpduDataLen为本次解析出的源包包长,EpduHeadLen为源包EPDU主导头长度,MpduDataLen为MPDU的数据区长度。
在现有航空测控实践中,跨帧处理数据时容易出现丢失EPDU数据的情况,本发明实施例通过更新首帧MPDU数据的首导头指针,能够有效避免跨帧数据处理中的丢帧问题。
在一种可能的实现方式中,步骤S23之后还可以包括:步骤S42、根据第四公式,计算缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,所述第四公式为:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum为缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,OldMaxMpduNum为源包解析之前缓存中待处理的MPDU与首帧MPDU的最大帧间隔数,FillMpduNum为解析过程中MPDU数据的填充数。
由此,本发明实施例提供的解析包装数据协议单元的方法,能够保证数据不超过最大缓存,满足数据的实时性要求。
在一种可能的实现方式中,步骤S23之后还可以包括:步骤S43、根据第五公式,计算已经完整处理的MPDU分帧数。
第五公式:ComDealMpduNum=OldMaxMpduNum-NewMaxMpduNum
ComDealMpduNum:已经完整处理的MPDU分帧数。
实施例3
图3示出本发明实施例提供的一种解析包装数据协议单元的装置的结构示意图,如图3所示,该装置10包括:组帧模块110和解析模块120。
组帧模块110,用于对多路协议数据单元MPDU数据进行组帧,所述组帧模块110被配置为:将接收到的第一个MPDU数据作为首帧MPDU数据进行缓存;根据所述首帧MPDU数据的虚拟信道计数值和后续接收的MPDU数据的虚拟信道计数值,计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数;根据所述帧间隔数确定所述后续接收的MPDU数据的缓存地址;根据所述后续接收的MPDU数据的缓存地址,缓存所述后续的MPDU数据的信息,所述后续接收的MPDU数据的信息包括数据区、首导头指针和测站时标,并将所述后续接收的MPDU数据标记为已组帧MPDU数据。具体实现步骤与上述步骤S11-S14类似,在此不再赘述。
解析模块120,用于根据所述已组帧MPDU数据解析包装数据协议单元EPDU数据,所述解析模块120被配置为:根据所述已组帧MPDU数据的首导头指针,确定所述已组帧MPDU数据的源包的起始地址;根据所述已组帧MPDU数据的数据区长度、所述源包的长度、有效数据组帧长度及组帧标志,从所述源包的起始地址开始,对已缓存的所述MPDU数据的有效数据进行组帧;以及当已组帧MPDU数据长度大于或等于所述EPDU数据的主导头长度与包长加1之和时,解析出所述EPDU数据。具体实现步骤与上述步骤S21-S23类似,在此不再赘述。
本发明实施例提供的解析包装数据协议单元的装置,对接收过程中未收到的数据标识为丢帧。每次组帧后,对缓存中的数据进行解析,跨过MPDU的填充帧,复原出独立源包,直至遇到丢帧或不完整源包。在数据有丢帧时,如果没有超过数据时序容错性或实时性要求,则等待接收下一个MPDU数据;如果超过数据时序容错性,则跳过丢帧数据,将其中完整的源包复原,如果不满足实时性要求,则该源包只记盘不发送,如果满足实时性,则发送该源包给相关专业进行处理。由此,在时序混乱、丢帧、数据中断情况下,保证MPDU数据组帧的正确性,也因此而保证了解析出的EPDU数据的正确性。
本发明实施例提供的解析包装数据协议单元的方法,能够为不同的数据帧频、MPDU的数据长度、EPDU格式,MPDU数据提供通用的组帧方法,能够适应于不同的数据帧频、MPDU的数据长度、EPDU的数据格式。
实施例4
图4示出本发明另一实施例提供的一种解析包装数据协议单元的装置的结构示意图,如图4所示,在一种可能的实现方式中,该装置10还包括:计算模块130,用于在所述对多个多路协议数据单元MPDU数据进行组帧之前,根据第一公式计算最长的所述EPDU数据所占的MPDU数据的帧数,所述第一公式为:
EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum为最长的所述EPDU数据所占的MPDU数据的帧数,MaxEpduLen为最长的EPDU数据的源包长度,MpduDataLen为MPDU数据的数据区长度。
在一种可能的实现方式中,组帧模块110还用于:根据第二公式计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,所述第二公式为:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq为所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,CurMpduVcduSeq为所述后续接收的MPDU数据对应的虚拟信道计数,FirstMpduVcduSeq为所述首帧MPDU数据对应的虚拟信道计数。
本发明实施例提供的解析包装数据协议单元的装置,对接收过程中未收到的数据标识为丢帧。每次组帧后,对缓存中的数据进行解析,跨过MPDU的填充帧,复原出独立源包,直至遇到丢帧或不完整源包。在数据有丢帧时,如果没有超过数据时序容错性或实时性要求,则等待接收下一个MPDU数据;如果超过数据时序容错性,则跳过丢帧数据,将其中完整的源包复原,如果不满足实时性要求,则该源包只记盘不发送,如果满足实时性,则发送该源包给相关专业进行处理。由此,在时序混乱、丢帧、数据中断情况下,保证MPDU数据组帧的正确性,也因此而保证了解析出的EPDU数据的正确性。
本发明实施例提供的解析包装数据协议单元的方法,能够为不同的数据帧频、MPDU的数据长度、EPDU格式,MPDU数据提供通用的组帧方法,能够适应于不同的数据帧频、MPDU的数据长度、EPDU的数据格式。
在一种可能的实现方式中,计算模块130还用于在解析出所述EPDU数据之后,根据第三公式,更新待解析的所述首帧MPDU数据的首导头指针,所述第三公式为:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;
其中,NewFirstMpduStartAddr为待解析的所述首帧MPDU数据的首导头指针,OldFirstMpduStartAddr为源包解析之前的所述首帧MPDU数据的首导头指针,EpduDataLen为本次解析出的源包包长,EpduHeadLen为源包EPDU主导头长度,MpduDataLen为MPDU的数据区长度。
在现有航空测控实践中,跨帧处理数据时容易出现丢失EPDU数据的情况,本发明实施例通过更新首帧MPDU数据的首导头指针,能够有效避免跨帧数据处理中的丢帧问题。
在一种可能的实现方式中,计算模块130还用于在解析出所述EPDU数据之后,根据第四公式,计算缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,所述第四公式为:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum为缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,OldMaxMpduNum为源包解析之前缓存中待处理的MPDU与首帧MPDU的最大帧间隔数,FillMpduNum为解析过程中MPDU数据的填充数。
由此,本发明实施例提供的解析包装数据协议单元的方法,能够保证数据不超过最大缓存,满足数据的实时性要求。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种解析包装数据协议单元的方法,其特征在于,包括:
对多个多路协议数据单元MPDU数据进行组帧,包括:
将接收到的第一个MPDU数据作为首帧MPDU数据进行缓存;
根据所述首帧MPDU数据的虚拟信道计数值和后续接收的MPDU数据的虚拟信道计数值,计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数;
根据所述帧间隔数确定所述后续接收的MPDU数据的缓存地址;
根据所述后续接收的MPDU数据的缓存地址,缓存所述后续的MPDU数据的信息,所述后续接收的MPDU数据的信息包括数据区、首导头指针、虚拟信道计数和测站时标,并将所述后续接收的MPDU数据标记为已组帧MPDU数据;
根据所述已组帧MPDU数据解析包装数据协议单元EPDU数据,包括:
根据所述已组帧MPDU数据的首导头指针,确定所述已组帧MPDU数据的源包的起始地址;
根据所述已组帧MPDU数据的数据区长度、所述源包的长度、有效数据组帧长度及组帧标志,从所述源包的起始地址开始,对已缓存的所述MPDU数据的有效数据进行组帧;以及
当已组帧MPDU数据长度大于或等于所述EPDU数据的主导头长度与包长加1之和时,解析出所述EPDU数据。
2.根据权利要求1所述的方法,其特征在于,在所述对多个多路协议数据单元MPDU数据进行组帧之前,还包括:
根据第一公式计算最长的所述EPDU数据所占的MPDU数据的帧数,所述第一公式为:EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum为最长的所述EPDU数据所占的MPDU数据的帧数,MaxEpduLen为最长的EPDU数据的源包长度,MpduDataLen为MPDU数据的数据区长度。
3.根据权利要求1所述的方法,其特征在于,根据所述首帧MPDU数据的虚拟信道计数值和后续接收的MPDU数据的虚拟信道计数值,计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,包括:
根据第二公式计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,所述第二公式为:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq为所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,CurMpduVcduSeq为所述后续接收的MPDU数据对应的虚拟信道计数,FirstMpduVcduSeq为所述首帧MPDU数据对应的虚拟信道计数。
4.根据权利要求1所述的方法,其特征在于,在解析出所述EPDU数据之后,还包括:
根据第三公式,更新待解析的所述首帧MPDU数据的首导头指针,所述第三公式为:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;
其中,NewFirstMpduStartAddr为待解析的所述首帧MPDU数据的首导头指针,OldFirstMpduStartAddr为源包解析之前的所述首帧MPDU数据的首导头指针,EpduDataLen为本次解析出的源包包长,EpduHeadLen为源包EPDU主导头长度,MpduDataLen为MPDU的数据区长度。
5.根据权利要求4所述的方法,其特征在于,在解析出所述EPDU数据之后,还包括:
根据第四公式,计算缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,所述第四公式为:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum为缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,OldMaxMpduNum为源包解析之前缓存中待处理的MPDU与首帧MPDU的最大帧间隔数;FillMpduNum为解析过程中MPDU数据的填充数。
6.一种解析包装数据协议单元的装置,其特征在于,包括:
组帧模块,用于对多个多路协议数据单元MPDU数据进行组帧,所述组帧模块被配置为:
将接收到的第一个MPDU数据作为首帧MPDU数据进行缓存;
根据所述首帧MPDU数据的虚拟信道计数值和后续接收的MPDU数据的虚拟信道计数值,计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数;
根据所述帧间隔数确定所述后续接收的MPDU数据的缓存地址;
根据所述后续接收的MPDU数据的缓存地址,缓存所述后续的MPDU数据的信息,所述后续接收的MPDU数据的信息包括数据区、首导头指针、虚拟信道计数和测站时标,并将所述后续接收的MPDU数据标记为已组帧MPDU数据;
解析模块,用于根据所述已组帧MPDU数据解析包装数据协议单元EPDU数据,所述解析模块被配置为:
根据所述已组帧MPDU数据的首导头指针,确定所述已组帧MPDU数据的源包的起始地址;
根据所述已组帧MPDU数据的数据区长度、所述源包的长度、有效数据组帧长度及组帧标志,从所述源包的起始地址开始,对已缓存的所述MPDU数据的有效数据进行组帧;以及
当已组帧MPDU数据长度大于或等于所述EPDU数据的主导头长度与包长加1之和时,解析出所述EPDU数据。
7.根据权利要求6所述的装置,其特征在于,还包括:计算模块,用于在所述对多个多路协议数据单元MPDU数据进行组帧之前,根据第一公式计算最长的所述EPDU数据所占的MPDU数据的帧数,所述第一公式为:
EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum为最长的所述EPDU数据所占的MPDU数据的帧数,MaxEpduLen为最长的EPDU数据的源包长度,MpduDataLen为MPDU数据的数据区长度。
8.根据权利要求6所述的装置,其特征在于,所述组帧模块还用于:
根据第二公式计算所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,所述第二公式为:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq为所述后续接收的MPDU数据相对于所述首帧MPDU数据的帧间隔数,CurMpduVcduSeq为所述后续接收的MPDU数据对应的虚拟信道计数,FirstMpduVcduSeq为所述首帧MPDU数据对应的虚拟信道计数。
9.根据权利要求7所述的装置,其特征在于,所述计算模块还用于在解析出所述EPDU数据之后,根据第三公式,更新待解析的所述首帧MPDU数据的首导头指针,所述第三公式为:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;
其中,NewFirstMpduStartAddr为待解析的所述首帧MPDU数据的首导头指针,OldFirstMpduStartAddr为源包解析之前的所述首帧MPDU数据的首导头指针,EpduDataLen为本次解析出的源包包长,EpduHeadLen为源包EPDU主导头长度,MpduDataLen为MPDU的数据区长度。
10.根据权利要求9所述的装置,其特征在于,所述计算模块还用于在解析出所述EPDU数据之后,根据第四公式,计算缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,所述第四公式为:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum为缓存中待处理的所述MPDU数据与更新后的所述首帧MPDU数据的最大帧间隔数,OldMaxMpduNum为源包解析之前缓存中待处理的MPDU与首帧MPDU的最大帧间隔数,FillMpduNum为解析过程中MPDU数据的填充数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610573919.9A CN106131034B (zh) | 2016-07-19 | 2016-07-19 | 一种解析包装数据协议单元的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610573919.9A CN106131034B (zh) | 2016-07-19 | 2016-07-19 | 一种解析包装数据协议单元的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106131034A CN106131034A (zh) | 2016-11-16 |
CN106131034B true CN106131034B (zh) | 2019-03-29 |
Family
ID=57289558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610573919.9A Active CN106131034B (zh) | 2016-07-19 | 2016-07-19 | 一种解析包装数据协议单元的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106131034B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108400811B (zh) * | 2018-02-13 | 2019-06-25 | 北京空间技术研制试验中心 | 基于高级在轨数据处理方法的空间实验室信息系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770541A (zh) * | 2010-02-03 | 2010-07-07 | 北京航空航天大学 | 一种基于aos标准的卫星数据系统仿真平台 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8130692B2 (en) * | 2005-03-18 | 2012-03-06 | Raytheon Company | Data handling in a distributed communication network |
-
2016
- 2016-07-19 CN CN201610573919.9A patent/CN106131034B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770541A (zh) * | 2010-02-03 | 2010-07-07 | 北京航空航天大学 | 一种基于aos标准的卫星数据系统仿真平台 |
Non-Patent Citations (2)
Title |
---|
天地一体化网络协议的研究与仿真;孙志颖;《中国优秀硕士学位论文全文数据库信息科技辑》;20130515(第5期);全文 |
通用MPDU组帧算法设计;周倜;《系统仿真学报》;20150808(第8期);全文 |
Also Published As
Publication number | Publication date |
---|---|
CN106131034A (zh) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6539755B2 (ja) | データ処理方法、通信デバイス、及び通信システム | |
US10680733B2 (en) | Service mapping processing method for optical transport network, apparatus, and system | |
CN104836748B (zh) | 拥塞控制比特率算法 | |
EP2222004B1 (en) | Dynamic bandwidth allocation circuit, dynamic bandwidth allocation method, dynamic bandwidth allocation program and recording medium | |
US20180123714A1 (en) | Method, Device, and System for Sending and Receiving Code Block Data Stream | |
US10164728B2 (en) | Method and apparatus for generic mapping procedure GMP and method and apparatus for generic mapping procedure GMP demapping | |
CN103825668B (zh) | 通用映射规程gmp映射方法、解映射方法及装置 | |
US20160286290A1 (en) | Dynamic bandwidth assignment method and apparatus on passive optical network | |
CN106027308B (zh) | 一种星载1553b总线通信优化方法 | |
KR20100119341A (ko) | 이동통신 시스템에서 역방향 전송 자원을 처리하는 방법 및 장치 | |
CN103685060B (zh) | 数据包发送方法及装置 | |
CN103825841B (zh) | 一种以太网报文排序方法及装置 | |
CN106131034B (zh) | 一种解析包装数据协议单元的方法和装置 | |
CN109391370A (zh) | 一种光传送网络中的传输速率调整方法及网络设备 | |
US20230045051A1 (en) | Bandwidth adjustment method and related device | |
CN102377678B (zh) | 一种数据传输处理方法及装置 | |
CN103634229B (zh) | 一种片间通讯方法及控制装置 | |
JP2010193232A (ja) | Ponシステムとこれに用いる宅側装置及びその送信制御方法 | |
US20030202540A1 (en) | Handling traffic in a synchronous communication network | |
CN106027404A (zh) | 一种基于自适应补偿编码的网络性能优化方法及装置 | |
JP3992823B2 (ja) | 帯域幅割当方法 | |
CN101547055B (zh) | 在光传送网中传输数据的方法和装置 | |
CN109660373B (zh) | 远端环回检测的方法及通信设备、计算机可读存储介质 | |
CN108809563B (zh) | 一种业务数据预处理方法和系统 | |
KR20070113234A (ko) | 싱크로부터 lcas로 멤버를 제거하는 방법 및 장치, 그리고 싱크 측의 상태기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |