LU-BST-b12:PD/PD3VecaisForumulejums

From DiLab
Revision as of 23:17, 16 October 2012 by CaptSolo (talk | contribs) (New page: = PD3 piezīmes = === Iepriekšējais formulējums === ''Uzmanību: formulējumā ir dota saturīgo datu struktūra C valodā. Lai tā darbotos TinyOS, šīs struktūras ir jāpārveido ...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

PD3 piezīmes

Iepriekšējais formulējums

Uzmanību: formulējumā ir dota saturīgo datu struktūra C valodā. Lai tā darbotos TinyOS, šīs struktūras ir jāpārveido par atbilstošiem typedef.

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