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.

Interval, latency, timeout — a jejich nerovnost

Spojení má tři časové parametry a ony spolu musí souhlasit. Ne měly by — musí; jinak je spojení nakonfigurované tak, že se samo shodí, a projeví se to jako náhodné výpadky, které vypadají jako vada rádia.

interval50 mszpoždění (interval × (1+lat))250 msnejkratší přípustný timeout500 msnastavený timeout2000 ms✓ Nastavení je platné: timeout je delší než (1 + latency) × interval × 2.Výpadek se pozná až po timeoutu: 2000 ms ticha, než se spojení prohlásí za mrtvé.
Nastav všechny tři a sleduj červenou čáru — to je nejkratší timeout, který smysl dává. Zkus latency 10 a timeout 1000 ms.
parametrrozsahco znamená
interval7,5 ms – 4 s, po 1,25 msjak často se scházejí
peripheral latency0 – 499kolik schůzek smí periferie vynechat, když nemá co říct
supervision timeout100 ms – 32 s, po 10 mspo jakém tichu se spojení prohlásí za mrtvé
timeout > (1 + latency) × interval × 2nerovnost ze specifikace, ne doporučení

Proč zrovna takhle: periferie smí legálně mlčet (1 + latency) intervalů. Timeout musí být delší než dvojnásobek té doby, jinak centrála prohlásí za mrtvé spojení, které jen využilo svého práva mlčet. Nastavení pod tou hranicí se nechová jako slabší spojení — chová se jako rozbité.

K čemu je peripheral latency dobrá

Je to elegantní trik: ušetří proud, aniž by zhoršila zpoždění směrem k periferii. Periferie, která nemá co říct, prostě schůzku vynechá a spí. Ale kdykoli má centrála data, může je poslat na kterékoli schůzce — a periferie… ne, nemůže, protože zrovna spí.

Tady se to plete i lidem, kteří s BLE pracují roky, takže přesně: latency zhoršuje obě zpoždění stejně. Periferie s latency 4 a intervalem 50 ms neposlouchá 200 ms, takže povel z centrály čeká stejně dlouho jako hlášení z periferie. Šetří se proud, platí se latencí — obojí faktorem (1 + latency).

Kdy se to používá

  • Klávesnice, myš, dálkové ovládání. Interval krátký (7,5–15 ms) kvůli odezvě při stisku, latency vysoká (30–100) kvůli baterii při nečinnosti. Když se něco děje, periferie latency ignoruje a odpoví hned — to smí.
  • Čidlo hlásící jednou za minutu. Latency nemá smysl; lepší je rovnou dlouhý interval.
  • Cokoli, co má reagovat na povel. Latency 0. Jinak povel čeká.

Nejčastější reálná chyba: aplikace požádá o interval 7,5 ms a latency 0 „pro rychlost“, telefon to schválí, a baterie v periferii vydrží dva dny místo roku. Interval je spotřeba — a 7,5 ms je pětadvacetkrát dražší než 200 ms. Vyjednávat se dá kdykoli za běhu: krátký interval při aktivitě, dlouhý při nečinnosti.

Vzorce v této kapitole

timeout — nerovnost pro timeout
T > (1+lat)·interval·2 [ms] kap. 5