CN107147630B - 一种实现omci协议栈代码自动生成的方法及装置 - Google Patents

一种实现omci协议栈代码自动生成的方法及装置 Download PDF

Info

Publication number
CN107147630B
CN107147630B CN201710289710.4A CN201710289710A CN107147630B CN 107147630 B CN107147630 B CN 107147630B CN 201710289710 A CN201710289710 A CN 201710289710A CN 107147630 B CN107147630 B CN 107147630B
Authority
CN
China
Prior art keywords
parameter
function
protocol stack
script
code
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
Application number
CN201710289710.4A
Other languages
English (en)
Other versions
CN107147630A (zh
Inventor
黄志成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huzhou Yinglie Intellectual Property Operation Co ltd
Original Assignee
Jinhua Zhizhen Communication Equipment Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jinhua Zhizhen Communication Equipment Co Ltd filed Critical Jinhua Zhizhen Communication Equipment Co Ltd
Priority to CN201710289710.4A priority Critical patent/CN107147630B/zh
Publication of CN107147630A publication Critical patent/CN107147630A/zh
Application granted granted Critical
Publication of CN107147630B publication Critical patent/CN107147630B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/03Protocol definition or specification 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/26Special purpose or proprietary protocols or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明一种实现OMCI协议栈代码自动生成的方法及系统,该方法包括如下步骤:根据ITU通信标准列出的ME对象,对ME对象进行定义申明,实现ME定义脚本的设计;根据ITU通信标准申明的ME对象操作方法及属性特性,从步骤一的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计;采用该ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成,通过本发明,实现了OMCI协议栈代码的自动生成,大大减少了人为写代码的工作量,且便于后续的维护及调试。

Description

一种实现OMCI协议栈代码自动生成的方法及装置
技术领域
本发明涉及网络通信领域,特别是涉及一种利用TCL脚本实现OMCI协议栈代码自动生成的方法及装置。
背景技术
在通信技术领域,GPON(Gigabit-capable passive optical network G比特无源光网络)不仅具有高带宽,高效率,覆盖范围广,用户接口丰富等众多优点,更以其强大的OAM(Operation Administration and Maintenance,操作维护管理)功能,弥补了众多接入技术远程控制能力的不足,逐渐成为接入技术的主流。
OMCI(ONU Management and Control Interface,光网络单元管理控制接口)是GPON标准中定义的一种配置传输通道,其通过在OLT(Optical Line Termination,光线路终端)和ONT(Optical Network Terminal,光网络终端)之间建立专有的OMCI消息,用于提供标准的获取ONT能力,并对其进行管理和控制的方法。
在通信系统中,协议栈开发一直是软件工程师工作量很大的任务。由于协议栈的特殊性,不可避免的会有很多重复性的代码需要书写,这往往成倍的增加工程师的工作量,拉长项目开发周期,以至于增加项目的开发难度。
现有的各厂商OMCI协议栈,大部分都是由开发人员手动输入代码来完成,即使像美国博通这样的大厂商也仅仅是对少部分的代码做了自动生成技术,如对ME对象的结构定义。所以现有技术需要花费大量的时间及人力,且OMCI标准在不停的改动,现有技术开发的协议栈不利于后续的维护。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种实现OMCI协议栈代码自动生成的方法及装置,以实现OMCI协议栈代码的自动生成,大大减少了人为写代码的工作量,且便于后续的维护及调试。
为达上述目的,本发明提出一种实现OMCI协议栈代码自动生成的方法,包括如下步骤:
步骤一,根据ITU通信标准列出的ME对象,对ME对象进行定义申明,实现ME定义脚本的设计;
步骤二,根据ITU通信标准申明的ME对象操作方法及属性特性,从步骤一的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计;
步骤三,采用该ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
进一步地,该ME定义脚本包括该ME的全局属性的定义以及该ME中所有参数的属性定义。
进一步地,于步骤二中,该ME功能实现脚本的规则生成的文件包括协议栈公用函数源码文件、协议栈ME数据库结构体定义头文件以及协议栈ME私有函数接口源文件中的部分或全部。
进一步地,该协议栈公用函数源码文件生成规则如下:
获取所有ME列表;
遍历所有ME列表;
根据ME的列表索引返回该ME的最大参数个数、所有mib的初始化函数、根据ME的列表索引返回该ME信息的全局变量内存地址、根据ME的列表索引返回该ME的本地数据库可写内存地址、根据ME的列表索引返回该ME的本地数据库可读内存地址、根据ME的列表索引擦除该ME的本地数据库数据、根据ME的列表索引返回该ME的数据长度、根据ME的列表索引返回该ME的操作支持类型、用于mib上报过程的ME数据片段初始化函数。
进一步地,该协议栈ME数据库结构体定义头文件的生成规则如下:
获取该ME定义脚本中关于该ME的名称,用于申明该结构体名称;
循环遍历该ME所有的参数属性,依次判断该参数属性的数据类型。
若为无符号字符型的参数,则代码生成以无符号字符型定义该属性;若为无符号短整型的参数,则代码生成以无符号短整型定义该属性;若为无符号整型的参数,则代码生成以无符号整型定义该属性;若为字符串类型的参数,则代码生成以字符串类型定义该属性。
进一步地,该协议栈ME私有函数接口源文件包含的函数包括ME设置回调函数、ME取值回调函数、ME创建回调函数、ME删除回调函数、OMCI报文转ME参数函数、按ME参数掩码发消息函数中的部分或全部。
进一步地,该ME取值回调函数生成规则如下:根据参数个数,循环遍历ME表的所有参数;每个参数都拥有自己的掩码作为执行条件;若成立再判断该参数的数据类型,根据参数的数据类型的不同长度,将数据库中参数值拷贝到一段内存中,组成回复的OMCI报文。
进一步地,该OMCI报文转ME参数函数生成规则如下:根据参数个数,循环遍历ME表的所有参数;每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型分别做不同长度的内存拷贝动作,实现OMCI报文内容到ME参数值的转换。
进一步地,该按ME参数掩码发消息函数的生成规则如下:根据参数个数,循环遍历所有参数;每个参数都拥有自己的掩码作为执行条件,若成立再判断是否支持手动处理,若支持手动处理则生成手动处理函数,若不支持则使用该参数的消息ID和ME通信进程名称进行消息的发送。
为达到上述目的,本发明还提供一种实现OMCI协议栈代码自动生成的系统,包括:
ME定义脚本设计单元,用于根据ITU通信标准列出的ME对象,对ME对象进行定义申明,实现ME定义脚本的设计;
ME功能实现脚本设计单元,用于根据ITU通信标准申明的ME对象操作方法及属性特性,从该ME定义脚本设计单元的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计;
代码自动生成单元,用于采用该ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
与现有技术相比,本发明一种实现OMCI协议栈代码自动生成的方法及系统通过设计ME定义脚本和ME功能实现脚本,采用ME定义脚本和ME功能实现脚本协同的方式,实现了OMCI协议栈代码的自动生成,使得开发人员只需要维护ME定义脚本和ME功能实现脚本这两个文件,大大减少了人为写代码的工作量,且便于后续的维护及调试。
附图说明
图1为本发明一种实现OMCI协议栈代码自动生成的方法的步骤流程图;
图2为本发明具体实施例中协议栈公用函数源码文件的生成示意图;
图3为本发明具体实施例中协议栈ME数据库结构体定义头文件的生成示意图;
图4为本发明具体实施例中协议栈ME私有函数接口源文件的生成示意图;
图5为本发明一种实现OMCI协议栈代码自动生成的系统的系统架构图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种实现OMCI协议栈代码自动生成的方法的步骤流程图。如图1所示,本发明一种实现OMCI协议栈代码自动生成的方法,包括如下步骤:
步骤101,根据ITU通信标准列出的ME(Managed entity,管理单元)对象,对ME对象进行定义申明,实现ME定义脚本的设计。在本发明具体实施里中,本步骤根据ITU-988规范标准列出的ME对象,设计一套描述该ME对象的表述方法
ME定义脚本的脚本文件是对ME对象的定义申明,ME定义包括两个部分,首先是关于该ME的全局属性的定义,其次是该ME中所有参数的属性定义。在本发明具体实施例中,不同ME按顺序排列,并且以table begin开始,以table end结尾,同个ME下的不同参数,则以attribute begin开始,以attribute end结尾。
(1)ME的全局属性如下:
ME的名称:用于生成相关函数、结构体、消息的名称;
ME最大的实例数:用于程序初始化内存时候;
ME在ITU-988标准中定义的ID(Identifier,身份标示值):用于判断ME身份;
ME支持的操作类型:在程序接收报文入口处判断是否支持相应操作;
ME用于创建的消息ID:创建该ME时候若需要通知其他系统,则使用该消息ID,若不需要则为空;
ME用于创建的消息结构体:创建该ME时候若需要通知其他系统,则使用该结构体传输数据,若不需要则为空;
ME用于删除的消息ID:删除该ME时候若需要通知其他系统,则使用该消息ID,若不需要则为空;
ME用于删除的消息结构体:删除该ME时候若需要通知其他系统,则使用该结构体,若不需要则为空;
ME用于取值的消息ID:读取该ME时候若需要从其他系统取值,则使用该消息ID,若不需要则为空;
ME用于取值的消息结构体:读取该ME时候若需要从其他系统取值,则使用该结构体,若不需要则为空;
ME用于取当前值的消息ID:读取该ME当前值时候若需要从其他系统取值,则使用该消息ID,若不需要则为空;
ME用于取当前值的消息结构体:读取该ME当前值时候若需要从其他系统取值,则使用该结构体,若不需要则为空;
ME设置回调函数;用于代码中调用,若该ME无此操作类型则为空;
ME取值回调函数:用于代码中调用,若该ME无此操作类型则为空;
ME取当前值回调函数:用于代码中调用,若该ME无此操作类型则为空;
ME创建回调函数:用于代码中调用,若该ME无此操作类型则为空;
ME删除回调函数:用于代码中调用,若该ME无此操作类型则为空;
ME手动处理标记:用于代码中调用,判断ME是否需要手动处理动作,若该ME不与其他ME相关,该标记则为空;
ME是否支持mib(Management information base,管理信息载体)上报的标记:用于生成mib上报模块代码,若该ME不支持mib上报,则为空;
该ME通信的进程名称:用于代码中发消息时候调用。
(2)ME中参数属性如下:
参数属性的名称:用于报文解析、参数处理部分的代码调用;
参数的数据类型:用于判断该属性是整型值或者字符串;
参数在内存中占用的长度:用于确定报文解析时候取值长度;
参数是否为创建即保存标记:用于确定创建回调函数中的代码实现;
参数设置消息ID:该属性与其他系统通信的消息ID,若该属性无设置消息接口,则为空;
参数设置消息结构体:该属性与其他系统通信的结构体,若该属性无设置消息接口,则为空;
参数获取消息ID:该属性与其他系统通信的消息ID,若该属性无获取消息接口,则为空;
参数获取消息结构体:该属性与其他系统通信的结构体,若该属性无获取消息接口,则为空;
参数是否手动处理标记:该属性报文是否需要与其他对象有关联关系,若需要手动分析,则设置该标记;
参数默认值:该参数在初始化时候被设置成的值。
步骤102,根据ITU通信标准申明的ME对象操作方法及属性特性,从步骤101的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计。在本发明具体实施例中,根据ITU-988规范标准申明的ME对象操作方法及属性特性,从步骤101的ME定义脚本中获取ME对象的表述来生成功能代码。ME功能实现脚本在展开ME定义脚本过程中,会根据定义脚本中的描述来初始化脚本变量,再依次以一个完整的ME完成代码生成。
本步骤中,ME功能实现脚本的规则主要生成以下几个文件:协议栈公用函数源码文件、协议栈ME数据库结构体定义头文件以及协议栈ME私有函数接口源文件。
图2为本发明具体实施例中协议栈公用函数源码文件的生成示意图。如图2所示,该协议栈公用函数源码文件生成过程如下:
步骤S21,获取所有ME列表;
步骤S22,遍历所有ME列表;
步骤S23,根据ME的列表索引返回该ME的最大参数个数、所有mib的初始化函数、根据ME的列表索引返回该ME信息的全局变量内存地址、根据ME的列表索引返回该ME的本地数据库可写内存地址、根据ME的列表索引返回该ME的本地数据库可读内存地址、根据ME的列表索引擦除该ME的本地数据库数据、根据ME的列表索引返回该ME的数据长度、根据ME的列表索引返回该ME的操作支持类型、用于mib上报过程的ME数据片段初始化函数。
具体地,生成规则的文字表述为:
1、根据ME的列表索引返回该ME的最大参数个数:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的名称宏定义,该名称宏定义即为该ME的最大参数个数,从而实现该函数返回最大参数个数函数;
2、所有mib的初始化函数:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的初始化函数;
3、根据ME的列表索引返回该ME信息的全局变量内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的信息全局变量内存地址函数;
4、根据ME的列表索引返回该ME的本地数据库可写内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的本地数据库可写内存地址函数;
5、根据ME的列表索引返回该ME的本地数据库可读内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的本地数据库可读内存地址函数;
6、根据ME的列表索引擦除该ME的本地数据库数据:首先获取所有ME的名称列表,逐个遍历ME,同时生成擦除该ME的本地数据库数据函数;
7、根据ME的列表索引返回该ME的数据长度:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME数据长度读取函数;
8、根据ME的列表索引返回该ME的操作支持类型:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME支持的操作类型;
9、用于mib上报过程的ME数据片段初始化函数:首先获取所有ME的名称列表,逐个遍历ME,同时生成所有ME的数据片段读取函数;
图3为本发明具体实施例中协议栈ME数据库结构体定义头文件的生成示意图。该文件中根据ITU-988规范申明了所有ME的结构体,如图3所示,协议栈ME数据库结构体定义头文件的生成过程如下:
步骤S31,获取ME定义脚本中关于该ME的名称,用于申明该结构体名称;
步骤S32,循环遍历该ME所有的参数属性,依次判断该参数属性的数据类型。
步骤S33,若为无符号字符型的参数,则代码生成以无符号字符型定义该属性;若为无符号短整型的参数,则代码生成以无符号短整型定义该属性;若为无符号整型的参数,则代码生成以无符号整型定义该属性;若为字符串类型的参数,则代码生成以字符串类型定义该属性
步骤S34,返回步骤S32,直到该ME所有的参数遍历完毕。
图4为本发明具体实施例中协议栈ME私有函数接口源文件的生成示意图。在本发明中,协议栈ME私有函数接口源文件是以ME为区分,每个ME都有一个对应的私有函数接口源文件,且文件名称包含该ME名称。该文件包含的函数主要有ME设置回调函数、ME取值回调函数、ME创建回调函数、ME删除回调函数、OMCI报文转ME参数函数、按ME参数掩码发消息函数。如图4所示,协议栈ME私有函数接口源文件的生成规则如下:
1)获取ME定义脚本中该ME的名称、参数个数、参数手动处理标记、ME手动处理标记、消息ID、消息结构体、ME通信进程名称;
2)生成ME取值回调函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型的不同长度,将数据库中参数值拷贝到一段内存中,组成回复的OMCI报文;
3)生成OMCI报文转ME参数函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型分别做不同长度的内存拷贝动作,实现OMCI报文内容到ME参数值的转换。
4)生成按ME参数掩码发消息函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断是否支持手动处理,若支持手动处理则生成手动处理函数,若不支持则使用该参数的消息ID和ME通信进程名称进行消息的发送。
5)生成ME设置回调函数:先调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;再调用参数保存函数,将ME参数保存到数据库;然后判断ME手动处理标记是否有效,有效则调用ME手动处理函数,无效则此时无需做处理;最后调用参数设置消息发送函数与其他系统通信,该参数设置消息发送函数用于将设置参数更改的事件通告给其他系统的消息函数;
6)生成ME创建回调函数:首先判断ME创建回调函数标记是否有效,若无效则调用ME删除回调函数,有效则调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;再调用参数保存函数,将ME参数保存到数据库;然后判断ME手动处理函数标记是否有效,有效则调用ME手动创建函数,无效则调用参数创建消息发送函数,该参数创建消息发送函数用于将创建ME的事件通告给其他系统的消息函数;
7)生成ME删除回调函数:调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;然后判断ME手动处理函数标记是否有效,有效则调用ME手动删除函数,无效则调用参数删除消息发送函数,该参数删除消息发送函数用于将删除ME的事件通告给其他系统的消息函数;
步骤103,采用ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
在本发明具体实施例中,本发明之实现OMCI协议栈代码自动生成的方法利用TCL脚本技术,采用ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成,这样开发人员只需要维护ME定义脚本和ME功能实现脚本这两个文件即可,可大大减少了人为写代码的工作量,且便于后续的维护及调试。
图5为本发明一种实现OMCI协议栈代码自动生成的系统的系统架构图。如图5所示,本发明一种实现OMCI协议栈代码自动生成的系统,包括:ME定义脚本设计单元501、ME功能实现脚本设计单元502以及代码自动生成单元503。
ME定义脚本设计单元501,用于根据ITU通信标准列出的ME(Managed entity,管理单元)对象,对ME对象进行定义申明,实现ME定义脚本的设计。在本发明具体实施里中,ME定义脚本设计单元501根据ITU-988规范标准列出的ME对象,设计一套描述该ME对象的表述方法
ME定义脚本的脚本文件是对ME对象的定义申明,ME定义包括两个部分,首先是关于该ME的全局属性的定义,其次是该ME中所有参数的属性定义。在本发明具体实施例中,不同ME按顺序排列,并且以table begin开始,以table end结尾,同个ME下的不同参数,则以attribute begin开始,以attribute end结尾。
(1)ME的全局属性如下:
ME的名称:用于生成相关函数、结构体、消息的名称;
ME最大的实例数:用于程序初始化内存时候;
ME在ITU-988标准中定义的ID(Identifier,身份标示值):用于判断ME身份;
ME支持的操作类型:在程序接收报文入口处判断是否支持相应操作;
ME用于创建的消息ID:创建该ME时候若需要通知其他系统,则使用该消息ID,若不需要则为空;
ME用于创建的消息结构体:创建该ME时候若需要通知其他系统,则使用该结构体传输数据,若不需要则为空;
ME用于删除的消息ID:删除该ME时候若需要通知其他系统,则使用该消息ID,若不需要则为空;
ME用于删除的消息结构体:删除该ME时候若需要通知其他系统,则使用该结构体,若不需要则为空;
ME用于取值的消息ID:读取该ME时候若需要从其他系统取值,则使用该消息ID,若不需要则为空;
ME用于取值的消息结构体:读取该ME时候若需要从其他系统取值,则使用该结构体,若不需要则为空;
ME用于取当前值的消息ID:读取该ME当前值时候若需要从其他系统取值,则使用该消息ID,若不需要则为空;
ME用于取当前值的消息结构体:读取该ME当前值时候若需要从其他系统取值,则使用该结构体,若不需要则为空;
ME设置回调函数;用于代码中调用,若该ME无此操作类型则为空;
ME取值回调函数:用于代码中调用,若该ME无此操作类型则为空;
ME取当前值回调函数:用于代码中调用,若该ME无此操作类型则为空;
ME创建回调函数:用于代码中调用,若该ME无此操作类型则为空;
ME删除回调函数:用于代码中调用,若该ME无此操作类型则为空;
ME手动处理标记:用于代码中调用,判断ME是否需要手动处理动作,若该ME不与其他ME相关,该标记则为空;
ME是否支持mib(Management information base,管理信息载体)上报的标记:用于生成mib上报模块代码,若该ME不支持mib上报,则为空;
该ME通信的进程名称:用于代码中发消息时候调用。
(2)ME中参数属性如下:
参数属性的名称:用于报文解析、参数处理部分的代码调用;
参数的数据类型:用于判断该属性是整型值或者字符串;
参数在内存中占用的长度:用于确定报文解析时候取值长度;
参数是否为创建即保存标记:用于确定创建回调函数中的代码实现;
参数设置消息ID:该属性与其他系统通信的消息ID,若该属性无设置消息接口,则为空;
参数设置消息结构体:该属性与其他系统通信的结构体,若该属性无设置消息接口,则为空;
参数获取消息ID:该属性与其他系统通信的消息ID,若该属性无获取消息接口,则为空;
参数获取消息结构体:该属性与其他系统通信的结构体,若该属性无获取消息接口,则为空;
参数是否手动处理标记:该属性报文是否需要与其他对象有关联关系,若需要手动分析,则设置该标记
参数默认值:该参数在初始化时候被设置成的值。
ME功能实现脚本设计单元502,用于根据ITU通信标准申明的ME对象操作方法及属性特性,从ME定义脚本设计单元501的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计。在本发明具体实施例中,ME功能实现脚本设计单元502根据ITU-988规范标准申明的ME对象操作方法及属性特性,从ME定义脚本设计单元501的ME定义脚本中获取ME对象的表述来生成功能代码。ME功能实现脚本在展开ME定义脚本过程中,会根据定义脚本中的描述来初始化脚本变量,再依次以一个完整的ME完成代码生成。
ME功能实现脚本的规则主要生成以下几个文件:协议栈公用函数源码文件、协议栈ME数据库结构体定义头文件以及协议栈ME私有函数接口源文件。
该协议栈公用函数源码文件中均为协议栈公用的函数,包括根据ME的列表索引返回该ME的最大参数个数、所有mib的初始化函数、根据ME的列表索引返回该ME信息的全局变量内存地址、根据ME的列表索引返回该ME的本地数据库可写内存地址、根据ME的列表索引返回该ME的本地数据库可读内存地址、根据ME的列表索引擦除该ME的本地数据库数据、根据ME的列表索引返回该ME的数据长度、根据ME的列表索引返回该ME的操作支持类型、用于mib上报过程的ME数据片段初始化函数。具体地,该协议栈公用函数源码文件生成规则如下:
1、根据ME的列表索引返回该ME的最大参数个数:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的名称宏定义,该名称宏定义即为该ME的最大参数个数,从而实现该函数返回最大参数个数函数;
2、所有mib的初始化函数:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的初始化函数;
3、根据ME的列表索引返回该ME信息的全局变量内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的信息全局变量内存地址函数;
4、根据ME的列表索引返回该ME的本地数据库可写内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的本地数据库可写内存地址函数;
5、根据ME的列表索引返回该ME的本地数据库可读内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的本地数据库可读内存地址函数;
6、根据ME的列表索引擦除该ME的本地数据库数据:首先获取所有ME的名称列表,逐个遍历ME,同时生成擦除该ME的本地数据库数据函数;
7、根据ME的列表索引返回该ME的数据长度:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME数据长度读取函数;
8、根据ME的列表索引返回该ME的操作支持类型:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME支持的操作类型;
9、用于mib上报过程的ME数据片段初始化函数:首先获取所有ME的名称列表,逐个遍历ME,同时生成所有ME的数据片段读取函数;
协议栈ME数据库结构体定义头文件根据ITU-988规范申明了所有ME的结构体,其生成规则如下:
1、获取ME定义脚本中关于该ME的名称,用于申明该结构体名称;
2、循环遍历该ME所有的参数属性,依次判断该参数属性的数据类型。
3、若为无符号字符型的参数,则代码生成以无符号字符型定义该属性;若为无符号短整型的参数,则代码生成以无符号短整型定义该属性;若为无符号整型的参数,则代码生成以无符号整型定义该属性;若为字符串类型的参数,则代码生成以字符串类型定义该属性,直到该ME所有的参数遍历完毕。
在本发明中,协议栈ME私有函数接口源文件是以ME为区分,每个ME都有一个对应的私有函数接口源文件,且文件名称包含该ME名称。该文件包含的函数主要有ME设置回调函数、ME取值回调函数、ME创建回调函数、ME删除回调函数、OMCI报文转ME参数函数、按ME参数掩码发消息函数。具体地,协议栈ME私有函数接口源文件的生成规则如下:
1)获取ME定义脚本中该ME的名称、参数个数、参数手动处理标记、ME手动处理标记、消息ID、消息结构体、ME通信进程名称;
2)生成ME取值回调函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型的不同长度,将数据库中参数值拷贝到一段内存中,组成回复的OMCI报文;
3)生成OMCI报文转ME参数函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型分别做不同长度的内存拷贝动作,实现OMCI报文内容到ME参数值的转换。
4)生成按ME参数掩码发消息函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断是否支持手动处理,若支持手动处理则生成手动处理函数,若不支持则使用该参数的消息ID和ME通信进程名称进行消息的发送。
5)生成ME设置回调函数:先调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;再调用参数保存函数,将ME参数保存到数据库;然后判断ME手动处理标记是否有效,有效则调用ME手动处理函数,无效则此时无需做处理;最后调用参数设置消息发送函数与其他系统通信,该参数设置消息发送函数用于将设置参数更改的事件通告给其他系统的消息函数;
6)生成ME创建回调函数:首先判断ME创建回调函数标记是否有效,若无效则调用ME删除回调函数,有效则调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;再调用参数保存函数,将ME参数保存到数据库;然后判断ME手动处理函数标记是否有效,有效则调用ME手动创建函数,无效则调用参数创建消息发送函数,该参数创建消息发送函数用于将创建ME的事件通告给其他系统的消息函数;
7)生成ME删除回调函数:调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;然后判断ME手动处理函数标记是否有效,有效则调用ME手动删除函数,无效则调用参数删除消息发送函数,该参数删除消息发送函数用于将删除ME的事件通告给其他系统的消息函数;
代码自动生成单元503,用于采用ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
综上所述,本发明一种实现OMCI协议栈代码自动生成的方法及系统通过设计ME定义脚本和ME功能实现脚本,采用ME定义脚本和ME功能实现脚本协同的方式,实现了OMCI协议栈代码的自动生成,使得开发人员只需要维护ME定义脚本和ME功能实现脚本这两个文件,大大减少了人为写代码的工作量,且便于后续的维护及调试。
任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

