CN106502770A - 一种基于有限状态机的hmi状态迁移方法 - Google Patents
一种基于有限状态机的hmi状态迁移方法 Download PDFInfo
- Publication number
- CN106502770A CN106502770A CN201510559676.9A CN201510559676A CN106502770A CN 106502770 A CN106502770 A CN 106502770A CN 201510559676 A CN201510559676 A CN 201510559676A CN 106502770 A CN106502770 A CN 106502770A
- Authority
- CN
- China
- Prior art keywords
- state
- hmi
- event
- finite
- trigger event
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于有限状态机的HMI状态迁移方法。有限状态机接收和分析判断触发事件,并根据触发事件的类型调用画面管理接口或进行状态转换。其能够把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表,并且为HMI开发者提供可视直观的状态迁移结构设计、逻辑关系自动检查、自动生成状态迁移树以及根据状态迁移结构设计自动生成状态迁移的代码框架,进而提高了嵌入式产品的开发效率。并且,采用本发明生成的代码具有程序层次分明、结构清晰、易读易懂和可移植性好的特点。
Description
技术领域
本发明涉及一种基于有限状态机的HMI状态迁移方法。
背景技术
嵌入式产品开发中,经常涉及到HMI状态迁移关系复杂、设计困难,代码编写工作量大、复杂的迁移关系靠人工编写代码容易出错等问题。
现有的嵌入式产品开发技术过于底层、工作重复,编辑FSM(有限状态机)的逻辑非常底层,而且机械性十足。我们常常会发现自己总是在构建相似的行为,而且这会花费我们大部分时间。用FSM实现任何设计都需要做大量工作,且存在编写代码容易出错等问题,进而造成生产效率低。
此问题亟需改变。
发明内容
本发明为了克服现有技术的不足,目的旨在提供一种基于有限状态机的HMI状态迁移方法,其能够提高嵌入式产品的开发效率。
为了解决上述的技术问题,本发明提出的基本技术方案为:
一种基于有限状态机的HMI状态迁移方法,尤其地,有限状态机接收和分析判断触发事件,并根据触发事件的类型调用画面管理接口或进行状态转换。
进一步,所述有限状态机接收和分析判断触发事件的步骤如下:
S1、启动有限状态机;
S2、有限状态机系统接收触发事件;
S3、将触发事件插入第一消息队列;
S4、有限状态机核心从第一消息队列中取出事件消息并分发到活动状态池中的活动状态中;
S5、活动状态根据状态矩阵表判断触发事件是否是自身的敏感事件,如果是则调用功能函数表的处理函数,并且根据需要调用画面管理接口或进行状态转换。
进一步,所述触发事件包括系统事件、硬件按钮事件、用户自定义事件。
进一步,所述状态矩阵表和功能函数表是通过Excel模板自动生成的。
进一步,Excel模板包括所继承的父状态、代码生成的文件路径、状态继承关系、状态名称、初期处理状态、状态进入函数、状态退出函数、该状态所对应的所有需响应的事件定义、响应该事件的处理条件、该响应事件的前处理函数、该响应事件的后处理函数、该响应事件的存在的迁移后状态。
进一步,所述Excel模板设置四种自定义菜单,所述自定义菜单包括追加子状态菜单、状态继承关系结构树菜单、检查状态继承和拼写逻辑关系菜单、自动生成状态迁移矩阵代码菜单。
进一步,有限状态机启动时,HMI状态迁移主流程步骤如下:
S1、创建HMI有限状态机线程和第二消息队列;
S2、初始化迁移到HMI根状态;
S3、从第二消息队列中读取触发事件消息;
S4、如果未取得触发事件消息则返回S3步骤;
S5、如果读取到触发事件消息则分发触发事件;
S6、如果HMI结束则退出HMI有限状态机线程,否则返回S3步骤。
进一步,步骤S5中分发触发事件的处理流程步骤如下:
S1、从活动状态池中获取每个活动状态;
S2、判断当前触发事件是否是该活动状态的敏感事件:如果不是该状态的敏感事件,则执行步骤S6;如果是该状态的敏感事件,则执行步骤S3;
S3、执行前处理函数,则执行步骤S4;
S4、如果该状态的敏感事件涉及状态迁移,则执行状态迁移处理流程,并接下来执行步骤S5;如果该状态的敏感事件不涉及状态迁移,则执行步骤S6;
S5、状态迁移处理后,如果存在后处理函数,则执行后处理函数;如果不存在后处理函数,则直接跳过S5步骤,执行S6步骤;
S6、判断该状态是否是活动状态池的最后一个状态,如果不是,则返回步骤S1活动状态池中获取下一个活动状态;如果是,则执行步骤S7;
S7、结束处理流程。
进一步,所述状态迁移处理流程步骤如下:
S1、根据迁移前状态和迁移后状态并寻找两个状态的共同父状态;
S2、执行从迁移前状态到共通父状态路线上所有状态的退出处理函数;
S3、从活动状态池中删除迁移前状态
S4、执行从共同父状态到迁移后状态路线上所有状态的进入处理函数;
S5、判断迁移后状态是否存在初始化状态;
S6、如果存在初始化状态,则执行初始化状态的进入处理函数,把初始化状态作为迁移后状态,并返回步骤S5;
S7、如果迁移后状态不存在初始化状态,则在活动状态池中追加迁移后状态,结束处理流程。
本发明的有益效果是:本发明把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表,并且为HMI开发者提供可视直观的状态迁移结构设计、逻辑关系自动检查、自动生成状态迁移树以及根据状态迁移结构设计自动生成状态迁移的代码框架,进而提高了嵌入式产品的开发效率。并且,采用本发明生成的代码具有程序层次分明、结构清晰、易读易懂和可移植性好的特点。
附图说明
图1为本实施例有限状态机整体模块关系图。
图2为本实施例HMI状态迁移主流程图。
图3为本实施例事件分发处理流程图。
图4为本实施例状态迁移处理流程图。
图5为本实施例HMI状态迁移设计模板的示意图。
图6为本实施例HMI状态迁移设计模板自定义菜单的示意图。
具体实施方式
以下将结合附图1至6对本发明做进一步的说明,但不应以此来限制本发明的保护范围。为了方便说明并且理解本发明的技术方案,以下说明所使用的方位词均以附图所展示的方位为准。
本实施例的技术方案重新定义状态矩阵的结构元素,把有限状态机处理思想的核心逻辑关系提炼为共通的核心代码,把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表。
本实施例的HMI状态迁移方法通过有限状态机接收和分析判断触发事件,并根据触发事件的类型调用画面管理接口或进行状态转换。具体地,如图1所示,有限状态机接收和分析判断触发事件的步骤如下:
S1、启动有限状态机;
S2、有限状态机系统接收触发事件;
S3、将触发事件插入第一消息队列;
S4、有限状态机核心从第一消息队列中取出事件消息并分发到活动状态池中的活动状态中;
S5、活动状态根据状态矩阵表判断触发事件是否是自身的敏感事件,如果是则调用功能函数表的处理函数,并且根据需要调用画面管理接口或进行状态转换。
其中,触发事件包括系统事件、硬件按钮事件、用户自定义事件。状态矩阵表和功能函数表是通过Excel模板自动生成的,如图5所示,Excel模板包括所继承的父状态、代码生成的文件路径、状态继承关系、状态名称、初期处理状态、状态进入函数、状态退出函数、该状态所对应的所有需响应的事件定义、响应该事件的处理条件、该响应事件的前处理函数、该响应事件的后处理函数、该响应事件的存在的迁移后状态。如图6所示,Excel模板设置四种自定义菜单,所述自定义菜单包括追加子状态菜单、状态继承关系结构树菜单、检查状态继承和拼写逻辑关系菜单、自动生成状态迁移矩阵代码菜单。用户创建追加子状态菜单时,选择父状态行,点击“追加子状态”菜单,自动增加子状态模板。用户创建状态继承关系结构树时,点击“显示状态关系树”菜单,显示状态继承关系结构树。用户创建检查状态继承及拼写逻辑关系,点击“检查状态逻辑”菜单,检查状态继承及拼写逻辑关系。用户创建自动生成状态迁移矩阵代码,点击“生成代码框架”菜单,根据填写的状态迁移矩阵模板自动生成状态迁移矩阵代码。
如图2所示,当有限状态机启动时,HMI状态迁移主流程步骤如下:
S1、创建HMI有限状态机线程和第二消息队列;
S2、初始化迁移到HMI根状态;
S3、从第二消息队列中读取触发事件消息;
S4、如果未取得触发事件消息则返回S3步骤;
S5、如果读取到触发事件消息则分发触发事件;
S6、如果HMI结束则退出HMI有限状态机线程,否则返回S3步骤。
如图3所示,其中,步骤S5中分发触发事件的处理流程步骤如下:
S1、从活动状态池中获取每个活动状态;
S2、判断当前触发事件是否是该活动状态的敏感事件:如果不是该状态的敏感事件,则执行步骤S6;如果是该状态的敏感事件,则执行步骤S3;
S3、执行前处理函数,则执行步骤S4;
S4、如果该状态的敏感事件涉及状态迁移,则执行状态迁移处理流程,并接下来执行步骤S5;如果该状态的敏感事件不涉及状态迁移,则执行步骤S6;
S5、状态迁移处理后,如果存在后处理函数,则执行后处理函数;如果不存在后处理函数,则直接跳过S5步骤,执行S6步骤;
S6、判断该状态是否是活动状态池的最后一个状态,如果不是,则返回步骤S1活动状态池中获取下一个活动状态;如果是,则执行步骤S7;
S7、结束处理流程。
如图4所示,其中,状态迁移处理流程步骤如下:
S1、根据迁移前状态和迁移后状态并寻找两个状态的共同父状态;
S2、执行从迁移前状态到共通父状态路线上所有状态的退出处理函数;
S3、从活动状态池中删除迁移前状态
S4、执行从共同父状态到迁移后状态路线上所有状态的进入处理函数;
S5、判断迁移后状态是否存在初始化状态;
S6、如果存在初始化状态,则执行初始化状态的进入处理函数,把初始化状态作为迁移后状态,并返回步骤S5;
S7、如果迁移后状态不存在初始化状态,则在活动状态池中追加迁移后状态,结束处理流程。
综上,本发明把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表,并且为HMI开发者提供可视直观的状态迁移结构设计、逻辑关系自动检查、自动生成状态迁移树以及根据状态迁移结构设计自动生成状态迁移的代码框架,进而提高了嵌入式产品的开发效率。并且,采用本发明生成的代码具有程序层次分明、结构清晰、易读易懂和可移植性好的特点。
根据上述说明书的揭示和教导,本发明所属领域的技术人员还可以对上述实施方式进行变更和修改。因此,本发明并不局限于上面揭示和描述的具体实施方式,对本发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
Claims (9)
1.一种基于有限状态机的HMI状态迁移方法,其特征在于:有限状态机接收和分析判断触发事件,并根据触发事件的类型调用画面管理接口或进行状态转换。
2.根据权利要求1所述的一种基于有限状态机的HMI状态迁移方法,其特征在于:所述有限状态机接收和分析判断触发事件的步骤如下:
S1、启动有限状态机;
S2、有限状态机系统接收触发事件;
S3、将触发事件插入第一消息队列;
S4、有限状态机核心从第一消息队列中取出事件消息并分发到活动状态池中的活动状态中;
S5、活动状态根据状态矩阵表判断触发事件是否是自身的敏感事件,如果是则调用功能函数表的处理函数,并且根据需要调用画面管理接口或进行状态转换。
3.根据权利要求1或2所述的一种基于有限状态机的HMI状态迁移方法,其特征在于:所述触发事件包括系统事件、硬件按钮事件、用户自定义事件。
4.根据权利要求1所述的一种基于有限状态机的HMI状态迁移方法,其特征在于:所述状态矩阵表和功能函数表是通过Excel模板自动生成的。
5.根据权利要求4所述的一种基于有限状态机的HMI状态迁移方法,其特征在于:Excel模板包括所继承的父状态、代码生成的文件路径、状态继承关系、状态名称、初期处理状态、状态进入函数、状态退出函数、该状态所对应的所有需响应的事件定义、响应该事件的处理条件、该响应事件的前处理函数、该响应事件的后处理函数、该响应事件的存在的迁移后状态。
6.根据权利要求5所述的一种基于有限状态机的HMI状态迁移方法,其特征在于:所述Excel模板设置四种自定义菜单,所述自定义菜单包括追加子状态菜单、状态继承关系结构树菜单、检查状态继承和拼写逻辑关系菜单、自动生成状态迁移矩阵代码菜单。
7.根据权利要求2所述的一种基于有限状态机的HMI状态迁移方法,其特征在于:有限状态机启动时,HMI状态迁移主流程步骤如下:
S1、创建HMI有限状态机线程和第二消息队列;
S2、初始化迁移到HMI根状态;
S3、从第二消息队列中读取触发事件消息;
S4、如果未取得触发事件消息则返回S3步骤;
S5、如果读取到触发事件消息则分发触发事件;
S6、如果HMI结束则退出HMI有限状态机线程,否则返回S3步骤。
8.根据权利要求7所述的一种基于有限状态机的HMI状态迁移方法,其特征在于:步骤S5中分发触发事件的处理流程步骤如下:
S1、从活动状态池中获取每个活动状态;
S2、判断当前触发事件是否是该活动状态的敏感事件:如果不是该状态的敏感事件,则执行步骤S6;如果是该状态的敏感事件,则执行步骤S3;
S3、执行前处理函数,接下执行步骤S4;
S4、如果该状态的敏感事件涉及状态迁移,则执行状态迁移处理流程,并接下来执行步骤S5;如果该状态的敏感事件不涉及状态迁移,则执行步骤S6;
S5、状态迁移处理后,如果存在后处理函数,则执行后处理函数;如果不存在后处理函数,则直接跳过S5步骤,执行S6步骤;
S6、判断该状态是否是活动状态池的最后一个状态,如果不是,则返回步骤S1活动状态池中获取下一个活动状态;如果是,则执行步骤S7;
S7、结束处理流程。
9.根据权利要求8所述的一种基于有限状态机的HMI状态迁移方法,其特征在于:所述状态迁移处理流程步骤如下:
S1、根据迁移前状态和迁移后状态并寻找两个状态的共同父状态;
S2、执行从迁移前状态到共通父状态路线上所有状态的退出处理函数;
S3、从活动状态池中删除迁移前状态
S4、执行从共同父状态到迁移后状态路线上所有状态的进入处理函数;
S5、判断迁移后状态是否存在初始化状态;
S6、如果存在初始化状态,则执行初始化状态的进入处理函数,把初始化状态作为迁移后状态,并返回步骤S5;
S7、如果迁移后状态不存在初始化状态,则在活动状态池中追加迁移后状态,结束处理流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510559676.9A CN106502770B (zh) | 2015-09-07 | 2015-09-07 | 一种基于有限状态机的hmi状态迁移方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510559676.9A CN106502770B (zh) | 2015-09-07 | 2015-09-07 | 一种基于有限状态机的hmi状态迁移方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106502770A true CN106502770A (zh) | 2017-03-15 |
CN106502770B CN106502770B (zh) | 2021-09-21 |
Family
ID=58287838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510559676.9A Active CN106502770B (zh) | 2015-09-07 | 2015-09-07 | 一种基于有限状态机的hmi状态迁移方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106502770B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107317866A (zh) * | 2017-06-30 | 2017-11-03 | 昆明自动化成套集团股份有限公司 | 一种基于有限状态自动机架构的智能通讯服务器及其构建方法 |
CN109254763A (zh) * | 2018-09-13 | 2019-01-22 | 中国核动力研究设计院 | 一种基于有限状态机的核电厂控制软件设计方法 |
CN111026467A (zh) * | 2019-12-06 | 2020-04-17 | 合肥科大智能机器人技术有限公司 | 一种有限状态机的控制方法及有限状态机 |
CN111427633A (zh) * | 2020-02-28 | 2020-07-17 | 惠州市德赛西威汽车电子股份有限公司 | 一种汽车音响状态机及其管理方法 |
CN112860354A (zh) * | 2021-01-29 | 2021-05-28 | 宝宝巴士股份有限公司 | 一种基于Laravel框架的状态机的建模方法及终端 |
CN113986814A (zh) * | 2021-10-15 | 2022-01-28 | 浙江大学 | 一种基于微处理器的状态机通用表示及执行方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993706B2 (en) * | 2002-01-15 | 2006-01-31 | International Business Machines Corporation | Method, apparatus, and program for a state machine framework |
US20100083226A1 (en) * | 2008-09-30 | 2010-04-01 | Rockwell Automation Technologies,Inc. | Software object property return method and system |
CN102629227A (zh) * | 2012-02-28 | 2012-08-08 | 中科开元信息技术(北京)有限公司 | 一种辅助嵌入式系统接口功能验证方法 |
CN103312552A (zh) * | 2012-03-12 | 2013-09-18 | 北京泰乐德信息技术有限公司 | 一种数据仿真方法、仿真机和通信系统 |
CN103942350A (zh) * | 2013-01-17 | 2014-07-23 | 中国空间技术研究院神舟学院 | 一种基于dsm和工作流的卫星设计数据传递方法 |
CN104091092A (zh) * | 2014-07-29 | 2014-10-08 | 上海交通大学 | 大规模电力系统小干扰稳定性的特征值分析系统 |
-
2015
- 2015-09-07 CN CN201510559676.9A patent/CN106502770B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993706B2 (en) * | 2002-01-15 | 2006-01-31 | International Business Machines Corporation | Method, apparatus, and program for a state machine framework |
US20100083226A1 (en) * | 2008-09-30 | 2010-04-01 | Rockwell Automation Technologies,Inc. | Software object property return method and system |
CN102629227A (zh) * | 2012-02-28 | 2012-08-08 | 中科开元信息技术(北京)有限公司 | 一种辅助嵌入式系统接口功能验证方法 |
CN103312552A (zh) * | 2012-03-12 | 2013-09-18 | 北京泰乐德信息技术有限公司 | 一种数据仿真方法、仿真机和通信系统 |
CN103942350A (zh) * | 2013-01-17 | 2014-07-23 | 中国空间技术研究院神舟学院 | 一种基于dsm和工作流的卫星设计数据传递方法 |
CN104091092A (zh) * | 2014-07-29 | 2014-10-08 | 上海交通大学 | 大规模电力系统小干扰稳定性的特征值分析系统 |
Non-Patent Citations (4)
Title |
---|
MAXIMILIAN NICOLAE等: "Embedding Android devices in automation systems", 《2013 IEEE 19TH INTERNATIONAL SYMPOSIUM FOR DESIGN AND TECHNOLOGY IN ELECTRONIC PACKAGING (SIITME)》 * |
周剑鸣: "下一代车载信息娱乐系统用户界面应用程序框架设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
周建等: "μC/OS的层次式状态机在人机界面中的应用", 《杭州电子科技大学学报》 * |
黎藜等: "基于Excel的实时监控人机界面软件的开发与应用", 《电子技术应用》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107317866A (zh) * | 2017-06-30 | 2017-11-03 | 昆明自动化成套集团股份有限公司 | 一种基于有限状态自动机架构的智能通讯服务器及其构建方法 |
CN109254763A (zh) * | 2018-09-13 | 2019-01-22 | 中国核动力研究设计院 | 一种基于有限状态机的核电厂控制软件设计方法 |
CN109254763B (zh) * | 2018-09-13 | 2022-02-18 | 中核控制系统工程有限公司 | 一种基于有限状态机的核电厂控制软件设计方法 |
CN111026467A (zh) * | 2019-12-06 | 2020-04-17 | 合肥科大智能机器人技术有限公司 | 一种有限状态机的控制方法及有限状态机 |
CN111427633A (zh) * | 2020-02-28 | 2020-07-17 | 惠州市德赛西威汽车电子股份有限公司 | 一种汽车音响状态机及其管理方法 |
CN112860354A (zh) * | 2021-01-29 | 2021-05-28 | 宝宝巴士股份有限公司 | 一种基于Laravel框架的状态机的建模方法及终端 |
CN112860354B (zh) * | 2021-01-29 | 2022-05-17 | 宝宝巴士股份有限公司 | 一种基于Laravel框架的状态机的建模方法及终端 |
CN113986814A (zh) * | 2021-10-15 | 2022-01-28 | 浙江大学 | 一种基于微处理器的状态机通用表示及执行方法 |
CN113986814B (zh) * | 2021-10-15 | 2023-12-01 | 浙江大学 | 一种基于微处理器的状态机通用表示及执行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106502770B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106502770A (zh) | 一种基于有限状态机的hmi状态迁移方法 | |
Amparore et al. | 30 years of GreatSPN | |
US9021440B1 (en) | System and method for automated test script generation | |
KR101971389B1 (ko) | 연합 기반 메모리 관리 | |
Liu et al. | A branching-process-based method to check soundness of workflow systems | |
CN109471626A (zh) | 页面逻辑结构、页面生成方法、页面数据处理方法及装置 | |
CN109840205A (zh) | 应用程序测试方法、装置、可读存储介质及终端设备 | |
CN106445497A (zh) | 应用程序开发方法及系统 | |
CN103645901A (zh) | 一种基于事件链的用户界面插件化交互方法 | |
US20180173503A1 (en) | System and method for graphical programming | |
CN104035786A (zh) | 一种软件定时器的优化方法及系统 | |
CN104331315A (zh) | 一种任意层次json对象的解析与生成方法及系统 | |
CN109614094B (zh) | 基于UML的GPU glCallList视图模型的绘制方法 | |
CN116662039B (zh) | 基于共享内存的工业信息并行检测方法、装置及介质 | |
US20130275942A1 (en) | Javascript extension tool | |
EP2407888A1 (en) | Systems and methods for distributing validation computations | |
CN103823681B (zh) | 一种web控件的生成方法及装置 | |
Bustard | Concepts of Concurrent Programming | |
US8135943B1 (en) | Method, apparatus, and computer-readable medium for generating a dispatching function | |
US9489246B2 (en) | Method and device for determining parallelism of tasks of a program | |
Williamson et al. | PySy: a Python package for enhanced concurrent programming | |
Tudruj et al. | PEGASUS DA framework for distributed program execution control based on application global states monitoring | |
Olden | Performance Analysis of SWE Implementations based on modern parallel Runtime Systems | |
CN110427210A (zh) | 一种storm拓扑任务的快速构建方法及装置 | |
CN117745254B (zh) | 课程的生成方法、装置、计算机设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |