Protokol DPA
Protokol DPA – Direct Peripheral Access – je jednoduchý bajtově orientovaný protokol pro řízení služeb a periferií zařízení v síti IQRF.
V transceiverech IQRF můžete najít tři základní vrstvy. Základem je operační systém, který je v transceiverech nahrán již z výroby a je možné jej na straně uživatele jednoduše aktualizovat.
Nad operačním systémem je vrstva DPA, která obsahuje připravené plug-in soubory, které jsou dávány k dispozici výrobcem. Jsou to tzv. HWP – hardware profiles. Nahráním zvoleného hardwarového profilu uděláte z transceiveru IQRF například Koordinátor nebo Nod.
V třetí vrstvě může být tzv. Custom DPA Handler, což je kompilovaný program psaný v jazyce C, pomocí kterého lze přizpůsobit chování transceiveru.
Často není potřeba ani žádný Custom DPA Handler vytvářet nebo modifikovat, protože pro žádanou funkcionalitu stačí pouze využívat operační systém spolu s funkčností HWP.
Pomocí protokolu DPA lze na transceiver zasílat příkazy jednoduše v přesné struktuře, snadno se oslovují jeho periferie a zasílají se na ně specifické příkazy.
Struktura DPA příkazu
Podrobnou dokumentaci k protokolu DPA najdete na webu.
NADR Síťová adresa zařízení |
PNUM Číslo periferie |
PCMD Příkaz pro příslušnou periferii |
HWPID Identifikace hardware |
PDATA Volitelná data |
Pole NADR (2B) – síťová adresa – může obsahovat hodnoty 0×00 (Koordinátor), 0×01 – EF (adresy Nodů), 0×FF (broadcast), 0×FE (dočasná adresa), 0×FC („local device“), ostatní adresy jsou rezervované.
Pole PNUM (1B) – číslo periferie – např. 0×02 – OS, 0×03 – EEPROM, 0×04 – EEEPROM, 0×05 – RAM, 0×06 – LEDR, 0×07 – LEDG, 0×08 – SPI, 0×09 – IO, 0×0A – teploměr, 0×0D – FRC, 0×20–6F – uživatelské periferie.
Pole PCMD (1B) obsahuje kód příkazu, který přísluší zvolené periferii. Může obsahovat hodnoty 0×00‑0×3E.
Pole HWPID (2B) slouží k filtrování cílového hardware. V případě, že je zde uvedena hodnota 0×FFFF, tak k filtrování nedochází.
Pole PDATA může obsahovat až 56 bajtů uživatelských dat (v aktuální DPA verzi).
Odeslání DPA příkazu
DPA příkaz v prostředí IQRF IDE lze odeslat pomocí pop-up menu, makra, či ručně nastavením jednotlivých částí příkazu.
Jednoduché odeslání DPA príkazu přes pop-up menu
Jedním z nejjednodušších příkazů pro ověření funkčnosti cílového Nodu je zapnutí/vypnutí červené LED, kterou obsahuje (TR modul). To lze provést zvolením příslušného příkazu v kontextové nabídce zvoleného Nodu.
V přehledném zobrazení IQRF sítě (IQMESH Network Manager – Map View) zvolíte libovolný Nod, kliknete na něj pravým tlačítkem myši a zvolíte příslušný příkaz (LED Red On/Off/Pulse).
Pokud chcete na zvolený Nod odeslat jiný příkaz, který máte aktuálně nastaven v terminálu DPA Test – Data to send, a chcete k tomu využít názorné topologické zobrazení, kliknete na zvolený Nod pravým tlačítkem myši a vyberete příkaz Send Packet from DPA Test. Síťová adresa v DPA paketu se nastaví podle zvoleného Nodu.
DPA příkazy skryté v makrech
Makra slouží ke zjednodušení práce s DPA příkazy. Pod tlačítky maker jsou uloženy DPA příkazy, které lze kdykoli aplikovat. V balíčku Start-up package je připraven soubor DPA-macros.iqrfmcr (název odpovídá aktuální verzi). Lze jej najít v umístění /Examples/DPA/StartUp.
Tento soubor je možno importovat do projektu v IQRF IDE a využít již připravených příkladů (demo projekt má tato makra již importována). Jsou zde připravená makra pro bondování Nodů, zjištění počtu Nodů v síti IQRF, odbondování všech Nodů, nastavení pinů na vstup/výstup, zapnutí/vypnutí určitých pinů, zjištění teploty, vytvoření FRC příkazu a další.
K jednotlivým tlačítkům maker jsou přiřazeny příslušné příkazy, které si uživatel může měnit i tvořit nové.
Pokud chcete tedy zaslat zvolený příkaz skrytý pod některým z tlačítek v oblasti maker, stačí kliknout na příslušné tlačítko, upravit v terminálu DPA Test síťovou adresu cílového transceiveru (NADR) a příkaz odeslat stisknutím tlačítka Send. V případě nastavení síťové adresy na FF (hexadecimálně) se jedná o broadcast a příkaz bude zaslán všem Nodům v síti IQRF.
Vlastní sestavení DPA paketu
V prostředí Terminal – DPA Test lze nadefinovat DPA paket. NADR nastavte na adresu cílového transceiveru, zvolte periferii v políčku PNUM (např. 0A – Thermometer), zvolte příslušný příkaz PCMD (pro periferii Thermometer znamená příkaz 00 – Get temperature), nadefinujte pole HWPID (FFFF znamená nefiltrování hardware), případně nadefinujte PDATA (pro získání teploty z transceiveru není třeba definovat žádná další uživatelská data). Při sestavování částí DPA příkazu lze využít kontextové nabídky.
Výsledný paket – např. pro získání teploty z Nodu se síťovou adresou 01 vypadá takto:
0001 0A 00 FFFF – odešlete na cílové zařízení.
Komunikaci lze vidět v okně Terminal Log, případně detailní strukturu DPA paketu v okně Packet Inspector. V následující ukázce v okně Terminal Log je vidět vyvolaná komunikace z řídicí aplikace, potvrzení od Koordinátoru a odpověď od Nodu, kterému byl dotaz na teplotu zaslán. V okně Packet Inspector je vidět, že byla detekována teplota 26 °C.
Na webu technologie IQRF najdete podrobnou dokumentaci k protokolu DPA. Dále jsou zde k dispozici názorná vysvětlující videa.
V příštím díle se podíváme blíže na využití programové nadstavby Custom DPA Handler, pomocí které lze přizpůsobit chování transceiverů.