關(guān)鍵詞:藍牙耳機;真無線立體聲耳機;SDK;自動化測試
中圖分類號:TN642 文獻標識碼:A
0 引言
藍牙技術(shù)是小范圍無線連接自主組網(wǎng)的通信技術(shù),可實現(xiàn)個域網(wǎng)、局域網(wǎng)、城域網(wǎng)和廣域網(wǎng)的互聯(lián)互通。藍牙剖面(bluetooth profile)是指藍牙通信應(yīng)該遵守和使用的通信協(xié)議規(guī)范,早期藍牙規(guī)范由藍牙技術(shù)聯(lián)盟(Bluetooth Special Interest Group,SIG)創(chuàng)建,并由SIG 工作組定期更新和改進。藍牙剖面包括4 個基本剖面,分別為:通用接入剖面(general access profile,GAP)、服務(wù)發(fā)現(xiàn)應(yīng)用剖面(service discovery application profile,SDAP)、串行端口剖面(serial port profile,SPP)和通用對象交換剖面(general object exchange profile,GOEP)。其余的剖面都可稱為應(yīng)用剖面,應(yīng)用剖面分為3 類:電話剖面、對象交換剖面(object exchange,OBEX)和聯(lián)網(wǎng)剖面。藍牙技術(shù)分為經(jīng)典藍牙、低功耗藍牙和雙模藍牙,其中經(jīng)典藍牙和低功耗藍牙互不兼容。
藍牙耳機設(shè)計中最復雜的部分是設(shè)計符合相關(guān)電磁兼容標準要求的藍牙天線射頻電路,以及基于系統(tǒng)芯片(system on chip,SoC)的軟件開發(fā)。
1 藍牙耳機軟件開發(fā)
藍牙耳機軟件由底層固件、協(xié)議層軟件和應(yīng)用層軟件3 個部分組成,逐層封裝代碼。軟件開發(fā)多為應(yīng)用層軟件,軟件開發(fā)工具包(soft developmentkit,SDK)為用戶提供一種基于事件處理機制的應(yīng)用(APP)開發(fā)框架,各個功能組件會通知用戶,用戶只需基于該框架添加需要處理的事件及事件處理函數(shù),即可按照需求完成相應(yīng)的軟件開發(fā)[1]。
1.1 軟件結(jié)構(gòu)
藍牙耳機軟件結(jié)構(gòu)可分為物理層、協(xié)議層和應(yīng)用層三大部分,其中協(xié)議層和應(yīng)用層這兩部分軟件都存儲在Flash 中,如圖1 所示。
射頻(radio frequency,RF)、基帶(base band,BB)和鏈路管理(link manager,LM)構(gòu)成藍牙的物理層。射頻負責在2.400 GHz ~ 2.485 GHz 的ISM 頻段(一種全球免費使用的無線電頻段)上傳輸數(shù)據(jù)包。基帶是藍牙剖面的重要組成部分,可以對數(shù)據(jù)進行信道的編碼與解碼。鏈路管理負責連接的建立和釋放,通過選擇信道,控制狀態(tài)機的各種狀態(tài)包括待機、掃描、廣播、發(fā)起、連接、同步和同步廣播。
協(xié)議層包括邏輯鏈路控制和適配協(xié)議(logicallink control and adaptation protocol,L2CAP)、服務(wù)發(fā)現(xiàn)協(xié)議(service discovery protocol,SDP)、射頻通信(radio frequency communication,RFCOMM)協(xié)議和電話控制協(xié)議規(guī)范(telephony controlprotocol spectocol,TCS)。L2CAP 主要負責協(xié)議復用,協(xié)議棧的數(shù)據(jù)都可以通過它連接并且傳輸?shù)娇刂破?,用于區(qū)分加密信道與普通信道。藍牙環(huán)境下射頻變化較大,業(yè)務(wù)的參數(shù)也會不斷變換,SDP提供一種用于發(fā)現(xiàn)可用服務(wù)的機制。射頻通信協(xié)議可以仿真串口協(xié)議,在無線環(huán)境下實現(xiàn)對傳輸控制協(xié)議/ 因ABoHC9Od+1a7wiXtnjf+Zw==特網(wǎng)互聯(lián)協(xié)議(transmission controlprotocol/internet protocol,TCP/IP)、無線應(yīng)用協(xié)議(wireless application protocol,WAP) 等協(xié)議的支持,同時,其還支持AT 指令集。
基帶以上的全部協(xié)議包括鏈路管理協(xié)議(linkmanager protocol,LMP)、L2CAP、SDP、先進的音頻分布協(xié)議(advanced audio distribution profile,A2DP)、免提協(xié)議(hands free profile,HFP)、音頻視頻遠程控制協(xié)議(audio/video remote controlprofile,AVRCP)等,這些協(xié)議對應(yīng)的程序模塊稱為協(xié)議棧,協(xié)議層軟件可以被直接調(diào)用。
1.2 建立藍牙連接過程
以手機和藍牙耳機連接為例,從物理層到應(yīng)用層建立連接的過程如下[2]。
(1)建立基帶層的連接。主設(shè)備(手機)以跳頻的方式尋呼從設(shè)備(藍牙耳機),從設(shè)備會按照固定間隔時間來掃描外部尋呼,當掃描到外部尋呼時便會響應(yīng),使兩個設(shè)備之間建立異步無連接(asynchronous connection less,ACL)。
(2) 建立L2CAP 層的連接。主設(shè)備發(fā)起channel 的連接請求, 即L2CAP 的連接。L2CAP能向上層提供面向連接的或者無連接的數(shù)據(jù)服務(wù)。L2CAP 發(fā)出Information request,控制器接口(hostcontroller interface,HCI)收到ACL Data,從而完成信道配置。
(3)SDP 查詢。SDP 可以搜索發(fā)現(xiàn)附近能夠提供服務(wù)的設(shè)備,通過協(xié)議中規(guī)定的服務(wù)搜索功能提供尋找耳機服務(wù)。由于手機是藍牙主設(shè)備,配對過程由手機發(fā)送配對請求。
(4) 建立RFCOMM。主設(shè)備通過SDP 得到RFCOMM 的通道號,發(fā)起連接請求建立RFCOMM的連接。建立RFCOMM 鏈路之后,就可通過無線模擬有線的串口協(xié)議進行通信。
(5)傳輸AT 指令??梢酝ㄟ^串口助手發(fā)送AT指令,設(shè)置波特率,大多是115 200 b/s 或者9 600 b/s。常用的AT 指令包括AT+QS00\r(查詢藍牙芯片的角色)、AT+QC00\r(查詢藍牙芯片的狀態(tài))等。
(6) 建立同步定向連接(synchronousconnection oriented,SCO)。SCO 用于傳輸實時性要求較高的語音通話,也可以傳送數(shù)據(jù),但在傳送數(shù)據(jù)時,只用于重發(fā)丟失的數(shù)據(jù)包。藍牙連接的過程為:鏈路建立→ 信道建立→ 射頻通信建立→連接。
1.3 軟件開發(fā)流程
用戶選擇適合項目需求的SDK 版本進行下載和安裝,設(shè)置環(huán)境變量、授權(quán)密鑰等,配置頭文件(.h)和庫文件(.lib)的路徑,將動態(tài)庫(.dll)放到可執(zhí)行程序目錄下。導入SDK,調(diào)用SDK 提供的函數(shù)、類和協(xié)議棧,并參考SDK 提供的文檔和示例代碼來完成相關(guān)軟件開發(fā)。
如圖2 所示,藍牙耳機上電后,首先執(zhí)行耳機初始化。掃描查詢到連接請求時,通過主機控制接口(host controller interface,HCI)確定是否進行連接。若連接,則根據(jù)藍牙協(xié)議規(guī)范,與藍牙主設(shè)備進行建鏈、通信,最后釋放連接。
1.4 用戶界面
用戶界面(user interface,UI)是用戶端描述如何操作藍牙耳機的界面,其提供了狀態(tài)機的控制信息,也是軟件開發(fā)的依據(jù)之一。UI 主要包括按鍵控制界面、指示界面和操作流程等方面[3]。
多功能按鍵能夠使耳機在不同狀態(tài)下,通過按鍵時間的長短實現(xiàn)不同的功能,并且可以根據(jù)需要自定義按鍵。例如,雙擊可實現(xiàn)音量的增加/ 減少;短按可實現(xiàn)通話的接聽、拒絕和結(jié)束;長按可實現(xiàn)音樂的快進或者重播。
可視化接口是直觀的發(fā)光二極管(lightemittingdiode,LED)指示燈信號,其對應(yīng)耳機的不同狀態(tài)。例如,配對模式:耳機處于配對模式中,紅燈亮0.1 s,然后藍燈亮0.1 s,繼續(xù)這個狀態(tài)直到耳機離開配對模式或者進入配對模式。低電量模式:綠燈和紅燈同時亮0.5 s,滅0.5 s,然后重復。充電模式:充電時,紅燈長亮;充電完成,綠燈長亮。
頻率不同、時間不同的提示音在不同狀態(tài)的界面進行定義,如開機、關(guān)機、來電、通話結(jié)束、配對成功、配對失敗、電池低壓報警等。UI 也可以開發(fā)語音提示功能。
2 藍牙耳機軟件測試
在軟件開發(fā)過程中和發(fā)布前,需要由專業(yè)的軟件測試工程師進行測試,將所發(fā)現(xiàn)的程序錯誤反饋給軟件開發(fā)工程師來解決。在一個典型的編程項目中,軟件測試或系統(tǒng)測試大約占用50% 的項目總時間和超過50% 的總成本[4]。軟件測試原則就是確認軟件是否“未做其應(yīng)該做的”和是否“做了其不應(yīng)該做的”。測試用例的設(shè)計推薦使用黑盒測試方法進行設(shè)計,然后視情況使用白盒測試方法來補充。經(jīng)驗豐富的測試工程師經(jīng)常能夠判斷可能犯的錯誤或錯誤類型。
2.1 功能測試
功能測試是一個試圖發(fā)現(xiàn)程序錯誤的過程,而不僅是為了證明程序符合需求規(guī)格說明書(requirements specification,RS)。按照RS 和UI,編寫測試計劃和設(shè)計測試用例。測試內(nèi)容包括接打電話、聽音樂、主動降噪和環(huán)境降噪、冒煙測試、空口(over the air,OTA) 測試、藍牙認證(bluetooth qualification body,BQB)測試、電池充放電測試以及可用性測試(用戶體驗測試)等,以期通過這些測試找到界面或人機交互相關(guān)的缺陷(bug)等。其中,冒煙測試是設(shè)計一組簡單的測試用例,用于檢查應(yīng)用程序的基本功能是否正常運行;OTA 測試可以評估發(fā)射天線的總輻射功率和接收天線的靈敏度;BQB 測試包括RF 一致性、協(xié)議和剖面一致性。這些測試旨在保證用戶界面是友好的,并且符合設(shè)計規(guī)范。
2.2 TWS 測試
真無線立體聲(true wireless stereo,TWS)技術(shù)主要包括轉(zhuǎn)發(fā)模式、監(jiān)聽模式和雙連接模式。轉(zhuǎn)發(fā)模式是指通過連接主耳機,再由主耳機通過無線方式快速連接副耳機,實現(xiàn)左右聲道無線分離使用。不連接副耳機時,又回到單聲道音質(zhì)。監(jiān)聽模式是通過私有協(xié)議,將收聽的密鑰從主耳機傳給副耳機,藍牙主設(shè)備和主耳機連接后,副耳機再連接藍牙主設(shè)備。主從切換技術(shù)能夠?qū)崿F(xiàn)主副耳機的自由切換。雙連接模式是由藍牙主設(shè)備單獨發(fā)送兩組音頻數(shù)據(jù),再分別連接左右耳機,進而能夠解決主副耳機傳輸延遲問題。
TWS 功能測試內(nèi)容主要包括藍牙連接穩(wěn)定性、音頻傳輸、通話品質(zhì)等;TWS 性能測試內(nèi)容主要包括頻率響應(yīng)、失真度、信噪比等參數(shù)。通過應(yīng)用藍牙協(xié)議分析儀、藍牙綜測儀等儀器,對軟硬件設(shè)計可能出現(xiàn)的問題進行測試分析。
在TWS 主從模式下,根據(jù)測試類型、測試方向,測試工具下發(fā)不同的測試指令和測試參數(shù)給被測平臺,由被測平臺執(zhí)行相應(yīng)的測試[5]。測試類型包括TWS 底層硬件測試和TWS 協(xié)議測試。測試方向包括ACL、擴展同步定向連接(extendedsynchronous connection oriented,eSCO)、SCO、sniff、error。
2.3 自動化測試
人工測試能夠發(fā)現(xiàn)更多的缺陷,測試的品質(zhì)更高,其仍然是軟件品質(zhì)保證(quality assurance,QA)的重要部分。自動化測試與開發(fā)更接近,這主要是因為需要編寫程序代碼。自動化測試是指運行軟件程序后,系統(tǒng)自動執(zhí)行測試用例并且在沒有任何人為干預(yù)的情況下產(chǎn)生測試結(jié)果,其節(jié)省了人力和時間。
自動化測試工具是一種應(yīng)用程序或軟件產(chǎn)品,旨在通過自動化測試腳本驗證功能和非功能要求。全球廣泛使用的自動化測試工具包括LambdaTest、TestProject、Kobiton、Appium 和Katalon Studio。國內(nèi)前海飛算云智軟件科技(深圳)有限公司的SoFlu軟件機器人,只要輸入流程圖,就可實現(xiàn)全棧式軟件開發(fā)工作,其包括后端開發(fā)、前端開發(fā)、測試和運維等。自動化測試工具可以執(zhí)行各種任務(wù),根據(jù)特定計劃進行開發(fā)和運行測試,或者在發(fā)生代碼更改時生成深度報告供團隊查看測試結(jié)果。不同的自動化測試工具具有不同的功能集和編程語言限制。例如,功能測試工具可以更深入地驗證軟件的正確操作,而不局限于關(guān)注應(yīng)用程序的用戶界面。
Python 是一種編程語言,不僅可以用于開發(fā)應(yīng)用程序,還可以用于自動化測試。例如,常用的Python 自動化測試腳本,“日志記錄”代碼如下:
import loggingdef configure_logging(log_file):
logging.basicConfig(filename=log_file,level=logging.DEBUG)
def log_info(message):
logging.info(message)
if __name__ == '__main__':
log_file = 'test.log'
configure_logging(log_file)
log_info(' 這是一條日志記錄')
3 結(jié)語
藍牙耳機差異化競爭的重要途徑是自有品牌的建設(shè),軟件是藍牙耳機的內(nèi)涵,SDK 是基于選型耳機SoC 的軟件開發(fā)基礎(chǔ)。雖然通過改進主副耳機通信、優(yōu)化傳輸編碼等,藍牙延遲問題可以得到改善,但是軟件算法仍然需要繼續(xù)研究,以更好地呈現(xiàn)藍牙耳機的真無線立體聲效果。
為了確保軟件的可靠性,必須在各種設(shè)備、瀏覽器和操作系統(tǒng)上測試。自動化測試工具的發(fā)展趨勢是人工智能和深度學習,從需要深厚編碼知識的復雜技術(shù)轉(zhuǎn)向主要基于記錄和回放功能的低代碼和無代碼工具。