

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