在推導數據吞吐量之前需要明白幾個概念:
首先數據發送由Connection Events組成:
Connection Events的間隔由connInterval決定
Connection Events中transmitWindowSize是發送數據的有效大小:
transmitWindowSize的範圍是1.25ms 到 10ms 或者connInterval - 1.25ms
兩種情況:
如果10ms > connInterval - 1.25ms那麼transmitWindowSize的範圍是1.25ms ~ connInterval - 1.25ms
反之:
如果10ms < connInterval - 1.25ms 那麼transmitWindowSize的範圍是1.25ms ~ 10ms
在每一個具體pack之間是由 T_IFS(固定150us)決定
transmitWindowSize = WinSize * 1.25ms
WinSize(1 ~ 8) 這個值由BLE core決定
推導公式如果
1000ms 表示1s
connInterval: 這個大小在 MIN_CONN_INTERVAL 與 MAX_CONN_INTERVAL
150us 代表T_IFS
20:表示BLE有效的數據(也就是用戶數據20 字節)除以2 由於在發送完數據還需要等待回覆,對於發送來說是無效等待
假設:
MIN_CONN_INTERVAL :20ms
WinSize 1:
DataSize = 4Kb/s
WinSize 8:
DataSize = 32Kb/s
MAX_CONN_INTERVAL:75ms
WinSize 1:
DataSize = 1.08Kb/s
WinSize 8:
DataSize = 8.08Kb/s
所以數據的吞吐量範圍區間在:
1.08/KB/s~32KB/s
實際的發送中一般是4.5Kb左右。