1

我正在嘗試將總連接數+寫入時間降至最低BLE設備。 BLE模塊由我工作的公司開發,所以我已經知道設備的所有服務和特性。跳過BLE服務發現

到目前爲止,連接時間+服務發現時間過長(約800ms,其中要求最高爲500 ms)。我嘗試過跳過服務發現,爲此,我已經在代碼中手動創建了特性和服務(使用反射設置受保護的屬性等),並且可以通過傳遞服務發現來「技術上」。

問題是,如果我這樣做了,第一個數據包大約需要300毫秒,在服務發現的情況下,發現大約需要280毫秒,第一個數據包需要20毫秒,所以看起來服務發現是無論如何,只是後來,即使我不直接打電話 - 我的假設是正確的? 如果是這樣,是否有辦法繞過發現呢?

希望得到任何幫助,到目前爲止我找不到任何有用的信息在線,而那些300毫秒是關鍵。

回答

2

即使您沒有告訴它,Android也會進行服務發現。

你有三個選擇:

  1. 邦德您的設備。然後,android將不會執行任何服務發現(除了第一個連接)。
  2. 優化您的GATT分貝。丟棄你不需要的特性和描述符,如果你有自定義服務,儘量合併儘可能多的特性等。
  3. 如果你有硬件,儘可能地優化鏈路層,以你的方式響應每個GATT請求在相同的連接事件中(150 us內),而不是在下一次連接事件中作出響應。理論上這應該將速度提高2倍。 Nordic Semiconductor的nrf52就是一個可能的例子。
+0

GATT已經過優化(只有所需的服務和特性存在),在優化之前,它需要約550 ms的時間來完成服務發現。將固件/硬件組指向鏈路層並報告結果。謝謝 –

+0

還有一件事可以嘗試:將MTU增加到比缺省值23更高的值(例如512)。這樣更多的服務/特性可以適應每個響應,從而減少連接事件的數量。 – Emil