專利名稱:可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法
技術領域:
本發(fā)明涉及通信技術領域,特別涉及可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法。
背景技術:
對等層協(xié)議之間交換的信息單元稱為協(xié)議數(shù)據(jù)單元(Protocol Data Unit,PDU)。 為了減少傳遞PDU所需要的帶寬,各種通信協(xié)議都在PDU編碼格式方面進行了專門的設 計,以圖采用盡可能少的比特來傳遞盡可能多的信息。這種壓縮編碼格式的數(shù)據(jù)雖然易于 傳輸,但給通信軟件的處理帶來不便,所以在通信協(xié)議棧的開發(fā)和測試中,需要編寫專門的 PDU編解碼程序以實現(xiàn)PDU比特串和應用程序內部數(shù)據(jù)結構之間的轉換。在一些復雜通信 系統(tǒng)的協(xié)議棧開發(fā)中,PDU編解碼程序的代碼量甚至可以占到信令處理部分的一半。手工 編寫PDU編解碼程序不但工作量大,而且容易出錯。協(xié)議數(shù)據(jù)單元編解碼程序自動生成系 統(tǒng),可以有效地提高代碼的開發(fā)效率、可維護性和性能。要實現(xiàn)PDU編解碼代碼的生成,就需要有一種適合描述系統(tǒng)PDU格式的形式化語 言。目前有許多形式化語言標準可以選擇,如ASN. 1、CSN. 1、XML、DCL等,但是仍然沒有一 種形式化語言能夠成為描述通信協(xié)議的唯一標準。即使在同一個協(xié)議棧中,不同的組成部 分也可能使用不同的協(xié)議描述方法,如3GPP的UMTS標準的3層協(xié)議的各個子層采用的描 述方法就不統(tǒng)一,RRC子層使用的描述語言是ASN. 1,而CM和MM子層使用的是表格形式。不同通信系統(tǒng)所支持的PDU編碼方式也是不同的。例如對于采用ASN. 1語言描述 的PDU,有BER、PER、DER、XER、CER等多種不同的編碼規(guī)則。但是,仍然有很多現(xiàn)有的通信標 準不能使用這些編碼規(guī)則進行描述。為此,ITU-T在2002年制訂了新的編碼規(guī)則標準ECN。 該標準允許用戶提供一個編碼定義模塊來描述協(xié)議所采用的編解碼規(guī)則,從而實現(xiàn)對各種 復雜的協(xié)議規(guī)則的支持。多數(shù)現(xiàn)有系統(tǒng)對每種編碼規(guī)則和每種目標平臺都提供一段專門的代碼進行支持, 每增加一種編碼規(guī)則或者一種目標平臺,都需要進行程序修改,這種方法存在以下問題1、擴展性差,增加新的目標平臺,必須編寫新的代碼。2、用戶不能獨立地進行新的目標平臺的開發(fā)工作,而必須對代碼生成程序的工作 原理非常熟悉,所以通常目標平臺的移植工作都是由代碼生成系統(tǒng)的開發(fā)者完成的。3、由于擴展困難,支持的目標平臺的數(shù)量非常有限。多數(shù)代碼生成系統(tǒng)只支持一、 兩種編程語言,而且必須使用指定的硬件系統(tǒng)、操作系統(tǒng)、編譯系統(tǒng)和編解碼函數(shù)庫。雖然也有系統(tǒng)提供對編碼規(guī)則的描述,如支持ECN規(guī)則的工具,但是ECN規(guī)則沒有 提供目標平臺的描述功能,只能實現(xiàn)有限的編碼規(guī)則定制,在增加新的目標平臺的支持上 仍然存在著上述問題。
發(fā)明內容
本發(fā)明的目的在于提供可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法,使用該方法設計的系統(tǒng),可以方便地生成支持各種目標平臺的PDU編解碼代碼,特別是 可以在不修改代碼生成系統(tǒng)的情況下,由用戶完全定制目標平臺和生成代碼的模板。要使用本發(fā)明所設計的系統(tǒng)自動生成PDU編解碼代碼,首先需要編寫目標平臺特 性描述文件,該文件描述特定目標平臺的基本特性,這些特性通常和編碼規(guī)則無關,只與目 標平臺的編程語言、操作系統(tǒng)、硬件系統(tǒng)、編譯系統(tǒng)、編解碼函數(shù)庫等特性有關。目標平臺是指所生成的代碼的運行環(huán)境。目標平臺一般包括以下要素 1、程序語言,不同的語言編寫的編解碼代碼的差異是明顯的;2、硬件系統(tǒng),包括CPU的位數(shù)、大端(Big Endian)與小端(Little Endian)等都 是在編寫程序時需要考慮的問題;3、操作系統(tǒng),也包括不使用操作系統(tǒng)的情況,不同的操作系統(tǒng)所提供的應用程序 接口函數(shù)是不同的;4、編譯系統(tǒng),即使同一種語言的不同編譯器對語言標準的支持往往有所差異,對 生成代碼的要求也有可能不同;5、編解碼函數(shù)庫,不同的程序用途對編解碼函數(shù)庫的要求可能是不同的。例如采 用圖形界面顯示PDU編解碼結果的程序和不采用任何用戶界面僅進行數(shù)據(jù)轉換的程序,所 使用的函數(shù)庫是不同的。以上這些要素中任何一個發(fā)生變化,所生成的代碼就會有不同,一般都需要對代 碼生成系統(tǒng)進行修改,以適應目標平臺的變化。任何PDU都是由基本元素和組合元素組成的?;驹厥窍到y(tǒng)內部支持的獨立的 PDU元素,完成基本元素的編解碼過程不需要依賴其他基本元素的編解碼過程。組合元素是 一個或多個基本元素按照一定的原則組成的?;驹乜赡芤蛳到y(tǒng)的支持不同而不同,例 如如果系統(tǒng)直接提供了復數(shù)類型的編解碼函數(shù),則復數(shù)類型是一個基本類型;反之,復數(shù)類 型不是基本類型,必須看作兩個實數(shù)類型的組合類型。目標平臺特性表中主要元素包括(1)基本元素的類型定義(type)、編碼函數(shù)(encode)和解碼函數(shù)(decode)所對 應的生成代碼。(2)組合元素的類型定義(type)、編碼函數(shù)(encode)和解碼函數(shù)(decode)所對 應的生成代碼。(3)符號名轉換規(guī)則NAMEREPLACE。編程語言和PDU描述語言對合法字符的規(guī)定不 一定相同,此時需要定義一條NAMEREPLACE規(guī)則,將PDU描述文件中的元素名或類型名中出 現(xiàn)的指定字符替換為目標平臺語言中的合法字符。在一個目標平臺特性表中,NAMEREPLACE 規(guī)則可以沒有,也可以有一條或多條。(4) SORT屬性,表示目標平臺是否需要對類型定義的出現(xiàn)先后順序進行排序。例如 在C語言中,如果一個組合類型A中出現(xiàn)了另一個組合類型B,B的定義必須在A的前面。采用本發(fā)明設計的系統(tǒng)自動分析目標平臺特性描述文件,并建立相應的目標平臺 特性表。目標平臺特性表的作用是為了程序快速查找目標平臺的特性,可以采用數(shù)組、鏈 表、樹、圖等各種存儲結構。本發(fā)明提供的方法進行如下代碼自動生成第1步編寫PDU描述文件,描述PDU內部元素的組成。該文件可以采用通用的形式化描述語言,如ASN. 1、CSN. 1、XML、DCL、DSL、C/C++語言、Pascal語言、Java語言,也可 以采用其他方式進行表述,如圖形用戶界面、表格。第2步系統(tǒng)自動分析PDU描述文件,并根據(jù)其內容生成與目標平臺無關的抽象語 法樹。該抽象語法樹的每個子節(jié)點必須是系統(tǒng)支持的基本元素類型。如果某個節(jié)點不是基 本元素,而是組合元素,則必須將其進一步分解為基本元素的組合,并將分解后的各個基本 元素作為該節(jié)點的子節(jié)點。第3步系統(tǒng)遍歷第2步所產(chǎn)生的抽象語法樹,并利用事先建立的目標平臺特性表 生成與目標平臺相關的數(shù)據(jù)字典。整個遍歷的過程可以分為以下幾個子步驟第3. 1步判斷目標平臺的SORT屬性是否為TRUE,如果為TRUE則分析各類型定 義的依賴關系,將不依賴于其他類型的類型定義排在前面,依賴其他類型的類型定義排在 后面;如果SORT屬性為FALSE,則忽略本步驟。第3. 2步遍歷抽象語法樹,檢查每個節(jié)點的元素名和組合類型名的是否需要進 行字符轉換,如果需要,按照表中的REPLACENAME項定義的規(guī)則進行替換。第3. 3步遍歷抽象語法樹,檢查每個節(jié)點的類型,使用目標平臺類型表中的該節(jié) 點類型所對應的type、encode和decode項來填充該節(jié)點所對應的字典中的item_type、 item_encode 和 item_decode 項。第3. 4步遍歷抽象語法樹,根據(jù)每個節(jié)點的屬性生成字典項,每個基本元素節(jié)點 對應一個字典,組合元素節(jié)點下的各子節(jié)點生成子字典。以上的第3. 2,3. 3和3. 4步可以同時進行,也可以依照一定次序先后進行。第4步編寫代碼模板庫,該代碼模板庫在編解碼代碼中嵌入模板變量和模板函 數(shù)。代碼模板庫通常和PDU編碼規(guī)則有關,但是和基本數(shù)據(jù)元素的編解碼函數(shù)無關。第5步模板引擎利用第3步生成的數(shù)據(jù)字典替換第4步產(chǎn)生的代碼模板庫中的 模板變量和模板函數(shù),生成針對特定目標平臺的PDU編解碼代碼。以上步驟中的第4步也可以在第1步之前完成。對于常用的編碼規(guī)則和目標平臺, 可以將代碼模板庫和目標平臺描述文件固化在系統(tǒng)中。有益效果本發(fā)明克服了現(xiàn)有技術的擴展性差、目標平臺和PDU編解碼代碼生成系統(tǒng)依賴性 高的缺點。用戶只需要針對選定的目標平臺編寫目標平臺特性描述文件,根據(jù)特定協(xié)議的 編解碼規(guī)則編寫代碼模板庫就可以實現(xiàn)新的目標平臺的移植,而完全不需要修改PDU編解 碼代碼生成系統(tǒng)的核心部分,操作簡便,實施容易。
圖1可變目標的協(xié)議數(shù)據(jù)單元編解碼 代碼自動生成的實現(xiàn)方法的流程圖。圖2是可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法生成的與目標 平臺無關的抽象語法樹。
具體實施例方式下面對本發(fā)明作進一步詳細說明。假定所使用的目標平臺為基于Telelogic TAU G2的UML語言,采用ASN. 1語言進行PDU描述。系統(tǒng)支持的基本元素有空類型(NULL)、整數(shù)型(INTEGER)、布爾型(BOOLEAN)、 實數(shù)型(REAL)、枚舉型(ENUM)、比特串類型(BIT STRING)、字符串類型(OCTET STRING)。組 合元素包括 SEQUENCE OF、SET OF、CHOICE、SEQUENCE 和 SET。編寫目標平臺特性描述文件,該文件包括以下內容(1) NULL、INTEGER、BOOLEAN、REAL、ENUM、BIT STRING、OCTET STRING 等基本元素的類型定義(type)、編碼函數(shù)(encode)、解碼函數(shù)(decode)所對應的Telelogic TAU G2 的代碼。(2) SEQUENCE OF、SET OF、CHOICE、SEQUENCE 和 SET 等組合元素類型定義(type)、 編碼函數(shù)(encode)、解碼函數(shù)(decode)所對應的Telelogic TAU G2的代碼。(3) ASN. 1中允許元素名或類型名中使用“_”字符,而TAU G2不允許在變量或函數(shù) 名中使用“_”字符,需要定義一條NAMEREPLACE規(guī)則,將PDU描述文件中的元素名或類型名 中出現(xiàn)的“_”字符替換為“_”字符。(4)TAU G2中不需要對組合元素的先后順序進行排序,所以SORT屬性為FALSE。系統(tǒng)自動分析目標平臺特性描述文件,并以數(shù)組形式建立目標平臺特性表,數(shù)組 中每一項對應一條目標平臺的特性。參照附圖1,本發(fā)明進行如下代碼生成第1步使用ASN. 1語言編寫PDU描述文件,PDU的編解碼規(guī)則采用ETSI 392-2 標準所描述的TETRA數(shù)字集群通信系統(tǒng)的PDU編解碼規(guī)則,PDU的內容如下表所示 在ASN. 1描述文件中,該PDU定義為一個SEQUENCE組合類型,包括2個 INTEGER類型的基本元素pdu-type和call-identifier,及1個SEQUENCE組合類型 optional-elements。而 optional-elementsSEQUENCE 組合類型包括 BIT STRING 類型的基 本元素prop ο第2步系統(tǒng)自動分析PDU描述文件,并根據(jù)其內容生成與目標平臺無關的抽象語 法樹,如圖3所示。第3步系統(tǒng)遍歷第2步所產(chǎn)生的抽象語法樹,并利用事先建立的目標平臺特性表 生成與目標平臺相關的數(shù)據(jù)字典。整個遍歷的過程可以分為以下幾個子步驟第3. 1步由于目標平臺的SORT屬性為FALSE,忽略本步驟。第3. 2步遍歷抽象語法樹,檢查每個節(jié)點的元素名和組合類型名中是否有“_”字 符,如果有將其替換為“_”。第3. 3步遍歷抽象語法樹,檢查每個節(jié)點的類型,使用目標平臺類型表中的該節(jié) 點類型所對應的type、encode和decode項來填充該節(jié)點所對應的字典中的item_type、item—encode 和 item—decode 項。第3. 4步遍歷抽象語法樹,根據(jù)每個節(jié)點的屬性生成字典項,DEMO-PDU 中pdu-type、 call-identifier 禾口 optional-elements 每個節(jié)點對應一個字典, optional-elements節(jié)點下包括一個子字典,子字典的內容對應prop子節(jié)點。第4步編寫如下代碼模板庫(1)類型定義模板組合類型采用class類型進行定義,組合類型內部的各基本元 素為class類型的內部成員。不屬于任何組合類型的基本類型采用syntype語句進行定義。(2)解碼程序模板每個組合類型的解碼函數(shù)為一個單獨的函數(shù),該函數(shù)內部包 括一個循環(huán),該循環(huán)對組合類型內部的各基本元素逐一進行解碼。不屬于任何組合類型的 基本類型不需要產(chǎn)生解碼代碼。(3)編碼程序模板每個組合類型的編碼函數(shù)為一個單獨的函數(shù),該函數(shù)內部包 括一個循環(huán),該循環(huán)對組合類型內部的各基本元素逐一進行編碼。不屬于任何組合類型的 基本類型不需要產(chǎn)生編碼代碼。第5步模板引擎利用數(shù)據(jù)字典中的數(shù)據(jù)替換代碼模板庫中的模板變量和模板函 數(shù),生成基于Telelogic TAU G2的UML平臺的PDU編解碼代碼。本發(fā)明包括但不局限于本實施例,凡是在本發(fā)明的精神和原則以下,對本發(fā)明的 局部改進、等同替換,都將視為在本發(fā)明的保護范圍之下。
權利要求
可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法,其特征在于采用本發(fā)明設計的系統(tǒng)自動分析目標平臺特性描述文件,并建立相應的目標平臺特性表;本發(fā)明提供的方法進行代碼自動生成第1步編寫PDU描述文件,描述PDU內部元素的組成;第2步系統(tǒng)自動分析PDU描述文件,并根據(jù)其內容生成與目標平臺無關的抽象語法樹;第3步系統(tǒng)遍歷第2步所產(chǎn)生的抽象語法樹,并利用事先建立的目標平臺特性表生成與目標平臺相關的數(shù)據(jù)字典;整個遍歷的過程可以分為以下幾個子步驟第3.1步判斷目標平臺的SORT屬性是否為TRUE,如果為TRUE則分析各類型定義的依賴關系,將不依賴于其他類型的類型定義排在前面,依賴其他類型的類型定義排在后面;如果SORT屬性為FALSE,則忽略本步驟;第3.2步遍歷抽象語法樹,檢查每個節(jié)點的元素名和組合類型名的是否需要進行字符轉換,如果需要,按照表中的REPLACENAME項定義的規(guī)則進行替換;第3.3步遍歷抽象語法樹,檢查每個節(jié)點的類型,使用目標平臺類型表中的該節(jié)點類型所對應的類型定義、編碼函數(shù)和解碼函數(shù)來填充該節(jié)點所對應的字典中的item_type、item_encode和item_decode項;第3.4步遍歷抽象語法樹,根據(jù)每個節(jié)點的屬性生成字典項,每個基本元素節(jié)點對應一個字典,組合元素節(jié)點下的各子節(jié)點生成子字典;以上的第3.2、3.3和3.4步可以同時進行,也可以依照一定次序先后進行;第4步編寫代碼模板庫,該代碼模板庫在編解碼代碼中嵌入模板變量和模板函數(shù);代碼模板庫通常和PDU編碼規(guī)則有關;第5步模板引擎利用第3步生成的數(shù)據(jù)字典替換第4步產(chǎn)生的代碼模板庫中的模板變量和模板函數(shù),生成針對特定目標平臺的PDU編解碼代碼;以上步驟中的第4步也可以在第1步之前完成。
2.可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法,其特征在于任何PDU都是由基本元素和組合元素組成的;基本元素是系統(tǒng)內部支持的獨立的PDU 元素,完成基本元素的編解碼過程不需要依賴其他基本元素的編解碼過程;組合元素是一 個或多個基本元素按照一定的原則組成的。
3.可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法,其特征在于 目標平臺特性表中的元素包括但不限于(1)基本元素的類型定義、編碼函數(shù)和解碼函數(shù)所對應的生成代碼;(2)組合元素的類型定義、編碼函數(shù)和解碼函數(shù)所對應的生成代碼;(3)符號名轉換規(guī)則NAMEREPLACE;則需要定義一條NAMEREPLACE規(guī)則,將PDU描述文 件中的元素名或類型名中出現(xiàn)的指定字符替換為目標平臺語言中的合法字符;在一個目標 平臺特性表中,NAMEREPLACE規(guī)則為沒有、一條或多條中的一種;(4)SORT屬性,表示目標平臺是否需要對類型定義的出現(xiàn)先后順序進行排序。
4.可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法,其特征在于對于常用 的編碼規(guī)則和目標平臺,將代碼模板庫和目標平臺描述文件固化在系統(tǒng)中。
全文摘要
本發(fā)明公開了一種可變目標的協(xié)議數(shù)據(jù)單元編解碼代碼自動生成的實現(xiàn)方法。首先需要編寫目標平臺特性描述文件,該文件描述特定目標平臺的基本常規(guī)特性,接著,編寫PDU描述文件,描述PDU內部元素的組成,系統(tǒng)自動分析PDU描述文件,并根據(jù)其內容生成與目標平臺無關的抽象語法樹,然后,系統(tǒng)遍歷抽象語法樹,并利用目標平臺特性表生成與目標平臺相關的數(shù)據(jù)字典;最后,編寫代碼模板庫,生成針對特定目標平臺的PDU編解碼代碼。使用該方法設計的系統(tǒng),可以方便地生成支持各種目標平臺的PDU編解碼代碼,特別是可以在不修改代碼生成系統(tǒng)的情況下,由用戶完全定制目標平臺和生成代碼的模板。
文檔編號H04L29/06GK101841515SQ200910080458
公開日2010年9月22日 申請日期2009年3月19日 優(yōu)先權日2009年3月19日
發(fā)明者侯舒娟, 吳嗣亮, 孫昕, 張欽, 李海, 鄭哲 申請人:北京理工大學