首页 > 专利 > 金华市智甄通信设备有限公司 > 一种实现OMCI协议栈代码自动生成的方法及装置专利详情

一种实现OMCI协议栈代码自动生成的方法及装置   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2017-04-27
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2017-10-13
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2020-12-25
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2037-04-27
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201710289710.4 申请日 2017-04-27
公开/公告号 CN107147630B 公开/公告日 2020-12-25
授权日 2020-12-25 预估到期日 2037-04-27
申请年 2017年 公开/公告年 2020年
缴费截止日 2023-05-29
分类号 H04L29/06G06F8/30 主分类号 H04L29/06
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 7
权利要求数量 8 非专利引证数量 0
引用专利数量 0 被引证专利数量 0
非专利引证
引用专利 被引证专利
专利权维持 5 专利申请国编码 CN
专利事件 转让 事务标签 公开、实质审查、申请权转移、授权
申请人信息
申请人 第一申请人
专利权人 金华市智甄通信设备有限公司 当前专利权人 金华市智甄通信设备有限公司
发明人 黄志成 第一发明人 黄志成
地址 浙江省金华市金东区多湖街道万达广场4幢12B12-1 邮编 321015
申请人数量 1 发明人数量 1
申请人所在省 浙江省 申请人所在市 浙江省金华市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
浙江千克知识产权代理有限公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
裴金华
摘要
本发明一种实现OMCI协议栈代码自动生成的方法及系统,该方法包括如下步骤:根据ITU通信标准列出的ME对象,对ME对象进行定义申明,实现ME定义脚本的设计;根据ITU通信标准申明的ME对象操作方法及属性特性,从步骤一的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计;采用该ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成,通过本发明,实现了OMCI协议栈代码的自动生成,大大减少了人为写代码的工作量,且便于后续的维护及调试。
  • 摘要附图
    一种实现OMCI协议栈代码自动生成的方法及装置
  • 说明书附图:图1
    一种实现OMCI协议栈代码自动生成的方法及装置
  • 说明书附图:图2
    一种实现OMCI协议栈代码自动生成的方法及装置
  • 说明书附图:图3
    一种实现OMCI协议栈代码自动生成的方法及装置
  • 说明书附图:图4
    一种实现OMCI协议栈代码自动生成的方法及装置
  • 说明书附图:图5
    一种实现OMCI协议栈代码自动生成的方法及装置
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2020-12-25 授权
2 2020-12-15 专利申请权的转移 登记生效日: 2020.12.03 申请人由台州市吉吉知识产权运营有限公司变更为金华市智甄通信设备有限公司 地址由318015 浙江省台州市椒江区洪家街道东环大道2388号农港城A区2-3167号变更为321015 浙江省金华市金东区多湖街道万达广场4幢12B12-1
3 2017-10-13 实质审查的生效 IPC(主分类): H04L 29/06 专利申请号: 201710289710.4 申请日: 2017.04.27
4 2017-09-08 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
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协议栈代码的自动生成。
说明书

技术领域

[0001] 本发明涉及网络通信领域,特别是涉及一种利用TCL脚本实现OMCI协议栈代码自动生成的方法及装置。

背景技术

[0002] 在通信技术领域,GPON(Gigabit-capable passive optical network G比特无源光网络)不仅具有高带宽,高效率,覆盖范围广,用户接口丰富等众多优点,更以其强大的OAM(Operation Administration and Maintenance,操作维护管理)功能,弥补了众多接入技术远程控制能力的不足,逐渐成为接入技术的主流。
[0003] OMCI(ONU Management and Control Interface,光网络单元管理控制接口)是GPON标准中定义的一种配置传输通道,其通过在OLT(Optical Line Termination,光线路终端)和ONT(Optical Network Terminal,光网络终端)之间建立专有的OMCI消息,用于提供标准的获取ONT能力,并对其进行管理和控制的方法。
[0004] 在通信系统中,协议栈开发一直是软件工程师工作量很大的任务。由于协议栈的特殊性,不可避免的会有很多重复性的代码需要书写,这往往成倍的增加工程师的工作量,拉长项目开发周期,以至于增加项目的开发难度。
[0005] 现有的各厂商OMCI协议栈,大部分都是由开发人员手动输入代码来完成,即使像美国博通这样的大厂商也仅仅是对少部分的代码做了自动生成技术,如对ME对象的结构定义。所以现有技术需要花费大量的时间及人力,且OMCI标准在不停的改动,现有技术开发的协议栈不利于后续的维护。

