本發明涉及一種藍牙傳輸速率的測試方法,具體地涉及一種低功耗藍牙傳輸速率的測試方法。
背景技術:
隨著信息技術的高速發展,低成本、高集成度、低功耗的無線傳感器網絡(wsn)在軍事、醫療、交通、環境監測、智能家居等領域得到了廣泛的應用,無線傳感器網絡也被認為是21世紀最重要的技術之一。無線傳感網絡一般只是為了測量溫度、濕度、血壓等簡單的物理環境數據而建立的,但是研究人員已不滿足無線傳感網絡對簡單信息的監測需求,已經將大數據量多媒體信息引入到無線傳感網絡監測活動中來。
藍牙技術聯盟于2012年發布了藍牙核心規格4.0版本,一般將藍牙規范1.0,2.0和3.0下的br/edr藍牙稱為傳統藍牙,而將藍牙4.0規范下的le藍牙稱為低功耗藍牙(ble),隨后又發布了藍牙4.1、藍牙4.2,其核心部分都是低功耗藍牙。低功耗藍牙技術重要的應用在于其數據的無線傳輸,在低功耗藍牙進行大數據量數據傳輸時,其傳輸速率是重點研究的對象,在實際應用中,低功耗藍牙芯片的傳輸速率是否滿足系統的數據傳輸需求尤為重要。
在低功耗藍牙協議規范里提出了:如果有效載荷長度為num_payload,完整的傳輸周期時長為com_trans_time,數據吞吐量為data_throu,則藍牙低功耗數據吞吐量的計算公式為:
data_throu=num_payload/com_trans_time
但是該種測試方法為低功耗藍牙的傳輸速率的理論值,在測試具體的低功耗藍牙傳輸速率時并不適用。
在低功耗藍牙規范中,低功耗藍牙傳輸速率的理論值是最理想情況下得出的。在低功耗藍牙協議中并沒有規定一個連接事件中數據包的數目,更沒有規定數據包的交互在一個連接間隔中持續進行,因而不同芯片制造商的鏈路層數據包的處理方式等會存在差異,也就是說不同商家的低功耗藍牙芯片傳輸速率也可能不同,但都小于上述理論值。
技術實現要素:
為了解決上述技術問題,本發明的目的是提出一種低功耗藍牙傳輸速率的測試方法,測得的傳輸速率比較準確,可以用于低功耗藍牙技術在實現大數據量傳輸應用時參考實際芯片的傳輸速率需求。
本發明的技術方案是:
一種低功耗藍牙傳輸速率的測試方法,包括以下步驟:
s01:在測試時,將控制器的緩沖區填滿,在發送數據時,判斷剩余緩沖區的大小,如果緩沖區未滿進行持續發送,已滿則等待;
s02:抓取低功耗藍牙的數據信道的空中包,分析一個數據信道中的數據包交互的次數,確定一個連接事件中發送的數據包數目packet_num;
s03:低功耗藍牙的傳輸速率為rate,通過以下公式計算:
rate=(packet_size*packet_num)/con_interval
其中,packet_size為每個數據包的大小,con_interval為連接事件的間隔。
優選的,所述剩余緩沖區的大小通過發送讀控制器緩沖區的命令,根據返回的參數確定。
與現有技術相比,本發明的優點是:
此發明的測試方法測得的傳輸速率比較準確,可以用于低功耗藍牙技術在實現大數據量傳輸應用時參考實際芯片的傳輸速率需求。并且該測試方法可以達到帶寬利用率最大化。
附圖說明
下面結合附圖及實施例對本發明作進一步描述:
圖1是本發明低功耗藍牙傳輸速率的測試方法的流程圖;
圖2是本發明連接事件中主從機數據包交互狀態;
圖3是本發明發送狀態的檢測流程圖;
圖4是本發明數據包分析結構示意圖;
圖5是本發明低功耗藍牙數據信道空中包。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚明了,下面結合具體實施方式并參照附圖,對本發明進一步詳細說明。應該理解,這些描述只是示例性的,而并非要限制本發明的范圍。此外,在以下說明中,省略了對公知結構和技術的描述,以避免不必要地混淆本發明的概念。
實施例:
如圖1所示,一種低功耗藍牙傳輸速率的測試方法,包括以下步驟:
s01:在測試時,將控制器的緩沖區填滿,在發送數據時,判斷剩余緩沖區的大小,如果緩沖區未滿進行持續發送,已滿則等待;
s02:抓取低功耗藍牙的數據信道的空中包,分析一個數據信道中的數據包交互的次數,確定一個連接事件中發送的數據包數目packet_num;
s03:低功耗藍牙的傳輸速率為rate,通過以下公式計算:
rate=(packet_size*packet_num)/con_interval
其中,packet_size為每個數據包的大小,con_interval為連接間隔。
低功耗藍牙數據通信都是發生在連接事件中,在每個連接事件中,主從機雙方可以進行多次數據包的交互,主機會先發送數據包,從機會在150μs之后進行回應,如果主機和從機雙方都沒有數據需要進行傳輸,會回復一個空包,以用來維持兩者的連接狀態,如圖2所示。連接事件的間隔是由低功耗藍牙在進行連接時由用戶進行設定。
低功耗藍牙的控制器部分有一個緩沖區,在連接事件到來時,會在緩沖區中取走相應數量的數據包發送出去。為了帶寬利用率最大化,在進行測試時,要讓控制器的緩沖區填滿,低功耗藍牙協議提供了一種讀控制器緩沖區的命令,其返回兩種參數,分別是鏈路層所支持的數據包的大小以及鏈路層剩余緩沖區的大小。在發送數據時,先判斷剩余的緩沖區大小,如果緩沖區未滿進行持續發送,已滿則等待。如圖3所示。
如果一個數據包的大小是packet_size,一個連接事件能發送數據包的數量為packet_num,每個事件發送的間隔為con_interval,低功耗藍牙的傳輸速率為rate,則有下面公式:
rate=(packet_size*packet_num)/con_interval
(1)關于低功耗藍牙的實際能傳輸數據包大小
以低功耗藍牙4.0/4.1版本為例,鏈路層數據包的信息載荷區數據來自于上層l2cap層。l2cap數據包結構如下所示:
l2cap層數據包含有2字節的長度域,2字節的信道cid,那么剩下的信息載荷區為23字節。而l2cap層信息載荷區數據來自于上層att層,att層數據包結構如下:
att層數據包中含有1個字節的屬性操作碼,剩余23字節為屬性參數(如果支持的最大傳輸單元為23字節),但是低功耗藍牙在在使用notify(通知)、indicate(指示)、write(寫)的方式發送數據時,還需要使用2字節的屬性句柄,所以實際低功耗藍牙實際能傳輸的數據為20字節。總體的結構如圖4所示。
(2)關于一個連接事件發送數據包的數量
不同廠家的低功耗藍牙芯片由于設計要求不同,一個連接事件所能發送的數據包數目也不同。在低功耗藍牙中,每個連接事件發生在0~36的數據信道中,每個連接事件到來時都會切換到另一個數據通道上進行數據傳輸,一個連接事件持續時間中的數據交互都是在同一個通道上。那么,可以通過抓取低功耗藍牙的空中包,分析一個數據信道中有幾次數據包的交互,就可以確定一個連接事件中發送的數據包數目。如圖5為一個抓包示例。
從圖5可知,第一個連接事件發生在第0x0f數據通道、第二個連接事件發生在第0x18數據信道、第三個連接事件發生在第0x21數據信道。每個連接事件中,總共進行了4次數據包的交互,單向發送了2個數據包。
(3)關于連接事件的間隔
低功耗藍牙的連接事件的間隔為一次連接事件的開始到下次連接事件的開始。連接事件的間隔在主機發起連接時由用戶設定,也可以在兩個低功耗藍牙設備建立連接后,由從機發起連接參數更新請求,主機可以接收也可以拒絕。低功耗藍牙協議規定連接間隔參數范圍是0x0006—0x0c80之間,然后乘以1.25ms,所得的時間范圍為7.5ms—4s之間。也就意味著,連接的時間間隔必須大于7.5ms,不能超過4s,還必須是1.25的倍數。
應當理解的是,本發明的上述具體實施方式僅僅用于示例性說明或解釋本發明的原理,而不構成對本發明的限制。因此,在不偏離本發明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。此外,本發明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內的全部變化和修改例。