專利名稱:一種解碼方法及裝置的制作方法
技術領域:
本發(fā)明涉及通信技術領域,尤其涉及一種解碼方法及裝置。
背景技術:
路測軟件,需要對測試手機或者測試模塊發(fā)出的消息,進行解碼,將消息轉換成管理對象(結構),這個對象包括若干屬性或者子對象,然后根據(jù)對象的屬性計算得到信息元(IE)。現(xiàn)有技術在讀取消息的過程中,按照順序將消息中的字節(jié),毫無選擇地,全部保存在內存中的一個通用結構中,因此,處理速度比較慢,占用內存相 對比較大。綜上所述,現(xiàn)有技術路測軟件,需要對測試手機或者測試模塊發(fā)出的消息,逐個字節(jié)地進行解碼,然后通過計算得到IE,解碼過程效率比較低,速度比較慢。
發(fā)明內容
本發(fā)明實施例提供了一種解碼方法及裝置,用以提高對測試設備發(fā)出的消息的解碼速度,從而快速得到IE。本發(fā)明實施例提供的一種解碼方法包括根據(jù)信息元IE的表達式,確定對測試設備發(fā)出的消息進行解碼以得到IE所需要的屬性,并生成用于確定該屬性的值的指示信息;根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值,并根據(jù)該屬性的值計算得到IE。本發(fā)明實施例提供的一種解碼裝置包括預處理單元,用于根據(jù)信息元IE的表達式,確定對測試設備發(fā)出的消息進行解碼以得到IE所需要的屬性,并生成用于確定該屬性的值的指示信息; 解碼單元,用于根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值;計算單元,用于根據(jù)該屬性的值計算得到IE。本發(fā)明實施例,根據(jù)信息元IE的表達式,確定對測試設備發(fā)出的消息進行解碼以得到IE所需要的屬性,并生成用于確定該屬性的值的指示信息;根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值,并根據(jù)該屬性的值計算得到IE,從而實現(xiàn)了有選擇地解碼,跳過不需要的字節(jié),提高了對測試設備發(fā)出的消息的解碼速度,能夠快速得到IE。
圖I為本發(fā)明實施例提供的一種解碼方法的流程示意圖;圖2為本發(fā)明實施例提供的一種解碼裝置的結構示意圖。
具體實施方式
本發(fā)明實施例提供了一種解碼方法及裝置,用以提高對測試設備發(fā)出的消息的解碼速度,從而快速得到IE。參見圖I,本發(fā)明實施例的提供一種解碼方法包括步驟S101、根據(jù)信息元IE的表達式,確定對測試設備發(fā)出的消息進行解碼以得到IE所需要的屬性,并生成用于確定該屬性的值的指示信息;S102、根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值,并根據(jù)該屬性的值計算得到IE。較佳地,所述指示信息包括IE對應的一個或多個屬性名,以及每個屬性在測試設備發(fā)出的消息中的偏移位置信息。較佳地,所述偏移位置信息為測試設備發(fā)出的消息中的偏移位置的計算公式。較佳地,所述計算公式引用了一個或多個屬性作為變量。較佳地,所述根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值,包括根據(jù)IE對應的的屬性,以及該屬性在測試設備發(fā)出的消息中的偏移位置信息,跳過不需要的字節(jié),直接確定該屬性的值。下面給出具體的解釋說明。關于步驟SlOl :步驟SlOl實際上是在系統(tǒng)初始化時,做如下處理步驟一先對IE進行預處理,對IE的公式進行分析,得出計算這些IE需要哪些屬性。步驟二 對完整版的信息模型進行分析,形成一個精簡版的信息模型。完整版的信息模型,即完整地按照先后順序描述整條消息的結構,描述時將消息中的信息分為如下若干種類型進行描述一、普通屬性是指INT8、UINT8、INT16、UINT16、INT32、UINT32 這幾種數(shù)據(jù)類型,通過name、type分別標識名字和類型。<attr name = “this_attr_name,,type = “this_type,,>〈/attr>type 的值可以為INT8、UINT8、INT16、UINT16、INT32、UINT32舉例<attr name = “myname”type =“UINT8”X/attr>,表不一個名字為 myname、類型為ΠΝΤ8的數(shù)據(jù)。二、數(shù)組數(shù)組分為2種類型,定長和變長用type = “array”來標識這是數(shù)組。用is_length_fix來表示數(shù)組是定長還是變長,如果定長,則is_length_fix =1,并且用length來表示數(shù)組長度;如果變長,則is_length_fix = O,并用長度指示符relateattr指不長度。
長度指示符是一種特殊的指示符,即表示指示這個數(shù)組有多長的是哪一個屬性。下面分別描述如下第一種定長數(shù)組屬性,如下所示<attr name = “array name,,type = “array,,>〈arraydisc is_length_fix =,,l,,arraytype =,,this_array_type,,length=,,array_length,,/> </attr>其中,is_length_fix = I表示這是定長數(shù)組,length的值表示數(shù)組長度。arraytype表示這個數(shù)組是什么數(shù)組,例如,是UNIT8數(shù)組、UNIT16數(shù)組、還是其他數(shù)組。舉例<attr name = “array name” type =“8”>〈arraydisc is_length_fix =,,I,,arraytype = ”UINT8”length =”1023,,/〉</attr>這是一個UNIT8的定長數(shù)組,長度為1023。第二種變長數(shù)組個數(shù)和數(shù)組的數(shù)據(jù)可能是非連續(xù)的,此時,在消息中的存儲格式如下
有效數(shù)組個數(shù)I其他數(shù)據(jù)數(shù)組的數(shù)據(jù)數(shù)組個數(shù)和數(shù)組的數(shù)據(jù)也可能是連續(xù)的。此時,在消息中的存儲格式如下
有效數(shù)組個數(shù)數(shù)組的數(shù)據(jù)Xml的描述方式和定長完全相同,只是用is_length_fix = O來表示變長,用relateattr表示長度指示符(即存儲格式描述中的有效數(shù)組個數(shù))的名稱。舉例在完整版的信息模型中如下描述
<attr name=’,This—array—length” type = “UNIT8,,></attr>
<attr name = “array name” type = “array,,>
〈arraydisc is Iengthfix=O relateattr= “This—array—I engdi”arraytype=,’TNT8” ></arraydisc>
</attr>這是一個NIT8的數(shù)組,其長度依賴于數(shù)組長度指示符relateattr, relateattr的值是“This_array_length”,因此需要讀出屬性This_array_length的值,才能知道數(shù)組長度。
三、結構(Struct)Struct包含若干普通屬性,也可以包含子結構(struct)或者數(shù)組(array)。Struct需要羅列出這個結構中包含的所有的成員(屬性),如下所示
〈struct name=“this—struct name,,〉
<attr name = “attrl” type = “attrI—type’,></attr>/* 這個 struct 包含的第
一個屬性*/
<attr name =‘‘attr2’’ type =‘‘attr2—type’’></attr>/* 這個 struct 包含的第
二個屬性*/
〈/struct〉結構中包含數(shù)組的情況即在結構中添加一個屬性,該屬性的描述方法參見上述數(shù)組一節(jié)的描述。舉例如下
〈struct name=“this_stmct name,,〉
<attr name = “attrl” type = “attrl—type’’></attr>/*這個 struct 包含的第
一個屬性*/
<attr name = “attr2” type = “attr2—type’’></attr>/* 這個 struct 包含的第
二個屬性
<attr name = “array name” type = “array”〉/*這是這個結構包含的數(shù)組,type = “array”表示這是數(shù)組*/
〈arraydisc is」ength—fix=0 relateattr= “This—array—length”arraytype=’’INT8” ></arraydisc〉/*數(shù)組的定義,含義參見數(shù)組一節(jié)。
</attr>
〈/struct〉結構中包含子結構的情況,即結構嵌套,請參見下面的結構嵌套這一節(jié)的描述。四、結構數(shù)組即不是一個普通的數(shù)組,而是一個結構數(shù)組,和普通數(shù)組的不同之處在于要數(shù)值數(shù)組類型為struct (即arraytype =”struct”),還要額外設置結構的名稱(structname)。、
結構數(shù)組,如下所示
<struct name = “sample” >
<attr name=,,effect—number” type = “UNIT8,,></attr>
<attr name = “array name” type = “array,,〉/* 通過 type = “array”表示
這是一個數(shù)組*/
〈arraydisc is Iengthfix=O relateattr =“effect—number” arraytype=”stmct,, structname=” this—struct,,></arraydisc>/* is Iength fix=O 表
示這是哭長數(shù)組,relateattr =“effect—number”表示數(shù)組長度要查effect—number的值才知道,arraytype=”stmct”指示這是一個結構數(shù)組,而不是UINT8數(shù)組或者其他數(shù)組,structname=” this—struct”表示這個結構數(shù)組對應的結構是
this struct , this struct的定義參見后面兒行*/
</attr>
〈/struct >
〈struct name= “this—struct’’〉/* 這是 this—struct 的定義*/
</struct>五、結構嵌套結構中可以包含結構。結構中,可以包含特殊的元素,即包含子結構,這種情況下,這個元素使用type =“ struct ”來標識。描述方法如下所示〈struct name=“this_stmct name,’〉
<attr name = “sub—struct —instance” type = “struct”〉/* type = “struct”表示這里面嵌套了一個子結構。*/
〈structdisc structname=” sub—struct” />/*嵌套的結構名稱*/
</attr>
〈/struct〉
〈struct name=“sub—struct”〉/*嵌套的結構的具體描述*/
<attr name = “sub—struct—attrI” type = “attrl—type,,></attr>/*嵌套的這個結構包含了一個屬性,實際情況中,可以包含一個或者多個屬性,這里只是
舉例*/
〈/struct〉六、選擇(choice)類型根據(jù)某個屬性的值,選擇后面的若干結構,可能是A、B、C。例如,該屬性值為0,則是A結構,該屬性是1,則是B結構,該屬性是2,則是C結構。結構Choice_Type_舉例如下面的表一所示
權利要求
1.一種解碼方法,其特征在于,該方法包括 根據(jù)信息元IE的表達式,確定對測試設備發(fā)出的消息進行解碼以得到IE所需要的屬性,并生成用于確定該屬性的值的指示信息; 根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值,井根據(jù)該屬性的值計算得到IE。
2.根據(jù)權利要求I所述的方法,其特征在于,所述指示信息包括 IE對應的ー個或多個屬性名,以及每個屬性在測試設備發(fā)出的消息中的偏移位置信o
3.根據(jù)權利要求2所述的方法,其特征在于,所述偏移位置信息為測試設備發(fā)出的消息中的偏移位置的計算公式。
4.根據(jù)權利要求3所述的方法,其特征在于,所述計算公式引用了ー個或多個屬性作為變量。
5.根據(jù)權利要求2、3或4所述的方法,其特征在于,所述根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值,包括 根據(jù)IE對應的的屬性,以及該屬性在測試設備發(fā)出的消息中的偏移位置信息,跳過不需要的字節(jié),直接確定該屬性的值。
6.一種解碼裝置,其特征在于,該裝置包括 預處理単元,用于根據(jù)信息元IE的表達式,確定對測試設備發(fā)出的消息進行解碼以得到IE所需要的屬性,并生成用于確定該屬性的值的指示信息; 解碼單元,用于根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值; 計算單元,用于根據(jù)該屬性的值計算得到IE。
7.根據(jù)權利要求6所述的裝置,其特征在于,所述指示信息包括 IE對應的ー個或多個屬性名,以及該每個屬性在測試設備發(fā)出的消息中的偏移位置信o
8.根據(jù)權利要求7所述的裝置,其特征在于,所述偏移位置信息為測試設備發(fā)出的消息中的偏移位置的計算公式。
9.根據(jù)權利要求8所述的裝置,其特征在于,所述計算公式引用了ー個或多個屬性作為變量。
10.根據(jù)權利要求7、8或9所述的裝置,其特征在于,所述解碼単元,具體用于 根據(jù)IE對應的屬性,以及該屬性在測試設備發(fā)出的消息中的偏移位置信息,跳過不需要的字節(jié),直接確定該屬性的值。
全文摘要
本發(fā)明公開了一種解碼方法及裝置,用以提高對測試設備發(fā)出的消息的解碼速度,從而快速得到IE。本發(fā)明提供的一種解碼方法包括根據(jù)信息元IE的表達式,確定對測試設備發(fā)出的消息進行解碼以得到IE所需要的屬性,并生成用于確定該屬性的值的指示信息;根據(jù)所述指示信息,對測試設備發(fā)出的消息進行解碼,確定該屬性的值,并根據(jù)該屬性的值計算得到IE。
文檔編號H04M1/24GK102629951SQ20121004361
公開日2012年8月8日 申請日期2012年2月22日 優(yōu)先權日2012年2月22日
發(fā)明者余再躍, 李毅杰, 陳晨, 馬軍 申請人:上海大唐移動通信設備有限公司, 大唐移動通信設備有限公司