基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法
【專利摘要】本發(fā)明涉及一種基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,其中包括上位機(jī)加載協(xié)議插件和設(shè)備模板插件;上位機(jī)調(diào)用協(xié)議實(shí)體鏈表中的初始化功能函數(shù),并得到設(shè)備描述符集;上位機(jī)查詢?cè)O(shè)備描述符集中的設(shè)備信息,并找到設(shè)備信息所匹配的設(shè)備模板;上位機(jī)調(diào)用所匹配的設(shè)備模板中的創(chuàng)建設(shè)備對(duì)象功能函數(shù)來(lái)創(chuàng)建設(shè)備對(duì)象;上位機(jī)更新設(shè)備對(duì)象的配置協(xié)議信息和簡(jiǎn)要描述信息。采用本發(fā)明的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,以插件的方式添加任意協(xié)議和設(shè)備,在不影響程序原有功能的基礎(chǔ)實(shí)現(xiàn)各種協(xié)議無(wú)縫兼容,結(jié)構(gòu)簡(jiǎn)單,移植性強(qiáng),具有更加廣泛的應(yīng)用范圍。
【專利說(shuō)明】基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通訊組網(wǎng)【技術(shù)領(lǐng)域】,尤其涉及物聯(lián)網(wǎng)通訊組網(wǎng)領(lǐng)域,具體是指一種基 于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法。
【背景技術(shù)】
[0002] 如今智能家居(樓宇)都是得益于低功耗無(wú)線通訊技術(shù)的逐漸成熟,W及物聯(lián)網(wǎng) 概念的催化,目前智能家居所采用的聯(lián)網(wǎng)技術(shù)最典型的主要有;Wi-Fi (無(wú)線保真,一種無(wú) 線網(wǎng)路通信技術(shù)的品牌,由Wi-Fi聯(lián)盟所持有)、藍(lán)牙、Zi濁ee (基于IE邸802. 15. 4標(biāo)準(zhǔn)的 低功耗局域網(wǎng)協(xié)議,又稱紫蜂協(xié)議)和Z-Wave (由丹麥公司Zensys -手主導(dǎo)的無(wú)線組網(wǎng)規(guī) 格)等。該些2. 4G或者低于IG頻率的無(wú)線收發(fā)協(xié)議方案的成熟為建立家庭或者樓宇的設(shè) 備管理網(wǎng)絡(luò)提供了基礎(chǔ),上述方案各有特點(diǎn)如下:
[0003] DWi-Fi適合建立相對(duì)復(fù)雜,網(wǎng)絡(luò)規(guī)模較大或者數(shù)據(jù)交互比較大的網(wǎng)絡(luò),比如音視 頻監(jiān)控或者大規(guī)模網(wǎng)絡(luò)。并且可W實(shí)現(xiàn)與廣域網(wǎng)的無(wú)縫連接。目前缺點(diǎn)是功耗較高,對(duì)設(shè) 備上MCU(Micro Control化it,微控制器)的要求也比較高從而不適用于使用電池供電的 小設(shè)備。
[0004] 2)藍(lán)牙具有相對(duì)較高的帶寬,可W實(shí)時(shí)傳送數(shù)字音頻或者簡(jiǎn)單的模擬音頻及數(shù)字 文件。特別是現(xiàn)在的低功耗藍(lán)牙(V4.0)也非常適合家庭組網(wǎng)。缺點(diǎn)在于傳輸距離W及接 入點(diǎn)(AP)限制了網(wǎng)絡(luò)規(guī)模。相信隨著藍(lán)牙技術(shù)的進(jìn)一步成熟,會(huì)有更好的前景。
[0005] 3)Zi濁ee技術(shù)標(biāo)準(zhǔn)化到現(xiàn)在業(yè)已11年。從目前來(lái)看是非常具有活力的一種方案。 Zi濁ee是開源項(xiàng)目,在非商用情況下可W不用付任何版權(quán)費(fèi)。而且由于Zi濁ee聯(lián)盟的存 在,使得Zi濁ee技術(shù)充分發(fā)展,目前智能家居領(lǐng)域已經(jīng)超過(guò)600家企業(yè)的產(chǎn)品進(jìn)入市場(chǎng),而 智能樓宇方面也有超過(guò)400家企業(yè)的產(chǎn)品。能如此在物聯(lián)領(lǐng)域大行其道除了主要受益于 Zi濁ee是開源項(xiàng)目外,它的低功耗還有方便的組網(wǎng)能力是最大賣點(diǎn)。雖然沒(méi)有大的帶寬,但 是作為控制報(bào)文的傳輸來(lái)說(shuō)該個(gè)帶寬卻是足夠的。再加上Zi濁ee聯(lián)盟的存在,使得產(chǎn)品開 發(fā)時(shí)可W得到大量其他Zi濁ee開發(fā)人員的先期實(shí)踐經(jīng)驗(yàn)與技術(shù)支持。所有該些讓Zi濁ee 在家庭(樓宇)自動(dòng)化領(lǐng)域站穩(wěn)了腳跟。
[0006] 4) Z-Wave是獨(dú)立于Zi濁ee的另外一大陣營(yíng)。與Zi濁ee -樣,Z-Wave也有自己的 聯(lián)盟。目前已經(jīng)有超過(guò)300家企業(yè)加入。其中包括了 GE,Evolve, IngersoU-Rand, Linear, FAKRO 和 Sigma Desi即s。使用了不同于 Zi濁ee(BPSK炬inary Phase Shift Keying,二 相相移鍵控,用于數(shù)字信號(hào)與高頻模擬信號(hào)調(diào)制的一種方法)/OQPSK(Offset Qua^ature 化ase Shift Ifeying,偏移四相相移鍵控,一種數(shù)字調(diào)制方法))的GFSK(Gauss化equen巧 Shift Keying,高斯頻移監(jiān)控)調(diào)制解調(diào),并且只使用低于IG赫茲的頻段。其他與Zi濁ee 可說(shuō)不分伯仲,所W也得到了大量的擁辟。
[0007] 另外還有TI自定義的SimpliciTI (由TI主導(dǎo)的開源組網(wǎng)協(xié)議)等方案,但市場(chǎng)主 流就是上述幾種,而且各自建立了鹿大的生態(tài)系統(tǒng)。很多產(chǎn)品已經(jīng)能實(shí)現(xiàn)安防,燈光控制, 窗簾控制,紅外控制,報(bào)警等功能。控制終端也比較豐富,如;手機(jī),電腦,帶顯示屏的工控設(shè) 備等,不一一列舉。
[0008] 然而,物聯(lián)網(wǎng)的發(fā)展也存在W下問(wèn)題:
[0009] 1.對(duì)于市場(chǎng)來(lái)說(shuō),可選方案越多,競(jìng)爭(zhēng)就越激烈,對(duì)下游廠商就越有利。但是目 前可選方案不算多,而且各自形成了技術(shù)壁壘,造成非我即他的場(chǎng)面。特別是Zi濁ee和 Z-Wave兩大陣營(yíng)之間,因?yàn)閮烧咄|(zhì)化程度比較高。
[0010] 2.如果最終消費(fèi)者(個(gè)人或者單位)需要的產(chǎn)品分別需要兩種方案時(shí)就遇上了麻 煩。因?yàn)閮蓚€(gè)產(chǎn)品互相不兼容,該樣就需要上層應(yīng)用來(lái)區(qū)分處理兩個(gè)網(wǎng)絡(luò)的管理和訪問(wèn)接 口,抑或需要兩個(gè)應(yīng)用來(lái)分別進(jìn)行管理。大大增加了開發(fā)投入與產(chǎn)品質(zhì)量風(fēng)險(xiǎn),并且很多都 是重復(fù)開發(fā)。
[0011] 3.目前廠商在開發(fā)定位自己的智能家居或者智能樓宇產(chǎn)品的時(shí)候往往被迫先選 好立場(chǎng)。要么使用Zi濁ee,要么使用Z-Wave,選好之后與被棄用方案就基本絕緣。該無(wú)異 于增加了生產(chǎn)企業(yè)的開發(fā)風(fēng)險(xiǎn)。每個(gè)方案都有自己的優(yōu)劣。如果不能取長(zhǎng)補(bǔ)短那研發(fā)的產(chǎn) 品很可能存在缺陷。
[0012] 4.長(zhǎng)期分立而不能合作的方案無(wú)益于市場(chǎng)實(shí)際需求的解決。對(duì)整個(gè)智能家庭(樓 宇)領(lǐng)域來(lái)說(shuō)也難W有一個(gè)最大化的促進(jìn)。
[0013] 物聯(lián)網(wǎng)W小網(wǎng)(連接家庭或樓宇),中網(wǎng)(連接社區(qū)),大網(wǎng)(連接世界)為構(gòu)成 元素。而目前智能家庭(樓宇)就是小網(wǎng)的代表,在整個(gè)物聯(lián)網(wǎng)概念中是基石。小網(wǎng)的發(fā) 展健康與否直接關(guān)系物聯(lián)網(wǎng)的成敗。盡管從產(chǎn)品角度還有成本問(wèn)題(動(dòng)輒幾千上萬(wàn)的產(chǎn)品 費(fèi)用也是影響智能家居/樓宇快速普及的一個(gè)因素),另外,低效的開發(fā)模式也會(huì)造成開發(fā) 成本(影響產(chǎn)品價(jià)格)上揚(yáng)。
【發(fā)明內(nèi)容】
[0014] 本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種W插件的方式添加任意 協(xié)議和設(shè)備,在不影響程序原有功能的基礎(chǔ)實(shí)現(xiàn)各種協(xié)議無(wú)縫兼容的基于插件形式在上位 機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法。
[0015] 為了實(shí)現(xiàn)上述目的,本發(fā)明的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法具 有如下構(gòu)成:
[0016] 該基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,其主要特點(diǎn)是,所述的方法 包括W下步驟:
[0017] (1)上位機(jī)加載協(xié)議插件,并將新生成的協(xié)議實(shí)體添加至協(xié)議實(shí)體鏈表中;
[0018] (2)所述的上位機(jī)加載設(shè)備模板插件,并創(chuàng)建所述的設(shè)備模板插件對(duì)應(yīng)的設(shè)備模 板;
[0019] (3)所述的上位機(jī)查詢協(xié)議實(shí)體鏈表,并調(diào)用所述的協(xié)議實(shí)體鏈表中的初始化功 能函數(shù);
[0020] (4)所述的上位機(jī)通過(guò)所述的初始化功能函數(shù)得到設(shè)備描述符集;
[0021] (5)所述的上位機(jī)查詢所述的設(shè)備描述符集中的設(shè)備信息,并找到所述的設(shè)備信 息所匹配的設(shè)備模板;
[0022] (6)所述的上位機(jī)調(diào)用所匹配的設(shè)備模板中的創(chuàng)建設(shè)備對(duì)象功能函數(shù)來(lái)創(chuàng)建設(shè)備 對(duì)象,并添加至設(shè)備對(duì)象鏈表中;
[0023] (7)所述的上位機(jī)更新所述的設(shè)備對(duì)象的配置協(xié)議信息和簡(jiǎn)要描述信息。
[0024] 進(jìn)一步地,所述的上位機(jī)加載協(xié)議插件,包括W下步驟:
[0025] (1. 1)所述的上位機(jī)判斷協(xié)議插件目錄下是否存在所述的協(xié)議插件的文件;
[0026] (1. 2)如果判斷結(jié)果為所述的插件協(xié)議插件目錄下存在所述的協(xié)議插件的文件, 則繼續(xù)步驟(1.3),否則繼續(xù)步驟(1.4);
[0027] (1. 3)所述的上位機(jī)加載所述的協(xié)議插件的文件;
[002引 (1. 4)所述的上位機(jī)停止加載協(xié)議插件。
[0029] 更進(jìn)一步地,所述的將新生成的協(xié)議實(shí)體添加至所述的協(xié)議實(shí)體鏈表,包括W下 步驟:
[0030] (1. W所述的上位機(jī)判斷是否存在協(xié)議插件入口函數(shù),如果是,則繼續(xù)步驟 (1.6),否則返回上述步驟(1.1);
[0031] (1. 6)所述的上位機(jī)調(diào)用所述的協(xié)議插件入口函數(shù),并將新生成的協(xié)議實(shí)體添加 至所述的協(xié)議實(shí)體鏈表中。
[0032] 進(jìn)一步地,所述的上位機(jī)加載設(shè)備模板插件,包括W下步驟:
[0033] (2. 1)所述的上位機(jī)判斷設(shè)備模板插件目錄下是否存在所述的設(shè)備模板插件的文 件;
[0034] (2. 2)如果判斷結(jié)果為所述的設(shè)備模板插件目錄下存在所述的設(shè)備模板插件的文 件,則繼續(xù)步驟(2. 3),否則繼續(xù)步驟化4);
[0035] (2. 3)所述的上位機(jī)加載所述的設(shè)備模板插件的文件;
[0036] (2. 4)所述的上位機(jī)停止加載設(shè)備模板插件。
[0037] 更進(jìn)一步地,所述的創(chuàng)建所述的設(shè)備模板插件對(duì)應(yīng)的設(shè)備模板,包括W下步驟:
[0038] (2. 5)所述的上位機(jī)判斷是否存在設(shè)備模板插件入口函數(shù),如果是,則繼續(xù)步驟 (2. 6),否則返回上述步驟(2.1);
[0039] (2. 6)所述的上位機(jī)調(diào)用所述的設(shè)備模板插件入口函數(shù),并將新生成的設(shè)備模板 添加至所述的設(shè)備模板鏈表中。
[0040] 更進(jìn)一步地,其特征在于,所述的步驟(1)之前,包括W下步驟:
[0041] (0)所述的上位機(jī)判斷是否收到遠(yuǎn)程設(shè)備的初始化請(qǐng)求,如果是,則繼續(xù)步驟 (1),否則繼續(xù)步驟(0)。
[0042] 更進(jìn)一步地,所述的上位機(jī)查詢協(xié)議實(shí)體鏈表,包括W下步驟:
[0043] (3. 1)所述的上位機(jī)判斷是否查詢找到所述的協(xié)議實(shí)體鏈表,如果是,則繼續(xù)步驟 (3),否則繼續(xù)步驟化2);
[0044] (3. 2)所述的上位機(jī)啟動(dòng)異步事件服務(wù);
[0045] (3. 3)所述的上位機(jī)進(jìn)入正常工作狀態(tài),并等待其它調(diào)用指令。
[0046] 采用了本發(fā)明的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,具有W下社會(huì) 效益:
[0047] 1、可W兼容多種技術(shù)
[0048] 本發(fā)明可W把不同公司的組網(wǎng)技術(shù)樣合在一起,生產(chǎn)廠商提供符合本設(shè)計(jì)協(xié)議插 件標(biāo)準(zhǔn)的協(xié)議就能擴(kuò)容進(jìn)來(lái),減少重復(fù)設(shè)計(jì),節(jié)省人力與物力成本。
[0049] 2、可W兼容不同公司產(chǎn)品
[0050] 只要符合設(shè)備插件接口標(biāo)準(zhǔn)的設(shè)備就可W無(wú)縫接入系統(tǒng),所W只需要專注于設(shè)備 微控制器(MCU)程序的實(shí)現(xiàn)即可,無(wú)需考慮上位機(jī)的實(shí)現(xiàn),該樣工作量將會(huì)比全系統(tǒng)設(shè)計(jì) 減少90% W上,對(duì)于有些公司想盡快推出產(chǎn)品非常有利,工期的縮短也許可W帶來(lái)巨大的 經(jīng)濟(jì)效益。
[005。 3、降低開發(fā)成本
[0052] 因?yàn)椴寮涌诘臉?biāo)準(zhǔn)定義,是W應(yīng)用軟件在操作網(wǎng)絡(luò)資源的時(shí)候非常規(guī)范,不用 針對(duì)每個(gè)網(wǎng)絡(luò)做相應(yīng)的初始化,也不用針對(duì)每個(gè)設(shè)備做相應(yīng)的初始化。應(yīng)用軟件實(shí)現(xiàn)的目 的和流程得到統(tǒng)一。
[0053] 4、移植性強(qiáng)
[0054] 本發(fā)明的插件接口具有強(qiáng)大的可移植性,提高軟件開發(fā)效率,對(duì)企業(yè)的智能家居 設(shè)計(jì)及其他物聯(lián)網(wǎng)設(shè)計(jì)提供極大的便利,應(yīng)用范圍也十分廣泛。
【專利附圖】
【附圖說(shuō)明】
[00巧]圖1為本發(fā)明的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法的流程圖。
[0056] 圖2為本發(fā)明的智能家居系統(tǒng)的硬件結(jié)構(gòu)圖。
[0057] 圖3為本發(fā)明的系統(tǒng)內(nèi)核結(jié)構(gòu)示意圖。
[0058] 圖4為本發(fā)明的架構(gòu)內(nèi)核的調(diào)用關(guān)系意圖。
[0059] 圖5為本發(fā)明的加載各類插件的框架流程圖。
[0060] 圖6為本發(fā)明的一個(gè)具體實(shí)施例的完整流程圖。
[0061] 圖7為本發(fā)明的網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0062] 為了能夠更清楚地描述本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例來(lái)進(jìn)行進(jìn)一步的 描述。
[0063] 針對(duì)目前的技術(shù)問(wèn)題,解決方案包括W下內(nèi)容:
[0064] 1.實(shí)現(xiàn)多種組網(wǎng)技術(shù)的插件化(Plug-in),添加新組網(wǎng)協(xié)議只需增加一個(gè)協(xié)議插 件且該插件按照設(shè)計(jì)要求實(shí)現(xiàn)即可正常工作,同時(shí),允許第H方設(shè)計(jì)的協(xié)議產(chǎn)品接入,比女口 在已有Zi濁ee協(xié)議的基礎(chǔ)上,增加一個(gè)Z-Wave的協(xié)議插件就可W實(shí)現(xiàn)擴(kuò)網(wǎng);
[0065] 2.實(shí)現(xiàn)設(shè)備對(duì)象類型模板的插件化(Plug-in),添加新類型設(shè)備模板只需添加插 件且插件按照設(shè)計(jì)要求實(shí)現(xiàn)即可正常工作,允許第H方設(shè)計(jì)的產(chǎn)品接入;
[0066] 3.實(shí)現(xiàn)設(shè)備與協(xié)議的分離,通過(guò)軟件抽象,把協(xié)議的收發(fā)功能動(dòng)態(tài)配置給設(shè)備,女口 此,同樣的設(shè)備,改裝了 RF(RadiC)化equency,射頻)模塊就能接入新的協(xié)議網(wǎng)絡(luò)中去。
[0067] 4.軟件架構(gòu)可W在Windows, Linux, An化oid, IOS運(yùn)行起來(lái),可W適應(yīng)各種環(huán)境。
[0068] 通過(guò)W上四個(gè)方面的設(shè)計(jì),就可W做到各種組網(wǎng)技術(shù)及遠(yuǎn)程設(shè)備的全方位融合, 只要用戶愿意,設(shè)計(jì)方可W添加任意協(xié)議和設(shè)備,而且只是W插件的方式,絲毫不影響原有 的功能。理論上來(lái)說(shuō)無(wú)需修改應(yīng)用程序本身,就可W實(shí)現(xiàn)各種協(xié)議的無(wú)縫融合。
[0069] 請(qǐng)參閱圖1,在一種實(shí)施方式中,本發(fā)明的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組 網(wǎng)的方法包括W下步驟:
[0070] (1)上位機(jī)加載協(xié)議插件,并將新生成的協(xié)議實(shí)體添加至協(xié)議實(shí)體鏈表中;
[0071] (2)所述的上位機(jī)加載設(shè)備模板插件,并創(chuàng)建所述的設(shè)備模板插件對(duì)應(yīng)的設(shè)備模 板;
[0072] (3)所述的上位機(jī)查詢協(xié)議實(shí)體鏈表,并調(diào)用所述的協(xié)議實(shí)體鏈表中的初始化功 能函數(shù);
[0073] (4)所述的上位機(jī)通過(guò)所述的初始化功能函數(shù)得到設(shè)備描述符集;
[0074] (5)所述的上位機(jī)查詢所述的設(shè)備描述符集中的設(shè)備信息,并找到所述的設(shè)備信 息所匹配的設(shè)備模板;
[0075] (6)所述的上位機(jī)調(diào)用所匹配的設(shè)備模板中的創(chuàng)建設(shè)備對(duì)象功能函數(shù)來(lái)創(chuàng)建設(shè)備 對(duì)象,并添加至設(shè)備對(duì)象鏈表中;
[0076] (7)所述的上位機(jī)更新所述的設(shè)備對(duì)象的配置協(xié)議信息和簡(jiǎn)要描述信息。
[0077] 在一種優(yōu)選的實(shí)施方式中,所述的上位機(jī)加載協(xié)議插件,包括W下步驟:
[0078] (1. 1)所述的上位機(jī)判斷協(xié)議插件目錄下是否存在所述的協(xié)議插件的文件;
[0079] (1. 2)如果判斷結(jié)果為所述的插件協(xié)議插件目錄下存在所述的協(xié)議插件的文件, 則繼續(xù)步驟(1. 3),否則繼續(xù)步驟(1. 4);
[0080] (1. 3)所述的上位機(jī)加載所述的協(xié)議插件的文件;
[0081] (1. 4)所述的上位機(jī)停止加載協(xié)議插件。
[0082] 在一種更優(yōu)選的實(shí)施方式中,所述的將新生成的協(xié)議實(shí)體添加至所述的協(xié)議實(shí)體 鏈表,包括W下步驟:
[0083] (1. W所述的上位機(jī)判斷是否存在協(xié)議插件入口函數(shù),如果是,則繼續(xù)步驟 (1.6),否則返回上述步驟(1.1);
[0084] (1. 6)所述的上位機(jī)調(diào)用所述的協(xié)議插件入口函數(shù),并將新生成的協(xié)議實(shí)體添加 至所述的協(xié)議實(shí)體鏈表中。
[0085] 在一種優(yōu)選的實(shí)施方式中,所述的上位機(jī)加載設(shè)備模板插件,包括W下步驟:
[0086] (2. 1)所述的上位機(jī)判斷設(shè)備模板插件目錄下是否存在所述的設(shè)備模板插件的文 件;
[0087] (2. 2)如果判斷結(jié)果為所述的設(shè)備模板插件目錄下存在所述的設(shè)備模板插件的文 件,則繼續(xù)步驟(2. 3),否則繼續(xù)步驟化4);
[0088] (2. 3)所述的上位機(jī)加載所述的設(shè)備模板插件的文件;
[0089] (2. 4)所述的上位機(jī)停止加載設(shè)備模板插件。
[0090] 在一種更優(yōu)選的實(shí)施方式中,所述的創(chuàng)建所述的設(shè)備模板插件對(duì)應(yīng)的設(shè)備模板, 包括W下步驟:
[0091] (2.5)所述的上位機(jī)判斷是否存在設(shè)備模板插件入口函數(shù),如果是,則繼續(xù)步驟 (2. 6),否則返回上述步驟(2.1);
[0092] (2. 6)所述的上位機(jī)調(diào)用所述的設(shè)備模板插件入口函數(shù),并將新生成的設(shè)備模板 添加至所述的設(shè)備模板鏈表中。
[0093] 在一種更優(yōu)選的實(shí)施方式中,其特征在于,所述的步驟(1)之前,包括W下步驟:
[0094] (0)所述的上位機(jī)判斷是否收到遠(yuǎn)程設(shè)備的初始化請(qǐng)求,如果是,則繼續(xù)步驟 (1),否則繼續(xù)步驟(0)。
[0095] 在一種更優(yōu)選的實(shí)施方式中,所述的上位機(jī)查詢協(xié)議實(shí)體鏈表,包括W下步驟:
[0096] (3. I)所述的上位機(jī)判斷是否查詢找到所述的協(xié)議實(shí)體鏈表,如果是,則繼續(xù)步驟 (3),否則繼續(xù)步驟化2);
[0097] (3. 2)所述的上位機(jī)啟動(dòng)異步事件服務(wù);
[0098] (3. 3)所述的上位機(jī)進(jìn)入正常工作狀態(tài),并等待其它調(diào)用指令。
[0099] 在實(shí)際應(yīng)用中,如圖2?4所示,一個(gè)智能家居系統(tǒng)從硬件層次結(jié)構(gòu)上一共分為H 層,從上往下依次為:
[0100] 主機(jī)(上位機(jī));
[0101] 設(shè)備HUB (集線器,例如USB dongle等);
[0102] 設(shè)備端點(diǎn)。
[0103] 從軟件上可W分為四層:
[0104] 應(yīng)用層,實(shí)現(xiàn)設(shè)備對(duì)象的枚舉與訪問(wèn)管理。并且提供系統(tǒng)事件處理的回調(diào)函數(shù)。
[0105] 內(nèi)核層,實(shí)現(xiàn)對(duì)協(xié)議與設(shè)備的動(dòng)態(tài)加載W及系統(tǒng)異步事件的處理與轉(zhuǎn)發(fā)(安卓系 統(tǒng)為服務(wù)層);
[0106] 協(xié)議層,為所屬對(duì)象提供訪問(wèn)途徑;
[0107] 設(shè)備對(duì)象或組件層;
[010引其中,架構(gòu)內(nèi)核通過(guò)加載插件并創(chuàng)建設(shè)備對(duì)象形成了 H個(gè)鏈表,即設(shè)備模板鏈表、 協(xié)議實(shí)體鏈表W及設(shè)備對(duì)象鏈表,后兩個(gè)鏈表之間有通訊上的從屬關(guān)系。如圖3中箭頭表 示該種從屬關(guān)系。
[0109] 注;設(shè)備模板與設(shè)備模板插件一一對(duì)應(yīng),是用來(lái)實(shí)時(shí)創(chuàng)建設(shè)備對(duì)象實(shí)體的。
[0110] 內(nèi)核異步消息處理服務(wù)??谟脕?lái)處理各個(gè)協(xié)議網(wǎng)絡(luò)傳來(lái)的事件。該些事件可能 有:傳感器報(bào)警,設(shè)備異常(如電池電量不足),新設(shè)備接入等。
[0111] 異步消息格式如下:
[0112] 3化it設(shè)備唯一序號(hào),1化it消息類型,1化it消息長(zhǎng)度,可變長(zhǎng)與消息長(zhǎng)度對(duì)應(yīng)的 消息實(shí)體。
[0113] 為了方便APP層能夠?qū)ο⑦M(jìn)行統(tǒng)一分析與派發(fā)并處理,上述的異步消息格式有 必要做該么一個(gè)統(tǒng)一定義(否則APP層需必須為每種自定義的消息提供相應(yīng)的回調(diào)函數(shù), 如此定義可W簡(jiǎn)化APP層的消息處理)。注冊(cè)的異步事件回調(diào)函數(shù)將會(huì)處理每一個(gè)消息,根 據(jù)設(shè)備唯一序號(hào)可W找到對(duì)應(yīng)的設(shè)備,根據(jù)消息類型調(diào)用不同的處理,并把消息實(shí)體當(dāng)作 處理函數(shù)的參數(shù)。
[0114] 為了使APP(Application,應(yīng)用程序,目前一般是指智能終端上的應(yīng)用,比如蘋果, 安卓終端上的應(yīng)用,但是本文泛指上層應(yīng)用)能正常訪問(wèn)設(shè)備,還需要內(nèi)核提供如下接口 (該些不在本發(fā)明中定義):
[01巧]A.讓APP啟動(dòng)內(nèi)核工作和停止內(nèi)核工作的接口
[0116] B.讓APP能夠獲取所有設(shè)備對(duì)象句柄的接口
[0117] C.讓APP能注冊(cè)異步事件回調(diào)函數(shù)的接口,供異步事件處理服務(wù)調(diào)用
[0118] D.讓APP對(duì)設(shè)備對(duì)象進(jìn)行操作的方法由設(shè)備對(duì)象自己自由定義
[0119] 本設(shè)計(jì)中不對(duì)設(shè)備對(duì)象的實(shí)現(xiàn)做具體定義,但是為了實(shí)現(xiàn)設(shè)備與協(xié)議的隔離,對(duì) 設(shè)備進(jìn)行抽象后,實(shí)際的實(shí)現(xiàn)方式可W如圖4所示,包括W下內(nèi)容。
[0120] 1.架構(gòu)內(nèi)核通過(guò)加載插件獲得協(xié)議實(shí)體鏈表;
[0121] 2.架構(gòu)內(nèi)核通過(guò)加載插件獲得設(shè)備模板鏈表;
[0122] 3.架構(gòu)內(nèi)核通過(guò)與設(shè)備描述符集匹配的設(shè)備模板創(chuàng)建設(shè)備對(duì)象來(lái)獲得設(shè)備對(duì)象 鏈表;
[012引 4.通過(guò)設(shè)備對(duì)象的方法來(lái)配置協(xié)議,比如Se巧rotocolO ;
[0124] 5.提供設(shè)備對(duì)象句柄給APP ;
[0125] 6. APP通過(guò)設(shè)備對(duì)象句柄調(diào)用對(duì)象中的方法;
[0126] 7.設(shè)備對(duì)象的方法是對(duì)設(shè)備某個(gè)功能的抽象,方法底層調(diào)用協(xié)議中的sendto, recv化om來(lái)實(shí)現(xiàn)與實(shí)際設(shè)備之間的通信。
[0127] 如圖3中,協(xié)議P的sen^o與recv化om被配置給設(shè)備對(duì)象0,設(shè)備對(duì)象0中的方 法set化ncO和get化ncO在底層調(diào)用該兩個(gè)協(xié)議功能函數(shù)來(lái)收發(fā)數(shù)據(jù),與設(shè)備進(jìn)行實(shí)際 交互,Set類方法只需調(diào)用semlto就可W,而get類方法則既需要調(diào)用semlto還需要調(diào)用 recvfrom。
[0128] 為了讓協(xié)議和設(shè)備對(duì)象插件化,必須統(tǒng)一插件的接口,插件必須是高度概括好的 功能性模塊,所有的接口必須是風(fēng)格一致,名字一致,實(shí)現(xiàn)功能也要基本一致。插件接口分 為兩類:
[0129] 1.入口函數(shù),負(fù)責(zé)插件的初始化工作。
[0130] 2.功能函數(shù),提供外部調(diào)用插件定義功能的方法。
[0131] 總而言之,通過(guò)調(diào)用插件的入口函數(shù),就可W創(chuàng)建插件實(shí)體,并利用插件里的接口 函數(shù)進(jìn)行操作,由于加載插件的核也內(nèi)容相同,請(qǐng)參閱圖5,為加載各類插件的框架流程圖。 [013引 在一個(gè)具體實(shí)施例中,協(xié)議插件的入口函數(shù)為"RMS_API rms_p;rotocl_library_ Setup (**protocol)",通過(guò)調(diào)用插件中的該個(gè)入口函數(shù)可W得到一個(gè)protocol實(shí)體,并對(duì) 實(shí)體進(jìn)行資源初始化,具體包括W下兩個(gè)方面:
[0133] (a)給協(xié)議實(shí)體賦值下面四個(gè)功能函數(shù);
[0134] 化)初始化協(xié)議實(shí)體的旗語(yǔ),隊(duì)列等多線程同步成員,用于與設(shè)計(jì)的內(nèi)核進(jìn)行通 信。
[0135] 協(xié)議插件的功能函數(shù)包括W下結(jié)構(gòu)體:
[0136] "RMS_ERR0RTYPE (*init) (remote_endpoints_set_ descriptor**ppepsetdesc);
[0137] RMS_ERR0RTYPE (*sen化0) (RMS-BYTE data,RMS_U321ength);
[0138] RMS_ERR0RTYPE (卸ecvfrom) (RMS-BYTE data,RMS_U321ength);
[0139] RMS_ERR0RTYPE (*deinit) (RMS-PTR pPriv);,,
[0140] Init功能函數(shù)負(fù)責(zé)初始化協(xié)議工作,但是不同于入口函數(shù),功能函數(shù)會(huì)對(duì)協(xié)議網(wǎng) 絡(luò)進(jìn)行探索(discover)工作,并會(huì)給調(diào)用者一個(gè)設(shè)備描述符集,通過(guò)調(diào)用設(shè)備描述符集, 就可W創(chuàng)建現(xiàn)有協(xié)議網(wǎng)絡(luò)中所有網(wǎng)絡(luò)設(shè)備的對(duì)象(內(nèi)容自定義),sendto與recv化om是對(duì) 應(yīng)協(xié)議的最基本的收發(fā)接口,通過(guò)該個(gè)接口可W方便地與網(wǎng)絡(luò)設(shè)備對(duì)象進(jìn)行雙向互動(dòng),參 數(shù)分別為一段要發(fā)送或者接收數(shù)據(jù)的內(nèi)存指針和要發(fā)送或接收數(shù)據(jù)的長(zhǎng)度,長(zhǎng)度單位與內(nèi) 存的指針類型對(duì)應(yīng),deinit用于釋放之前創(chuàng)建或者申請(qǐng)的所有資源,包括內(nèi)存,旗語(yǔ)和隊(duì)列 等,參數(shù)為protocol實(shí)體指針。
[0141] 其中,設(shè)備描述符集的結(jié)構(gòu)體如下表所示:
[0142]
【權(quán)利要求】
1. 一種基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,其特征在于,所述的方法包 括以下步驟: (1) 上位機(jī)加載協(xié)議插件,并將新生成的協(xié)議實(shí)體添加至協(xié)議實(shí)體鏈表中; (2) 所述的上位機(jī)加載設(shè)備模板插件,并創(chuàng)建所述的設(shè)備模板插件對(duì)應(yīng)的設(shè)備模板; (3) 所述的上位機(jī)查詢協(xié)議實(shí)體鏈表,并調(diào)用所述的協(xié)議實(shí)體鏈表中的初始化功能函 數(shù); (4) 所述的上位機(jī)通過(guò)所述的初始化功能函數(shù)得到設(shè)備描述符集; (5) 所述的上位機(jī)查詢所述的設(shè)備描述符集中的設(shè)備信息,并找到所述的設(shè)備信息所 匹配的設(shè)備模板; (6) 所述的上位機(jī)調(diào)用所匹配的設(shè)備模板中的創(chuàng)建設(shè)備對(duì)象功能函數(shù)來(lái)創(chuàng)建設(shè)備對(duì) 象,并添加至設(shè)備對(duì)象鏈表中; (7) 所述的上位機(jī)更新所述的設(shè)備對(duì)象的配置協(xié)議信息和簡(jiǎn)要描述信息。
2. 根據(jù)權(quán)利要求1所述的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,其特征在 于,所述的上位機(jī)加載協(xié)議插件,包括以下步驟: (1. 1)所述的上位機(jī)判斷協(xié)議插件目錄下是否存在所述的協(xié)議插件的文件; (1. 2)如果判斷結(jié)果為所述的插件協(xié)議插件目錄下存在所述的協(xié)議插件的文件,則繼 續(xù)步驟(1. 3),否則繼續(xù)步驟(1. 4); (1. 3)所述的上位機(jī)加載所述的協(xié)議插件的文件; (1. 4)所述的上位機(jī)停止加載協(xié)議插件。
3. 根據(jù)權(quán)利要求2所述的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,其特征在 于,所述的將新生成的協(xié)議實(shí)體添加至所述的協(xié)議實(shí)體鏈表,包括以下步驟: (1.5)所述的上位機(jī)判斷是否存在協(xié)議插件入口函數(shù),如果是,則繼續(xù)步驟(1.6),否 則返回上述步驟(L 1); (1. 6)所述的上位機(jī)調(diào)用所述的協(xié)議插件入口函數(shù),并將新生成的協(xié)議實(shí)體添加至所 述的協(xié)議實(shí)體鏈表中。
4. 根據(jù)權(quán)利要求1所述的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,其特征在 于,所述的上位機(jī)加載設(shè)備模板插件,包括以下步驟: (2. 1)所述的上位機(jī)判斷設(shè)備模板插件目錄下是否存在所述的設(shè)備模板插件的文件; (2. 2)如果判斷結(jié)果為所述的設(shè)備模板插件目錄下存在所述的設(shè)備模板插件的文件, 則繼續(xù)步驟(2. 3),否則繼續(xù)步驟(2. 4); (2. 3)所述的上位機(jī)加載所述的設(shè)備模板插件的文件; (2.4)所述的上位機(jī)停止加載設(shè)備模板插件。
5. 根據(jù)權(quán)利要求4所述的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方法,其特征在 于,所述的創(chuàng)建所述的設(shè)備模板插件對(duì)應(yīng)的設(shè)備模板,包括以下步驟: (2. 5)所述的上位機(jī)判斷是否存在設(shè)備模板插件入口函數(shù),如果是,則繼續(xù)步驟 (2. 6),否則返回上述步驟(2. 1); (2. 6)所述的上位機(jī)調(diào)用所述的設(shè)備模板插件入口函數(shù),并將新生成的設(shè)備模板添加 至所述的設(shè)備模板鏈表中。
6. 根據(jù)權(quán)利要求1至5任一項(xiàng)所述的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方 法,其特征在于,所述的步驟(1)之前,包括以下步驟: (〇)所述的上位機(jī)判斷是否收到遠(yuǎn)程設(shè)備的初始化請(qǐng)求,如果是,則繼續(xù)步驟(1),否 則繼續(xù)步驟(0)。
7.根據(jù)權(quán)利要求1至5任一項(xiàng)所述的基于插件形式在上位機(jī)中實(shí)現(xiàn)跨協(xié)議組網(wǎng)的方 法,其特征在于,所述的上位機(jī)查詢協(xié)議實(shí)體鏈表,包括以下步驟: (3. 1)所述的上位機(jī)判斷是否查詢找到所述的協(xié)議實(shí)體鏈表,如果是,則繼續(xù)步驟 (3),否則繼續(xù)步驟(3.2); (3. 2)所述的上位機(jī)啟動(dòng)異步事件服務(wù); (3. 3)所述的上位機(jī)進(jìn)入正常工作狀態(tài),并等待其它調(diào)用指令。
【文檔編號(hào)】H04L29/08GK104363290SQ201410663385
【公開日】2015年2月18日 申請(qǐng)日期:2014年11月19日 優(yōu)先權(quán)日:2014年11月19日
【發(fā)明者】施建強(qiáng) 申請(qǐng)人:上海龍晶科技有限公司