岳佳欣,王 忠
(1.四川電影電視學院,成都 610036;2.四川大學 電氣信息學院,成都 610065)
基于NFC的P2P文件傳輸系統(tǒng)將NFC、藍牙技術結(jié)合,可實現(xiàn)2臺智能移動終端之間文件的快速互傳,優(yōu)化2臺NFC設備之間的P2P通信方案。NFC P2P通信是Android Beam技術的應用,APP采用基于市場占有率最高的Android系統(tǒng)進行開發(fā)[1]。NFC論壇定義的P2P通信模式可支持2臺NFC設備之間的雙向交互,實現(xiàn)數(shù)據(jù)信息點到點傳輸[2-3]。傳輸?shù)奈募▓D片、視頻、音頻、程序、APK等[4]。在P2P通信模式下,參與通信的2臺NFC設備分別稱為發(fā)起設備(initiator)和目標設備(target)。initiator和target之間可以相互轉(zhuǎn)換,NFC P2P傳輸速率有106、212、424 kbit/s[5]。由于傳輸速率的限制,P2P通信適合小文件的傳輸,在傳輸過程中,2臺NFC設備必須保持在通信距離范圍(<4 cm)內(nèi),否則通信鏈路中斷,文件傳輸失敗。為了提高文件傳輸速率,增大通信距離,NFC P2P文件傳輸系統(tǒng)實現(xiàn)2臺NFC設備之間快速配對,然后使用藍牙技術實現(xiàn)數(shù)據(jù)傳輸[6]。
P2P通信模式是NFC技術三大工作模式之一。在該模式下,2臺NFC設備之間可以進行點對點數(shù)據(jù)通信。NFC P2P通信也被稱為Android Beam技術。本系統(tǒng)采用Android Beam實現(xiàn)2臺智能移動終端之間通信鏈路的建立,采用藍牙技術實現(xiàn)文件之間的互傳。
NFC技術是近距離高頻無線電通信技術,其基于無線電射頻識別技術[7-8]。NFC技術允許2臺設備之間、設備和NFC標簽之間在小于4 cm的通信距離內(nèi)進行數(shù)據(jù)傳輸,工作頻率為13.56 MHz,工作原理采用電磁感應耦合技術[9]。NFC電磁感應耦合系統(tǒng)及等效電路如圖1所示。
在NFC系統(tǒng)中,若設備依靠自身RF場提供的能量激活通信,則稱為主設備(active device);若設備依靠其他設備的RF場提供能量并響應,則稱為從設備(passive device)。發(fā)射器(initiator)和應答器(transponder)之間進行數(shù)據(jù)交互時,要求至少有一方為主設備[10]。
圖1 NFC電磁感應耦合系統(tǒng)及等效電路
P2P文件傳輸系統(tǒng)的設計包括initiator與target兩部分。首先要為2臺NFC智能移動終端選定Initiator和Target的角色。當2臺NFC手機觸碰時,鏈接開始建立,選定的文件通過藍牙技術從Initiator傳向Target。當2臺NFC智能移動終端互換角色時,文件可反方向從新的Initiator傳向新的Target。P2P文件傳輸系統(tǒng)架構(gòu)如圖2所示。
圖2 P2P文件傳輸系統(tǒng)架構(gòu)
NFC P2P協(xié)議棧的最高層是邏輯鏈路控制(LLC)層,該層使用的協(xié)議是LLCP。簡單NDEF交換協(xié)議(simple NDEF exchange protocol,SNEP)緊接LLC層,它支持2個NFC設備之間直接交換NDEF消息。protocol binding使得NFC可以支持其他高層次且用途廣泛的協(xié)議。othere protocols中常用的是conection handover protocol(CHP)[11]。P2P文件傳輸系統(tǒng)基于SNEP開發(fā),NFC P2P協(xié)議棧如圖3所示。
圖3 NFC P2P協(xié)議棧
LLCP基于IEEE 802.2的規(guī)范定義了OSI第二層協(xié)議。LLCP可以更好地支持小應用的有限數(shù)據(jù)傳輸,例如交換名片或相互識別磁條卡號碼等。SNEP專為P2P模式設計,其目的是在通信過程中使用NDEF消息交換信息。SNEP是一種面向鏈接的數(shù)據(jù)傳輸協(xié)議,它的服務端口號為0x04,服務名為“urn:nfc:snep”。SNEP的工作方式是Request/Response。首先,SNEP客戶端向SNEP服務器端發(fā)送SNEP Request消息,請求服務器端處理;然后,SNEP服務器端向SNEP客戶端回復SNEP Response,告知客戶端處理結(jié)果。
當2臺NFC設備都開啟NFC功能并進入有效通信距離時,它們的LLC模塊將進入鏈路激活階段(link activition)。在此階段中,2臺NFC設備分別扮演initiator和target的角色。首先,initiator向target發(fā)送prameter exchang(PAX)數(shù)據(jù)包,該數(shù)據(jù)包用于交換2臺NFC設備LLC層的配置信息。target收到PAX包后進行相應的處理,處理完成后將自己的LLC層配置信息發(fā)送給initiator。當initiator檢測到target的LLC層參數(shù)配置正常時,雙方邏輯鏈路建立成功,可正常工作。當2臺NFC設備超過有限通信距離范圍時,link deactivition觸發(fā),鏈路斷開[12]。link activition工作流程如圖4所示。
圖4 Link Activition工作流程
鏈路被激活后,2臺NFC設備之間先建立面向鏈接的關系,然后再進行數(shù)據(jù)交互??蛻舳送ㄟ^CONNECT包向服務器端發(fā)起鏈接請求。當服務器端對CONNECT包處理成功后,它向客戶端回復connection complete(CC)包,此時鏈接關系建立成功。此后,客戶端和服務器端可通過information包和receive ready(RR)包來傳遞數(shù)據(jù)。面向鏈接工作流程如圖5所示。
圖5 面向鏈接工作流程
當2臺NFC設備之間通信鏈路建立后,系統(tǒng)快速連接藍牙服務。由于Android平臺對藍牙通信協(xié)議提供了完整的封裝,本系統(tǒng)直接調(diào)用Android提供的接口實現(xiàn)藍牙傳輸?shù)姆铡?/p>
API 14中NFC P2P通信被稱為Android beam,它允許2個Android設備之間進行簡單的數(shù)據(jù)對等交互。當initiator和target兩臺設備在NFC通信范圍內(nèi),用戶選定要傳輸?shù)男畔?,然后觸碰UI界面,信息從initiator傳到target。
通過調(diào)用setNdefPushMessage()或setNdef-PushMessageCallback()方法,APP啟用Android Beam。setNdefPushMessage()方法把接收到的NdefMessage對象作為一個消息設置給Beam。當2臺設備在NFC通信距離范圍內(nèi),消息會自動發(fā)。setNdefPushMessageCallback()方法接收包含createNdefMessage()方法的回調(diào)。當Android智能移動終端在發(fā)射數(shù)據(jù)的范圍以內(nèi)時,該回調(diào)方法會被調(diào)用。
1個Activity每次只能推送1條NDEF消息,若2種方法同時使用,setNdefPushMessageCallback()方法的優(yōu)先級要高于setNdefPushMessage()方法。
在啟用Android Beam時,首先需要創(chuàng)建一個包含NdefRecord的NdefMessage對象,該NdefMessage準備被推送到另1臺設備上,然后調(diào)用帶有NdefMessage類型參數(shù)的setNdefPushMessage()方法,或者是在Activity的onCreate()方法中調(diào)用setNdefPushMessageCallback方法,目的是用來傳遞實現(xiàn)NfcAdapter.CreateNdefMessageCallback接口的對象。
在本文中,使用Android Beam技術實現(xiàn)2臺NFC設備的快速配對,當通信鏈路建立后,系統(tǒng)連接藍牙服務。由于Android平臺提供了對藍牙通信協(xié)議完整的封裝,因此直接調(diào)用接口,定義類Bluetoothservice.java實現(xiàn)藍牙傳輸?shù)姆?。開啟同意接收線程AcceptThread()后,建立一個已連接的單線程ConnectedThread(),通過read()方法傳輸數(shù)據(jù),通過cancel()方法取消傳輸。
在P2P文件傳輸系統(tǒng)測試中,通信是雙向的,因此選用NFC平板電腦和NFC手機用于P2P測試。P2P文件傳輸系統(tǒng)測試工具如表1所示。
表1 P2P通信模塊測試工具
在NFC手機和NFC平板電腦上分別安裝P2P文件傳輸APP,首先選擇手機作為Initiator,平板電腦作為Target。進入APP,NFC平板電腦上的APP不啟動,保證2臺設備都處于非鎖屏狀態(tài)。該系統(tǒng)APP主界面如圖6所示,界面4個按鈕分別用于獲取本機的視頻、音頻、圖片和文件列表。點擊按鈕選擇所要傳輸?shù)奈募ɡ邕M入音頻列表,選擇第1個音頻為待傳輸文件,本機音頻列表界面如圖7所示)。將NFC手機和NFC平板電腦的線圈感應區(qū)域靠近,用手觸發(fā)NFC手機屏幕,音頻文件便可從NFC手機傳向NFC平板電腦,P2P通信測試過程如圖8所示。
圖6 P2P通信APP測試界面
圖7 本機音頻列表界面
圖8 P2P通信測試過程圖
在文件傳輸過程中,由于采用的是藍牙技術,因此可將NFC手機與NFC平板電腦移開,不會影響文件傳輸過程。P2P通信文件傳輸過程截圖如圖9所示,可以看到NFC手機提示欄顯示“正在傳輸信息”,NFC平板電腦提示欄顯示“正在接收Beam內(nèi)容”。文件接收成功后,可在NFC平板上播放所傳的音頻文件。
圖9 P2P通信文件傳輸過程截圖
將上述操作反方向再進行一遍,NFC平板電腦上選取的文件成功傳至NFC手機。這說明2臺NFC設備之間已通過雙向P2P通信測試。使用NFC P2P文件傳輸系統(tǒng)時,只需將用于通信的2臺NFC設備觸碰便可實現(xiàn)通信鏈路的建立,免去藍牙復雜的連接匹配過程。而采用藍牙技術傳輸數(shù)據(jù)可提高傳輸速率,避免移開2臺NFC設備時造成的通信過程中斷的問題。
本文中,P2P文件傳輸系統(tǒng)采用NFC技術實現(xiàn)設備的匹配連接,利用藍牙技術實現(xiàn)數(shù)據(jù)互傳。該系統(tǒng)充分利用了NFC與藍牙技術各自的通信與傳輸優(yōu)勢,將NFC技術與藍牙技術有機結(jié)合,成功實現(xiàn)了P2P文件較遠距離的傳輸,為智能移動終端文件方便快捷地傳輸提供了高效的解決方案。