CN112099769A - 一种具有统一数据传输接口的软件化雷达架构 - Google Patents
一种具有统一数据传输接口的软件化雷达架构 Download PDFInfo
- Publication number
- CN112099769A CN112099769A CN202010966739.3A CN202010966739A CN112099769A CN 112099769 A CN112099769 A CN 112099769A CN 202010966739 A CN202010966739 A CN 202010966739A CN 112099769 A CN112099769 A CN 112099769A
- Authority
- CN
- China
- Prior art keywords
- interface
- data transmission
- class
- ipc
- module
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种具有统一数据传输接口的软件化雷达架构,从上往下包括服务组件模块、适配处理模块、接口封装模块和系统处理模块;接口封装模块包括线程管理模块与统一数据传输接口,统一数据传输接口包括本地IPC和远程IPC接口,设计过程主要为:先将所有数据传输协议各自封装在独立的原始类中并设置类名,再将本地IPC或远程IPC接口中所有原始类用C++类封装在一个统一封装类中;将原始类名作为统一封装接口类的私有成员变量;私有的成员变量通过公有的发送函数和接收函数等公有成员函数被其他模块调用。本发明设计过程中遵循软件化雷达的接口设计原则,保证数据传输的可靠性、实时性、稳定性以及数据的灵活分配性。
Description
技术领域
本发明涉及软件化雷达技术,特别涉及在分布式通信、单节点组件之间通信时数据传输协议的统一应用程序接口API技术。
背景技术
软件化雷达是一种具有开放性、通用性特点的数字化新型雷达系统,以软件为核心的开发模式优于传统雷达以硬件为核心的开发模式,具备探测、干扰、侦查、通信等多功能一体化、软件灵活升级扩展、开放式的体系架构等,注重软件和硬件之间的解耦合,只需通过软件就可以快速开发不同功能的雷达系统,它的提出解决了传统雷达设备的多样性、出厂定制终身、维护成本高、升级难等缺点。是现在乃至未来雷达发展的方向。
随着通信技术的快速发展,在如今爆炸式的网络中通信设备种类呈指数型增长,传统的以硬件为核心的通信方式已经不能满足未来发展的需求,综合化、信息化、技术化、模块化成为未来雷达的必由之路,因此灵活、实时、可靠的通信方式成为人们关注的焦点,各式复杂的数据传输协议提高了数据传输的可靠性、实时性,但是降低了开发效率,开发人员必须要根据数据的特性选择不同的数据传输协议,了解底层复杂的通信协议的设计方式,导致了雷达要根据不同的数据特征采取不同的设计方案,提高了升级的难度以及降低了可灵活扩展的功能。
为了更好的让应用系统进行调用,降低雷达升级的难度、提高雷达设备的互联互通、增强雷达在数据采集、传输、处理等方面的灵活扩展。需要设计标准通用的API对数据传输协议的接口进行封装,把复杂的通信协议包装起来,开发人员只需要理解不同通信协议的特性,再根据数据的特性选用不同的数据传输协议即可,提高了系统的可扩展性、解决了雷达通信功能的单一化以及提高了数据传输的灵活性。
现有技术方案如下:
发明申请(公开号为CN102833119A)提出了一种变电站监控系统的通信服务映射与封装方法。该发明是将底层实时通信协议的数据结构封装为通信服务类的私有变量,用于变电站的监控系统,但是该发明提供的通信协议接口封装只涉及到部分通信协议,没有涉及到不同操作系统下的通信协议接口封装不具备普遍性,并且该发明的设计是将其封装为通信服务类的私有变量,在使用过程中只能被同一模块中的类使用,不具备开放性具有局限性,在软件化雷达领域不支持多部雷达间的灵活组网功能。
发明申请(公开号为CN105204848A)提出了一种使用二进制程序进行功能固化并提出提供服务的方法及系统。该发明是使用跨平台的通用通信传输方法进行针对性改造,实现二进制程序与外部程序之间实现高性能API通信接口封装的方法。但该发明使用的领域消费性电子产品,将通信协议设计成私有的接口,不具备通用性,且在不同设备上的移植具有局限性,没有涉及在软件化雷达不同雷达之间实时通信状态的监控。
发明内容
本发明所要解决的技术问题是,提供一种能向应用层提供统一的接口的软件化雷达。
本发明为解决上述技术问题所采用的技术方案是,一种具有统一数据传输接口的软件化雷达架构,从上往下包括服务组件模块、适配处理模块、接口封装模块和系统处理模块;
服务组件模块用于,完成雷达的数据处理、各组件的管理和日志记录、波速合成、信号传输与安全管理;
适配处理模块用于,根据数据传输的特征选择对应的数据传输协议;
接口封装模块包括线程管理模块与统一数据传输接口,其中统一数据传输接口包括本地进程间通信IPC接口和远程IPC接口;
系统处理模块包括线程系统模块、虚拟内存模块和通信系统模块;
本地IPC接口的所有数据传输协议各自分装在独立的原始类中并设置类名,再将本地IPC接口中所有类用C++类封装在一个统一封装类中;将原始类名作为统一封装接口类的私有成员变量;本地IPC接口中数据传输协议包括命名管道FIFO、匿名管道PIPE、IPC的消息队列、信号量和共享内存;私有的成员变量通过作为公有成员函数的发送函数和接收函数被本地IPC接口之外的其他模块调用;
远程IPC接口的所有数据传输协议各自分装在独立的原始类中并设置类名,再将远程IPC接口中所有类用C++类封装在一个统一封装类中;将原始类名作为统一封装接口类的私有成员变量;远程IPC接口中数据传输协议包括套接字_传输控制协议SOCKET_TCP、套接字_用户数据报协议SOCKET_UDP、超文本传输协议HTTP、组播和广播;私有的成员变量通过作为公有成员函数的发送函数和接收函数被远程IPC接口之外的其他模块调用。
本发明的有益效果是,软件化雷达的接口设计遵循开放性,安全性,简洁性,灵活性和可扩展性原则,保证数据传输的可靠性、实时性、稳定性以及数据的灵活分配性,支持不同平台的应用程序无需修改的或作微调的前提下实现无缝移植。
附图说明
图1为软件化雷达的设计架构图。
图2为本地IPC及远程IPC封装示意图。
图3为实施例一个统一封装类中数据收发示意图。
具体实施方式
具有统一数据传输API接口的软件化雷达的整体的设计架构如图1所示,从上往下包括服务组件模块、适配处理模块、接口封装模块和系统处理模块;
服务组件也就是应用层组件用于完成雷达的数据处理、各组件的管理和日志记录、波速合成、信号传输与安全管理;适配处理模块包括一个适配器主要完成根据不同的数据传输的特征选择不同的数据传输协议;接口封装包括两部分,一部分是线程或者进程管理,另一部分是统一API接口的封装,主要包含本地IPC机制(管道、IPC机制的封装)、远程IPC机制(SOCKET不同主机之间的通信封装)、I/O复用及多路I/O转接等。系统处理模块包括线程系统模块、虚拟内存模块和通信系统模块。
其中统一API接口封装为了遵循API设计的开放性,安全性,简洁性和可扩展性原则,在封装过程中采用C++类进行封装。针对本地及远程IPC该发明中目前封装的数据传输协议如图2所示:
本地IPC包括命名管道FIFO、匿名管道PIPE、IPC的消息队列、信号量和共享内存等。远程IPC接口主要封装的是套接字SOCKET,以完成不同主机的通信,远程IPC接口中数据传输协议包括套接字_传输控制协议SOCKET_TCP、套接字_用户数据报协议SOCKET_UDP、超文本传输协议HTTP、组播和广播。
如图2所示为本发明中本地及远程IPC需要封装的协议,每个协议首先封装在一个类中,并提供一个类名给统一封装接口类完成统一接口的封装。以本地IPC为例,主要的封装步骤如下:
步骤1、为了遵循简洁性,通过一个字符代替本地及远程不同的数据传输协议作为原始类的类名,比如F代表命名管道FIFO、P代表匿名管道PIPE等。
步骤2、创建一个本地传输协议的统一封装类,为了保证安全性将不同的数据传输协议封装在不同的原始类中,并将各原始类在统一封装类中设置为私有的成员变量,只能被本地IPC中的所有函数进行调用。
步骤3、在步骤2中的统一封装类中创建统一的发送和接收函数,为了保证开放性,将发送和接收函数在统一封装类中设置为公共的成员函数,本地IPC之外不同的模块想要调用统一API接口实现不同数据特征数据的传输工作,可以通过此模块中的公有成员函数进行调用。
步骤4、建立成员函数及成员变量的头文件,头文件包括跨平台头文件以及安全管理头文件,用于在不同平台上的操作以及数据传输过程中突然中断的问题。
步骤5、为了遵循设可扩展性,在统一封装类中保留其它数据传输协议的接口,只需要将该协议封装在相应的类中,然后将其类名作为统一封装类的私有成员变量,再在通知安全管理机制进行更新即可。
I/O复用及多路I/O转接主要涉及到SELECT、POLL及EPOLL等模型,在雷达进行数据传输或者处理某些雷达算法的过程中需要多部雷达之间的协同操作,以及作战室需要对各部雷达的工作情况做实时的监测,本地ICP及远程IPC都是一对一的操作,虽然SOCKET_UDP中的组播和广播可以完成一对多、多对一及多对对多的数据传输,但是不能对各个节点进行灵活的操作,因此不能满足需求,SELECT、POLL及EPOLL等模型可以完成作战室对不同雷达的工作做实时的监测,但是不同的模型各自具备不同的复杂接口,因此为了完成对多设备的控制及监测任务需要对此接口进行封装,设计的思想与本地及远程IPC基本相同,只是在各自的类中设置有些差距。
I/O复用及多路I/O转接的接口封装步骤为:
步骤1、为了遵循简洁性,通过一个字符代替SELECT、POLL及EPOLL模型作为类名,比如S代表SELECT、P代表POLL,为了与本地PIPE做区别,E代表EPOLL等。
步骤2、将SELECT、POLL及EPOLL等模式各自封装到一个原始类中,其中为了满足开放性,创建公有成员函数:bind_ip_port()函数,主要完成IP和端口的绑定;s_write()、s_read()代表的是SELECT模型的收发函数,POLL和EPOLL在各自的类中提供的函数和SELECT基本相同。再提供节点连接数node_nums作为私有的成员变量,用于配置最大监听的连接数。
步骤3、将各模型的名称(类名)提供给统一接口封装类,统一接口封装类将各类名设计为私有成员变量以保证其安全性,不被其它模块随意调用。
步骤4、建立成员函数及成员变量的头文件,头文件包括跨平台头文件以及安全管理头文件。
统一应用程序API接口还可以包括并行、并发以及同步接口,该接口主要针对的是多线程以及多进程来提出的,在多设备的监测过程中需要每个设备同时并行进行需要用到并行或者并发以及多线程同步的操作。
实施例
接下来针对远程IPC中SOCKET_TCP的封装过程进行详细说明:
步骤1、先创建原始类,主要是用来封装原始SOCKET_TCP,主要包括SOCKET_TCP的绑定端口和IP信息、接收和发送数据的函数。下面是SOCKET_TCP自身封装的原始类。
创建好封装原始SOCKET_TCP的类之后,将提供给统一接口类一个协议名称T以及此类的头文件,为统一接口封装做准备;
步骤2、创建一个统一接口类,根据步骤1提供的简洁协议名称以及类的头文件对协议进行统一的封装,统一接口类如下所示:
在统一接口封装类Interface_Enc中:
定义数据发送的接口void write(char data[N],char flag,unsigned intport,char*match_ip);其中包括所发数据data数组,并且其data数组也可以是是一个文件名,用来发送文件中的数据、flag协议名称(T代表SOCKET_TCP)、port代表端口号,ip代表ip地址。在进行数据传输的过程中,开发人员不需要关系底层通信协议是如何设计的只需要关心发送的数据data,调用的协议flag,对方节点的端口和ip,大大简化了开发难度,根据数据传输的特征,选择不同的flag参数即可,提高了数据传输的灵活性。
定义数据接收的接口void read(char file[N],char flag,unsigned int port,char*match_ip);其中包括所接收数据data数组,并且其data数组也可以是是一个文件名,用来接收通过文件传输的数据,flag协议名称,对端的端口和ip地址,同样不需要关心底层通信协议的复杂性,只需要关心发送的数据data,调用的协议flag,对方节点的端口和ip信息。
以上两个接口均定义在统一接口封装类中的公有模式中,可方便其他通信设备的调用,具有开放性;并将原始协议类定义在统一接口的私有模式中,保护其原始协议类不被其它模块所调用,保证其协议的安全性。
步骤3、统一接口的实现如下所示:
其中跨平台机制的头文件设置,跨平台设计是使用宏定义的方式来设计,用户在不同的平台上开发时选择相应的宏定义即可,其设计如下所示:
#ifndef_PLATFORM_H_
#define_PLATFORM_H_
#define_WIN32_PLATFROM_//定义Windows平台
#define_LINUX_PLATFROM_//定义Linux平台
#define_EMBED_PLATFROM_//定义嵌入式平台
......
#endif
其中接收接口和发送接口主要用来接收数据和发送数据,其主要的流程如图3所示:
首先用户选择在platform.h选择一个平台进行验证,然后调用线程接口,创建数据传输的线程,使得数据传输过程中不影响其它任务的处理,此时就使用线程同步机制,接下来根据数据的不同特性选择合适的数据传输协议传输数据,最后会调用相关的数据收发接口,初始化相应的参数,使筛选器进行相应协议的筛选。
在筛选完使用哪种数据传输的协议后,发布方将调用***_write()函数,实现具体数据的传输,订阅方将调用***_read()函数,实现具体数据的接收工作。
其中***_write()函数的设计为:***_write(char data_message[N],unsignedint port),char data_message[N]是将要发送的具体的数据,unsigned int port是发送此数据所使用的端口号。此函数的实现过程是,先绑定ip和端口,在调用此协议中的发送数据的函数,再接收此协议中的接收数据的函数。
***_read()函数的设计为:***_Read(unsigned int port),unsigned int port是接收数据所使用的端口号。此函数的实现过程是,先绑定相应的ip和端口,在调用此协议中的接收数据函数,最后在调用此协议中的发送数据的函数。完成最终的数据接收工作。
以上所述的设计过程在雷达算法中应用举例:
数据流的多路分发和同步机制,其中包括三种场景,一对多、多对一及多对多场景,在此只展示前两种场景,多对一场景和一对多场景。
多对一场景有n路数据传输过来,接收方需要开启I/O复用和多路I/O转接的模式才能对n路数据并行处理,此时可以直接选择协议名称E完成I/O复用和多路I/O转接的模式,不用在为此了解epoll模式的原理,简化了开发难度。适用于杂波图中的MTI计算和CFAR检测。
一对多的场景发送方发送数据给n个接收方,此时发送方只需开启SOCKET_UDP中的组播或者广播机制,如果只发送给某几个接收方,这几个接收方只需要加入到组播地址中即可,在封装过程中已经完成,因此只需要调用相应的接口即可,若发给在通信域中的所有接收方,调用广播接口即可,不用了解SOCKET_UDP底层是如何设计的。简化开发难度,此种场景在雷达算法中适用于脉冲压缩的结果被多个应用组件所使用。
Claims (5)
1.一种具有统一数据传输接口的软件化雷达架构,其特征在于,从上往下包括服务组件模块、适配处理模块、接口封装模块和系统处理模块;
服务组件模块用于,完成雷达的数据处理、各组件的管理和日志记录、波速合成、信号传输与安全管理;
适配处理模块用于,根据数据传输的特征适配对应的数据传输协议;
接口封装模块包括线程管理模块与统一数据传输接口,其中统一数据传输接口包括本地进程间通信IPC接口和远程IPC接口;
系统处理模块包括线程系统模块、虚拟内存模块和通信系统模块;
本地IPC接口的所有数据传输协议各自封装在独立的原始类中并设置类名,再将本地IPC接口中所有原始类用C++类封装在一个统一封装类中;将原始类名作为统一封装接口类的私有成员变量,将发送函数和接收函数作为公有成员函数;本地IPC接口中数据传输协议包括命名管道FIFO、匿名管道PIPE、IPC的消息队列、信号量和共享内存;私有的成员变量通过公有成员函数被本地IPC接口之外的其他模块调用;
远程IPC接口的所有数据传输协议各自封装在独立的原始类中并设置类名,再将远程IPC接口中所有类用C++类封装在一个统一封装类中;将类名作为统一封装接口类的私有成员变量,将发送函数和接收函数作为公有成员函数;远程IPC接口中数据传输协议包括套接字_传输控制协议SOCKET_TCP、套接字_用户数据报协议SOCKET_UDP、超文本传输协议HTTP、组播和广播;私有的成员变量通过公有成员函数被远程IPC接口之外的其他模块调用。
2.如权利要求1所述软件化雷达架构,其特征在于,统一数据传输接口中各数据传输协议一一对应一个字符作为类名。
3.如权利要求1所述软件化雷达架构,其特征在于,统一数据传输接口中还包括I/O复用及多路I/O转接封装接口。
4.如权利要求3所述软件化雷达架构,其特征在于,I/O复用及多路I/O转接接口的所有模型各自封装在独立的原始类中并设置类名,再将I/O复用及多路I/O转接接口中所有类用C++类封装在一个统一封装类中;将类名作为统一封装接口类的私有成员变量,将IP和端口的绑定函数、发送函数和接收函数作为公有成员函数;I/O复用及多路I/O转接接口中模型包括SELECT、POLL及EPOLL;私有的成员变量通过公有成员函数被I/O复用及多路I/O转接接口之外的其他模块调用。
5.如权利要求1所述软件化雷达架构,其特征在于,成员函数及成员变量的头文件中包括跨平台头文件以及安全管理头文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010966739.3A CN112099769B (zh) | 2020-09-15 | 2020-09-15 | 一种具有统一数据传输接口的软件化雷达装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010966739.3A CN112099769B (zh) | 2020-09-15 | 2020-09-15 | 一种具有统一数据传输接口的软件化雷达装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099769A true CN112099769A (zh) | 2020-12-18 |
CN112099769B CN112099769B (zh) | 2022-05-03 |
Family
ID=73759034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010966739.3A Active CN112099769B (zh) | 2020-09-15 | 2020-09-15 | 一种具有统一数据传输接口的软件化雷达装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099769B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040057458A1 (en) * | 2002-09-11 | 2004-03-25 | Tae-Young Kil | Apparatus for providing inter-processor communication using TCP/IP in communication system |
CN102833119A (zh) * | 2012-09-29 | 2012-12-19 | 南京国电南自轨道交通工程有限公司 | 双网冗余机制下实时数据接收同步处理的方法 |
CN105204848A (zh) * | 2015-08-27 | 2015-12-30 | 深圳创维-Rgb电子有限公司 | 使用二进制程序进行功能固化并提供服务的方法及系统 |
CN109656533A (zh) * | 2018-12-18 | 2019-04-19 | 山东超越数控电子股份有限公司 | 一种软硬件解耦合的软件化雷达系统 |
CN110716710A (zh) * | 2019-08-26 | 2020-01-21 | 许华敏 | 一种雷达信号处理软件架构 |
-
2020
- 2020-09-15 CN CN202010966739.3A patent/CN112099769B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040057458A1 (en) * | 2002-09-11 | 2004-03-25 | Tae-Young Kil | Apparatus for providing inter-processor communication using TCP/IP in communication system |
CN102833119A (zh) * | 2012-09-29 | 2012-12-19 | 南京国电南自轨道交通工程有限公司 | 双网冗余机制下实时数据接收同步处理的方法 |
CN105204848A (zh) * | 2015-08-27 | 2015-12-30 | 深圳创维-Rgb电子有限公司 | 使用二进制程序进行功能固化并提供服务的方法及系统 |
CN109656533A (zh) * | 2018-12-18 | 2019-04-19 | 山东超越数控电子股份有限公司 | 一种软硬件解耦合的软件化雷达系统 |
CN110716710A (zh) * | 2019-08-26 | 2020-01-21 | 许华敏 | 一种雷达信号处理软件架构 |
Non-Patent Citations (2)
Title |
---|
董巍: "软件化雷达信号检测系统的设计与实现", 《中国新技术新产品》 * |
陈勉: ""基于ACE的分布式数据通信平台研究与实现"", 《中国优秀硕士学位论文全文数据库电子期刊 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112099769B (zh) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2496278C2 (ru) | Способ связи между платформами | |
JP2014519249A (ja) | ポート拡張トポロジ情報の取得用方法、システム及び制御ブリッジ並びにアップリンクポートの処理方法及びシステム | |
CN106357761A (zh) | 基于实时操作系统的分布式消息通信中间件实现软件系统 | |
CN115150454A (zh) | 一种跨操作系统的中心化发布订阅通信中间件 | |
CN109582479B (zh) | 一种基于反射内存卡的OpenDDS分布式通信方法 | |
US20080080536A1 (en) | Media access control layer bridging of a real communication device to a simulated network | |
CN113115346A (zh) | 一种基于5g的网关多协议转换装置及其方法 | |
CN114024910B (zh) | 一种用于金融交易系统的极低延时可靠通讯系统及方法 | |
CN114926163A (zh) | 资源跨链转移方法及装置 | |
CN112099769B (zh) | 一种具有统一数据传输接口的软件化雷达装置 | |
CN114553980B (zh) | 一种控制流与数据流解耦的消息服务方法 | |
US11706076B2 (en) | Computer system with computing devices, communication device, task processing device | |
US6005858A (en) | Telecommunications switching system | |
Austad et al. | net_chan: Deterministic network channels for distributed real-time systems | |
CN116760504B (zh) | 会话同步方法、装置、服务节点、终端及可读存储介质 | |
CN115277419B (zh) | 一种无服务计算中加速网络启动方法 | |
CN109040135A (zh) | 数据同步方法及其装置 | |
CN115640153B (zh) | 系统架构、消息处理方法、装置、电子设备及存储介质 | |
CN117527458B (zh) | 一种多播数据分发方法、装置、电子设备及存储介质 | |
CN114884907B (zh) | 一种基于自动驾驶的通信方法、装置、系统、设备及介质 | |
Li et al. | Towards A Personal Mobile Cloud via Generic Device Interconnections | |
CN118646773B (zh) | 一种面向有/无人编队的智能机系统及其计算资源调用方法 | |
CN115037807B (zh) | 一种工业机器人服务总线上集成dds协议的方法及系统 | |
Manfred et al. | On Secure Mobile Communication Software Issues | |
CN117221046A (zh) | 一种基于some/ip通信的车载网关中间层 |
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 |