一种移动无线网络消息的解码、调试、显示装置及其方法

文档序号:7921390阅读:119来源:国知局
专利名称:一种移动无线网络消息的解码、调试、显示装置及其方法
技术领域
本发明涉及的是应用于移动无线网络路测产品中的实体语法标记语言CSN.l描述的 信令消息的解码、调试、显示装置及其方法。
背景技术
移动无线网络路测系统是利用测试软件、测试手机、扫频仪、电子地图、GPS及测 试车辆等工具对移动无线网络进行规划和优化的系统。主要满足网络的小区站址选择、 网络日常优化、射频质量评估等需要。在网络的规划和优化中,测试手机将上报大量的信令消息,对网络进行规划和优化 的前提是对这些消息码流进行正确的解码。这些消息以不同的语法格式所描述,其中 GSM L3消息都是采用实体语法标记语言CSN.l (Concrete Syntax Notation 1)描述的, 这种语言是九十年代末由3GPP所引入的,它是用于描述逻辑比特流的含义的,比特流 是由比特位组成的流,每个比特位可以取值0或1, CSN.1定义了比特流的传输的语法, 但不描述其语义。在实际的传输中,采用的都是面向字节流的方式。字节流中的每个字节都由8个比 特组成,在计算机中一个字节被存储为一个8位的无符号整数,字节流通常被存储为这 种8位无符号整数的数组,而CSN.1描述的基本单位是比特,其语法类似于高级程序设 计语言,通常是按多个连续比特组成的比特串来描述一个信息,而一个比特串可能从一 个字节的任意一个比特位开始,也可能跨越多个字节的边界,而且CSN.l描述的比特流 可以有任意的长度,也不必正好是8的整数倍,这种描述和实际存储之间的不一致,较 大影响了路测软件中的GSM L3消息解码模块的开发效率和质量。CSN.l语法结构本身也是比较复杂的,这将给解码人员带来理解上的困难,所以必 需将其基本语法在实际编解码中的具体应用方式做一定的归纳总结才能减少歧义确保解码的有效性和正确性。基于以上分析,本发明分析总结了 3GPPTS 44.018和3GPPTS 44.060协议中所有以 CSN.1描述的消息,结合CSN.l基本语法规则对消息中的各种比特串进行了分类,并在 此基础上开发出一种专用于CSN.1描述的消息的解码、调试、显示装置及其方法。发明内容本发明提供了一种移动无线网络消息的解码、调试、显示装置及其方法,该装置包 括解码模块201,提供一系列消息解码模块,解码后的消息被保存到对应的消息结构 203中;显示模块204,将消息结构格式化为含有消息语义的显示字符串供界面显示;调 试模块202,为解码模块构造测试码流、输出调试信息;解码模块201进一步包括获取 整型比特串模块205,从消息字节流中获取指定长度的比特串将其转换为无符号整型值; 获取比特序列模块206,从消息字节流中获取指定长度的比特串并将之保存为变长的比特 数组;判断填充比特模块207,判断消息字节流中当前比特是L还是H,并将其比特值 转为无符号整型值0/l;后移模块208,从消息字节流当前比特位后移指定的比特个数;跳转到指定比特位置模块209和获得当前比特位置模块210在消息字节流中任意设置和 获取当前的比特位置;比特位置转字节位置模块211和字节位置转比特位置模块212执 行字节位置和比特位置的相互转换;调试模块202进一步包括测试码流编辑界面213, 为用户提供了一个图形化的码流构造、编辑界面,并将其转换为字节数组进行消息解码、 显示测试;解码调试信息输出模块214,如果在获取整型比特串模块205、获取比特序列 模块206、判断填充比特模块207、后移模块208之后紧接调用该模块,则输出调试诊断 信息;格式化消息字段输出模块215,内嵌在格式化消息数据字段模块216中,把格式化 的字段输出到调试窗口进行诊断;显示模块204进一步包括格式化消息数据字段模块 216,对消息结构中的每一个字段调用该模块,将消息字段附加协议特定的语义信息,并 控制其縮进格式;获取格式化后的消息显示字符串模块217,在消息内各字段格式化后调用,获取整条消息包含消息语义和值的显示字符串。本发明有效地屏蔽了消息的逻辑描述与实际存储之间的不一致性,提高了解码工作 的效率和正确性。


