CN111881167A - 一种获取风扇状态的方法 - Google Patents
一种获取风扇状态的方法 Download PDFInfo
- Publication number
- CN111881167A CN111881167A CN202010713354.6A CN202010713354A CN111881167A CN 111881167 A CN111881167 A CN 111881167A CN 202010713354 A CN202010713354 A CN 202010713354A CN 111881167 A CN111881167 A CN 111881167A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- updating
- fan
- timer
- 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 53
- 108010028984 3-isopropylmalate dehydratase Proteins 0.000 claims abstract description 18
- 238000004806 packaging method and process Methods 0.000 claims abstract description 5
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000013461 design Methods 0.000 description 3
- 230000017525 heat dissipation Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种获取风扇状态的方法,包括以下步骤:A、首先缓存域cache采集风扇状态信息,包括转速speed、占空比pwm,并记录上次更新时间戳,以及数据合法性标记;B、之后控制定时器工作,定时器定时更新缓存cache数据,并每隔一段时间触发定时机制;C、若超时未响应,则封装IPMI request消息,发送内核IPMI请求,通过BMC获取风扇状态信息,并同步更新缓存中的数据;D、最后增加缓存空间,并对缓存区域进行加密;本发明通过在驱动层增加缓存机制,添加定时任务按时触发IPMI请求并更新缓存,降低用户操作的读写延时,使得风扇可以及时响应;优化了读写风扇状态信息的效率,可以使风扇快速响应用户操作,增加了用户体验。
Description
技术领域
本发明涉及风扇状态监测技术领域,具体为一种获取风扇状态的方法。
背景技术
交换机(switch)是一种在通信系统中完成信息交换功能的设备;在计算机网络系统中,交换概念的提出是对于共享工作模式的改进。HUB集线器就是一种共享设备,HUB本身不能识别目的地址,当同一局域网内的A主机给B主机传输数据时,数据包在以HUB为架构的网络上是以广播方式传输的,由每一台终端通过验证数据包头的地址信息来确定是否接收。在这种工作方式下,同一时刻网络上只能传输一组数据帧的通讯,如果发生碰撞还得重试。这种方式就是共享网络带宽。
交换机在设计时采用了CPU/BMC双主管理方案,并且风扇的控制信号全部接到了BMC的GPIO引脚上。这样,CPU侧就无法直接下达控制命令给风扇模组,CPU侧在设计风扇的驱动程序时,就需要调用BMC提供的接口,间接控制风扇。这里的接口就是BMC按照IPMI协议实现的几个风扇状态查看的API。
基于上述设计方案,CPU侧的风扇驱动程序,需要按照BMC侧设计的IPMI接口定义,封装相应的IPMI request消息体,发送给BMC;然后获取reply报文,解析reply报文,剥离出真正的结果。通过此流程,CPU侧的风扇驱动程序在用户空间提供两个sysfs接口:风扇转速speed、占空比pwm。上层的散热策略程序通过读写该sysfs接口,控制风扇的转速。用户在读取CPU侧风扇驱动提供的sysfs接口时,用时开销会受IPMI通信的影响,实测可达到700ms的延时,并且会出现CPU核心利用率抖升的现象,影响上层应用程序的执行。
发明内容
本发明的目的在于提供一种获取风扇状态的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种获取风扇状态的方法,包括以下步骤:
A、首先缓存域cache采集风扇状态信息,包括转速speed、占空比pwm,并记录上次更新时间戳,以及数据合法性标记;
B、之后控制定时器工作,定时器定时更新缓存cache数据,并每隔一段时间触发定时机制;
C、若超时未响应,则封装IPMI request消息,发送内核IPMI请求,通过BMC获取风扇状态信息,并同步更新缓存中的数据。
优选的,所述步骤B中定时器定时更新方法如下:
a、当到达数据更新时间点,且终端确定自身处于休眠状态时,系统保持自身与定时器之间的无数据连接状态;
b、系统在自身从休眠状态进入工作状态时,确定当前时间点超过了数据服务器指示的业务数据更新时间点,则系统向所述数据服务器发送业务数据更新请求消息;
c、根据数据服务器反馈的业务数据进行更新。
优选的,所述步骤B中更新方法如下:
a、首先数据组装服务器获得待缓存数据;按照预设规则将待缓存数据组装为缓存包;
b、将缓存包发送给所述数据缓存区进行存储;
c、缓存更新服务器从所述数据缓存区中获得缓存包;根据缓存包对与该缓存更新服务器位于同一机房的缓存存储服务器进行缓存更新。
优选的,所述步骤C中缓存数据更新方法如下:
a、监测数据库中的数据更新操作,当监测到第一数据发生更新操作时,创建对缓存区域执行操作的进程;
b、通过进程删除缓存区域中与数据库中发生更新操作的第一数据相应的缓存数据;
c、接收到针对第一数据的数据获取请求时,从数据库查找到相应的更新后的第一数据,并将更新后的第一数据存储至缓存区域中。
优选的,还包括如下步骤:
D、最后增加缓存空间,并对缓存区域进行加密,其中,所述步骤D中缓存区域加密方法如下:
a、接收针对待存储数据的加密请求;
b、采用预设方式选取密钥、以及用于标述密钥的密钥标签;
c、用密钥对加密请求携带的数据加密;
d、输出加密后的数据以及密钥标签,以将上述信息对应存储于存储设备。
优选的,所述步骤B中间隔更新时间为30s-60s。
与现有技术相比,本发明的有益效果是:本发明通过在驱动层增加缓存机制,添加定时任务按时触发IPMI请求并更新缓存cache,降低用户操作的读写延时,使得风扇可以及时响应;优化了读写风扇状态信息的效率,可以使风扇快速响应用户操作。尤其对于上层的散热策略程序,当获取交换机测温点温度以及风扇转速时,风扇驱动可以快速响应,增加了用户体验,降低了硬件超温带来的危险;采用的更新方法中监测数据库中的数据更新操作,当监测到第一数据发生更新操作时,创建对缓存区域执行操作的进程,通过进程删除缓存区域中与数据库中发生更新操作的第一数据相应的缓存数据,避免了当数据库中的数据发生更新时,缓存区域中缓存的对应数据为未更新的旧数据的情况,从而避免了用户获取到错误的数据;接收到针对第一数据的数据获取请求时,从数据库查找到相应的更新后的第一数据,并将更新后的第一数据存储至缓存区域中,保证了数据库中的数据与缓存区域中缓存的对应数据的一致性,从而保证了用户可实时获取到正确的数据;同时,当发生大量数据的更新时,可避免频繁更新缓存区域中对应的缓存数据,降低了系统资源的消耗,提高数据的处理效率,并提升用户的使用体验。
附图说明
图1为本发明流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例一:
请参阅图1,本发明提供一种技术方案:一种获取风扇状态的方法,包括以下步骤:
A、首先缓存域cache采集风扇状态信息,包括转速speed、占空比pwm,并记录上次更新时间戳,以及数据合法性标记;
B、之后控制定时器工作,定时器定时更新缓存cache数据,并每隔一段时间触发定时机制,间隔更新时间为30s-60s;
C、若超时未响应,则封装IPMI request消息,发送内核IPMI请求,通过BMC获取风扇状态信息,并同步更新缓存中的数据;
D、最后增加缓存空间,并对缓存区域进行加密。
本实施例中,步骤B中定时器定时更新方法如下:
a、当到达数据更新时间点,且终端确定自身处于休眠状态时,系统保持自身与定时器之间的无数据连接状态;
b、系统在自身从休眠状态进入工作状态时,确定当前时间点超过了数据服务器指示的业务数据更新时间点,则系统向所述数据服务器发送业务数据更新请求消息;
c、根据数据服务器反馈的业务数据进行更新。
本实施例中,步骤B中更新方法如下:
a、首先数据组装服务器获得待缓存数据;按照预设规则将待缓存数据组装为缓存包;
b、将缓存包发送给所述数据缓存区进行存储;
c、缓存更新服务器从所述数据缓存区中获得缓存包;根据缓存包对与该缓存更新服务器位于同一机房的缓存存储服务器进行缓存更新。
本实施例中,步骤C中缓存数据更新方法如下:
a、监测数据库中的数据更新操作,当监测到第一数据发生更新操作时,创建对缓存区域执行操作的进程;
b、通过进程删除缓存区域中与数据库中发生更新操作的第一数据相应的缓存数据;
c、接收到针对第一数据的数据获取请求时,从数据库查找到相应的更新后的第一数据,并将更新后的第一数据存储至缓存区域中。
监测数据库中的数据更新操作,当监测到第一数据发生更新操作时,创建对缓存区域执行操作的进程,通过进程删除缓存区域中与数据库中发生更新操作的第一数据相应的缓存数据,避免了当数据库中的数据发生更新时,缓存区域中缓存的对应数据为未更新的旧数据的情况,从而避免了用户获取到错误的数据;接收到针对第一数据的数据获取请求时,从数据库查找到相应的更新后的第一数据,并将更新后的第一数据存储至缓存区域中,保证了数据库中的数据与缓存区域中缓存的对应数据的一致性,从而保证了用户可实时获取到正确的数据;同时,当发生大量数据的更新时,可避免频繁更新缓存区域中对应的缓存数据,降低了系统资源的消耗,提高数据的处理效率,并提升用户的使用体验。
实施例二:
一种获取风扇状态的方法,包括以下步骤:
A、首先缓存域cache采集风扇状态信息,包括转速speed、占空比pwm,并记录上次更新时间戳,以及数据合法性标记;
B、之后控制定时器工作,定时器定时更新缓存cache数据,并每隔一段时间触发定时机制,间隔更新时间为30s-60s;
C、若超时未响应,则封装IPMI request消息,发送内核IPMI请求,通过BMC获取风扇状态信息,并同步更新缓存中的数据;
D、最后增加缓存空间,并对缓存区域进行加密。
本实施例中,步骤B中定时器定时更新方法如下:
a、当到达数据更新时间点,且终端确定自身处于休眠状态时,系统保持自身与定时器之间的无数据连接状态;
b、系统在自身从休眠状态进入工作状态时,确定当前时间点超过了数据服务器指示的业务数据更新时间点,则系统向所述数据服务器发送业务数据更新请求消息;
c、根据数据服务器反馈的业务数据进行更新。
本实施例中,步骤B中更新方法如下:
a、首先数据组装服务器获得待缓存数据;按照预设规则将待缓存数据组装为缓存包;
b、将缓存包发送给所述数据缓存区进行存储;
c、缓存更新服务器从所述数据缓存区中获得缓存包;根据缓存包对与该缓存更新服务器位于同一机房的缓存存储服务器进行缓存更新。
本实施例中,步骤C中缓存数据更新方法如下:
a、监测数据库中的数据更新操作,当监测到第一数据发生更新操作时,创建对缓存区域执行操作的进程;
b、通过进程删除缓存区域中与数据库中发生更新操作的第一数据相应的缓存数据;
c、接收到针对第一数据的数据获取请求时,从数据库查找到相应的更新后的第一数据,并将更新后的第一数据存储至缓存区域中。
监测数据库中的数据更新操作,当监测到第一数据发生更新操作时,创建对缓存区域执行操作的进程,通过进程删除缓存区域中与数据库中发生更新操作的第一数据相应的缓存数据,避免了当数据库中的数据发生更新时,缓存区域中缓存的对应数据为未更新的旧数据的情况,从而避免了用户获取到错误的数据;接收到针对第一数据的数据获取请求时,从数据库查找到相应的更新后的第一数据,并将更新后的第一数据存储至缓存区域中,保证了数据库中的数据与缓存区域中缓存的对应数据的一致性,从而保证了用户可实时获取到正确的数据;同时,当发生大量数据的更新时,可避免频繁更新缓存区域中对应的缓存数据,降低了系统资源的消耗,提高数据的处理效率,并提升用户的使用体验。
本实施例还公开了加密方法,具体的:步骤D中缓存区域加密方法如下:
a、接收针对待存储数据的加密请求;
b、采用预设方式选取密钥、以及用于标述密钥的密钥标签;
c、用密钥对加密请求携带的数据加密;
d、输出加密后的数据以及密钥标签,以将上述信息对应存储于存储设备。
采用的是基于预设方式选取的密钥、而不是固定密钥,从而可以灵活地采用不同的密钥对数据进行加密,有效地保障了数据存储的安全性。
综上所述,本发明通过在驱动层增加缓存机制,添加定时任务按时触发IPMI请求并更新缓存cache,降低用户操作的读写延时,使得风扇可以及时响应;优化了读写风扇状态信息的效率,可以使风扇快速响应用户操作。尤其对于上层的散热策略程序,当获取交换机测温点温度以及风扇转速时,风扇驱动可以快速响应,增加了用户体验,降低了硬件超温带来的危险。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (6)
1.一种获取风扇状态的方法,其特征在于:包括以下步骤:
A、首先缓存域cache采集风扇状态信息,包括转速speed、占空比pwm,并记录上次更新时间戳,以及数据合法性标记;
B、之后控制定时器工作,定时器定时更新缓存cache数据,并每隔一段时间触发定时机制;
C、若超时未响应,则封装IPMI request消息,发送内核IPMI请求,通过BMC获取风扇状态信息,并同步更新缓存中的数据。
2.根据权利要求1所述的一种获取风扇状态的方法,其特征在于:所述步骤B中定时器定时更新方法如下:
a、当到达数据更新时间点,且终端确定自身处于休眠状态时,系统保持自身与定时器之间的无数据连接状态;
b、系统在自身从休眠状态进入工作状态时,确定当前时间点超过了数据服务器指示的业务数据更新时间点,则系统向所述数据服务器发送业务数据更新请求消息;
c、根据数据服务器反馈的业务数据进行更新。
3.根据权利要求1所述的一种获取风扇状态的方法,其特征在于:所述步骤B中更新方法如下:
a、首先数据组装服务器获得待缓存数据;按照预设规则将待缓存数据组装为缓存包;
b、将缓存包发送给所述数据缓存区进行存储;
c、缓存更新服务器从所述数据缓存区中获得缓存包;根据缓存包对与该缓存更新服务器位于同一机房的缓存存储服务器进行缓存更新。
4.根据权利要求1所述的一种获取风扇状态的方法,其特征在于:所述步骤C中缓存数据更新方法如下:
a、监测数据库中的数据更新操作,当监测到第一数据发生更新操作时,创建对缓存区域执行操作的进程;
b、通过进程删除缓存区域中与数据库中发生更新操作的第一数据相应的缓存数据;
c、接收到针对第一数据的数据获取请求时,从数据库查找到相应的更新后的第一数据,并将更新后的第一数据存储至缓存区域中。
5.根据权利要求1所述的一种获取风扇状态的方法,其特征在于:还包括如下步骤:
D、最后增加缓存空间,并对缓存区域进行加密,其中,所述步骤D中缓存区域加密方法如下:
a、接收针对待存储数据的加密请求;
b、采用预设方式选取密钥、以及用于标述密钥的密钥标签;
c、用密钥对加密请求携带的数据加密;
d、输出加密后的数据以及密钥标签,以将上述信息对应存储于存储设备。
6.根据权利要求1所述的一种获取风扇状态的方法,其特征在于:所述步骤B中间隔更新时间为30s-60s。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010713354.6A CN111881167B (zh) | 2020-07-22 | 2020-07-22 | 一种获取风扇状态的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010713354.6A CN111881167B (zh) | 2020-07-22 | 2020-07-22 | 一种获取风扇状态的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111881167A true CN111881167A (zh) | 2020-11-03 |
CN111881167B CN111881167B (zh) | 2022-12-27 |
Family
ID=73155994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010713354.6A Active CN111881167B (zh) | 2020-07-22 | 2020-07-22 | 一种获取风扇状态的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111881167B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105956032A (zh) * | 2016-04-25 | 2016-09-21 | 百度在线网络技术(北京)有限公司 | 缓存数据同步方法、系统和装置 |
CN106294607A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 缓存数据的更新方法及更新装置 |
US20200195754A1 (en) * | 2016-12-15 | 2020-06-18 | Samsung Electronics Co., Ltd. | Server, electronic device and data management method |
-
2020
- 2020-07-22 CN CN202010713354.6A patent/CN111881167B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105956032A (zh) * | 2016-04-25 | 2016-09-21 | 百度在线网络技术(北京)有限公司 | 缓存数据同步方法、系统和装置 |
CN106294607A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 缓存数据的更新方法及更新装置 |
US20200195754A1 (en) * | 2016-12-15 | 2020-06-18 | Samsung Electronics Co., Ltd. | Server, electronic device and data management method |
Also Published As
Publication number | Publication date |
---|---|
CN111881167B (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cheriton et al. | VMTP as the transport layer for high-performance distributed systems | |
US6243838B1 (en) | Method for automatically reporting a system failure in a server | |
EP3193475B1 (en) | Device managing method, device and device managing controller | |
EP3386152B1 (en) | Method, device and system for realizing heartbeat mechanism | |
TW200805945A (en) | Methods and arrangements to detect a failure in a communication network | |
CN111740877B (zh) | 一种链路检测方法及系统 | |
CN109688555B (zh) | 一种信号数据的实时采集与通信系统及方法 | |
CN115514682B (zh) | 一种数据传输方法、装置、设备及存储介质 | |
WO2005009004A1 (en) | Packet sniffer | |
CN111881167B (zh) | 一种获取风扇状态的方法 | |
CN108259442B (zh) | 一种慢协议报文处理方法及相关装置 | |
WO2024087692A1 (zh) | 设备管理方法、设备、系统和存储介质 | |
US8543858B2 (en) | System and method for managing network devices that deliver an application service using energy savings information | |
JP2000293272A (ja) | 共有機器電源制御装置及び共有機器電源制御方法 | |
JP2003006068A (ja) | ネットワークデバイス管理装置、管理方法及び管理プログラム | |
CN116319997A (zh) | 一种数据包的发送方法、装置、系统、设备及存储介质 | |
EP4199447A1 (en) | Operation administration and maintenance (oam) packet processing method and device | |
JP2000224260A (ja) | 通信制御装置 | |
CN109560958B (zh) | 设备管理系统、装置和方法、中继管理装置以及记录介质 | |
JP2003015973A (ja) | ネットワークデバイス管理装置、管理方法及び管理プログラム | |
CN112953883A (zh) | 设备协议互通方法、设备及存储介质 | |
CN109451047A (zh) | 监控告警系统的数据传送方法、装置、设备及存储介质 | |
KR100474358B1 (ko) | 고속 라우터 시스템의 원격 망 모니터링 기능 구현방법 및장치, 이를 수행하는 프로그램을 기록한 기록매체 | |
CN115022393B (zh) | 确定连接状态的方法、装置、介质和计算设备 | |
CN115914288B (zh) | 报文的传输方法及装置、存储介质及电子装置 |
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 |