隋越升
?
L1接口協議的Java實現
隋越升
中國聯合網絡通信有限公司天津市分公司,天津 300074
L1業務接口規范是位于定位業務請求端和定位能力平臺(或接入系統)之間的粗定位業務接口規范,基于此論述了通過Java語言對該協議中LIR請求消息的封裝及LIA應答消息的解析,并實現了L1接口的實際應用。
蜂窩移動通信網;L1接口技術要求;Java
《800 MHz CDMA數字蜂窩移動通信網定位業務:L1接口技術要求(基本要求)》標準規定了CDMA數字蜂窩移動通信網中為完成定位業務,LCS Client與MPC之間消息接口的最低技術要求。適用于800 MHz數字蜂窩移動系統,供運營、管理、規劃以及相關設備的引進與生產時使用。
根據PN4747,如圖1所示,L1接口是CDMA移動定位中心(MPC)與位置服務客戶機(LCS Client)之間的接口。

圖1 L1接口位置示意圖
L1接口協議(CDMA移動定位協議)是應用級協議,用于使用CDMA無線定位技術定位時MPC與SP位置應用的通信接口。
L1協議采用HTTP/XML作為底層協議及編碼形式。XML是一種可擴展標記語言,優點是可根據設計的需要自行定位標簽,SP和MPC之間的接口往往會根據功能或者業務的需要自行定義參數,使用XML語言可以自行定義標簽,建立協議數據特別靈活。
MPC對PS設置兩個HTTP端口用來進行接口數據傳遞,一個采用SSL來保證通信數據的安全,一個不需要采用SSL。
前者一般提供給非信任域或非安全域的用戶,例如:通過互聯網訪問的用戶;后者提供給位于可信任域中的用戶,例如:通過通信專線及局域網訪問的用戶,不采用SSL加密的通信方式可獲得更高的數據傳輸速率。
一般選擇兩個端口號碼作為建議的標準端口,且由IANA(互聯網指定的號碼機構)登記,CDMA系統中建議使用以下兩個端口:
700 用于SSL傳輸;
701 用于非安全傳輸。
位置服務器也可采用基于其他通信協議的接口方式實現安全傳輸,但是不能占用以上兩個端口。
一個LCS Client 通過發送一個HTTP POST 請求給MPC 來請求位置服務,語法為: POST SP host SP HTTP/1.1 CRLF。
請求必須將實體標頭內容長度字段作為請求的一部分。請求的消息部分應該包括XML 格式下的請求,長度應該等于LCS 客戶機在內容長度字段中規定的長度值。對位置信息的所有請求都公布到相同的URI上。
URI 的實例如圖2所示:
http://host:port/LcsInterface/

