Difference between revisions of "LU-BST-b12:PD/PD3VecaisForumulejums"

From DiLab
Jump to: navigation, search
(PD3 piezīmes)
(PD3 piezīmes)
Line 3: Line 3:
'''Uzdevums sākotnēji saturēja datu struktūru formulējumu C valodā.'''
'''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.
[[LU-BST-b12:PD#PD3 | 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 ===
=== Iepriekšējais formulējums ===

Revision as of 22:21, 16 October 2012

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 ...]