Changeset 181
- Timestamp:
- 10/05/09 14:01:41 (4 years ago)
- Location:
- apps/TSCH
- Files:
-
- 14 edited
-
Makefile (modified) (1 diff)
-
TODO.txt (modified) (1 diff)
-
TSCH.h (modified) (1 diff)
-
TSCHAppC.nc (modified) (4 diffs)
-
TSCHP.nc (modified) (8 diffs)
-
cellusage/CellUsageC.nc (modified) (2 diffs)
-
cellusage/CellUsageP.nc (modified) (11 diffs)
-
deploy.sh (modified) (1 diff)
-
interfaces/CellUsageGet.nc (modified) (1 diff)
-
keepalive/KeepAliveC.nc (modified) (2 diffs)
-
printpacket/PrintPacketC.nc (modified) (1 diff)
-
reservation/ReservationP.nc (modified) (1 diff)
-
tschqueue/TSCHQueueC.nc (modified) (2 diffs)
-
tschqueue/TSCHQueueP.nc (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
apps/TSCH/Makefile
r155 r181 14 14 CFLAGS += -I $(TOSROOT)/apps/TSCH/globaltime 15 15 CFLAGS += -I $(TOSROOT)/apps/TSCH/printpacket 16 CFLAGS += -I $(TOSROOT)/apps/TSCH/serialoutput 16 17 CFLAGS += -I $(TOSDIR)/lib/printf 17 18 CFLAGS += -D"PRINTF_BUFFER_SIZE=3000" -
apps/TSCH/TODO.txt
r122 r181 1 Thomas2 1 - CellUsageC: TXRES cells will always be reserved, regardless of the previous state. This can cause trouble. Enquire. 3 2 - based on gathered statistics, trigger garbage collection of cells/neighbors -
apps/TSCH/TSCH.h
r180 r181 105 105 } slotChannel_t; 106 106 107 typedef struct stats_t {108 uint16_t neighbor;109 uint32_t first_received;110 uint32_t last_received;111 uint32_t num_received;112 } stats_t;113 114 107 typedef struct heightNeighbor_t { 115 108 bool exists; -
apps/TSCH/TSCHAppC.nc
r139 r181 17 17 components GlobalTimeC; 18 18 components ActiveMessageAddressC; 19 components SerialOutputC; 19 20 //debug 20 21 components PrintPacketC; … … 69 70 NeighborsC.ReservationUpdate->ReservationC; 70 71 71 CellUsageC.GlobalSync h->GlobalTimeC;72 CellUsageC.GlobalSync->GlobalTimeC; 72 73 CellUsageC.GlobalTime->GlobalTimeC; 73 74 … … 79 80 TSCHQueueC.PrintPacket->PrintPacketC; 80 81 TSCHQueueC.GlobalTime->GlobalTimeC; 81 TSCHQueueC.GlobalSync h->GlobalTimeC;82 TSCHQueueC.GlobalSync->GlobalTimeC; 82 83 TSCHQueueC.ActiveMessageAddress->ActiveMessageAddressC; 83 84 84 85 KeepAliveC.SimpleSend->TSCHQueueC.SendKA; 85 86 KeepAliveC.NeighborGet->NeighborsC; 86 KeepAliveC.GlobalSync h->GlobalTimeC;87 KeepAliveC.GlobalSync->GlobalTimeC; 87 88 KeepAliveC.CellUsageGet->CellUsageC; 88 89 … … 93 94 SlotEngineC.CellUsageGet->CellUsageC; 94 95 SlotEngineC.GlobalTime->GlobalTimeC; 95 SlotEngineC.GlobalSync h->GlobalTimeC;96 SlotEngineC.GlobalSync->GlobalTimeC; 96 97 SlotEngineC.ActiveMessageAddress->ActiveMessageAddressC; 97 98 SlotEngineC.CellStats->CellUsageC; 99 SlotEngineC.SerialOutput->SerialOutputC; 98 100 99 101 GlobalTimeC.SubReceive->SlotEngineC; -
apps/TSCH/TSCHP.nc
r136 r181 39 39 heightNeighbor_t nextHop; 40 40 uint8_t printDebugCounter=0; 41 uint 32_t datavaluecounter=0;41 uint8_t datavaluecounter=0; 42 42 uint8_t numreservations; 43 43 bool blinkBool; 44 stats_t stats[7];45 44 46 45 /***************************** helper functions ***************************************/ … … 50 49 task void sendDATAMessage(); 51 50 task void addReservation(); 52 task void printStats();53 51 task void removeReservation(); 54 52 task void printDebug(); … … 99 97 queuedPktUsed[i]=TRUE; 100 98 ((cc2420_header_t*)queuedPkt[i].header)->dest=nextHop.neighbor; 101 //((data_format_t*)queuedPkt[i].data)->value=call GlobalTime.getTime32khz(); 102 ((data_format_t*)queuedPkt[i].data)->value=datavaluecounter; 99 ((data_format_t*)queuedPkt[i].data)->payload[0]=datavaluecounter; 103 100 sendError = call Send.send(&queuedPkt[i],sizeof(data_format_t)); 104 101 if (sendError==FAIL) { … … 111 108 } 112 109 //printf("\n==TSCHP ERROR no free queuedPkt cell");printfflush(); 113 }114 115 task void printStats(){116 uint8_t i;117 for (i=0;i<7;i++) {118 printf("%i %lu %lu %lu\n",stats[i].neighbor,stats[i].first_received,stats[i].last_received,stats[i].num_received);119 }120 110 } 121 111 … … 155 145 call Notify.enable(); 156 146 call Port34.makeOutput(); 157 stats[0].neighbor=2;158 stats[1].neighbor=4;159 stats[2].neighbor=5;160 stats[3].neighbor=8;161 stats[4].neighbor=9;162 stats[5].neighbor=10;163 stats[6].neighbor=11;164 for (i=0;i<7;i++) {165 stats[i].first_received=0;166 stats[i].last_received=0;167 stats[i].num_received=0;168 }169 147 switch (call ActiveMessageAddress.amAddress()) { 170 148 case 2: … … 210 188 if (val==TRUE) { 211 189 if (call ActiveMessageAddress.amAddress()==1) { 212 post printStats();213 190 post printDebug(); 214 191 } else { … … 235 212 //Receive 236 213 event message_t* Receive.receive(message_t* msg, void* payload, uint8_t len){ 237 uint8_t i=0;238 uint32_t senttime = (uint32_t)((data_format_t*)msg->data)->value;239 uint32_t rxtime = ((cc2420_metadata_t*)msg->metadata)->timestamp;240 printf("\n Delay: %lu",rxtime);241 242 214 //printf("\n==TSCHP Receive.received msg=%p rssi=%i",msg,((cc2420_metadata_t*)msg->metadata)->rssi); 243 215 //call PrintPacket.print(msg);printfflush(); 244 216 post blinkLeds(); 245 while (i<7) {246 if (((cc2420_header_t*)msg->header)->src==stats[i].neighbor) {247 if (stats[i].first_received==0) {248 stats[i].first_received = ((data_format_t*)msg->data)->value;249 }250 stats[i].last_received = ((data_format_t*)msg->data)->value;251 stats[i].num_received++;252 return msg;253 }254 i++;255 }256 printf("\n==TSCHP received message from unknown neighbor %i\n",((cc2420_header_t*)msg->header)->src);printfflush();257 217 return msg; 258 218 } … … 267 227 //ActiveMessageAddress 268 228 async event void ActiveMessageAddress.changed(){ 229 } 230 231 //GlobalTime 232 async event void GlobalTime.newSlot(uint32_t newASN) { 233 //don't do anything. Should only be implemented by SlotEngineC 269 234 } 270 235 -
apps/TSCH/cellusage/CellUsageC.nc
r118 r181 8 8 provides interface DebugPrint; 9 9 provides interface CellStats; 10 uses interface GlobalSync h;10 uses interface GlobalSync; 11 11 uses interface GlobalTime; 12 12 } … … 18 18 DebugPrint = CellUsageP.DebugPrint; 19 19 CellStats = CellUsageP.CellStats; 20 GlobalSync h = CellUsageP.GlobalSynch;20 GlobalSync = CellUsageP.GlobalSync; 21 21 GlobalTime = CellUsageP.GlobalTime; 22 22 -
apps/TSCH/cellusage/CellUsageP.nc
r122 r181 8 8 provides interface DebugPrint; 9 9 provides interface CellStats; 10 uses interface GlobalSync h;10 uses interface GlobalSync; 11 11 uses interface GlobalTime; 12 12 uses interface Random; … … 64 64 slotChannel_t return_value; 65 65 return_value.exists=FALSE; 66 if (call GlobalSync h.isSynch()==FALSE){66 if (call GlobalSync.isSync()==FALSE){ 67 67 return return_value; 68 68 } … … 147 147 } 148 148 149 command cellType_t CellUsageGet. GetType(slotOffset_t slotOffset) {149 command cellType_t CellUsageGet.getType(slotOffset_t slotOffset) { 150 150 return getCellType(slotOffset); 151 151 } 152 command uint16_t CellUsageGet. GetNeighbor(slotOffset_t slotOffset) {152 command uint16_t CellUsageGet.getNeighbor(slotOffset_t slotOffset) { 153 153 return getCellNeighbor(slotOffset); 154 154 } 155 command channelOffset_t CellUsageGet. GetChannel(slotOffset_t slotOffset) {155 command channelOffset_t CellUsageGet.getChannel(slotOffset_t slotOffset) { 156 156 return getCellChannelOffset(slotOffset); 157 157 } … … 160 160 command error_t CellUsageSet.setUsage(slotOffset_t slotOffset, cellType_t type, uint16_t neighbor, channelOffset_t channelOffset) { 161 161 error_t return_error; 162 if (call GlobalSync h.isSynch()==FALSE){162 if (call GlobalSync.isSync()==FALSE){ 163 163 return FAIL; 164 164 } … … 212 212 } 213 213 command error_t CellUsageSet.setUsageForce(slotOffset_t slotOffset, cellType_t type, uint16_t neighbor, channelOffset_t channelOffset) { 214 if (call GlobalSync h.isSynch()==FALSE){214 if (call GlobalSync.isSync()==FALSE){ 215 215 return FAIL; 216 216 } … … 236 236 } 237 237 238 //GlobalSync h239 event void GlobalSync h.loosingSynch(){240 } 241 event void GlobalSync h.lostSynch(){238 //GlobalSync 239 event void GlobalSync.loosingSync(){ 240 } 241 event void GlobalSync.lostSync(){ 242 242 } 243 243 … … 249 249 //CellStats 250 250 command void CellStats.update(slotOffset_t slotOffset, bool ack){ 251 if (call GlobalSync h.isSynch()==FALSE){251 if (call GlobalSync.isSync()==FALSE){ 252 252 return; 253 253 } … … 256 256 cellStatsACK = ack; 257 257 post cellStatsUpdate(); 258 } 259 260 //GlobalTime 261 async event void GlobalTime.newSlot(uint32_t newASN) { 262 //don't do anything. Should only be implemented by SlotEngineC 258 263 } 259 264 … … 326 331 327 332 cellType_t getCellType(slotOffset_t slotOffset) { 328 if (call GlobalSync h.isSynch()==FALSE){333 if (call GlobalSync.isSync()==FALSE){ 329 334 return CELLTYPE_ADV; 330 335 } … … 333 338 334 339 uint16_t getCellNeighbor(slotOffset_t slotOffset) { 335 if (call GlobalSync h.isSynch()==FALSE){340 if (call GlobalSync.isSync()==FALSE){ 336 341 return 0; 337 342 } … … 340 345 341 346 channelOffset_t getCellChannelOffset(slotOffset_t slotOffset) { 342 if (call GlobalSync h.isSynch()==FALSE){347 if (call GlobalSync.isSync()==FALSE){ 343 348 return 0; 344 349 } -
apps/TSCH/deploy.sh
r128 r181 1 1 #!/bin/bash 2 make telosb install.1 bsl,0 3 make telosb install.2 bsl,1 2 make telosb install.1 bsl,20 3 make telosb install.2 bsl,21 4 make telosb install.3 bsl,22 5 6 #make telosb install.4 bsl,23 7 #make telosb install.5 bsl,24 8 #make telosb install.6 bsl,25 9 10 #make telosb install.7 bsl,26 11 #make telosb install.8 bsl,27 12 #make telosb install.9 bsl,28 13 14 #make telosb install.10 bsl,29 15 #make telosb install,11 bsl,30 16 #make telosb install.12 bsl,31 17 18 #make telosb install.13 bsl,32 19 #make telosb install,14 bsl,33 20 #make telosb install.15 bsl,34 -
apps/TSCH/interfaces/CellUsageGet.nc
r177 r181 2 2 3 3 interface CellUsageGet { 4 command uint8_t numCells(cellType_t type, uint16_t neighbor);5 command slotChannel_t getCell(cellType_t type, uint16_t neighbor);6 command cellType_t getType(slotOffset_t slotoffset);7 command uint16_t getNeighbor(slotOffset_t slotoffset);4 command uint8_t numCells(cellType_t type, uint16_t neighbor); 5 command slotChannel_t getCell(cellType_t type, uint16_t neighbor); 6 command cellType_t getType(slotOffset_t slotoffset); 7 command uint16_t getNeighbor(slotOffset_t slotoffset); 8 8 command channelOffset_t getChannel(slotOffset_t slotoffset); 9 9 } -
apps/TSCH/keepalive/KeepAliveC.nc
r115 r181 3 3 module KeepAliveC { 4 4 provides interface Init as SoftwareInit; 5 uses interface GlobalSync h;5 uses interface GlobalSync; 6 6 uses interface CellUsageGet; 7 7 uses interface SimpleSend; … … 35 35 } 36 36 37 //GlobalSync h38 event void GlobalSync h.lostSynch() {37 //GlobalSync 38 event void GlobalSync.lostSync() { 39 39 } 40 event void GlobalSync h.loosingSynch() {40 event void GlobalSync.loosingSync() { 41 41 post sendKeepAlive(); 42 42 } -
apps/TSCH/printpacket/PrintPacketC.nc
r122 r181 43 43 case AM_TSCH_DATA: 44 44 printf(" type=DATA"); 45 printf(" value=%lu",((data_format_t*)msg->data)->value);45 printf(" payload=%lu",((data_format_t*)msg->data)->payload); 46 46 break; 47 47 case AM_TSCH_ACK: -
apps/TSCH/reservation/ReservationP.nc
r123 r181 335 335 } 336 336 337 //GlobalTime 338 async event void GlobalTime.newSlot(uint32_t newASN) { 339 //don't do anything. Should only be implemented by SlotEngineC 340 } 341 337 342 //DebugPrint 338 343 command void DebugPrint.print() { -
apps/TSCH/tschqueue/TSCHQueueC.nc
r99 r181 10 10 provides interface DebugPrint; 11 11 uses interface GlobalTime; 12 uses interface GlobalSync h;12 uses interface GlobalSync; 13 13 uses interface PrintPacket; 14 14 uses interface ActiveMessageAddress; … … 23 23 DebugPrint = TSCHQueueP.DebugPrint; 24 24 GlobalTime = TSCHQueueP.GlobalTime; 25 GlobalSync h = TSCHQueueP.GlobalSynch;25 GlobalSync = TSCHQueueP.GlobalSync; 26 26 PrintPacket = TSCHQueueP.PrintPacket; 27 27 ActiveMessageAddress = TSCHQueueP.ActiveMessageAddress; -
apps/TSCH/tschqueue/TSCHQueueP.nc
r122 r181 11 11 provides interface DebugPrint; 12 12 uses interface GlobalTime; 13 uses interface GlobalSync h;13 uses interface GlobalSync; 14 14 uses interface PrintPacket; 15 15 uses interface ActiveMessageAddress; … … 259 259 } 260 260 261 //GlobalSync h262 event void GlobalSync h.loosingSynch() {263 } 264 event void GlobalSync h.lostSynch() {261 //GlobalSync 262 event void GlobalSync.loosingSync() { 263 } 264 event void GlobalSync.lostSync() { 265 265 } 266 266 … … 320 320 async event void ActiveMessageAddress.changed(){ 321 321 } 322 323 //GlobalTime 324 async event void GlobalTime.newSlot(uint32_t newASN) { 325 //don't do anything. Should only be implemented by SlotEngineC 326 } 322 327 }
Note: See TracChangeset
for help on using the changeset viewer.