发明内容

[0006] 为克服上述现有技术存在的不足,本发明之目的在于提供一种实现OMCI协议栈代码自动生成的方法及装置,以实现OMCI协议栈代码的自动生成,大大减少了人为写代码的工作量,且便于后续的维护及调试。
[0007] 为达上述目的,本发明提出一种实现OMCI协议栈代码自动生成的方法,包括如下步骤:
[0008] 步骤一,根据ITU通信标准列出的ME对象,对ME对象进行定义申明,实现ME定义脚本的设计;
[0009] 步骤二,根据ITU通信标准申明的ME对象操作方法及属性特性,从步骤一的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计;
[0010] 步骤三,采用该ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
[0011] 进一步地,该ME定义脚本包括该ME的全局属性的定义以及该ME中所有参数的属性定义。
[0012] 进一步地,于步骤二中,该ME功能实现脚本的规则生成的文件包括协议栈公用函数源码文件、协议栈ME数据库结构体定义头文件以及协议栈ME私有函数接口源文件中的部分或全部。
[0013] 进一步地,该协议栈公用函数源码文件生成规则如下:
[0014] 获取所有ME列表;
[0015] 遍历所有ME列表;
[0016] 根据ME的列表索引返回该ME的最大参数个数、所有mib的初始化函数、根据ME的列表索引返回该ME信息的全局变量内存地址、根据ME的列表索引返回该ME的本地数据库可写内存地址、根据ME的列表索引返回该ME的本地数据库可读内存地址、根据ME的列表索引擦除该ME的本地数据库数据、根据ME的列表索引返回该ME的数据长度、根据ME的列表索引返回该ME的操作支持类型、用于mib上报过程的ME数据片段初始化函数。
[0017] 进一步地,该协议栈ME数据库结构体定义头文件的生成规则如下:
[0018] 获取该ME定义脚本中关于该ME的名称,用于申明该结构体名称;
[0019] 循环遍历该ME所有的参数属性,依次判断该参数属性的数据类型。
[0020] 若为无符号字符型的参数,则代码生成以无符号字符型定义该属性;若为无符号短整型的参数,则代码生成以无符号短整型定义该属性;若为无符号整型的参数,则代码生成以无符号整型定义该属性;若为字符串类型的参数,则代码生成以字符串类型定义该属性。
[0021] 进一步地,该协议栈ME私有函数接口源文件包含的函数包括ME设置回调函数、ME取值回调函数、ME创建回调函数、ME删除回调函数、OMCI报文转ME参数函数、按ME参数掩码发消息函数中的部分或全部。
[0022] 进一步地,该ME取值回调函数生成规则如下:根据参数个数,循环遍历ME表的所有参数;每个参数都拥有自己的掩码作为执行条件;若成立再判断该参数的数据类型,根据参数的数据类型的不同长度,将数据库中参数值拷贝到一段内存中,组成回复的OMCI报文。
[0023] 进一步地,该OMCI报文转ME参数函数生成规则如下:根据参数个数,循环遍历ME表的所有参数;每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型分别做不同长度的内存拷贝动作,实现OMCI报文内容到ME参数值的转换。
[0024] 进一步地,该按ME参数掩码发消息函数的生成规则如下:根据参数个数,循环遍历所有参数;每个参数都拥有自己的掩码作为执行条件,若成立再判断是否支持手动处理,若支持手动处理则生成手动处理函数,若不支持则使用该参数的消息ID和ME通信进程名称进行消息的发送。
[0025] 为达到上述目的,本发明还提供一种实现OMCI协议栈代码自动生成的系统,包括:
[0026] ME定义脚本设计单元,用于根据ITU通信标准列出的ME对象,对ME对象进行定义申明,实现ME定义脚本的设计;
[0027] ME功能实现脚本设计单元,用于根据ITU通信标准申明的ME对象操作方法及属性特性,从该ME定义脚本设计单元的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计;
[0028] 代码自动生成单元,用于采用该ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
[0029] 与现有技术相比,本发明一种实现OMCI协议栈代码自动生成的方法及系统通过设计ME定义脚本和ME功能实现脚本,采用ME定义脚本和ME功能实现脚本协同的方式,实现了OMCI协议栈代码的自动生成,使得开发人员只需要维护ME定义脚本和ME功能实现脚本这两个文件,大大减少了人为写代码的工作量,且便于后续的维护及调试。

