隋越升
?
L1接口協(xié)議的Java實現(xiàn)
隋越升
中國聯(lián)合網(wǎng)絡(luò)通信有限公司天津市分公司,天津 300074
L1業(yè)務(wù)接口規(guī)范是位于定位業(yè)務(wù)請求端和定位能力平臺(或接入系統(tǒng))之間的粗定位業(yè)務(wù)接口規(guī)范,基于此論述了通過Java語言對該協(xié)議中LIR請求消息的封裝及LIA應(yīng)答消息的解析,并實現(xiàn)了L1接口的實際應(yīng)用。
蜂窩移動通信網(wǎng);L1接口技術(shù)要求;Java
《800 MHz CDMA數(shù)字蜂窩移動通信網(wǎng)定位業(yè)務(wù):L1接口技術(shù)要求(基本要求)》標(biāo)準(zhǔn)規(guī)定了CDMA數(shù)字蜂窩移動通信網(wǎng)中為完成定位業(yè)務(wù),LCS Client與MPC之間消息接口的最低技術(shù)要求。適用于800 MHz數(shù)字蜂窩移動系統(tǒng),供運營、管理、規(guī)劃以及相關(guān)設(shè)備的引進與生產(chǎn)時使用。
根據(jù)PN4747,如圖1所示,L1接口是CDMA移動定位中心(MPC)與位置服務(wù)客戶機(LCS Client)之間的接口。
圖1 L1接口位置示意圖
L1接口協(xié)議(CDMA移動定位協(xié)議)是應(yīng)用級協(xié)議,用于使用CDMA無線定位技術(shù)定位時MPC與SP位置應(yīng)用的通信接口。
L1協(xié)議采用HTTP/XML作為底層協(xié)議及編碼形式。XML是一種可擴展標(biāo)記語言,優(yōu)點是可根據(jù)設(shè)計的需要自行定位標(biāo)簽,SP和MPC之間的接口往往會根據(jù)功能或者業(yè)務(wù)的需要自行定義參數(shù),使用XML語言可以自行定義標(biāo)簽,建立協(xié)議數(shù)據(jù)特別靈活。
MPC對PS設(shè)置兩個HTTP端口用來進行接口數(shù)據(jù)傳遞,一個采用SSL來保證通信數(shù)據(jù)的安全,一個不需要采用SSL。
前者一般提供給非信任域或非安全域的用戶,例如:通過互聯(lián)網(wǎng)訪問的用戶;后者提供給位于可信任域中的用戶,例如:通過通信專線及局域網(wǎng)訪問的用戶,不采用SSL加密的通信方式可獲得更高的數(shù)據(jù)傳輸速率。
一般選擇兩個端口號碼作為建議的標(biāo)準(zhǔn)端口,且由IANA(互聯(lián)網(wǎng)指定的號碼機構(gòu))登記,CDMA系統(tǒng)中建議使用以下兩個端口:
700 用于SSL傳輸;
701 用于非安全傳輸。
位置服務(wù)器也可采用基于其他通信協(xié)議的接口方式實現(xiàn)安全傳輸,但是不能占用以上兩個端口。
一個LCS Client 通過發(fā)送一個HTTP POST 請求給MPC 來請求位置服務(wù),語法為: POST SP host SP HTTP/1.1 CRLF。
請求必須將實體標(biāo)頭內(nèi)容長度字段作為請求的一部分。請求的消息部分應(yīng)該包括XML 格式下的請求,長度應(yīng)該等于LCS 客戶機在內(nèi)容長度字段中規(guī)定的長度值。對位置信息的所有請求都公布到相同的URI上。
URI 的實例如圖2所示:
http://host:port/LcsInterface/
圖2 L1接口消息流程示意圖
2.1 請求消息
位置請求有三種類型:
LIR:位置立即請求。指立即(在一定的時間內(nèi))需要一個位置響應(yīng)的位置請求。LCS 客戶機根據(jù)業(yè)務(wù)需求決定是否使用立即請求,MPC根據(jù)業(yè)務(wù)的PQOS要求的精度決定定位方法。
LTR 觸發(fā)型位置請求。指不立即要求一個或多個位置響應(yīng)的位置請求,而是通過設(shè)置一定的觸發(fā)條件,如定時觸發(fā),當(dāng)滿足設(shè)定定位的觸發(fā)條件時,MPC會發(fā)起定位,并向LCS Client以定位請求報告的形式返回測量結(jié)果。
LCTR 觸發(fā)型位置請求取消。這種請求用于取消觸發(fā)型定位請求。只有位置服務(wù)器已經(jīng)接到并承認(rèn)的延期請求才可以取消。請求時只要發(fā)送REQ_ID即可。
2.2 響應(yīng)消息
對于請求的響應(yīng)消息也存在三類,對LIR和LTR的答復(fù)包含測量結(jié)果,對LCTR的答復(fù)只包含MPC為測量請求分配的REQ_ID,各種答復(fù)如下所示。
LIA 位置立即請求答復(fù)。
LTA 觸發(fā)型位置請求答復(fù),只要求發(fā)送REQ_ID即可。
LCTA 觸發(fā)位置請求取消答復(fù),只要求發(fā)送REQ_ID即可。
3.1 Java語言
Java編程語言誕生于1995年,是一種高級語言,很快就被業(yè)內(nèi)廣泛接受。目前已經(jīng)成為少數(shù)應(yīng)用最為廣泛、影響力最大的程序設(shè)計語言之一。Java是進行網(wǎng)絡(luò)程序設(shè)計及面向?qū)ο箝_發(fā)的理想語言,向用戶在各個不同的應(yīng)用領(lǐng)域提供成熟的技術(shù)支持。
Java語言有如下特點及長處:
(1)語法簡單,功能強大。Java有一系列簡明、內(nèi)聚的特點,易于學(xué)習(xí)和使用;結(jié)合了Eiffel、Smalltalk及C++面向?qū)ο笳Z言的優(yōu)點,同時又創(chuàng)新引入了一系列獨有的新特性。
(2)分布式與安全性。Java語言核對網(wǎng)絡(luò)特性,內(nèi)置了TCP/IP、HTTP及FTP的協(xié)議類庫,便于開發(fā)基于網(wǎng)絡(luò)的應(yīng)用系統(tǒng)。Java設(shè)計以網(wǎng)絡(luò)的分布式環(huán)境為主,是開發(fā)WWW的理想語言。
(3)多線程。Java語言支持語言的多線程功能,允許用戶程序并行執(zhí)行。Java語言提供的同步機制可以保證各個線程對共享數(shù)據(jù)的準(zhǔn)確操作。在硬件具備條件的情況下,線程還可以直接分布到各個CPU上運行,使硬件的性能得到充分發(fā)揮。
(4)面向?qū)ο?。Java是完全面向?qū)ο蟮恼Z言,十分適合編寫面向?qū)ο蟮膽?yīng)用程序。Java語言的每一個部分幾乎都是對象,除了基本數(shù)據(jù)類型之外,所有的數(shù)據(jù)均用對象表示。
(5)可移植性好。Java語言具有“一次編寫,隨處運行”的特點,它并沒有綁定在特定的機器和操作系統(tǒng)架構(gòu)上,可運行程序使用統(tǒng)一的“字節(jié)碼”形式出現(xiàn),通過安裝在操作系統(tǒng)上的Java VM(虛擬機)運行。字節(jié)碼與操作系統(tǒng)無關(guān),即無論是在哪種操作系統(tǒng)下編譯的程序,只需要虛擬機來執(zhí)行運行,虛擬機可以將字節(jié)碼翻譯成特定的計算機及操作系統(tǒng)能夠理解執(zhí)行的具體的機器代碼。
本論文中使用J2SE來實現(xiàn)LIR請求消息及LIA應(yīng)答消息的組合及解析功能。
3.2 Eclipse開發(fā)環(huán)境
Eclipse是業(yè)界知名且使用廣泛的開源集成開發(fā)環(huán)境(IDE)。主要用來開發(fā)基于Java語言的計算機應(yīng)用程序,因為其靈活的“基于插件”式的功能設(shè)置,現(xiàn)在已經(jīng)可以通過安裝不同的插件來進行多種語言的應(yīng)用程序開發(fā),例如:PHP、Python、C++。
Eclipse的本身只是一個框架平臺,但因為出現(xiàn)了內(nèi)容豐富的插件,所以Eclipse擁有絕佳靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。
IBM公司是Eclipse IDE最初開發(fā)者,但它于2001年11月將Eclipse貢獻給開源社區(qū),目前非營利軟件供應(yīng)商聯(lián)盟Eclipse基金會(Eclipse Foundation)對Eclipse進行管理。
Eclipse的插件機制是輕型軟件組件化架構(gòu),Eclipse通過插件來實現(xiàn)所有附加功能,例如兼容非Java語言。目前能夠得到支持的語言已經(jīng)包括:Perl、C/C++、Ruby、PHP,Python。靈活的插件式架構(gòu)可支持將任何擴展加入到現(xiàn)有IDE環(huán)境中,例如版本管理,絕不僅僅限于支持各種編程語言。
Eclipse設(shè)計思想是:一切都是插件。Eclipse核心部分很小,其他所有功能都是以插件形式插接于Eclipse核心之上。Eclipse基本內(nèi)核包括:圖形API(SWT/Jface),Java開發(fā)環(huán)境插件(JDT),插件開發(fā)環(huán)境(PDE)等。
4.1 LIR消息格式
L1接口協(xié)議中的XML全部采用DTD文件進行定義,其中LIR消息的內(nèi)容定義如下:
4.2 LIR消息封裝的JAVA實現(xiàn)
主要通過引用DOM4J程序包按照消息元素的定義來實現(xiàn)XML消息的封裝,具體的代碼樣例如圖所3示。
圖3 LIR消息封裝代碼示意
4.3 LIA消息格式
【注釋:在請求消息中只有一個主叫用戶,在響應(yīng)消息中不會出現(xiàn)多個主叫號碼】
4.4 LIA消息解析的JAVA實現(xiàn)
主要通過引用DOM4J程序包按照消息元素的定義來實現(xiàn)XML消息的解析,具體的代碼樣例如圖4所示。
圖4 LIA消息解析代碼開發(fā)樣例
使用Java標(biāo)準(zhǔn)版(SE)開發(fā)庫對以上消息格式再次進行HTTP封裝后形成可執(zhí)行的jar文件,與天津本地的定位能力平臺進行對接,可實現(xiàn)對移動終端號碼的粗定位請求,并取得定位位置結(jié)果,使用情況如圖5所示。
圖5 LIR消息封裝及LIA消息解析應(yīng)用示結(jié)果意圖
將上述定位所得的經(jīng)緯度信息在地圖API中進行展示如圖6所示。
圖6 定位結(jié)果展示圖
[1]數(shù)字蜂窩移動通信網(wǎng)定位業(yè)務(wù):L1接口技術(shù)要求[S].中華人民共和國信息產(chǎn)業(yè)部,2006-03-01.
[2]Noam Shendar.Java軟件解決方案是怎樣勝過硬件加速器的[J].集成電路應(yīng)用,2005(6):61-63.
Java L1 Interface Protocol Implementation
Sui Yuesheng
China United Network Communications Co., Ltd., Tianjin Branch, Tianjin 300074
L1 Service Interface Specification coarse positioning services interface specification located location service requester and positioning capabilities of the platform (or access system). This article discusses the Java language in the agreement LIR request message encapsulation and LIA reply message analysis, and to achieve practical application L1 interface.
cellular mobile communication network; L1 interface technology requirements; Java
TN402
A
1009-6434(2016)08-0093-04