Claims (8)

1.一种实现OMCI协议栈代码自动生成的方法,包括如下步骤:
步骤一,根据ITU通信标准列出的ME对象,对ME对象进行定义申明,实现ME定义脚本的设计;
步骤二,根据ITU通信标准申明的ME对象操作方法及属性特性,从步骤一的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计,所述ME功能实现脚本的规则生成的文件包括协议栈公用函数源码文件、协议栈ME数据库结构体定义头文件以及协议栈ME私有函数接口源文件中的部分或全部,所述协议栈公用函数源码文件生成规则如下:
获取所有ME列表;
遍历所有ME列表;
根据ME的列表索引返回该ME的最大参数个数、所有mib的初始化函数、根据ME的列表索引返回该ME信息的全局变量内存地址、根据ME的列表索引返回该ME的本地数据库可写内存地址、根据ME的列表索引返回该ME的本地数据库可读内存地址、根据ME的列表索引擦除该ME的本地数据库数据、根据ME的列表索引返回该ME的数据长度、根据ME的列表索引返回该ME的操作支持类型、用于mib上报过程的ME数据片段初始化函数;
步骤三,采用该ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
2.如权利要求1所述一种实现OMCI协议栈代码自动生成的方法,其特征在于:该ME定义脚本包括该ME的全局属性的定义以及该ME中所有参数的属性定义。
3.如权利要求1所述一种实现OMCI协议栈代码自动生成的方法,其特征在于:该协议栈ME数据库结构体定义头文件的生成规则如下:
获取该ME定义脚本中关于该ME的名称,用于申明该结构体名称;
循环遍历该ME所有的参数属性,依次判断该参数属性的数据类型;
若为无符号字符型的参数,则代码生成以无符号字符型定义该属性;若为无符号短整型的参数,则代码生成以无符号短整型定义该属性;若为无符号整型的参数,则代码生成以无符号整型定义该属性;若为字符串类型的参数,则代码生成以字符串类型定义该属性。
4.如权利要求1所述一种实现OMCI协议栈代码自动生成的方法,其特征在于:该协议栈ME私有函数接口源文件包含的函数包括ME设置回调函数、ME取值回调函数、ME创建回调函数、ME删除回调函数、OMCI报文转ME参数函数、按ME参数掩码发消息函数中的部分或全部。
5.如权利要求4所述一种实现OMCI协议栈代码自动生成的方法,其特征在于,该ME取值回调函数生成规则如下:根据参数个数,循环遍历ME表的所有参数;每个参数都拥有自己的掩码作为执行条件;若成立再判断该参数的数据类型,根据参数的数据类型的不同长度,将数据库中参数值拷贝到一段内存中,组成回复的OMCI报文。
6.如权利要求5所述一种实现OMCI协议栈代码自动生成的方法,其特征在于,该OMCI报文转ME参数函数生成规则如下:根据参数个数,循环遍历ME表的所有参数;每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型分别做不同长度的内存拷贝动作,实现OMCI报文内容到ME参数值的转换。
7.如权利要求5所述一种实现OMCI协议栈代码自动生成的方法,其特征在于,该按ME参数掩码发消息函数的生成规则如下:根据参数个数,循环遍历所有参数;每个参数都拥有自己的掩码作为执行条件,若成立再判断是否支持手动处理,若支持手动处理则生成手动处理函数,若不支持则使用该参数的消息ID和ME通信进程名称进行消息的发送。
8.一种实现OMCI协议栈代码自动生成的系统,包括:
ME定义脚本设计单元,用于根据ITU通信标准列出的ME对象,对ME对象进行定义申明,实现ME定义脚本的设计;
ME功能实现脚本设计单元,用于根据ITU通信标准申明的ME对象操作方法及属性特性,从该ME定义脚本设计单元的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计,所述ME功能实现脚本的规则生成的文件包括协议栈公用函数源码文件、协议栈ME数据库结构体定义头文件以及协议栈ME私有函数接口源文件中的部分或全部,所述协议栈公用函数源码文件生成规则如下:
获取所有ME列表;
遍历所有ME列表;
根据ME的列表索引返回该ME的最大参数个数、所有mib的初始化函数、根据ME的列表索引返回该ME信息的全局变量内存地址、根据ME的列表索引返回该ME的本地数据库可写内存地址、根据ME的列表索引返回该ME的本地数据库可读内存地址、根据ME的列表索引擦除该ME的本地数据库数据、根据ME的列表索引返回该ME的数据长度、根据ME的列表索引返回该ME的操作支持类型、用于mib上报过程的ME数据片段初始化函数;
代码自动生成单元,用于采用该ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
CN201710289710.4A 2017-04-27 2017-04-27 一种实现omci协议栈代码自动生成的方法及装置 Active CN107147630B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710289710.4A CN107147630B (zh) 2017-04-27 2017-04-27 一种实现omci协议栈代码自动生成的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710289710.4A CN107147630B (zh) 2017-04-27 2017-04-27 一种实现omci协议栈代码自动生成的方法及装置

