Szenzorhálózatok - HF: Óraszinkronizáció, alvás-ébrenlét
Feladat: (2) szinkronizálás, alvás-ébrenlét
Részletes kiírás
Készítsen olyan alkalmazást, amelyben a hálózatban szereplő eszközök periodikusan alszanak és kis kitöltési tényezővel ébren vannak. Az ébrenléti szakaszokat a mótok egymáshoz szinkronizálják és ezen időtartamok alatt egymással kommunikálnak. Az eszköz által biztosított szinkronizációs primitívek segítségével alkosson olyan biztonságos alvás-ébrenlét mechanizmust, hogy a kommunikáció idején a szinkronizációs hibák ellenére biztosan minden állomás ébren legyen, de mégis minden mót a lehető legtöbbet aludjon az energiatakarékosság jegyében.
Minden mót a kommunikációs időszelet (általa ismert) kezdetekor és végén autonóm módon küldjön egy üzenetet, amely egy bázisállomáson keresztül egy PC képernyőjén időbélyeggel együtt jelenjen meg. A LED-ekről leolvasható legyen a mót állapota (alvás/ébrenlét/kommunikáció).
Segítség
A feladat megoldásához a GenericComm komponensre lesz szükség, amivel üzeneteket lehet küldeni és fogadni. Létre kell hozni valamilyen saját üzenetformátumot, amibe bele lehet tenni az órák szinkronizációjához szükséges adatokat. Választani kell valamilyen órszinkronizációs algoritmust, amit meg fogtok valósítani. Ajánlom még figyelmetekbe a LogicalTime nevű komponenst, ami egy logikai óra megvalósítása, lehet lekérdezni és beállítani is az aktuális időt, és lehet relatív módon is változtatni az értékét.
A TinyOS ütemezője automatikusan eleltatja a processzort, ha nincsen futó task. A rádió ki- és bekapcsolása azonban a felhasználói program feladata. Alvás alatt tehát azt értjük, hogy olyankot ki is kell kapcsolni a rádiót. Ezt az IA4420RadioC.StdControl interfészen keresztül tehetjük meg (persze még a kikapcsolás előtt kell elküldeni az üzenetet a központnak, hogy el fog aludni a mote).
-- Laci - 2007.04.19.