圖2 L1接口消息流程示意圖
2.1 請求消息
位置請求有三種類型:
LIR:位置立即請求。指立即(在一定的時間內)需要一個位置響應的位置請求。LCS 客戶機根據業務需求決定是否使用立即請求,MPC根據業務的PQOS要求的精度決定定位方法。
LTR 觸發型位置請求。指不立即要求一個或多個位置響應的位置請求,而是通過設置一定的觸發條件,如定時觸發,當滿足設定定位的觸發條件時,MPC會發起定位,并向LCS Client以定位請求報告的形式返回測量結果。
LCTR 觸發型位置請求取消。這種請求用于取消觸發型定位請求。只有位置服務器已經接到并承認的延期請求才可以取消。請求時只要發送REQ_ID即可。
2.2 響應消息
對于請求的響應消息也存在三類,對LIR和LTR的答復包含測量結果,對LCTR的答復只包含MPC為測量請求分配的REQ_ID,各種答復如下所示。
LIA 位置立即請求答復。
LTA 觸發型位置請求答復,只要求發送REQ_ID即可。
LCTA 觸發位置請求取消答復,只要求發送REQ_ID即可。
3.1 Java語言
Java編程語言誕生于1995年,是一種高級語言,很快就被業內廣泛接受。目前已經成為少數應用最為廣泛、影響力最大的程序設計語言之一。Java是進行網絡程序設計及面向對象開發的理想語言,向用戶在各個不同的應用領域提供成熟的技術支持。
Java語言有如下特點及長處:
(1)語法簡單,功能強大。Java有一系列簡明、內聚的特點,易于學習和使用;結合了Eiffel、Smalltalk及C++面向對象語言的優點,同時又創新引入了一系列獨有的新特性。
(2)分布式與安全性。Java語言核對網絡特性,內置了TCP/IP、HTTP及FTP的協議類庫,便于開發基于網絡的應用系統。Java設計以網絡的分布式環境為主,是開發WWW的理想語言。
(3)多線程。Java語言支持語言的多線程功能,允許用戶程序并行執行。Java語言提供的同步機制可以保證各個線程對共享數據的準確操作。在硬件具備條件的情況下,線程還可以直接分布到各個CPU上運行,使硬件的性能得到充分發揮。
(4)面向對象。Java是完全面向對象的語言,十分適合編寫面向對象的應用程序。Java語言的每一個部分幾乎都是對象,除了基本數據類型之外,所有的數據均用對象表示。
(5)可移植性好。Java語言具有“一次編寫,隨處運行”的特點,它并沒有綁定在特定的機器和操作系統架構上,可運行程序使用統一的“字節碼”形式出現,通過安裝在操作系統上的Java VM(虛擬機)運行。字節碼與操作系統無關,即無論是在哪種操作系統下編譯的程序,只需要虛擬機來執行運行,虛擬機可以將字節碼翻譯成特定的計算機及操作系統能夠理解執行的具體的機器代碼。
本論文中使用J2SE來實現LIR請求消息及LIA應答消息的組合及解析功能。
3.2 Eclipse開發環境
Eclipse是業界知名且使用廣泛的開源集成開發環境(IDE)。主要用來開發基于Java語言的計算機應用程序,因為其靈活的“基于插件”式的功能設置,現在已經可以通過安裝不同的插件來進行多種語言的應用程序開發,例如:PHP、Python、C++。
Eclipse的本身只是一個框架平臺,但因為出現了內容豐富的插件,所以Eclipse擁有絕佳靈活性。許多軟件開發商以Eclipse為框架開發自己的IDE。
IBM公司是Eclipse IDE最初開發者,但它于2001年11月將Eclipse貢獻給開源社區,目前非營利軟件供應商聯盟Eclipse基金會(Eclipse Foundation)對Eclipse進行管理。
Eclipse的插件機制是輕型軟件組件化架構,Eclipse通過插件來實現所有附加功能,例如兼容非Java語言。目前能夠得到支持的語言已經包括:Perl、C/C++、Ruby、PHP,Python。靈活的插件式架構可支持將任何擴展加入到現有IDE環境中,例如版本管理,絕不僅僅限于支持各種編程語言。
Eclipse設計思想是:一切都是插件。Eclipse核心部分很小,其他所有功能都是以插件形式插接于Eclipse核心之上。Eclipse基本內核包括:圖形API(SWT/Jface),Java開發環境插件(JDT),插件開發環境(PDE)等。
4.1 LIR消息格式
L1接口協議中的XML全部采用DTD文件進行定義,其中LIR消息的內容定義如下:
4.2 LIR消息封裝的JAVA實現
主要通過引用DOM4J程序包按照消息元素的定義來實現XML消息的封裝,具體的代碼樣例如圖所3示。

圖3 LIR消息封裝代碼示意
4.3 LIA消息格式
【注釋:在請求消息中只有一個主叫用戶,在響應消息中不會出現多個主叫號碼】
4.4 LIA消息解析的JAVA實現
主要通過引用DOM4J程序包按照消息元素的定義來實現XML消息的解析,具體的代碼樣例如圖4所示。

圖4 LIA消息解析代碼開發樣例
使用Java標準版(SE)開發庫對以上消息格式再次進行HTTP封裝后形成可執行的jar文件,與天津本地的定位能力平臺進行對接,可實現對移動終端號碼的粗定位請求,并取得定位位置結果,使用情況如圖5所示。

圖5 LIR消息封裝及LIA消息解析應用示結果意圖
將上述定位所得的經緯度信息在地圖API中進行展示如圖6所示。

圖6 定位結果展示圖
[1]數字蜂窩移動通信網定位業務:L1接口技術要求[S].中華人民共和國信息產業部,2006-03-01.
[2]Noam Shendar.Java軟件解決方案是怎樣勝過硬件加速器的[J].集成電路應用,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