Publications (2)

Publication Number Publication Date
CN107147630A CN107147630A (zh) 2017-09-08
CN107147630B true CN107147630B (zh) 2020-12-25

Family

ID=59775167

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710289710.4A Active CN107147630B (zh) 2017-04-27 2017-04-27 一种实现omci协议栈代码自动生成的方法及装置

Country Status (1)

Country Link
CN (1) CN107147630B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109976834B (zh) * 2019-03-29 2022-01-28 上海仁童电子科技有限公司 一种协议栈参数配置方法及装置
CN111740972B (zh) * 2020-06-15 2022-06-21 中国第一汽车股份有限公司 一种通信协议栈信息的更新方法、装置、设备及存储介质
TWI801035B (zh) * 2021-12-15 2023-05-01 大陸商達發科技(蘇州)有限公司 基於設定檔來實現omci管理實例的方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8274899B2 (en) * 2004-12-22 2012-09-25 Alcatel Lucent Autoconfiguration of ethernet OAM points
CN103577166B (zh) * 2012-07-25 2017-11-14 上海斐讯数据通信技术有限公司 Omci编码方法及其装置
CN103051485B (zh) * 2013-01-10 2016-03-16 太仓市同维电子有限公司 一种用于gpon的业务分析方法
CN103346913B (zh) * 2013-06-28 2016-09-07 上海市共进通信技术有限公司 无源光网络终端设备中实现模块配置的方法
CN104158903B (zh) * 2014-08-27 2018-05-01 上海斐讯数据通信技术有限公司 Oam协议栈编码方法及系统

