LU-BST-b12:PD/PD3VecaisForumulejums
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%
- pārsūta no PC pa seriālo portu saņemtos
- 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ējaisSensorRequestMsg
un nolasīt tikai vienu sensoru. Ideālā gadījumā: jāatceras katram sensoram pēdējaisSensorRequestMsg
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%
- saņem
- 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ūtaNetworkScanMsg
, 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ītSensorReportMsg
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)