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.
| parametr | rozsah | co znamená |
|---|---|---|
| interval | 7,5 ms – 4 s, po 1,25 ms | jak často se scházejí |
| peripheral latency | 0 – 499 | kolik schůzek smí periferie vynechat, když nemá co říct |
| supervision timeout | 100 ms – 32 s, po 10 ms | po jakém tichu se spojení prohlásí za mrtvé |
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.