Also Published As

Publication number Publication date
CN107147630A (zh) 2017-09-08

Similar Documents

Publication Publication Date Title
WO2019028992A1 (zh) 多模块版本依赖关系构建方法、装置、服务器和存储介质
KR101264819B1 (ko) 표적 동작 객체를 찾아내기 위한 장치 관리 서버, 클라이언트 및 방법
CN107147630B (zh) 一种实现omci协议栈代码自动生成的方法及装置
CN111683066B (zh) 异构系统集成方法、装置、计算机设备和存储介质
CN111061678B (zh) 业务数据处理方法、装置、计算机设备和存储介质
CN111324619B (zh) 微服务系统中的对象更新方法、装置、设备和存储介质
CN112612475B (zh) 一种实现物联设备仿真的方法
CN109214785B (zh) 工作流的实现方法、服务器及系统
CN110659165A (zh) 一种多节点服务器自动化测试方法和装置
CN111309868A (zh) 一种知识图谱构建、检索方法及装置
CN109117127A (zh) 程序代码生成方法、装置及计算机可读存储介质
CN101583204B (zh) 一种实现通用联合电路卡多应用文件管理的方法及系统
CN107948242A (zh) 多服务号模板消息发送方法及系统
CN114025027A (zh) 数据传输脚本的运行方法、装置、存储介质和电子装置
KR20160103110A (ko) 네트워크 요소 데이터 액세스 방법, 액세스 장치, 및 네트워크 관리 시스템
CN111443920B (zh) 一种框架迁移方法及装置
CN107592302A (zh) 一种移动端的端口扫描器及方法
CN112634005A (zh) 生成财务凭证的方法、装置和电子设备
EP3300384A1 (en) Onu template generating method and device
CN110297898A (zh) 异步编译方法及装置
CN110750310A (zh) 基于ios系统组件化开发的二进制和源码切换方法
CN113068216B (zh) 网络拨测方法、网络拨测系统及计算机可读存储介质
CN111400060B (zh) 设备联动方法、装置、服务器和介质
CN113438095B (zh) 配置数据的管理方法、装置、设备及存储介质
CN112380828A (zh) Pdf文档生成方法和装置、存储介质和电子设备

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201026

Address after: 318015 no.2-3167, zone a, Nonggang City, no.2388, Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Applicant after: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

Address before: 201616 Shanghai city Songjiang District Sixian Road No. 3666

Applicant before: Phicomm (Shanghai) Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201203

Address after: 12b12-1, building 4, Wanda Plaza, duohu street, Jindong District, Jinhua City, Zhejiang Province, 321015

Applicant after: Jinhua Zhizhen communication equipment Co.,Ltd.

Address before: 318015 no.2-3167, zone a, Nonggang City, no.2388, Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Applicant before: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221226

Address after: 313000 room 1019, Xintiandi commercial office, Yishan street, Wuxing District, Huzhou, Zhejiang, China

Patentee after: Huzhou YingLie Intellectual Property Operation Co.,Ltd.

Address before: 12b12-1, building 4, Wanda Plaza, duohu street, Jindong District, Jinhua City, Zhejiang Province, 321015

Patentee before: Jinhua Zhizhen communication equipment Co.,Ltd.