实施方案

[0035] 以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
[0036] 图1为本发明一种实现OMCI协议栈代码自动生成的方法的步骤流程图。如图1所示,本发明一种实现OMCI协议栈代码自动生成的方法,包括如下步骤:
[0037] 步骤101,根据ITU通信标准列出的ME(Managed entity,管理单元)对象,对ME对象进行定义申明,实现ME定义脚本的设计。在本发明具体实施里中,本步骤根据ITU-988规范标准列出的ME对象,设计一套描述该ME对象的表述方法
[0038] ME定义脚本的脚本文件是对ME对象的定义申明,ME定义包括两个部分,首先是关于该ME的全局属性的定义,其次是该ME中所有参数的属性定义。在本发明具体实施例中,不同ME按顺序排列,并且以table begin开始,以table end结尾,同个ME下的不同参数,则以attribute begin开始,以attribute end结尾。
[0039] (1)ME的全局属性如下:
[0040] ME的名称:用于生成相关函数、结构体、消息的名称;
[0041] ME最大的实例数:用于程序初始化内存时候;
[0042] ME在ITU-988标准中定义的ID(Identifier,身份标示值):用于判断ME身份;
[0043] ME支持的操作类型:在程序接收报文入口处判断是否支持相应操作;
[0044] ME用于创建的消息ID:创建该ME时候若需要通知其他系统,则使用该消息ID,若不需要则为空;
[0045] ME用于创建的消息结构体:创建该ME时候若需要通知其他系统,则使用该结构体传输数据,若不需要则为空;
[0046] ME用于删除的消息ID:删除该ME时候若需要通知其他系统,则使用该消息ID,若不需要则为空;
[0047] ME用于删除的消息结构体:删除该ME时候若需要通知其他系统,则使用该结构体,若不需要则为空;
[0048] ME用于取值的消息ID:读取该ME时候若需要从其他系统取值,则使用该消息ID,若不需要则为空;
[0049] ME用于取值的消息结构体:读取该ME时候若需要从其他系统取值,则使用该结构体,若不需要则为空;
[0050] ME用于取当前值的消息ID:读取该ME当前值时候若需要从其他系统取值,则使用该消息ID,若不需要则为空;
[0051] ME用于取当前值的消息结构体:读取该ME当前值时候若需要从其他系统取值,则使用该结构体,若不需要则为空;
[0052] ME设置回调函数;用于代码中调用,若该ME无此操作类型则为空;
[0053] ME取值回调函数:用于代码中调用,若该ME无此操作类型则为空;
[0054] ME取当前值回调函数:用于代码中调用,若该ME无此操作类型则为空;
[0055] ME创建回调函数:用于代码中调用,若该ME无此操作类型则为空;
[0056] ME删除回调函数:用于代码中调用,若该ME无此操作类型则为空;
[0057] ME手动处理标记:用于代码中调用,判断ME是否需要手动处理动作,若该ME不与其他ME相关,该标记则为空;
[0058] ME是否支持mib(Management information base,管理信息载体)上报的标记:用于生成mib上报模块代码,若该ME不支持mib上报,则为空;
[0059] 该ME通信的进程名称:用于代码中发消息时候调用。
[0060] (2)ME中参数属性如下:
[0061] 参数属性的名称:用于报文解析、参数处理部分的代码调用;
[0062] 参数的数据类型:用于判断该属性是整型值或者字符串;
[0063] 参数在内存中占用的长度:用于确定报文解析时候取值长度;
[0064] 参数是否为创建即保存标记:用于确定创建回调函数中的代码实现;
[0065] 参数设置消息ID:该属性与其他系统通信的消息ID,若该属性无设置消息接口,则为空;
[0066] 参数设置消息结构体:该属性与其他系统通信的结构体,若该属性无设置消息接口,则为空;
[0067] 参数获取消息ID:该属性与其他系统通信的消息ID,若该属性无获取消息接口,则为空;
[0068] 参数获取消息结构体:该属性与其他系统通信的结构体,若该属性无获取消息接口,则为空;
[0069] 参数是否手动处理标记:该属性报文是否需要与其他对象有关联关系,若需要手动分析,则设置该标记;
[0070] 参数默认值:该参数在初始化时候被设置成的值。
[0071] 步骤102,根据ITU通信标准申明的ME对象操作方法及属性特性,从步骤101的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计。在本发明具体实施例中,根据ITU-988规范标准申明的ME对象操作方法及属性特性,从步骤101的ME定义脚本中获取ME对象的表述来生成功能代码。ME功能实现脚本在展开ME定义脚本过程中,会根据定义脚本中的描述来初始化脚本变量,再依次以一个完整的ME完成代码生成。
[0072] 本步骤中,ME功能实现脚本的规则主要生成以下几个文件:协议栈公用函数源码文件、协议栈ME数据库结构体定义头文件以及协议栈ME私有函数接口源文件。
[0073] 图2为本发明具体实施例中协议栈公用函数源码文件的生成示意图。如图2所示,该协议栈公用函数源码文件生成过程如下:
[0074] 步骤S21,获取所有ME列表;
[0075] 步骤S22,遍历所有ME列表;
[0076] 步骤S23,根据ME的列表索引返回该ME的最大参数个数、所有mib的初始化函数、根据ME的列表索引返回该ME信息的全局变量内存地址、根据ME的列表索引返回该ME的本地数据库可写内存地址、根据ME的列表索引返回该ME的本地数据库可读内存地址、根据ME的列表索引擦除该ME的本地数据库数据、根据ME的列表索引返回该ME的数据长度、根据ME的列表索引返回该ME的操作支持类型、用于mib上报过程的ME数据片段初始化函数。
[0077] 具体地,生成规则的文字表述为:
[0078] 1、根据ME的列表索引返回该ME的最大参数个数:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的名称宏定义,该名称宏定义即为该ME的最大参数个数,从而实现该函数返回最大参数个数函数;
[0079] 2、所有mib的初始化函数:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的初始化函数;
[0080] 3、根据ME的列表索引返回该ME信息的全局变量内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的信息全局变量内存地址函数;
[0081] 4、根据ME的列表索引返回该ME的本地数据库可写内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的本地数据库可写内存地址函数;
[0082] 5、根据ME的列表索引返回该ME的本地数据库可读内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的本地数据库可读内存地址函数;
[0083] 6、根据ME的列表索引擦除该ME的本地数据库数据:首先获取所有ME的名称列表,逐个遍历ME,同时生成擦除该ME的本地数据库数据函数;
[0084] 7、根据ME的列表索引返回该ME的数据长度:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME数据长度读取函数;
[0085] 8、根据ME的列表索引返回该ME的操作支持类型:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME支持的操作类型;
[0086] 9、用于mib上报过程的ME数据片段初始化函数:首先获取所有ME的名称列表,逐个遍历ME,同时生成所有ME的数据片段读取函数;
[0087] 图3为本发明具体实施例中协议栈ME数据库结构体定义头文件的生成示意图。该文件中根据ITU-988规范申明了所有ME的结构体,如图3所示,协议栈ME数据库结构体定义头文件的生成过程如下:
[0088] 步骤S31,获取ME定义脚本中关于该ME的名称,用于申明该结构体名称;
[0089] 步骤S32,循环遍历该ME所有的参数属性,依次判断该参数属性的数据类型。
[0090] 步骤S33,若为无符号字符型的参数,则代码生成以无符号字符型定义该属性;若为无符号短整型的参数,则代码生成以无符号短整型定义该属性;若为无符号整型的参数,则代码生成以无符号整型定义该属性;若为字符串类型的参数,则代码生成以字符串类型定义该属性
[0091] 步骤S34,返回步骤S32,直到该ME所有的参数遍历完毕。
[0092] 图4为本发明具体实施例中协议栈ME私有函数接口源文件的生成示意图。在本发明中,协议栈ME私有函数接口源文件是以ME为区分,每个ME都有一个对应的私有函数接口源文件,且文件名称包含该ME名称。该文件包含的函数主要有ME设置回调函数、ME取值回调函数、ME创建回调函数、ME删除回调函数、OMCI报文转ME参数函数、按ME参数掩码发消息函数。如图4所示,协议栈ME私有函数接口源文件的生成规则如下:
[0093] 1)获取ME定义脚本中该ME的名称、参数个数、参数手动处理标记、ME手动处理标记、消息ID、消息结构体、ME通信进程名称;
[0094] 2)生成ME取值回调函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型的不同长度,将数据库中参数值拷贝到一段内存中,组成回复的OMCI报文;
[0095] 3)生成OMCI报文转ME参数函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型分别做不同长度的内存拷贝动作,实现OMCI报文内容到ME参数值的转换。
[0096] 4)生成按ME参数掩码发消息函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断是否支持手动处理,若支持手动处理则生成手动处理函数,若不支持则使用该参数的消息ID和ME通信进程名称进行消息的发送。
[0097] 5)生成ME设置回调函数:先调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;再调用参数保存函数,将ME参数保存到数据库;然后判断ME手动处理标记是否有效,有效则调用ME手动处理函数,无效则此时无需做处理;最后调用参数设置消息发送函数与其他系统通信,该参数设置消息发送函数用于将设置参数更改的事件通告给其他系统的消息函数;
[0098] 6)生成ME创建回调函数:首先判断ME创建回调函数标记是否有效,若无效则调用ME删除回调函数,有效则调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;再调用参数保存函数,将ME参数保存到数据库;然后判断ME手动处理函数标记是否有效,有效则调用ME手动创建函数,无效则调用参数创建消息发送函数,该参数创建消息发送函数用于将创建ME的事件通告给其他系统的消息函数;
[0099] 7)生成ME删除回调函数:调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;然后判断ME手动处理函数标记是否有效,有效则调用ME手动删除函数,无效则调用参数删除消息发送函数,该参数删除消息发送函数用于将删除ME的事件通告给其他系统的消息函数;
[0100] 步骤103,采用ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
[0101] 在本发明具体实施例中,本发明之实现OMCI协议栈代码自动生成的方法利用TCL脚本技术,采用ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成,这样开发人员只需要维护ME定义脚本和ME功能实现脚本这两个文件即可,可大大减少了人为写代码的工作量,且便于后续的维护及调试。
[0102] 图5为本发明一种实现OMCI协议栈代码自动生成的系统的系统架构图。如图5所示,本发明一种实现OMCI协议栈代码自动生成的系统,包括:ME定义脚本设计单元501、ME功能实现脚本设计单元502以及代码自动生成单元503。
[0103] ME定义脚本设计单元501,用于根据ITU通信标准列出的ME(Managed entity,管理单元)对象,对ME对象进行定义申明,实现ME定义脚本的设计。在本发明具体实施里中,ME定义脚本设计单元501根据ITU-988规范标准列出的ME对象,设计一套描述该ME对象的表述方法
[0104] ME定义脚本的脚本文件是对ME对象的定义申明,ME定义包括两个部分,首先是关于该ME的全局属性的定义,其次是该ME中所有参数的属性定义。在本发明具体实施例中,不同ME按顺序排列,并且以table begin开始,以table end结尾,同个ME下的不同参数,则以attribute begin开始,以attribute end结尾。
[0105] (1)ME的全局属性如下:
[0106] ME的名称:用于生成相关函数、结构体、消息的名称;
[0107] ME最大的实例数:用于程序初始化内存时候;
[0108] ME在ITU-988标准中定义的ID(Identifier,身份标示值):用于判断ME身份;
[0109] ME支持的操作类型:在程序接收报文入口处判断是否支持相应操作;
[0110] ME用于创建的消息ID:创建该ME时候若需要通知其他系统,则使用该消息ID,若不需要则为空;
[0111] ME用于创建的消息结构体:创建该ME时候若需要通知其他系统,则使用该结构体传输数据,若不需要则为空;
[0112] ME用于删除的消息ID:删除该ME时候若需要通知其他系统,则使用该消息ID,若不需要则为空;
[0113] ME用于删除的消息结构体:删除该ME时候若需要通知其他系统,则使用该结构体,若不需要则为空;
[0114] ME用于取值的消息ID:读取该ME时候若需要从其他系统取值,则使用该消息ID,若不需要则为空;
[0115] ME用于取值的消息结构体:读取该ME时候若需要从其他系统取值,则使用该结构体,若不需要则为空;
[0116] ME用于取当前值的消息ID:读取该ME当前值时候若需要从其他系统取值,则使用该消息ID,若不需要则为空;
[0117] ME用于取当前值的消息结构体:读取该ME当前值时候若需要从其他系统取值,则使用该结构体,若不需要则为空;
[0118] ME设置回调函数;用于代码中调用,若该ME无此操作类型则为空;
[0119] ME取值回调函数:用于代码中调用,若该ME无此操作类型则为空;
[0120] ME取当前值回调函数:用于代码中调用,若该ME无此操作类型则为空;
[0121] ME创建回调函数:用于代码中调用,若该ME无此操作类型则为空;
[0122] ME删除回调函数:用于代码中调用,若该ME无此操作类型则为空;
[0123] ME手动处理标记:用于代码中调用,判断ME是否需要手动处理动作,若该ME不与其他ME相关,该标记则为空;
[0124] ME是否支持mib(Management information base,管理信息载体)上报的标记:用于生成mib上报模块代码,若该ME不支持mib上报,则为空;
[0125] 该ME通信的进程名称:用于代码中发消息时候调用。
[0126] (2)ME中参数属性如下:
[0127] 参数属性的名称:用于报文解析、参数处理部分的代码调用;
[0128] 参数的数据类型:用于判断该属性是整型值或者字符串;
[0129] 参数在内存中占用的长度:用于确定报文解析时候取值长度;
[0130] 参数是否为创建即保存标记:用于确定创建回调函数中的代码实现;
[0131] 参数设置消息ID:该属性与其他系统通信的消息ID,若该属性无设置消息接口,则为空;
[0132] 参数设置消息结构体:该属性与其他系统通信的结构体,若该属性无设置消息接口,则为空;
[0133] 参数获取消息ID:该属性与其他系统通信的消息ID,若该属性无获取消息接口,则为空;
[0134] 参数获取消息结构体:该属性与其他系统通信的结构体,若该属性无获取消息接口,则为空;
[0135] 参数是否手动处理标记:该属性报文是否需要与其他对象有关联关系,若需要手动分析,则设置该标记
[0136] 参数默认值:该参数在初始化时候被设置成的值。
[0137] ME功能实现脚本设计单元502,用于根据ITU通信标准申明的ME对象操作方法及属性特性,从ME定义脚本设计单元501的ME定义脚本中获取ME对象的表述来生成功能代码,实现ME功能实现脚本的设计。在本发明具体实施例中,ME功能实现脚本设计单元502根据ITU-988规范标准申明的ME对象操作方法及属性特性,从ME定义脚本设计单元501的ME定义脚本中获取ME对象的表述来生成功能代码。ME功能实现脚本在展开ME定义脚本过程中,会根据定义脚本中的描述来初始化脚本变量,再依次以一个完整的ME完成代码生成。
[0138] ME功能实现脚本的规则主要生成以下几个文件:协议栈公用函数源码文件、协议栈ME数据库结构体定义头文件以及协议栈ME私有函数接口源文件。
[0139] 该协议栈公用函数源码文件中均为协议栈公用的函数,包括根据ME的列表索引返回该ME的最大参数个数、所有mib的初始化函数、根据ME的列表索引返回该ME信息的全局变量内存地址、根据ME的列表索引返回该ME的本地数据库可写内存地址、根据ME的列表索引返回该ME的本地数据库可读内存地址、根据ME的列表索引擦除该ME的本地数据库数据、根据ME的列表索引返回该ME的数据长度、根据ME的列表索引返回该ME的操作支持类型、用于mib上报过程的ME数据片段初始化函数。具体地,该协议栈公用函数源码文件生成规则如下:
[0140] 1、根据ME的列表索引返回该ME的最大参数个数:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的名称宏定义,该名称宏定义即为该ME的最大参数个数,从而实现该函数返回最大参数个数函数;
[0141] 2、所有mib的初始化函数:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的初始化函数;
[0142] 3、根据ME的列表索引返回该ME信息的全局变量内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的信息全局变量内存地址函数;
[0143] 4、根据ME的列表索引返回该ME的本地数据库可写内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的本地数据库可写内存地址函数;
[0144] 5、根据ME的列表索引返回该ME的本地数据库可读内存地址:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME的本地数据库可读内存地址函数;
[0145] 6、根据ME的列表索引擦除该ME的本地数据库数据:首先获取所有ME的名称列表,逐个遍历ME,同时生成擦除该ME的本地数据库数据函数;
[0146] 7、根据ME的列表索引返回该ME的数据长度:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME数据长度读取函数;
[0147] 8、根据ME的列表索引返回该ME的操作支持类型:首先获取所有ME的名称列表,逐个遍历ME,同时生成具体ME支持的操作类型;
[0148] 9、用于mib上报过程的ME数据片段初始化函数:首先获取所有ME的名称列表,逐个遍历ME,同时生成所有ME的数据片段读取函数;
[0149] 协议栈ME数据库结构体定义头文件根据ITU-988规范申明了所有ME的结构体,其生成规则如下:
[0150] 1、获取ME定义脚本中关于该ME的名称,用于申明该结构体名称;
[0151] 2、循环遍历该ME所有的参数属性,依次判断该参数属性的数据类型。
[0152] 3、若为无符号字符型的参数,则代码生成以无符号字符型定义该属性;若为无符号短整型的参数,则代码生成以无符号短整型定义该属性;若为无符号整型的参数,则代码生成以无符号整型定义该属性;若为字符串类型的参数,则代码生成以字符串类型定义该属性,直到该ME所有的参数遍历完毕。
[0153] 在本发明中,协议栈ME私有函数接口源文件是以ME为区分,每个ME都有一个对应的私有函数接口源文件,且文件名称包含该ME名称。该文件包含的函数主要有ME设置回调函数、ME取值回调函数、ME创建回调函数、ME删除回调函数、OMCI报文转ME参数函数、按ME参数掩码发消息函数。具体地,协议栈ME私有函数接口源文件的生成规则如下:
[0154] 1)获取ME定义脚本中该ME的名称、参数个数、参数手动处理标记、ME手动处理标记、消息ID、消息结构体、ME通信进程名称;
[0155] 2)生成ME取值回调函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型的不同长度,将数据库中参数值拷贝到一段内存中,组成回复的OMCI报文;
[0156] 3)生成OMCI报文转ME参数函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断该参数的数据类型,根据无符号字符型、无符号短整型、无符号整形、字符串类型分别做不同长度的内存拷贝动作,实现OMCI报文内容到ME参数值的转换。
[0157] 4)生成按ME参数掩码发消息函数:遍历ME表,即根据参数个数,循环遍历所有参数,每个参数都拥有自己的掩码作为执行条件,若成立再判断是否支持手动处理,若支持手动处理则生成手动处理函数,若不支持则使用该参数的消息ID和ME通信进程名称进行消息的发送。
[0158] 5)生成ME设置回调函数:先调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;再调用参数保存函数,将ME参数保存到数据库;然后判断ME手动处理标记是否有效,有效则调用ME手动处理函数,无效则此时无需做处理;最后调用参数设置消息发送函数与其他系统通信,该参数设置消息发送函数用于将设置参数更改的事件通告给其他系统的消息函数;
[0159] 6)生成ME创建回调函数:首先判断ME创建回调函数标记是否有效,若无效则调用ME删除回调函数,有效则调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;再调用参数保存函数,将ME参数保存到数据库;然后判断ME手动处理函数标记是否有效,有效则调用ME手动创建函数,无效则调用参数创建消息发送函数,该参数创建消息发送函数用于将创建ME的事件通告给其他系统的消息函数;
[0160] 7)生成ME删除回调函数:调用OMCI报文转ME参数函数,把协议栈收到的报文转化为ME参数;然后判断ME手动处理函数标记是否有效,有效则调用ME手动删除函数,无效则调用参数删除消息发送函数,该参数删除消息发送函数用于将删除ME的事件通告给其他系统的消息函数;
[0161] 代码自动生成单元503,用于采用ME定义脚本和ME功能实现脚本协同的方式,实现OMCI协议栈代码的自动生成。
[0162] 综上所述,本发明一种实现OMCI协议栈代码自动生成的方法及系统通过设计ME定义脚本和ME功能实现脚本,采用ME定义脚本和ME功能实现脚本协同的方式,实现了OMCI协议栈代码的自动生成,使得开发人员只需要维护ME定义脚本和ME功能实现脚本这两个文件,大大减少了人为写代码的工作量,且便于后续的维护及调试。
[0163] 任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

附图说明

[0030] 图1为本发明一种实现OMCI协议栈代码自动生成的方法的步骤流程图;
[0031] 图2为本发明具体实施例中协议栈公用函数源码文件的生成示意图;
[0032] 图3为本发明具体实施例中协议栈ME数据库结构体定义头文件的生成示意图;
[0033] 图4为本发明具体实施例中协议栈ME私有函数接口源文件的生成示意图;
[0034] 图5为本发明一种实现OMCI协议栈代码自动生成的系统的系统架构图。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号