LU-BST-b12:PD/PD3VecaisForumulejums

From DiLab
Jump to: navigation, search

PD3 piezīmes

Uzdevums sākotnēji saturēja datu struktūru formulējumu C valodā.

PD3 formulējums tika izmainīts atbilstoši TinyOS standartiem. Šajā lapā ir saglabāta uzdevuma sākotnējā dokumentācija.

Iepriekšējais formulējums

Gan pārraidi no sensoru mezgla pa radio, gan no bāzes stacijas uz seriālo portu veikt ar paketēm, ar sekojošu struktūru:

  • magicStart: 4 baiti, kas izmantoti paketes sākuma identificēšanai datu plūsmā. Šie baiti ir konstanti: { 0xde, 0xad, 0xbe, 0xef };
  • packetType: 2 baiti paketes tipa norādīšanai: 1 = SensorRequestMsg, 2 = SensorReportMsg, 3 = NetworkScanMsg
  • dataLen: 2 baiti saturīgo datu garums
  • data: <dataLen> baiti - saturīgie dati

Visās pakās datu daļā pirmais lauks ir counter: skaitītājs, kas tiek uzturēts individuāls uz katras motes. Pie katras pakas nosūtīšanas mote šo skaitītāju palielina par 1. Viens un tas pats skaitītājs tiek lietots VISĀM pakām, ko sūta šī mote, neatkarīgo no paketes tipa. Ja mote pārsūta citas motes sūtītu paku, visi lauki (tai skaitā, skaitītājs), tiek atstāti ar oriģinālajām vērtībām.

Ja tiek izmantota maršrutizācija, pakās drīkst ieviest papildus laukus, ko izmanto tīkla līmenis.

Saturīgie dati var būt šādā formā, atkarībā no paketes tipa:

SensorRequestMsg (packetType = 1, dataLen = 7) {
   // skaitītājs paku dublikātu identificēšanai
   uint16_t counter;
   // sensoru mezgla id
   uint16_t moteId;
   // kuru sensoru lasīt: 1 = pilnā gaisma, 2 = fotosintētiskā gaisma, 3 = temperatūra, 4 = mitrums
   uint16_t sensorId;
   // ik pa cik sekundēm lasīt un sūtīt šī sensora lasījumus, (0 nozīmē "nolasīt tikai vienreiz")
   uint16_t period;
   // no cik lasījumiem vilkt vidējo vērtību (min = 1, max = 100)
   uint16_t avg;
}
SensorReportMsg (packetType = 2, dataLen = 7) {
   // skaitītājs paku dublikātu identificēšanai
   uint16_t counter;
   // sensoru mezgla id
   uint16_t moteId;
   // nolasītā sensora ID: 1 = pilnā gaisma, 2 = fotosintētiskā gaisma,
   // 3 = temperatūra, 4 = mitrums
   uint16_t sensorId;
   // nolasītā vidējā vērtība
   uint16_t value;
}
NeworkScanMsg (packetType = 3, dataLen = 2) {
   // skaitītājs paku dublikātu identificēšanai
   uint16_t counter;
}

Katrs students izvēlas sev unikālu sensoru tīkla identifikatoru [... tālāk abu formulējumu teksti sakrīt ...]

PD3 Vērtējums

Šī ir PD3 vērtējuma sadaļa pirms 22.10.2012 precizējumiem.


Lai darbs būtu ieskaitīts, jāsaņem vērtējums >= 40%.

Vērtējums tiek saņemts par sekojošu punktu izpildi (pieļaujama kombinācija no jebkuriem punktiem):

  • Jāuzraksta bāzes stacijas (motes) programma, kas:
    • pārsūta no PC pa seriālo portu saņemtos SensorRequestMsg ziņojumus pa radio: 10%
    • pārsūta pa radio saņemtos sev piederīgos SensorReportMsg ziņojumus uz PC pa seriālo portu: 10%
  • Jāuzraksta sensoru mezgla (motes) prorgamma, kas:
    • saņem SensorRequestMsg ziņojumus pa radio un atfiltrē sev piederīgos: 10%
    • nolasa nepieciešamos sensorus ar norādīto periodu, atbilstoši saņemtajiem SensorRequestMsg ziņojumiem. Vienkāršākajā gadījumā programmai jāmāk atcerēties pēdējais SensorRequestMsg un nolasīt tikai vienu sensoru. Ideālā gadījumā: jāatceras katram sensoram pēdējais SensorRequestMsg un jālasa visi pieprasītie sensori paralēli. Vērtējums vienkāršākajā gadījumā: 10%, ideālā gadījumā: 20%.
    • izvelk katra sensora lasījumiem vidējo vērtību: 5%
    • nosūta izrēķināto vidējo vērtību pa radio kā SensorReportMsg ziņojumu: 5%
  • Papildināt PC programmu tā, lai saņemtās sensoru vērtība tiktu attēlotas sakarīgās (nevis jēlās) vērtībās: luksos, grādos, relatīvā mitruma %. Par šī punkta izpildi: 20%
  • Papildināt sensoru mezglu programmas tā, lai tiktu atbalstīts multi-hop tīkls: vai nu ar vienkāršu pludināšanu (flooding) - katrs sensoru mezgls tieši VIENU REIZI pārsūta katru pa radio saņemto ziņojumu -, vai ar kādu efektīvāku maršrutizācijas protokolu. Flooding gadījumā papildus 30% vērtējums, efektīvākas maršrutizācijas gadījumā: līdz 50%.
  • Papildināt PC, bāzes stacijas un sensoru mezgla programmas tā, lai tiktu atbalstīta tīkla skenēšana ar NetworkScanMsg: no PC iespējams noskaidrot, ar kādiem ID motes šobrīd ir tīklā. Vienkāršākajā variantā pietiek ar viena lēciena tīkla skenēšanu. PC nosūta NetworkScanMsg, ko bāzes stacija pārsūta tīklā (un sensoru mezgli pārsūta vēlreiz, ja tiek atbalstīts multi-hop tīkls). Atbildē motes drīkst sūtīt SensorReportMsg jebkuram sensoram pēc izvēles. Papildus vērtējums: 30%.
  • Papildus līdz 50% var iegūt, izveidojot grafisko interfeisu uz PC: gan tīkla skenēšanai, gan sensoru datu pieprasīšanai, gan rezultātu uzskatāmai apskatei. Vērtējums par šo punktu tiek aprēķināts pēc lietojamības viedokļa
    • grafiskais interfeiss var tikt realizēts arī kā tīmekļa programma (ja vien tas dara visu, kas prasīts)