CN110750383A - 一种利用crc校验码携带信息的方法 - Google Patents
一种利用crc校验码携带信息的方法 Download PDFInfo
- Publication number
- CN110750383A CN110750383A CN201910932768.5A CN201910932768A CN110750383A CN 110750383 A CN110750383 A CN 110750383A CN 201910932768 A CN201910932768 A CN 201910932768A CN 110750383 A CN110750383 A CN 110750383A
- Authority
- CN
- China
- Prior art keywords
- crc
- message
- mask
- target
- bits
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000010586 diagram Methods 0.000 description 4
- 238000013468 resource allocation Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明公开了一种利用CRC校验码携带信息的方法,包括:先根据待传输的数据块中的消息类型从多个候选CRC掩码(mask)中选择目标CRC mask,并根据CRC mask位数选择CRC生成多项式对数据块中的有效载荷进行CRC计算得出第一CRC值,然后将第一CRC值与目标CRC mask进行逻辑异或运算得到CRC校验码,并附接到数据块中的有效载荷。多个候选CRC masks中的每个CRC mask对应唯一的一种消息类型。通过在各种消息类型与CRC mask之间建立对应关系,使得接收端在CRC校验的时可根据对应关系确定消息类型,避免解码误判的情况发生。
Description
技术领域
本发明涉及通信领域,并且更具体地,涉及一种利用CRC校验码携带信息的方法。
背景技术
在甚高频(VHF,Very High Frequency)数据交换***(VDES,VHF Data ExchangeSystem)中,每种消息(message)内容中总是包含8比特的“类型(type)”字段来指示相应的消息类型。比如,BB消息对应的type值为十进制20。如果接收端成功的接收数据,通过消息内容中的type值可判别是哪种消息类型。然而,对于一些短消息数据(short data),在消息内容中使用8比特表示消息类型,带来的开销过大。再者,为满足不同的应用场景,潜在的要求VDES***支持的消息类型也越来越多,需要更多的比特数来表示type字段,进而导致更大的开销。
发明内容
技术问题:本发明的目的是解决现有VDES在消息内容中包含8比特的type 字段指示消息类型,使得***开销过大的问题。提出在CRC校验码生成时,使用与每种消息类型对应的唯一的CRC mask来潜在的指示相应的消息类型,从而省去在消息内容里面指示消息类型的type字段。
技术方案:为了实现上述目的,本发明采用如下的技术方案:
一种利用CRC校验码携带信息的方法,包括以下步骤:
1)根据待传输的数据块中的消息类型从多个候选CRC掩码(mask)中选择目标CRCmask;
2)根据CRC mask位数选择同样位数的CRC生成多项式,对所述数据块中的有效载荷进行CRC计算,计算出的CRC结果作为第一CRC值;
3)将所述第一CRC值与所述目标CRC mask进行逻辑异或运算得到CRC校验码,并附接到数据块中的有效载荷。
进一步地,所述步骤1)中多个候选CRC masks中的每个CRC mask对应唯一的一种消息类型,从而每一种消息类型对应有唯一的目标CRC mask。
进一步地,所述步骤2)中,在原数据的有效载荷后面根据目标CRC mask 位数用0补位,所述有效载荷用0补位后的二进制数作为被除数,与CRC mask 同样位数的CRC生成多项式对应的二进制代码作为除数,按照模2除法方式做运算,得到的余数即为第一CRC值。
进一步地,所述消息类型包括在***不同物理信道中传输的各种消息类型,也包括在某一种物理信道中传输但具有不同消息格式的各种消息类型。
进一步地,所述步骤3)中,第一CRC值的位数和有效载荷对应的消息类型的目标CRC mask位数相同,如果步骤2)计算的结果余数未达到目标位数,通过在高位补0来变成符合目标位数的第一CRC值。
有益效果:本发明与现有技术相比:
本发明的CRC校验码生成时使用的CRC mask和不同消息类型之间建立了对应关系,使得接收端通过CRC校验可确定消息类型,从而省去在消息内容里面包含指示消息类型的type字段,将节省的资源用于传输有效的数据,提高***资源利用效率。
附图说明
图1为本发明采用模2除法的计算过程示意图;
图2为现有VDES***中包含type字段的消息内容示意图;
图3为本发明的CRC校验码生成的步骤示意图;
图4为使用本发明的CRC校验码后的消息内容示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
循环冗余校验(Cyclic Redundancy Check,CRC)方法是一种常用的数据校验方法,其主要用来检查输入数据在网络传输或者在存储保存后可能出现的错误。在一些无线通信***如VDES中,发送端按照数据块(block)向接收端发送数据。发送端根据数据块中的有效载荷和CRC生成多项式计算出一个CRC结果,并随着该数据块一起发送到接收端。接收端根据收到的数据和同样的CRC生成多项式计算出一个CRC结果,并与接收到的CRC进行比较,如果二者相等也即CRC校验成功,接收端就认为数据接收成功;如果二者不相等,接收端就认为数据接收失败。
为便于本领域技术人员理解,对于根据数据块中的有效载荷和CRC生成多项式如何计算CRC结果,通过一个具体例子给予说明。不过首先,要对部分用语进行解释说明。
1)、位宽(width):CRC校验码的长度(CRC size),也可以理解成CRC校验码包含的二进制的个数。位宽为N的CRC校验码也常被记作为CRC-N,比如CRC-4 表示CRC校验码长度为4,或者由4个二进制数值组成CRC-4。又因为是二进制个数,因此CRC-4也常形容为CRC长度为4比特(bits)。
2)、CRC生成多项式(Polynomial):每一个CRC长度对应有至少一个CRC 生成多项式。生成多项式中,最高位和最低位总是取值为1,也即CRC-N的生成多项式一定包括xN和x0这两项。比如CRC-4的生成多项式可以是x4+x+1,或者是x4+x3+x2+x+1。
3)、二进制代码:也称简记式。每一个CRC生成多项式都可用一个二进制代码等价表示,并且CRC-N的二进制代码有N+1位。不过,因为最高位和最低位总是1,在一些公开文件中也省略最高位1,或者省略最低位1,表述成N位二进制代码。比如CRC-4的生成多项式x4+x+1等价的4+1=5位二进制代码为“10011”,省略最高位的4位二进制代码为“0011”,省略最低位的4位二进制代码位“1001”。
4)、逻辑异或:异或是一个数学运算符,英文为exclusive OR,缩写成xor。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。如果两个值不相同,则异或结果为1;如果两个值相同,异或结果为0。
5)、模2除法:与长除法类似,但没有借位。请参考图1,被除数为1011010000,除数为10011,模2除法得商和余数的步骤为:(1)取被除数左起前5位(与除数位数相同)10110,因为10110左起首位为1,因此第一次商为1,与除数10011 相乘得结果10011,该结果10011与被除数左起前5位10110做逻辑异或运算得余数00101,将该余数左边首位0去掉,最右低位补上被除数左起第6位1,得 01011;(2)因为步骤(1)后的5位值01011左起首位为0,因此第二次商为0,与除数10011相乘得结果00000,该结果00000与步骤(1)后的5位值01011 做逻辑异或运算得余数01011,将该余数左边首位0去掉,最右低位补上被除数左起第7位0,得10110;(3)因为步骤(2)后的5位值10110左起首位为1,因此第三次商为1,与除数10011相乘得结果10011,该结果10011与步骤(2) 后的5位值10110做逻辑异或运算得余数00101,将该余数左边首位0去掉,最右低位补上被除数左起第8位0,得01010;依次类推……最后得商为101010,余数为1110。
现在通过以下例子来说明根据数据块中的有效载荷和CRC生成多项式如何计算CRC结果,在本实施例中也即第一CRC值。假如给定一个数据块中的有效载荷为:101101(二进制),要求使用CRC-4,其生成多项式为x4+x+1(二进制代码为 10011),其对应的4位CRC结果可以按照以下步骤计算得到:
(1)因为目标是生成4位CRC结果,因此首先在原数据的有效载荷101101 后面再加4个0,得到1011010000;
(2)将二进制代码10011作为除数,把1011010000作为被除数,按照如图 1所示做“模2除法”运算,求出余数为1110;
(3)该余数1110就是根据数据块中的有效载荷101101和CRC二进制代码 10011计算出的CRC结果。如果余数不足4位,通过在高位补0来变成4位。
以上CRC结果的计算是多项式除法,在实际工程中有许多改进方法,比如通过已经建立好的表格直接查表的CRC驱动表法、直驱表法等。
如之前所述,在当前VDES中,根据要传输的数据块和CRC生成多项式计算得到的CRC结果直接作为CRC校验码,附接(attach)到有效载荷后面一起发送出去,比如按照以上例子得到CRC结果为“1110”后,直接添加在原有效载荷“101101”之后变成“1011011110”发出去。接收端将接收到的数据(长度包括有效载荷加上CRC校验码)作为被除数,将同样的CRC二进制代码作为除数,按照模2除法运算规则计算出接收端的CRC结果,并和发射端CRC校验码比较以确定数据是否接收正确。
当前VDES***传输不同消息类型的数据时,在消息(message)内容中包含 8比特的“类型(type)”字段来指示相应的消息类型。请参考图2,其示出了消息中包含的内容,比如,BB消息对应的type值为20,使用32比特的CRC对BB 消息的有效载荷进行保护。如果接收端成功的接收到了正确的数据,也即CRC 校验成功,则通过读取消息内容中的type值可判别为BB消息。但是,在消息内容中使用8比特表示消息类型,带来的***资源开销过大。如果为了节省这个开销,将这个8比特type字段去掉,一种可能的情况是,发送端传输了一种非BB 消息的其他消息,接收端尝试解码BB消息时CRC校验成功,误判为是该类型的消息就是BB消息。也就是说,去掉指示消息类型的字段后,即使CRC校验成功,也可能发生误判。
本申请实施例提出一种利用循环冗余校验CRC校验码携带信息的方法,请参考图3,包括以下步骤:1)根据待传输的数据块中的消息类型从多个候选CRC掩码(mask)中选择目标CRC mask;2)根据CRC mask位数选择CRC生成多项式,并对所述数据块中的有效载荷进行CRC计算,计算出的CRC结果作为第一CRC 值;3)将第一CRC值与目标CRC mask进行逻辑异或运算得到CRC校验码,并附接到数据块中的有效载荷(参考图4)。多个候选CRC masks中的每个CRC mask 对应唯一的一种消息类型,从而每一种消息类型对应有唯一的目标CRCmask。步骤2)中第一CRC结果的计算步骤可参见前述的根据数据块中的有效载荷和CRC 二进制代码计算出的CRC结果的例子来进行,亦可通过其他方法计算得到。消息类型既包括在***不同物理信道中传输的各种消息类型,也包括在某一种物理信道中传输但具有不同消息格式的各种消息类型。对于不同的消息类型,使用的 CRC校验码的长度可能不一样,因此多个候选CRC masks中包括不同长度的CRC mask。
借由之前计算CRC结果的例子来进一步说明本申请实施例。假设有效载荷“101101”对应的消息类型的目标CRC mask为“1111”,也即步骤1)中根据待传输的数据块中的消息类型从多个候选CRC masks中选择目标CRC mask 1111。因为目标CRC mask为4位,因此步骤2)中要选用CRC-4生成多项式(如例子中的二进制代码10011)。按照步骤2)对传输的数据块中的有效载荷101101进行CRC结算,根据图1可知得到的余数(也即CRC结果)为1110,将CRC结果 1110作为第一CRC值。最后按照步骤3)将第一CRC值1110与步骤1)中确定的目标CRC mask 1111进行逻辑异或运算得到CRC校验码0001,将该CRC校验码“0001”添加到数据块中的有效载荷“101101”后变成“101101 0001”。
表格1 CRC mask与不同消息类型的对应关系表格
还有一种实施例是,VDES***中多个候选的CRC masks如表格1所示。表格1中,资源分配消息1和资源分配消息2都在下行负责资源配置的信道上传输,使用的是同样长度的CRC校验码,每种消息对应唯一的CRC mask。上行资源申请消息和短消息都在上行随机接入信道上传输,使用的是不同长度的CRC校验码,每种消息对应唯一的CRC mask。当发射端要传输“BB消息”时,根据表格1中 BB消息对应的CRC mask为0xFFFFFFFF,发射端选择目标CRCmask为0xFFFFFFFF。因为BB消息的CRC mask的位数为32位,选择一个32比特的CRC生成多项式,可以是以下多项式:
gCRC32(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1。
根据该32比特的CRC生成多项式,对BB消息的有效载荷进行CRC计算得到一个 32比特的CRC结果也即第一CRC值,将该第一CRC值和32比特的目标CRC mask (也即0xFFFFFFFF)进行逻辑异或运算(第一CRC值的每一位与CRC mask的每一位值不相同,则异或结果为1;值相同,异或结果为0)得到一个32比特的序列,作为最终的CRC校验码。发送端在传输块中传输BB消息时,将产生的CRC 校验码附接/附加到BB消息的有效载荷一起发出去。接收端接收到数据后,只有使用与BB消息所对应的CRC mask(也即0xFFFFFFFF)才能完成CRC校验,因此当CRC校验成功,就潜在的表示接收到的是BB消息,也就是说CRC mask值为0xFFFFFFFF携带了“传输的是BB消息”这一个信息,避免了其他消息被误判为 BB消息的情况发生。
以上给出的对应不同消息类型的CRC校验码长度和CRC mask仅是本发明的优选实施方式。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (5)
1.一种利用CRC校验码携带信息的方法,其特征在于,包括以下步骤:
1)根据待传输的数据块中的消息类型从多个候选CRC掩码(mask)中选择目标CRCmask;
2)根据CRC mask位数选择同样位数的CRC生成多项式,对所述数据块中的有效载荷进行CRC计算,计算出的CRC结果作为第一CRC值;
3)将所述第一CRC值与所述目标CRC mask进行逻辑异或运算得到CRC校验码,并附接到数据块中的有效载荷。
2.根据权利要求1所述的利用CRC校验码携带信息的方法,其特征在于,所述步骤1)中多个候选CRC masks中的每个CRC mask对应唯一的一种消息类型,从而每一种消息类型对应有唯一的目标CRC mask。
3.根据权利要求1所述的利用CRC校验码携带信息的方法,其特征在于,所述步骤2)中,在原数据的有效载荷后面根据目标CRC mask位数用0补位,所述有效载荷用0补位后的二进制数作为被除数,与CRC mask同样位数的CRC生成多项式对应的二进制代码作为除数,按照模2除法方式做运算,得到的余数即为第一CRC值。
4.根据权利要求1或2所述利用CRC校验码携带信息的方法,其特征在于,所述消息类型包括在***不同物理信道中传输的各种消息类型,也包括在某一种物理信道中传输但具有不同消息格式的各种消息类型。
5.根据权利要求1所述利用CRC校验码携带信息的方法,其特征在于,所述步骤3)中,第一CRC值的位数和有效载荷对应的消息类型的目标CRC mask位数相同,如果步骤2)计算的结果余数未达到目标位数,通过在高位补0来变成符合目标位数的第一CRC值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910932768.5A CN110750383B (zh) | 2019-09-29 | 2019-09-29 | 一种利用crc校验码携带信息的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910932768.5A CN110750383B (zh) | 2019-09-29 | 2019-09-29 | 一种利用crc校验码携带信息的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110750383A true CN110750383A (zh) | 2020-02-04 |
CN110750383B CN110750383B (zh) | 2024-03-15 |
Family
ID=69277334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910932768.5A Active CN110750383B (zh) | 2019-09-29 | 2019-09-29 | 一种利用crc校验码携带信息的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110750383B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111343605A (zh) * | 2020-03-06 | 2020-06-26 | 知轮(杭州)科技有限公司 | 一种用于车辆局域网高速传输数据的无线通信方法 |
CN117952324A (zh) * | 2024-03-26 | 2024-04-30 | 深圳市智慧企业服务有限公司 | 一种基于冗余信息的政务数据管理方法及相关装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571284A (zh) * | 2003-07-14 | 2005-01-26 | 北京大学 | 一种用于纠正数据帧中错误比特的快速循环crc校验方法 |
CN101625653A (zh) * | 2009-08-13 | 2010-01-13 | 青岛海信电器股份有限公司 | 一种多媒体产品本地数据处理校验方法 |
CN102263612A (zh) * | 2011-07-18 | 2011-11-30 | 杭州晟联通信技术有限公司 | 用于数据块的差错检测方法和设备 |
US20130294547A1 (en) * | 2012-05-07 | 2013-11-07 | Mstar Semiconductor, Inc. | Control Channel Demodulating and Decoding Method and Communication Apparatus Using the Same |
CN104639294A (zh) * | 2015-02-10 | 2015-05-20 | 浪潮电子信息产业股份有限公司 | 一种改进的crc校验实现方法 |
CN105975498A (zh) * | 2016-04-27 | 2016-09-28 | 华为技术有限公司 | 数据查询的方法、装置和*** |
CN107733568A (zh) * | 2017-09-22 | 2018-02-23 | 烽火通信科技股份有限公司 | 基于fpga实现crc并行计算的方法及装置 |
CN108933641A (zh) * | 2017-05-22 | 2018-12-04 | 中兴通讯股份有限公司 | 数据发送、处理方法及装置,网络侧设备和终端 |
-
2019
- 2019-09-29 CN CN201910932768.5A patent/CN110750383B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571284A (zh) * | 2003-07-14 | 2005-01-26 | 北京大学 | 一种用于纠正数据帧中错误比特的快速循环crc校验方法 |
CN101625653A (zh) * | 2009-08-13 | 2010-01-13 | 青岛海信电器股份有限公司 | 一种多媒体产品本地数据处理校验方法 |
CN102263612A (zh) * | 2011-07-18 | 2011-11-30 | 杭州晟联通信技术有限公司 | 用于数据块的差错检测方法和设备 |
US20130294547A1 (en) * | 2012-05-07 | 2013-11-07 | Mstar Semiconductor, Inc. | Control Channel Demodulating and Decoding Method and Communication Apparatus Using the Same |
CN104639294A (zh) * | 2015-02-10 | 2015-05-20 | 浪潮电子信息产业股份有限公司 | 一种改进的crc校验实现方法 |
CN105975498A (zh) * | 2016-04-27 | 2016-09-28 | 华为技术有限公司 | 数据查询的方法、装置和*** |
CN108933641A (zh) * | 2017-05-22 | 2018-12-04 | 中兴通讯股份有限公司 | 数据发送、处理方法及装置,网络侧设备和终端 |
CN107733568A (zh) * | 2017-09-22 | 2018-02-23 | 烽火通信科技股份有限公司 | 基于fpga实现crc并行计算的方法及装置 |
Non-Patent Citations (1)
Title |
---|
杨璇: "短波选频与建链***数据传输协议设计与实现", 《硕士电子期刊》, no. 3, pages 1 - 71 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111343605A (zh) * | 2020-03-06 | 2020-06-26 | 知轮(杭州)科技有限公司 | 一种用于车辆局域网高速传输数据的无线通信方法 |
CN111343605B (zh) * | 2020-03-06 | 2023-08-29 | 知轮(杭州)科技有限公司 | 一种用于车辆局域网高速传输数据的无线通信方法 |
CN117952324A (zh) * | 2024-03-26 | 2024-04-30 | 深圳市智慧企业服务有限公司 | 一种基于冗余信息的政务数据管理方法及相关装置 |
CN117952324B (zh) * | 2024-03-26 | 2024-05-28 | 深圳市智慧企业服务有限公司 | 一种基于冗余信息的政务数据管理方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110750383B (zh) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10469212B2 (en) | Data transmission method and device | |
EP3371890B1 (en) | Signature-enabled polar encoder and decoder | |
JP4271855B2 (ja) | 通信システムにおける識別子情報送信方法及び装置 | |
CN109039344B (zh) | 编码输入数据为极性码的方法及设备、解码方法及其设备 | |
EP3614589B1 (en) | Information transmission method, decoding method and device | |
CN105991227B (zh) | 数据编码方法及装置 | |
US5142539A (en) | Method of processing a radio signal message | |
EP3484126B1 (en) | Method and apparatus for carrying identifier information | |
US11683052B2 (en) | Data processing method and device | |
US10644835B1 (en) | System and method for interleaving distributed CRC in polar codes for early termination | |
US11075653B2 (en) | Polar code encoding and decoding method and apparatus | |
CN110750383B (zh) | 一种利用crc校验码携带信息的方法 | |
CN101483441A (zh) | 通信***中添加循环冗余校验的设备 | |
US11502780B2 (en) | Channel decoding method and apparatus in wireless communications | |
US20240048157A1 (en) | Encoding method, decoding method, electronic device and storage medium | |
US11075715B2 (en) | Encoding method and apparatus | |
US9853766B2 (en) | Radio communication devices, access points, method for controlling a radio communication device, and methods for controlling an access point | |
CN108880742B (zh) | 传输数据的方法、芯片、收发机和计算机可读存储介质 | |
EP3605849A1 (en) | Polar code encoding method and device | |
US11456819B2 (en) | Partial pseudo-randomization processing method, and corresponding apparatus and device, and storage medium | |
KR102105428B1 (ko) | Sec부호에서 멀티오류정정을 위한 복호기 및 그 복호 방법 | |
JP2019083507A (ja) | 受信装置、送信装置、受信方法及び送信方法 | |
CN112821984B (zh) | 无线局域网数据处理方法、装置及设备 | |
US10999009B2 (en) | Channel encoding method and apparatus in wireless communications | |
WO2018201377A1 (en) | A unified error correction and error detection code generator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |