LU-BST-b12:PD/PD3VecaisForumulejums
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 ...]