BleLab spojení je kalendář

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Paket: kde se ztratí dvacet bajtů

Každý, kdo poprvé psal aplikaci pro BLE, narazil na tvrdou hranici dvaceti bajtů na zprávu a nechápal, odkud se vzala. Vzala se ze součtu hlaviček, a stojí za to ho vidět.

AAhl.L2CAPATTdataMICCRCna drátě: 41 bajtů, 328 µs (LE 1M)pro aplikaci20 Brežie21 Búčinnost49 %doba vysílání328 µsRežie je konstantní. Čím delší zatížení, tím menší podíl na ni připadne — o tom je celé DLE.A na kódovaném PHY S=8 trvá plný paket 17 ms — nevejde se do třicetimilisekundového intervalu.
  1. 1 + 4 + 2 + 4 + 3 = 14 B

    Preambule, přístupová adresa, hlavička, kontrolní součet a šifrovací značka. Deset až čtrnáct bajtů, které jsou tam vždycky.

  2. + 4 + 3 = 7 B

    L2CAP čtyři bajty, ATT tři. Teprve pod nimi začínají data, která zajímají aplikaci.

  3. 20 B

    Výchozí ATT MTU je 23 bajtů. Po odečtení tří na hlavičku zbývá dvacet — a to je ta slavná dvacítka, o kterou se rozbíjí každý první projekt.

  4. účinnost 49 %, 328 µs

    Od Bluetooth 4.2 může paket nést 251 bajtů místo 27. Režie zůstane stejná, takže se účinnost zvedne ze 49 na 91 procent.

Čtyři kroky. Sleduj zelenou část — to jsou data, která dorazí do aplikace. Jezdcem zvětši zatížení na 251 bajtů a podívej se, jak vyskočí účinnost.
částbajtůk čemu
preambule1 (2 na 2M)srovnání přijímače
přístupová adresa4které spojení to je
hlavička LL2typ a délka
L2CAP4kanál
ATT3operace a handle
data20 (výchozí)to jediné, o co jde
MIC4integrita při šifrování
CRC3kontrolní součet

Jedenadvacet bajtů režie na dvacet bajtů dat. Účinnost 49 %, a to je ještě předtím, než se započítá mezera mezi pakety.

DLE: to jediné, co s tím jde udělat

Bluetooth 4.2 přineslo rozšíření délky dat: paket může nést 251 bajtů místo 27. Režie zůstane přesně stejná, takže:

účinnost = data / (data + 21)49 % při 27 B, 91 % při 251 B

Je to nejlevnější zlepšení propustnosti v celém BLE a stačí ho zapnout. Většina zásobníků ho nezapíná sama — vyjednává se po navázání spojení a spousta aplikací o to nikdy nepožádá. Pokud vaše BLE přenáší 30 kb/s tam, kde by mělo 300, je to skoro jistě tohle.

Ale pozor na dobu vysílání

Delší paket trvá dýl, a to na pomalém PHY bolí:

PHY27 B251 B
2M168 µs1 064 µs
1M328 µs2 120 µs
Coded S=2656 µs4 240 µs
Coded S=82 624 µs16 960 µs

Sedmnáct milisekund je víc než dvojnásobek nejkratšího možného intervalu. Plný paket na S=8 se do krátkého spojení prostě nevejde — a tahle labka to hlásí místo aby to potichu ořízla, protože to je konfigurace, kterou lze nastavit a která pak nic nepřenese.

Kontrolní otázka pro každý projekt: je zapnuté DLE a jaké je vyjednané MTU? Odpověď „nevím“ znamená 20 bajtů a poloviční účinnost. Zvýšit MTU na 247 je jeden řádek v inicializaci a nejlepší poměr užitku k práci v celém BLE.

Vzorce v této kapitole

η — účinnost paketu
η = data / (data + 21) [—] kap. 4