图1是根据本发明的路测系统结构图; 图2是CSN.1消息解码、调试、显示装置的结构图; 图3是利用图2所示的解码、调试、显示装置进行消息解码的流程图; 图4是利用图2所示的解码、调试、显示装置进行调试的流程图; 图5是利用图2所示的解码、调试、显示装置进行显示的流程图。
具体实施方式
为了本发明的描述方便,这里首先简要描述一下实体语法标记语言CSN.l的核心术语1、 比特串。比特串是由比特组成的规则序列,每个比特可以取0或1中的一个值, 符号"bit"表示l比特长的串。2、 空串。空串是长度为0的比特串。用符号"null"表示。3、 串联。串联用于表达长度大于l比特的串。它的表示方式是简单地将符号0或1 放在其他0、 l符号的后面,中间可以包含空串。4、 选择。选择用于表达可替换的概念。符号"I"或"or"表示选择的概念。串联 的优先级高于选择。改变优先级要使用花括号"{}"。5、 命名。CSN.l的定义能够被命名,名字用一对尖括号"<>"限定。6、 定义。使用符号将CSN.l的描述串与一个命名相联系。 一个命名被定义 了之后就可以在其他定义中引用。如果在同一个定义中引用了自己,这就形成的递归定 义,递归是CSN.l表达循环的一种方式。7、 备用比特串。备用比特是那些通常出现在比特串末尾没有被使用的比特,它可以 留在以后作为扩展。8、 填充比特。CSN.1可以L或H来代替0或1 ,CSN.l定义了一个8比特串00101011 (0x2B)用来作为填充使用,把一个比特流的某一位与由这个固定填充串按字节对齐无限 重复而形成的比特流的同一位置的比特值相比较,如果取值相同就是L,取值不同就是H。9、 标签。可以使用标签为一个比特串分配一个名字。它的形式为 <标签串联比 特串或引用其他定义>。10、 指数。用来表示循环。它允许按固定次数重复一个比特串,表示为比特串(算术表达式)或比特串*算术表达式。如果使用(*)或**则表示无限循环。本发明在分析了 3GPPTS 44.018和3GPPTS 44.060协议中所有以CSN.l描述的消息 的结构之后,结合语法对CSN.l描述的比特串进行了如下的总结分类1、消息数据字段。这种类型的比特串通常被描述为〈标签:bit(算术表达式p的形式, 它对应于消息中的一个数据字段,有其语义上的特殊含义,其语义解释通常在协议的其 他地方有详细的描述。这种消息数据字段根据其语义可以分为三种类型 一种是将整个比特串作为一个无符号的整数值对待,在后续的分析处理及显示中都作为一个数存在,这时该比特串的长度不会超过32位。另一种是将其就视为一个比特序列,其中的每一比特位都有自己的特殊含义,在后续的分析处理及显示中会逐位处理,这时该比特串的长 度没有限制,而且在协议中有时被描述为定长有时是直到具体解码时才能确定的变长(通 常为变长);还有一种是长度仅仅只有1位,取值为L或H的比特串,该位的取值是L 还是H代表了不同的语义。除了数据字段,其他的比特串都不属于消息本身,在解码完 成后都不被保存,只有数据字段将会在解码时保存到特定的消息结构中,以供后续的分 析处理及显示。2、 备用比特串。这种类型的比特串通常用于一个更大的比特串的末尾,它通常用预 定义的符号〈spare padding>、 <implicit spare>、 <spare bi^或〈padding bits〉表示。这禾中比 特串有时是定长的,但大多数时候都是变长的,其长度需要具体解码时通过用包含它的 更大的比特串的长度减去大比特串内其他子串的长度来得到。这种比特串需要跳过,它 没有任何实际含义。3、 控制比特串。这种类型的比特串可以作为CSN.l的逻辑流程控制条件,CSN.l 与高级程序设计语言一样存在两种逻辑流程控制 一种就是分支选择;另一种就是循环、 递归。用于这种目的的比特串有两种表示形式 一种是串联的O、 l组成的常量比特串, 如"0"、 "1"、 "1011"这样的固定比特串;另一种是填充比特L或H。用于分支选择条件的控制比特串会出现在选择操作符的前面或后面,用于循环控制的控制比特串将会出 现在循环或递归描述的前面或后面作为循环开始和结束的条件。还有一种控制比特串是 作为前导同步串的,它位于另一个比特串前面,标识特定的比特串的开始,前导串通常 是一个常量比特串。4、 空比特串。这种类型的比特串通常用符号"null"或〈nostring〉,这种情况不需要 处理。本发明针对上述的比特串分类在本发明装置的解码模块中提供了一系列的模块,向 使用者屏蔽了底层低级的位操作,使使用者能将精力集中在协议的语法层面。1、 针对被视为无符号整型数的比特串,本发明装置的解码模块提供了一个获取整型 比特串的模块205,该模块接收一个小于32的正整数作为长度参数,从消息字节流的当 前比特位置开始向后连续提取由长度参数所指定个数的比特位,将获取到的比特串转换 为一个无符号整数返回给使用者,同时当前比特位置移动到下一个比特串的开始位置。 该模块可用于提取被视为整数的消息数据字段比特串,也可以用于提取用于控制目的的 常量比特串。2、 针对被视为比特序列的比特串,本发明装置的解码模块提供了一个获取比特序列的模块206,该模块接收一个大小不受限制的正整数作为长度参数,从消息字节流的当前 比特位置开始向后连续提取由长度参数所指定个数的比特位,考虑到后续对该比特串的 处理将是逐位进行,而且比特串的长度通常是在真正解码时才能确定,所以该模块会将 取得的比特串保存为变长比特数组的形式,即使用标准0++类型库的嵌套容器 vector〈bitsetO〉来实现,然后将该变长比特数组返回给使用者,同时当前比特位置移动 到下一个比特串的开始位置。该模块可用于提取被视为比特序列的消息数据字段比特串。3、 针对填充比特L/H,本发明装置的解码模块提供了一个判断填充比特模块207, 该模块不接受任何参数,它会判断消息字节流的当前比特值是L还是H,并且返回该比 特值给用户,同时将当前比特位置向后移动一位到下一个比特串的开始位置。该模块可 用于控制比特串和数据字段比特串中的填充比特的判断和提取。4、 针对备用比特串,本发明装置的解码模块提供了一个后移模块208,该模块接收 一个大小不受限制的正整数作为长度参数,从消息字节流的当前比特位置开始连续向后 移动由长度参数所指定个数的比特位,该模块不返回任何值给使用者。5、 在具体解码过程中有时需要定位到某一特定比特位置,或从某一位置向前回退、 向后跳转,因此本发明装置的解码模块内还提供了一对位置模块, 一个是用于获取当前 比特位置的模块210,它返回给使用者当前比特距离消息字节流的开始位置的比特串长 度;另一个是用于设置当前比特位置的模块209,它接收一个表示比特位置的正整数作为 参数,将字节流的当前比特位置设置到参数指定的位置。6、 本发明装置的解码模块内还提供了一对位置转换模块, 一个是将比特位置转换为 字节位置的模块211;另一个是将字节位置转换为比特位置的模块212。这两个模块将为 一个消息由多个解码人员合作解码提供便利。7、 本发明装置的解码模块内部自行维护一个指示当前比特位置的游标,无需使用者 干预。为了便于消息解码的调试,本发明装置结合解码模块也提供了一个调试模块,这个 调试模块分为两部分, 一部分用于输出调试信息;另一部分用于构造测试码流。为了在调试时向调试窗口或文件输出调试信息,调试模块提供了一个解码调试信息 输出模块214,该模块接收一个格式化字符串和一个可变参数(类似于C语言中的printf 函数的参数)作为比特串的语义信息,根据所调用的解码模块的不同输出不同的调试信 息1、如果在获取整型比特串模块之后调用该模块214,则将输出该比特串的语义信息、在比特流中的开始位置、在字节流中的起始字节和字节内偏移位置、比特串长度、 二进制值、十进制值。2、 如果在获取比特序列模块之后调用该模块214,则将输出该比特串的语义信息、 在比特流中的开始位置、在字节流中的起始字节和字节内偏移位置、比特串长度、二进 制值。3、 如果在判断填充比特模块之后调用该模块214,则将输出该填充比特的语义信 息、在比特流中的开始位置、在字节流中的起始字节和字节内偏移位置、填充比特的值、 是L还是H、对应于填充字节的第几比特位、填充字节的二进制值。4、 如果在后移模块之后调用该模块214,贝鹏输出该比特串的语义信息、在比特流 中的开始位置、在字节流中的起始字节和字节内偏移位置、比特串长度、二进制值。调试模块还提供了一个格式化消息字段输出模块,它嵌入到格式化消息数据字段模 块内部,在格式化消息数据字段时可以向调试窗口输出格式化的结果字符串。本发明的装置使用一个宏开关来控制是否进行调试信息的输出,这里的调试信息包括 了获取整型比特串模块、获取比特序列模块、判断填充比特模块、后移模块这些解码模 块的调试信息以及显示模块中的格式化消息数据字段的结果字符串。为了方便构造测试码流,并且能使解码的测试过程能做到条件覆盖和分支覆盖的测 试要求,调试模块提供了一个窗口化的图形界面,即测试码流编辑界面213,供使用者输 入、修改码流。该界面具有如下功能1、 接收二进制或十六进制的字符串输入,将输入的字符串转换为8比特边界对齐的 无符号整型字节数组,以该数组作为输入调用消息解码、测试和显示模块。2、 执行十六进制与二进制字符串之间的相互转换。3、 提供比特串的定位功能。4、 提供比特串的编辑功能。5、 提供比特串的替换功能。6、 提供比特串的插入功能。这个图形化用户界面将和调试模块中的其它模块配合使用,即依据调试信息的输出 来调整二进制码流字符串,以达到测试中的条件覆盖和分支覆盖的目的。在路测软件中消息解码后还需要将消息的每个数据字段附加上特定的语义信息进行 格式化显示,并且消息将按照其数据字段的包含关系进行阶梯形縮进显示,因此本发明 装置还提供了一个显示模块,该模块包括格式化消息数据字段模块216,对于消息的每一个数据字段都调用模块216来为数据字段值附加特定的语义信息和縮进格式,模块216 接收一个縮进等级作为输入来控制縮进格式,每一等级都比上一等级縮进一个预先定义 的空格数,同时还接收一个的格式化字符串作为语义和一个可变参数作为字段值(类似 于C语言中的printf函数的参数),并将消息字段的值和语义以及縮进格式组合在一起为每个消息字段生成一个向最终用户显示的字符串,最后可以调用获取格式化后的消息显 示字符串模块来得到整个消息各字段的语义与值的格式化字符串用于图形用户界面106显示。以下结合附图对本发明利用CSN.l解码、调试、显示装置及其方法进行消息解码详 细说明。图l是本发明涉及的路测系统结构图。该系统包括测试手机IOI、接口模块102、消 息解析模块103、消息分析模块104、视图、数据处理模块105、图形用户界面106、 a 接口 107、 b接口 108、 c接口 109、 d接口 110、 e接口 111、 f接口 112和g接口 113。测试手机IOI,通过a接口 107上报信令消息,接口模块102对收到信令消息进行分 类解包,将消息内容通过b接口 108上报给消息解析模块103,该模块会解析消息的字节 流,将消息的数据字段值保存到对应的消息结构中,本发明装置的解码模块201和调试 模块202是消息解析模块103的核心子模块,是解析模块的引擎,在实际使用中无论消 息是否以实体语法标记语言CSN.l描述都使用本发明的解码模块对消息的字节流进行解 析,使用调试模块对消息解析进行调试。消息经过解析后,通过c接口 109把保存了消 息字段值的消息结构交给消息分析模块104进行分析、汇总统计,分析结果及原消息结 构将通过d接口 IIO交给视图、数据处理模块105进行多种视图的创建和进一步分析处 理,然后将处理结果通过e接口 111交给用户界面106显示,本发明装置提供的显示模 块204和调试模块202组成了用户界面模块106的消息显示子模块,显示模块完成消息显 示内容的构造,调试模块对消息显示过程进行调试。在视图、数据处理模块中用户可以主 动发起各种手机业务,各种手机命令将通过f接口 112下发给接口模块,接口模块再通 过g接口发送命令给测试手机令其执行各种业务,手机持续上报信令消息。图2是根据本发明的用于实体语法标记语言CSN.1描述的消息的解码、调试、显示 装置的结构图。解码模块201包含一系列消息解码模块,解码后的消息被保存到对应的 消息结构203中,显示模块204将消息结构格式化为含有消息语义的显示字符串供图形 用户界面106显示,调试模块202为解码模块和显示模块构造测试码流、输出调试信息。 获取整型比特串模块205从消息字节流中获取指定长度的比特串将其转换为无符号整型值,获取比特序列模块206从消息字节流中获取指定长度的比特串并将之保存为变长的 比特数组,判断填充比特模块207判断消息字节流中当前比特是L还是H,并将其比特 值转为无符号整型值0/1,后移模块208从消息字节流当前比特位后移指定的比特个数, 如果在以上四个模块之后紧接调用解码调试信息输出模块214,则输出调试诊断信息。跳 转到指定比特位置模块209和获得当前比特位置模块210在消息字节流中任意设置和获 取当前的比特位置,比特位置转字节位置模块211和字节位置转比特位置模块212执行 字节位置和比特位置的相互转换,对消息结构中的每一个字段调用格式化消息数据字段 模块216将消息字段值附加协议特定的语义信息,并加上縮进格式控制,同时它还内嵌 了调试模块中的格式化消息字段输出模块215,可以把格式化的字段结果输出到调试窗口 进行诊断,获取格式化后的消息显示字符串模块217在消息内各字段格式化后调用,可 以获取整条消息包含字段语义和值的显示字符串,测试码流编辑界面213为用户提供了 一个图形化的码流构造、编辑界面,并将其转换为字节数组进行消息解码、显示测试。图3是利用本发明的装置进行消息解码的流程图。步骤301输入一条消息完整的或 部份的字节数组,步骤302综合使用比特位置与字节位置相互转换模块和跳转到指定比 特位置模块将当前位置游标定位到解码开始的比特位置。步骤303根据协议判断当前待 解的比特串的类型,如果是消息数据字段类型的比特串,就执行步骤304根据消息字段 的语义描述判断该字段值是否被视为无符号整数,如果是就执行步骤305调用获取整型 比特串模块,并根据协议传入比特串长度作为参数,步骤306将得到的字段值保存到对 应的消息结构中。如果字段值不是无符号整数,则执行步骤307根据消息字段的语义判 断该字段是否将被视为比特序列,如果是则执行步骤308调用比特序列获取模块,并根 据协议传入比特串长度作为参数,步骤309将步骤308返回的变长比特数组填入消息结 构相应的字段中。如果在步骤307中判断出该字段是需要做L/H判断的填充比特,则执 行步骤310调用判断填充比特模块,将判断结果经步骤311填入消息结构。步骤312根 据协议判断当前比特串是否是备用比特串,如果是就执行步骤313计算备用比特串的长 度,有时这类比特串的长度在协议中已经标明为一个固定值,更多时候协议并不明确指 定它的长度,这时釆用如下方式计算其长度备用比特串总出现在某个消息字段的末尾, 在开始解码包含它的较大字段时调用获取当前比特位置模块预先记下较大字段的开始位 置,在解码完较大字段内的其他子字段后再次调用获取当前比特位置模块记下字段结束 位置,用这个结束位置减去开始位置得到大字段内其他子字段的总长度,再用大字段的 长度减去它就得到备用比特串的长度。步骤314调用后移模块,向后移动指定的比特位数。步骤315判断当前比特串是否是控制比特串,如果是就执行步骤316判断是否是填 充比特,如果是填充比特,则执行步骤317调用判断填充比特模块。如果是常量比特串, 则执行步骤318调用获取整型比特串模块,接着执行步骤319来判断是否是分支选择比 特串,如果是则将获取的比特串的值(L/H判断结果或整数常量)作为if else语句或switch case语句的判断条件,否则执行步骤320判断是否是循环控制比特串,如果是则将获取 的比特串的值作为for循环或while循环语句的循环条件,否则该比特串是前导比特串, 执行步骤323判断前导比特串的值是否是协议规定的值,如果不是就直接转到步骤327 解码异常结束。在步骤305、 308、 310、 314、 317、 318之后都可以紧接步骤324,传入 比特串的消息语义调用解码调试信息输出模块,该模块将向调试窗口或文件输出解码调 试信息,根据比特串类型的不同调试信息的输出格式会不同。步骤325判断后续是否还 有比特串,如果有则转步骤303继续处理,如果没有就转步骤326结束该消息的解码。图4是利用本发明装置进行调试的流程图。步骤401解读一个比特串的描述,步骤402 查看已经输出的调试信息,根据前一比特串的开始位置和长度确定当前比特串在比特流 中的起始位置,在测试码流编辑界面使用定位功能定位该位置。步骤403判断该比特串是 否是消息的数据字段,如果是则执行步骤404输入满足协议要求的比特字符串,如果不是 则执行步骤405判断该比特串是否为分支选择控制字段,如果是则执行步骤406査看已输 出的调试信息确定已经测试过哪些条件分支,从未测试的条件分支中选择一条,根据协 议构造满足该选择分支的条件控制比特串。如果不是条件控制比特串则执行步骤407判断 是否是循环控制比特串,如果是则执行步骤408根据已经输出的调试信息和协议构造循环 次数的控制条件比特串,重点应该关注循环的边界值的条件测试。如果比特串也不是循 环控制串,则执行步骤409判断是否是前导比特串,如果是,就执行步骤410根据协议构 造前导比特串。如果是备用比特串,步骤411构造满足协议长度的任意内容的比特字符串。 在构造好比特字符串后,步骤412根据已经输出的调试信息确定当前构造的比特字符串是 新增到比特流中的,还是原比特流中已经存在与该比特串起相同作用的串(即想对原比 特流做修改),如果是新增则步骤413使用界面的插入功能将新构造的比特串插入到比特 流的指定位置,如果是要替换旧串则步骤414使用界面的替换功能,结合已经输出的调试 信息指定要替换的旧串的起止位置或开始位置和长度,用新串替换旧串。接着步骤415调 用测试码流编辑界面的测试功能,将比特字符串转换为二进制字节流作为输入进行解码 测试,步骤416会输出当前比特流的解码测试的各种调试信息,根据这一输出结果可以接 着构造下一比特串或修改旧的比特串。这样使构造比特流和输出解码调试信息反复迭代进行,就可以增量式的逐步构造出一条消息的完整测试码流,并且可以覆盖所有条件分 支和各种测试用例。图5是利用本发明装置进行显示的流程图。步骤501输入一个消息字段值,步骤502根 据协议构造该消息字段的语义描述字符串,步骤503根据字段间的包含关系确定该消息字 段的縮进等级,步骤504调用显示模块中的格式化消息数据字段模块,以縮进等级为縮进 控制参数,以语义字符串为格式化字符串,以字段值为格式化字符串的可变参数值(类 似于C语言中的printf函数参数),步骤505判断是否还有其他需要格式化显示的字段,如 果有再转到步骤501处理,如果没有就执行步骤506调用获取格式化后的消息显示字符串 模块来得到整条消息的格式化显示字符串,该字符串包含了消息中每个字段的语义和值 以及縮进格式,将直接在图形用户界面106进行消息显示。以上结合实例对本发明作了说明,应指出,本领域技术人员可以做出各种形式的和 细节上的改变,而不偏离由所附权利要求所确定的本发明的精神和范围。
权利要求
1.一种移动无线网络消息的解码、调试、显示装置,其特征在于包括解码模块(201),包含一系列消息解码模块,解码后的消息被保存到对应的消息结构(203)中;显示模块(204),将消息结构格式化为含有消息语义的显示字符串供图形用户界面(106)显示;调试模块(202),为解码模块和显示模块构造测试码流、输出调试信息;解码模块(201)进一步包括获取整型比特串模块(205),从消息字节流中获取指定长度的比特串将其转换为无符号整型值;获取比特序列模块(206),从消息字节流中获取指定长度的比特串并将之保存为变长的比特数组;判断填充比特模块(207),判断消息字节流中当前比特是L还是H,并将其比特值转为无符号整型值0/1;后移模块(208),从消息字节流当前比特位后移指定的比特个数;跳转到指定比特位置模块(209)和获得当前比特位置模块(210)在消息字节流中任意设置和获取当前的比特位置;比特位置转字节位置模块(211)和字节位置转比特位置模块(212)执行字节位置和比特位置的相互转换;调试模块(202)进一步包括测试码流编辑界面(213),为用户提供了一个图形化的码流构造、编辑界面,并将其转换为字节数组进行消息解码、显示测试;解码调试信息输出模块(214),如果在获取整型比特串模块(205)、获取比特序列模块(206)、判断填充比特模块(207)、后移模块(208)之后紧接调用该模块,则输出调试诊断信息;格式化消息字段输出模块(215),内嵌在格式化消息数据字段模块(216)中,把格式化的消息字段输出到调试窗口进行诊断;显示模块(204)进一步包括格式化消息数据字段模块(216),对消息结构中的每一个字段调用该模块,将消息字段附加协议特定的语义信息,并且可以控制其缩进格式;获取格式化后的消息显示字符串模块(217),在消息内各字段格式化后调用,获取整条消息包含消息语义和值的显示字符串。
2. —种利用权利要求l所述的装置进行消息解码的方法,其特征在于包括步骤-步骤(301)输入一条消息完整的或部份的字节数组;步骤(302)综合使用位置转换函数和定位函数将当前位置游标定位到解码开始的比 特位置;步骤(303)根据协议判断当前待解的比特串的类型,如果是消息数据字段类型的比 特串,就执行步骤(304);步骤(304)根据消息字段的语义描述判断该字段是否被视为无符号整数,如果是就 执行步骤(305);步骤(305)调用获取整型比特串模块,并根据协议传入比特串长度作为参数; 步骤(306)将得到的字段值保存到对应的消息结构中;步骤(307)根据消息字段的语义判断该字段是否将被视为比特序列,如果是则执行 步骤(308);如果在步骤(307)中判断出该字段是L/H填充比特,则执行步骤(310); 步骤(308)调用获取比特序列模块,并根据协议传入比特串长度作为参数; 步骤(309)将返回的变长比特数组填入相应的消息结构中;步骤(310)调用判断填充比特模块,将判断结果经步骤(311)填入消息结构;步骤(312)根据协议判断当前比特串是否是备用比特串,如果是就执行步骤(313);步骤(313)计算备用比特串的长度,有时这类比特串的长度在协议中己经标明为一 个固定值,更多时候协议并不明确指定它的长度,由于它总出现在某个消息字段的末尾, 可以在开始解码包含它的较大字段时调用获取当前比特位置模块预先记下较大字段的开 始位置,在解码完较大字段内的其他子字段后再次调用获取当前比特位置模块记下其位 置,用该位置减去开始位置得到大字段内其他子字段的总长度,再用大字段的长度减去 它就得到备用比特串的长度;步骤(314)调用后移模块,向后移动指定的比特位数;步骤(315)判断当前比特串是否是控制比特串,如果是就执行步骤(316);步骤(316)判断是否是填充比特,如果是填充比特,则执行步骤(317);如果是常 量比特串,则执行步骤(318);步骤(317)调用判断填充比特模块;步骤(318)调用获取整型比特串模块;步骤(319)判断是否是分支选择比特串,如果是则将获取的比特串的值L/H或整数 常量作为if else语句或switch case语句的判断条件,否则执行步骤(320);步骤(320)判断是否是循环控制比特串,如果是则将获取的比特串的值作为for循 环或while循环语句的循环条件,否则该比特串是前导比特串;步骤G23)判断前导比特串的值是否是协议规定的值,如果不是就直接转到步骤(327) 解码异常结束。
3. 根据权利要求2所述的方法,其特征在于进一步包括步骤在步骤(305)、 (308)、 (310)、 (314)、 (317)、 (318)之后都可以紧接步骤(324), 调用解码调试信息输出模块,该模块将向调试窗口或文件输出解码调试信息,根据比特 串类型的不同调试信息的输出格式会不同;步骤(325)判断后续是否还有比特串,如果有则转步骤(303)继续处理,如果没 有就转步骤(326);步骤(326)结束该消息的解码。
4. 一种利用权利要求1所述的装置进行调试的方法,其特征在于包括步骤 步骤(401)解读一个比特串的描述;步骤(402)査看已经输出的调试信息,根据前一比特串的开始位置和长度确定当前比特串在比特流中的起始位置,在测试码流编辑界面使用定位功能定位该位置;步骤(403)判断该比特串是否是消息的数据字段,如果是则执行步骤(404); 步骤(404)输入满足协议要求的比特字符串,如果不是则执行步骤(405); 步骤(405)判断该比特串是否为分支选择控制字段,如果是则执行步骤(406); 步骤(406)査看已输出的调试信息确定已经测试过哪些条件分支,从未测试的条件 分支中选择一条,根据协议构造满足该选择分支的条件控制比特字符串;如果不是条件控制比特串则执行步骤(407);步骤(407)判断是否是循环控制比特串,如果是则执行步骤(408); 步骤(408)根据已经输出的调试信息和协议构造循环次数的控制条件比特串,重点 应该关注循环的边界值的条件测试,如果比特串也不是循环控制串,则执行步骤(409); 步骤(409)判断是否是前导比特串,如果是,就执行步骤(410);步骤(410)根据协议构造前导比特字符串;步骤(411)如果是备用比特串,构造满足协议长度的任意内容的比特字符串;步骤(412)在构造好比特字符串后,根据已经输出的调试信息确定当前构造的比特 串是新增到比特流中的,还是原比特流中已经存在与该比特串起相同作用的串,如果是 新增则执行步骤(413);如果是要替换旧串则执行步骤(414);步骤(413)使用测试码流编辑界面的插入功能将新构造的比特串插入到比特流的指 定位置;步骤(414)使用测试码流编辑界面的替换功能,结合已经输出的调试信息指定要替 换的旧串的起止位置或开始位置和长度,用新串替换旧串;步骤(415)调用测试码流编辑界面的测试功能,将字符形式的比特流转换为二进制 字节流作为输入进行解码测试;步骤(416)会输出当前比特流的解码测试信息,根据这一输出结果可以接着构造下 一比特串或修改旧的比特串;这样使构造比特流和输出调试信息反复迭代进行,就可以 增量式的逐步构造出一条消息的完整测试码流,并且可以覆盖所有条件分支和各种测试 用例。
5. —种利用权利要求1所述的装置进行显示的方法,其特征在于包括步骤 步骤(501)输入一个消息字段值;步骤(502)根据协议构造该消息字段的语义描述字符串;步骤(503)根据字段间的包含关系确定该消息字段的縮进等级;步骤(504)调用显示模块中的格式化消息数据字段模块,以缩进等级为缩进控制参 数,以语义字符串为格式化字符串,以字段值为格式化字符串的可变参数值;步骤(505)判断是否还有其他需要格式化显示的字段,如果有再转到步骤(501)处理, 如果没有就执行步骤(506);步骤(506)调用获取格式化后的消息显示字符串模块来得到整条消息的格式化显示 字符串,该字符串包含了消息中每个字段的语义和值以及缩进格式,将直接在图形用户 界面(106)进行显示。
全文摘要
本发明涉及一种移动无线网络消息的解码、调试、显示装置及其方法,该装置包括解码模块,包含一系列消息解码模块,解码后的消息被保存到对应的消息结构203中;显示模块,将消息结构格式化为含有消息语义的显示字符串供界面显示;调试模块,为解码模块构造测试码流、输出调试信息。本发明有效地屏蔽了逻辑描述与实际存储之间的不一致性,提高了解码工作的效率和正确性。
文档编号H04L1/00GK101404515SQ20081017588
公开日2009年4月8日 申请日期2008年11月7日 优先权日2008年11月7日
发明者魏凌云 申请人:武汉虹信通信技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1