Szenzorhálózatok - HF: Szomszédok felderítése

A VIK Wikiből
A lap korábbi változatát látod, amilyen Szikszayl (vitalap | szerkesztései) 2014. augusztus 24., 18:09-kor történt szerkesztése után volt.
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Feladat: (1) szomszédok felderítése

Részletes kiírás

Készítsen olyan minta alkalmazást, ahol a szenzorhálózati csomópontok (mótok) képesek önállóan felderíteni a kommunikációs sugarukon belül elérhető szomszédaikat. A feladat minden mót számára egy táblázat létrehozása és folyamatos karbantartása a szomszédairól, figyelembe véve, hogy a szomszédos csomópontok eltűnhetnek ill. új csomópontok is megjelenhetnek a hálózatban.

Adjon megoldást arra is, hogy a csomópontok eljuttassák a szomszédossági információkat egy PC-hez kötött nyelő állomásnak, többugrásos (multi-hop) hálózatot feltételezve (azaz amikor nem minden állomás képes közvetlenül a nyelővel kommunikálni). A PC képernyőjén jelenjen meg a hálózat logikai gráfja, azaz a gráf csomópontjai a mótok, az élek pedig egymással közvetlenül kommunikálni képes mótokat kötnek össze.

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 a küldő címét. Minden mote periodikusan elküld egy ilyen csomagot a saját címével mindenkinek, azaz a broadcast címre (TOS_BCAST_ADDR). Ha valaki vesz egy ilyen csomagot, akkor bejegyzi a táblázatába, hogy az a mote a közelben van. Azokat a mote-okat, amiktől érkezett valamikor üzenet, de azóta már sok idő eltelt, törölni kell a táblázatból. (Lehet úgy is, hogy időnként törli az egészet, és egy bizonyos ideig vár újabb csomagokat, és akiktől érkezett, azokat tekinti szomszédainak. Arra azért ügyelni kell, hogy a felhasználó ne lásson olyat, hogy nincsenek szomszédok, vagy kevés szomszéd van, miközben biztos szomszédai vannak, csak épp törölte a listát, azaz amíg össze nem gyűlt teljesen az új szomszédlista, addig a régit meg kell őrizni.)

A feladatból első körben el lehet hagyni a multihop kommunikációt, és a mitmóton megjeleníteni azt, hogy milyen szomszédai vannak. Erre lehet használni a LED-eket, pl. úgy, hogy ha max. 4 mote van, akkor 1-1 LED tartozhat a mote-okhoz, de jobb megoldás, ha sorban végigmegy a szomszédainak listáján, és binárisan megjeleníti a címüket, mindegyiket 0,5-1 másodpercig.

Szükséges komponensek:

  • Kell egy komponens, ami az üzeneteket küldözgeti
    • A GenericComm-hoz kapcsolódik, SendMsg interfésszel
    • Ez egy Timer-t használhat arra, hogy periodikusan küldje az üzeneteket
  • Kell egy komponens, ami fogadja az üzeneteket
    • A GenericComm-hoz kapcsolódik, ReceiveMsg interfésszel
    • A fogadott csomagokból kideríti, hogy ki küldte, és ezt továbbadja a következő komponensnek
  • Kell egy komponens, ami a táblázatot nyilvántartja
    • Az interfészén keresztül lehessen jelezni, hogy valakitől érkezett csomag
  • Kell egy komponens, ami az eredményt megjeleníti.
    • Ez kiolvassa a szomszédsági táblázatot
    • és periodikusan megjeleníti a címeiket a LED-eken
    • Egy Timer-t és a Leds4C komponens Leds4 interfészét használja a periodikus megjelenítésre.

-- Laci - 2007.04.19.