專利名稱:用于將設(shè)備集成到中間件框架中的代碼生成的制作方法
背景技術(shù):
1.發(fā)明領(lǐng)域本發(fā)明涉及電子網(wǎng)絡(luò)和消費電子產(chǎn)品領(lǐng)域,特別是涉及生成用于將設(shè)備集成到一個中間件框架中的程序代碼,例如一個用于家庭自動化網(wǎng)絡(luò)的中間件框架。
2.相關(guān)技術(shù)的描述隨著數(shù)字電子設(shè)備,例如DTV、D-VHS、電話、音頻播放機、靜止和視頻攝像機等等,變得越來越普遍,已經(jīng)組成了一些聯(lián)盟來定義中間件,以使這些設(shè)備易于控制和管理,這一般地是通過一個聯(lián)網(wǎng)的環(huán)境來進行。HAVi、Jini和UPnP就是這種努力的幾個例子。通常所知的“中間件”是一軟件層,位于網(wǎng)絡(luò)和應(yīng)用之間,提供與網(wǎng)絡(luò)上的設(shè)備相關(guān)的識別、鑒權(quán)、安全和控制等服務(wù)。
編寫軟件將一個設(shè)備集成到一個中間件框架中并不是一項簡單的任務(wù)。除了實現(xiàn)主要功能的軟件,數(shù)字設(shè)備還必須包括執(zhí)行中間件所要求的功能和使得該設(shè)備功能可以被其他設(shè)備和/或軟件通過網(wǎng)絡(luò)接入訪問和控制的軟件。
多個中間件的存在使這個問題更加激化。如果設(shè)備生產(chǎn)商希望提供一個模板將設(shè)備集成到這樣一個中間件中,生產(chǎn)商就需要提供多個模板,以及用來保證使用適當模板的相應(yīng)方案。同樣的情形,如果用戶環(huán)境包括多個網(wǎng)絡(luò),每個網(wǎng)絡(luò)有不同的中間件,那么用戶就必須學(xué)習(xí)這些網(wǎng)絡(luò)中每一個所要求的編程語言和中間件。
發(fā)明概要本發(fā)明的目的是提供一個方法和系統(tǒng),方便產(chǎn)生將一個設(shè)備接口到網(wǎng)絡(luò)所要求的程序代碼。本發(fā)明的另一個目的是提供方便對網(wǎng)絡(luò)上的設(shè)備控制所要求的代碼。
這些目的和其他目的是通過提供一個中間件代碼生成系統(tǒng)實現(xiàn)的,該系統(tǒng)生成用于將設(shè)備集成到網(wǎng)絡(luò)中的程序代碼。提供了多種工具和一個用戶界面,使得用戶可以創(chuàng)建包含生成中間件集成代碼所必須信息的數(shù)據(jù)庫。在一個優(yōu)選實施方案中,代碼生成系統(tǒng)被配置為方便用戶修改生成的代碼,特別是修改用于錯誤處理的代碼。在優(yōu)選實施方案中,代碼生成系統(tǒng)還生成了一個示例測試應(yīng)用程序,用于演示在一個應(yīng)用中如何使用生成的集成代碼。此外,在優(yōu)選實施方案中,代碼生成系統(tǒng)生成編譯工具,例如Makefiles。
附圖簡述參考附圖,更詳細地和通過例子來解釋本發(fā)明,其中
圖1給出了根據(jù)本發(fā)明的中間件代碼生成系統(tǒng)的實例框圖。
圖2給出了根據(jù)本發(fā)明的代碼生成引擎的實例框圖。
圖3給出了根據(jù)本發(fā)明,保存在HAVi規(guī)范數(shù)據(jù)庫功能控制模塊(FCM)部件中的信息的實例框圖,由代碼生成系統(tǒng)用來生成FCM代碼以方便將設(shè)備集成到HAVi中間件中。
圖4給出了根據(jù)本發(fā)明,由代碼生成系統(tǒng)使用的、保存在FCM部件的數(shù)據(jù)結(jié)構(gòu)部件中的信息的實例框圖。
圖5給出了根據(jù)本發(fā)明,由中間件代碼生成系統(tǒng)使用的、保存在FCM部件的服務(wù)應(yīng)用編程接口(API)部件中的信息的實例框圖。
圖6給出了根據(jù)本發(fā)明,由中間件代碼生成系統(tǒng)使用的、保存在FCM部件的事件部件中的信息的實例框圖。
圖7給出了根據(jù)本發(fā)明,由中間件代碼生成系統(tǒng)使用的、保存在FCM部件的通知特性部件中的信息的實例框圖。
圖8給出了根據(jù)本發(fā)明,由中間件代碼生成系統(tǒng)使用的、保存在專用鏈路數(shù)據(jù)庫的專用鏈路部件中的信息的實例框圖。
圖9給出了根據(jù)本發(fā)明,由中間件代碼生成系統(tǒng)使用的、保存在一個特定鏈路類型的鏈路狀態(tài)響應(yīng)部件中的信息的實例框圖。
圖10給出了根據(jù)本發(fā)明,在中間件代碼生成系統(tǒng)中生成的代碼的安裝實例框圖。
在所有附圖中,相同的參考編號表示相似或?qū)?yīng)的特征或功能。
發(fā)明詳述圖1給出了根據(jù)本發(fā)明的中間件代碼生成系統(tǒng)100的實例框圖。該代碼生成系統(tǒng)100包含軟件工具110、數(shù)據(jù)庫120、125、130、135和包括設(shè)備中間件和集成代碼的代碼生成引擎150。它被配置為使得能夠自動生成將一個電子設(shè)備集成到一個中間件框架例如HAVi網(wǎng)絡(luò)中的軟件。軟件工具110提供一個用戶界面,用于提供代碼生成引擎150生成集成代碼180模塊所要求的信息120-135。接口設(shè)備110也用于控制代碼生成過程,修改或升級該生成的代碼。信息120-135已被說明為被組織成數(shù)據(jù)庫的組合,其中術(shù)語數(shù)據(jù)庫用來表示邏輯數(shù)據(jù)存儲,其包含為了代碼生成的目的已結(jié)構(gòu)化的信息。該信息120-135包括一個規(guī)范數(shù)據(jù)庫120、一個堆棧信息數(shù)據(jù)庫125、一個模板數(shù)據(jù)庫130和一個專用鏈路數(shù)據(jù)庫135。雖然可以用一個真正的數(shù)據(jù)庫,也可以使用內(nèi)存(in-core)數(shù)據(jù)結(jié)構(gòu)和文件。
在操作中,系統(tǒng)100的用戶了解代碼180為其生成的設(shè)備的特點和功能。在一個典型的代碼生成過程中,用戶用軟件工具110指示代碼180為其生成的設(shè)備的類型,以及用于與該設(shè)備通信的專用鏈路的類型。例如,用戶可能指出該設(shè)備是一個VCR,它包括一個調(diào)諧器、一個磁帶錄像機和一個磁帶播放機作為子單元。軟件工具110也可以讓用戶指定中間件規(guī)范尚未覆蓋的設(shè)備特征。在優(yōu)選實施方案中,代碼生成系統(tǒng)150生成用于該設(shè)備的集成代碼模塊180和一個示例測試應(yīng)用程序185。集成代碼180用來將一個設(shè)備集成到中間件環(huán)境,測試應(yīng)用程序185用來演示如何在一個應(yīng)用中使用集成代碼180。代碼生成引擎150也生成一個指針的列表,例如線路編號和文件名,它們提供了對生成代碼180中推薦用戶修改部分的索引。修改信息優(yōu)選地通過用戶修改指南145的形式提供,并且這些修改優(yōu)選地定義為使得用戶不需要知道中間件的知識。一般情況下,推薦的修改145包括錯誤處理代碼。在代碼180的適當位置有注釋,向用戶說明為什么和怎樣修改代碼180。在優(yōu)選實施方案中,軟件工具110也提供了一個界面為用戶一個一個地展示代碼180中的代碼段,并在整個修改過程中指導(dǎo)用戶。在優(yōu)選實施方案中,代碼生成系統(tǒng)100還配置為生成用于所生成代碼的編譯實用程序,例如Makefiles。
代碼生成過程主要由中間件規(guī)范驅(qū)動。例如,用于HAVi錄像機(VCR)功能控制模塊(FCM)的代碼生成由HAVi VCRFCM規(guī)范驅(qū)動。為了實現(xiàn)這一點,中間件規(guī)范中的相關(guān)信息被轉(zhuǎn)換為代碼生成容易使用的一個形式(120)。軟件工具110也輔助從規(guī)范到規(guī)范數(shù)據(jù)庫的轉(zhuǎn)換。利用這些工具110,轉(zhuǎn)換通過兩個步驟進行。
步驟1用戶引導(dǎo)的自動轉(zhuǎn)換。軟件工具110包括剖析器和格式化器,自動將規(guī)范中的信息轉(zhuǎn)換到一個基于規(guī)范文本語法的規(guī)范數(shù)據(jù)庫120。這個步驟生成大部分的所需信息。這些工具允許用戶只選擇規(guī)范中與他們的事務(wù)有關(guān)的部分。例如,如果公司只生產(chǎn)錄像機和攝像機,就只要使用規(guī)范中與錄像機和攝像機相關(guān)的部分。
步驟2用戶擴充和規(guī)范。如果在規(guī)范中正式定義了語義信息,例如在UPnP的情況下,則信息被提取出來,并保存在規(guī)范數(shù)據(jù)庫120中。但是,如果在規(guī)范中語義信息并沒有正式表示,就像在HAVi的情況下,那么軟件工具110允許用戶根據(jù)規(guī)范定義的語義來擴充該規(guī)范數(shù)據(jù)庫120。語義信息一般來自對設(shè)備的了解和對設(shè)備規(guī)范的理解。例如,播放命令將錄像機從傳送模式改變到值‘播放’,這個變化就觸發(fā)了一個事件。用戶可以使用工具來指定中間件規(guī)范沒有包含的特征和專用鏈路信息。例如,如果攝像機有全球定位(GPS)能力,那么這個能力需要增加到規(guī)范數(shù)據(jù)庫中,以生成合適的代碼將這個能力輸出到該中間件。在HAVi的情況下,這個能力可以建模為攝像機設(shè)備的一個FCM。用戶也可以用工具修改模板130以影響將來的代碼構(gòu)造。
在下面的描述中,術(shù)語模塊和方法(函數(shù))遵照編程語言中定義的標準定義。在本領(lǐng)域中眾所周知,不同的編程語言對操作組使用不同的術(shù)語面向?qū)ο笳Z言,例如Java用“method”;過程語言,例如C、Pascal和Fortran用“procedure”、“subroutine”和“function”;如此等等。為了方便,術(shù)語“方法(函數(shù))”在下文中用來區(qū)別“method”這個編程解釋。術(shù)語代碼段在本申請中代表一個或多個連續(xù)程序語句的序列。
目標代碼180(要生成的代碼)的結(jié)構(gòu)和編碼風格被設(shè)計為簡化編碼生成算法。目標代碼模塊180被設(shè)計為使得模塊可以歸類成較少的組,一個組中的模塊結(jié)構(gòu)遵循相似的模式。諸如生產(chǎn)商名稱、設(shè)備類別和型號此類的參數(shù)可用于將所希望的代碼模塊與不相關(guān)的模塊區(qū)分開來。例如,用戶可以使用“飛利浦制造的錄像機型號xyz”來指定要產(chǎn)生的代碼模塊。諸如代碼類型(例如FCM或DCM)和使用的協(xié)議類型可用于進一步選擇所希望的模塊。例如,用戶可能為一個使用1394上的AV/C協(xié)議作為其專用鏈路的VCR選擇FCM生成器。類似的,模塊中的方法(函數(shù))和代碼段也可以劃分成多個組,一個組中的方法(函數(shù))和代碼段分別遵循相似的模式。如下面進一步討論的,上面對目標代碼180的設(shè)計使得利用代碼生成引擎150中的代碼生成器(圖2中的252、254和256)和模板130就可以編碼該目標代碼180的結(jié)構(gòu)。優(yōu)選地,一組類似代碼模塊的骨架被封裝在模塊生成器254中。一個模塊生成器254生成代碼模塊284。Client_Module_Generator(客戶端模塊生成器)和Sever_Module_Generator(服務(wù)器模塊生成器)是模塊生成器的例子,而Java類模塊是代碼模塊的例子。一組類似方法(函數(shù))的骨架被封裝在方法生成器252中。方法生成器252生成方法282。Client_Asycronous_Method_Generator(客戶端異步方法生成器)和Server_Operation_Method_Generator(服務(wù)器操作方法生成器)是方法生成器的例子。一組類似代碼段的骨架被封裝在代碼段生成器256中。代碼段的例子有告警代碼段,包含代碼段和錯誤處理代碼段等等。圖2中每個模板210、220,即方法模板210和代碼段模板220標記不同的地方。代碼段生成器256解析不同之處,以及生成連續(xù)語句序列286。Argument_List_Generator(自變量列表生成器)和Include_Block_Generator(包含塊生成器)是代碼生成器的例子。
一組語句的模式和一組簡單方法(函數(shù))的模式被封裝在模板130中。模板130包含代碼段的固定部分和根據(jù)所選的編程語言比如C語言的可變部分。模板的可變部分在代碼生成的時候解析,以使該模板130變成代碼180的有效代碼段。一個代碼段生成器一般包含一個或多個模板。模板可用來表示簡單方法(函數(shù)),假設(shè)方法(函數(shù))的代碼可通過解析模板變量生成。
在下面的描述中,術(shù)語樹、子樹、節(jié)點、葉、父和子遵循在計算機科學(xué)中使用的標準定義。優(yōu)選地,代碼生成引擎150配置為通過穿越一個代碼生成節(jié)點樹來生成代碼。一般情況下,樹的根部指示要為一個單獨的程序生成的所有模塊,這樣的程序比如是FCM服務(wù)器程序或FCM客戶端程序。該根的孩子是用于該程序所要求的代碼模塊的模塊生成器。一個模塊生成器節(jié)點是一個子樹的根,該子樹生成該模塊的部件;該子樹中的節(jié)點就是方法生成器和代碼段生成器。類似的,代表方法生成器的節(jié)點就是獲取方法結(jié)構(gòu)的子樹的根;子樹中的節(jié)點就是其他方法生成器和代碼段生成器。程序樹的一個葉子包含一個代碼段生成器。為保證代碼生成過程的終止,子樹的根不能作為同一子樹的任意節(jié)點出現(xiàn)。例如,模塊生成器不能作為它本身子樹的非根節(jié)點出現(xiàn),而方法生成器不能作為它本身子樹的內(nèi)部節(jié)點出現(xiàn)。
如上面所指出的,目標代碼180由代碼生成器252、254和256生成。每個代碼生成器知道怎樣生成目標代碼180的一個特定部分,例如一個模塊、一個函數(shù)或一個代碼段。在代碼生成過程中,生成器252、254或256利用用戶輸入,比如設(shè)備的類別、型號和生產(chǎn)商,從數(shù)據(jù)庫120、125和135找到信息,并用這些信息生成它所負責的代碼部分。當生成器遇到一個模板130,它就用來自數(shù)據(jù)庫120、125和135的知識解析該模板130中的可變部分,以及將模板130變成所希望的代碼。當一個父代碼生成器在穿越樹的時候遇到一個子代碼生成器時,父代碼生成器在繼續(xù)它自己的代碼生成之前,調(diào)用子代碼生成器來生成代碼中相應(yīng)的部分。例如,當一個模塊生成器遇到一個方法生成器時,模塊生成器就調(diào)用方法生成器來生成所希望的方法。在該方法生成之后,父模塊生成器再繼續(xù)它的工作。類似的,當一個方法生成器遇到一個子方法生成器或一個子代碼段生成器,它就調(diào)用該子代碼生成器,并且只有在該子生成器完成后它才再繼續(xù)自己的工作。
在本發(fā)明的優(yōu)選實施方案中,如圖1所示,提供了代碼高速緩存器155允許用戶保存生成的模塊和方法(函數(shù))用于將來的代碼生成。高速緩存器155包含指向代碼的指針(比如文件名)和代碼生成的條件。這些條件包括所有數(shù)據(jù)庫的版本信息和通過用戶界面輸入的用戶說明。使用代碼高速緩存器155的典型場合是當用戶修改部分設(shè)備規(guī)范120,例如,增加一個新的特征,并希望重新生成代碼時。本發(fā)明優(yōu)選實施方案中的代碼生成引擎150配置為只對受影響部分重新生成新的代碼180,并且對不受影響的部分使用高速緩存器155的代碼。
圖1中堆棧信息數(shù)據(jù)庫125包含代碼生成所需的中間件堆棧實現(xiàn)信息。數(shù)據(jù)庫125也明了堆棧實現(xiàn)的版本。數(shù)據(jù)庫125信息中的一個主要部分是在堆棧中聲明的用戶定義類型和包含在聲明中的文件名。這個信息用來生成包含文件。
圖1中模板數(shù)據(jù)庫130包含代碼生成引擎150所使用的所有模板。數(shù)據(jù)庫130的一個優(yōu)選實施方案將每個模板保存為一個文件,放在一個定義好的目錄下。模板的名稱明顯地指出了在代碼生成中該模板可以使用的位置。數(shù)據(jù)庫130也明了模板的版本。
圖1中新代碼信息數(shù)據(jù)庫140包含關(guān)于已經(jīng)被代碼生成系統(tǒng)生成的代碼的信息。例如,它包含在已生成代碼中聲明的用戶定義類型和包含在聲明中的文件名。這個信息用來生成包含文件。
圖1中的規(guī)范數(shù)據(jù)庫120將中間件規(guī)范中的語法和語義信息編碼成代碼生成引擎150可以有效使用以生成該設(shè)備-中間件集成代碼180的形式。規(guī)范數(shù)據(jù)庫120也保留版本信息。數(shù)據(jù)庫120的版本一般和對應(yīng)的中間件規(guī)范的版本相匹配。但是,如果用戶為了支持新的特征而修改數(shù)據(jù)庫120,那么該數(shù)據(jù)庫120就提供對它原始的版本編號的擴展。該版本信息用來從代碼高速緩存器155中選取合適的代碼。
數(shù)據(jù)庫120提供了產(chǎn)生集成代碼180中專門用于特定類型設(shè)備的部分所要求的信息。例如,在HAVi實施方案中,數(shù)據(jù)庫120包括產(chǎn)生用于設(shè)備控制模塊(DCM)和功能控制模塊(FCM)的集成代碼所要求的信息。
圖3到7給出了為每個FCM類型保存的信息的例子。在這些例子中,該信息被組織為樹。
圖3給出了供根據(jù)本發(fā)明的中間件代碼生成引擎150使用的一個功能控制模塊(FCM)數(shù)據(jù)庫310的上面三級的實例框圖。第二級包括一個總FCM規(guī)范節(jié)點322和由FCM類型索引的規(guī)范信息節(jié)點,F(xiàn)CM類型比如像錄像機324、調(diào)諧器326等等??侳CM規(guī)范322包括可用于所有FCM的信息和其他只應(yīng)用于特定類型設(shè)備的規(guī)范。第三級給出由第二級中父節(jié)點保存的信息類型。例如,如圖3所示,對于錄像機節(jié)點324,第三級包括數(shù)據(jù)結(jié)構(gòu)331、應(yīng)用程序接口(API)332、事件333和通知特性334節(jié)點。第三級也包括交互節(jié)點335,其記錄與這個FCM類型324交互的HAVi管理器(例如資源管理器、流管理器等)。模塊高速緩存器節(jié)點336明了已由用戶保存的模塊代碼284的版本,也記錄產(chǎn)生代碼模塊的條件,因此可以獲得匹配所要求的創(chuàng)建條件的代碼。這些條件包括用戶修改的最近時間和產(chǎn)生代碼中使用的所有數(shù)據(jù)庫和模板的版本。
在HAVi情況下,一個DCM包含一個或多個FCM。根據(jù)本發(fā)明,在一個根節(jié)點DCM(沒有給出)下的結(jié)構(gòu)與圖3中FCM310下的結(jié)構(gòu)相似,只是通知特性節(jié)點334由一個FCM節(jié)點(沒有給出)所代替。FCM部分明了包含在設(shè)備控制模塊(對應(yīng)包含特定功能的設(shè)備)中的功能控制模塊(例如錄音機、播放機、調(diào)諧器)。
圖4給出了圖3的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)庫331中數(shù)據(jù)結(jié)構(gòu)條目331’的實例框圖,它由根據(jù)本發(fā)明的、圖1的中間件代碼生成引擎150使用。為了表示的方便,符號(’)用在一個參考編號后表示具有相同參考編號數(shù)據(jù)項的例子。數(shù)據(jù)結(jié)構(gòu)331’記錄為一個特定FCM類型,例如錄像機類型,而定義的數(shù)據(jù)結(jié)構(gòu)。圖4給出了每個數(shù)據(jù)結(jié)構(gòu)的信息411-424,用于產(chǎn)生對于FCM類型特定的包含文件和聲明語句,和產(chǎn)生檢查數(shù)據(jù)有效性的代碼185。每個數(shù)據(jù)結(jié)構(gòu)331’有一個關(guān)聯(lián)的數(shù)據(jù)類型411和識別名412。在優(yōu)選實施方案中,數(shù)據(jù)結(jié)構(gòu)331’還以具有特定性質(zhì)418和可選的,一個預(yù)定義的法定值集合416為特征。每個數(shù)據(jù)結(jié)構(gòu)331’包含一個或多個成員414,每個成員有一個給定的類型422和識別名424。
為了使中間件能夠控制一個FCM,F(xiàn)CM代碼將服務(wù)輸出給中間件。例如,一個VCR FCM向中間件輸出播放、記錄、倒帶等服務(wù)。為了輸出每個服務(wù),由中間件規(guī)范定義了一個API,以及為了代碼產(chǎn)生的目的,規(guī)范數(shù)據(jù)庫120記錄下這個API。圖5給出了根據(jù)本發(fā)明,與圖3中API塊332相對應(yīng)的一個服務(wù)API條目332’的實例框圖,它由圖1中的中間件代碼生成引擎150來使用。圖5給出了為每個服務(wù)API332’保存的信息511-524實例。此信息用來生成與不同模塊中的服務(wù)相關(guān)的方法(函數(shù))。例如,一個VCR FCM模塊包含方法(函數(shù))“播放”、“記錄”、“倒帶”、“前進”等。
提供者條目511指示這個服務(wù)是否應(yīng)由服務(wù)器或客戶端提供。
返回類型條目512給出由服務(wù)(即輸出服務(wù)的方法)332’返回的項目的數(shù)據(jù)類型。
名稱務(wù)目513記錄服務(wù)332’,如播放、記錄或快進等的名稱。
自變量條目514記錄應(yīng)該傳遞給服務(wù)332’或從它返回的參數(shù)。輸入/輸出條目522指示參數(shù)是否是只讀(輸入)、只寫(輸出)或可讀可寫(既輸入也輸出),而數(shù)據(jù)結(jié)構(gòu)條目524指示每個自變量的結(jié)構(gòu)。
性質(zhì)條目515記錄與服務(wù)有關(guān)的信息,例如,服務(wù)是否需要通過專用鏈路與物理設(shè)備通信,并且該條目被用于生成對專用鏈路的接口代碼180(圖1中)。
副作用條目516指示其值被API332’的激活(如果有的話)所改變的數(shù)據(jù)結(jié)構(gòu)326。副作用條目516也記錄改變后每個數(shù)據(jù)結(jié)構(gòu)新的值。一般情況下,這些數(shù)據(jù)結(jié)構(gòu)是前面提到的圖3中FCM310的數(shù)據(jù)結(jié)構(gòu)條目331’的子集。副作用516信息用來生成所生成代碼180中的通知代碼。
異常條目517指示與該服務(wù)相關(guān)的異常和錯誤條件。雖然可以生成缺省代碼來處理異常和錯誤,但本發(fā)明優(yōu)選實施方案中的代碼生成系統(tǒng)100推薦用戶修改這些代碼部分,正如上面所討論的。
有效調(diào)用者條目518指示可以調(diào)用此API332’的有效軟件元素類型,并用來生成要求檢查調(diào)用者身份的代碼180。
方法高速緩存條目519跟蹤用戶為服務(wù)332’所保存的方法(函數(shù))。除了修改時間和版本信息外,方法高速緩存條目519還記錄方法(函數(shù))所屬的模塊類型。
圖6給出了圖3的事件條目333中一個事件333’的實例框圖,它由根據(jù)本發(fā)明的、圖1的中間件代碼生成引擎150使用。事件條目333’記錄圖3的FCM類型310應(yīng)被調(diào)用的事件。圖6給出了為每個事件333’保存的信息。此信息用于生成與事件相關(guān)的方法(函數(shù))和代碼段。圖6中各個節(jié)點612、613、614、619、622、624的含義與圖5中各個節(jié)點512、513、514、519、522和524的含義相同,即是返回類型、名稱、變量、輸入/輸出、數(shù)據(jù)結(jié)構(gòu)和方法高速緩存器、圖7給出了圖3的通知特性條目334中通知特性334’的實例框圖,它由根據(jù)本發(fā)明的、圖1的中間件代碼生成引擎150使用。通知特性334’記錄觸發(fā)一個FCM以當該特征改變值時發(fā)送通知的特性。數(shù)據(jù)結(jié)構(gòu)724和輸入/輸出722條目定義該特性,如上面關(guān)于條目524和522所討論的。通知特性信息334用來生成圖2中與通知相關(guān)的方法(函數(shù))282和代碼段284。
圖8給出了圖1的專用鏈路條目135中專用鏈路135’的實例框圖,它由根據(jù)本發(fā)明的中間件代碼生成引擎150使用。專用鏈路條目135記錄與代碼生成有關(guān)的生產(chǎn)商特定的信息,特別是關(guān)于每個專用鏈路的信息。圖8給出了為一個鏈路維持的信息實例。操作映射821給出了專用鏈路定義的操作和中間件規(guī)范定義的名稱間的對應(yīng)性,用于生成將來自中間件的命令翻譯為物理設(shè)備相應(yīng)操作的代碼180。鏈路狀態(tài)響應(yīng)823記錄來自該鏈路的響應(yīng)的名稱,且被用來生成處理該響應(yīng)的代碼180。
圖9給出了由根據(jù)本發(fā)明的圖1的中間件代碼生成引擎150使用的、鏈路狀態(tài)響應(yīng)條目823的鏈路狀態(tài)響應(yīng)823’的實例框圖,還給出了為每個鏈路狀態(tài)響應(yīng)保存的信息。名稱條目922是響應(yīng)的名稱,例如SUCCESS(成功)或NOT_IMPLEMENTED(未完成)。事件觸發(fā)器條目924指示應(yīng)該是響應(yīng)處理一部分的事件。為每個事件924保存的信息包括事件名稱931、觸發(fā)操作932、狀態(tài)數(shù)據(jù)應(yīng)從其讀取的服務(wù)器933,即目標服務(wù)器、應(yīng)采取的動作(讀或寄送)934和如果事件要被寄送則為參數(shù)值935。方法高速緩存條目926跟蹤用戶保存的用于每個鏈路狀態(tài)響應(yīng)832’的方法(函數(shù))。
圖10給出了在根據(jù)本發(fā)明的中間件代碼生成系統(tǒng)100中生成的代碼180、185安裝的實例框圖,用一個簡化的HAVi視圖作為例子。一個設(shè)備1050被說明為被配置為允許通過與兩個HAVi節(jié)點1010、1020的1394堆棧1040的IEEE-1394接口來控制其設(shè)備的主要功能1052。HAVi節(jié)點1010、1020是包含HAVi軟件元素1012、HAVi消息傳遞系統(tǒng)1030和1394堆棧1040的軟件容器。在這個例子中,假設(shè)測試應(yīng)用程序185在節(jié)點1010上提供,設(shè)備FCM在節(jié)點1020上提供。本例中節(jié)點1010上的應(yīng)用程序185通過節(jié)點1010上的FCM客戶端代碼180a與節(jié)點1010上的FCM服務(wù)器代碼180b交互。FCM客戶端代碼代表應(yīng)用程序185動作,它通過HAVi消息傳遞系統(tǒng)和1394堆棧與1020上的FCM服務(wù)器代碼通信。FCM服務(wù)器1020然后在應(yīng)用程序185的控制下與設(shè)備1050交互。
上面只是給出了本發(fā)明的主要原理。因此可以理解,本領(lǐng)域的技術(shù)人員可以設(shè)計不同的裝置,雖然在這里沒有明確地描述或展示,但是體現(xiàn)了本發(fā)明的主要原理,因此也在下面的權(quán)利要求的精神和范圍之內(nèi)。
權(quán)利要求
1.一種程序生成系統(tǒng),包含一個配置為基于中間件規(guī)范包含中間件信息的規(guī)范數(shù)據(jù)庫,一個中間件代碼生成引擎,它操作地與該規(guī)范數(shù)據(jù)庫相耦合,被配置為基于該中間件信息來產(chǎn)生中間件集成代碼。
2.如權(quán)利要求1的程序生成系統(tǒng),進一步包括一個模板數(shù)據(jù)庫,它被配置為包含一個或多個模板,并且其中該中間件代碼生成引擎進一步配置為使用來自該中間件信息的數(shù)據(jù)、通過該一個或多個模板的例示而產(chǎn)生該中間件集成代碼。
3.如權(quán)利要求1的程序生成系統(tǒng),進一步包括一個配置為包含專用于一個特定鏈路類型的鏈路信息的專用鏈路數(shù)據(jù)庫,該鏈路信息包含在用于該特定鏈路類型的鏈路操作名稱與包含在中間件信息中的中間件操作名稱之間的映射,并且其中上述中間件代碼生成引擎進一步配置為基于該鏈路信息而產(chǎn)生該中間件集成代碼。
4.如權(quán)利要求1的程序生成系統(tǒng),其中該中間件代碼生成引擎也配置為基于該中間件信息而產(chǎn)生示例測試應(yīng)用程序代碼。
5.如權(quán)利要求1的程序生成系統(tǒng),進一步包括代碼高速緩存器,它操作地與該中間件代碼生成引擎耦合,被配置為存儲至少一部分中間件集成代碼以便隨后重用。
6.如權(quán)利要求1的程序生成系統(tǒng),其中中間件代碼生成引擎也配置為生成指導(dǎo)信息,方便用戶修改至少一部分中間件集成代碼。
7.如權(quán)利要求1的程序生成系統(tǒng),其中中間件代碼生成引擎包括至少以下之一一個配置為生成代碼模塊的模塊生成器,一個配置為生成方法代碼的方法生成器,和一個配置為生成代碼語句的代碼段生成器。
8.如權(quán)利要求7的程序生成系統(tǒng),其中該方法生成器和代碼段生成器中的至少一個被配置為分別根據(jù)一方法模板和代碼段模板來生成方法代碼和代碼語句。
9.如權(quán)利要求1的程序生成系統(tǒng),其中上述中間件信息包含接口信息,用于將一個應(yīng)用接口到對應(yīng)該中間件信息的、通過一個網(wǎng)絡(luò)接受控制的設(shè)備的一個或多個功能。
10.如權(quán)利要求1的程序生成系統(tǒng),進一步包括一個包括方便創(chuàng)建規(guī)范數(shù)據(jù)庫的工具的用戶界面系統(tǒng)。
11.一種程序生成的方法,包括訪問一個配置為基于中間件規(guī)范包含中間件信息的規(guī)范數(shù)據(jù)庫,基于該中間件信息,生成中間件集成代碼。
12.如權(quán)利要求11的方法,進一步包括訪問一個配置為包含一個或多個模板的模板數(shù)據(jù)庫,并且其中生成該中間件集成代碼進一步包括利用來自該中間件信息的數(shù)據(jù),例示該一個或多個模板。
13.如權(quán)利要求11的方法,進一步包括訪問一個配置為包含專用于一個特定鏈路類型的鏈路信息的專用鏈路數(shù)據(jù)庫,該鏈路信息包含在用于該特定鏈路類型的鏈路操作名稱與包含在該中間件信息中的中間件操作名稱之間的映射,并且其中生成上述中間件代碼進一步包含基于該鏈路信息而生成該中間件集成代碼。
14.如權(quán)利要求11的方法,進一步包括根據(jù)該中間件信息,生成示例測試應(yīng)用程序代碼。
15.如權(quán)利要求11的方法,進一步包括存儲至少一部分中間件集成代碼以便隨后重用。
16.如權(quán)利要求11的方法,進一步包括提供方便用戶修改至少一部分中間件集成代碼的指導(dǎo)信息。
17.如權(quán)利要求11的方法,其中生成該中間件集成代碼包括生成代碼模塊,生成方法代碼,和生成代碼語句。
18.如權(quán)利要求17的方法,其中生成方法代碼和代碼語句中的至少一個包括分別訪問一個對應(yīng)的方法模板和代碼段模板。
19.如權(quán)利要求11的方法,進一步包括提供接口信息,用于將一個應(yīng)用接口到對應(yīng)該中間件信息的、通過一個網(wǎng)絡(luò)接受控制的設(shè)備的一個或多個功能。
20.如權(quán)利要求11的方法,進一步包括提供方便創(chuàng)建該規(guī)范數(shù)據(jù)庫的工具。
全文摘要
中間件代碼生成系統(tǒng)生成用于將一個設(shè)備集成到一個網(wǎng)絡(luò)中的程序代碼。給出了多種工具和一個用戶界面來創(chuàng)建包含生成中間件集成代碼所必需的信息的數(shù)據(jù)庫。代碼生成系統(tǒng)被配置為便于用戶修改已生成的代碼,以及特別是修改用于錯誤處理的代碼。在一個優(yōu)選實施方案中,該代碼生成系統(tǒng)也生成了一個示例測試應(yīng)用程序,用于演示在一個應(yīng)用中如何使用生成的集成代碼。
文檔編號H04L12/28GK1620646SQ02801734
公開日2005年5月25日 申請日期2002年5月17日 優(yōu)先權(quán)日2001年5月18日
發(fā)明者D·Y·程 申請人:皇家菲利浦電子有限公司