]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - apps/BaseStation/BaseStationP.nc
Changed the default to be that all platforms #include stdio.h unless specifically...
[tinyos-2.x.git] / apps / BaseStation / BaseStationP.nc
index 3395508ea731a97fc8c2dcf6350152c101eb14f8..2e647c7f83c6429b89f9c2ab7de285cc82cd507f 100644 (file)
@@ -46,7 +46,7 @@
 #include "AM.h"
 #include "Serial.h"
 
-module BaseStationP {
+module BaseStationP @safe() {
   uses {
     interface Boot;
     interface SplitControl as SerialControl;
@@ -75,12 +75,12 @@ implementation
   };
 
   message_t  uartQueueBufs[UART_QUEUE_LEN];
-  message_t  *uartQueue[UART_QUEUE_LEN];
+  message_t  * ONE_NOK uartQueue[UART_QUEUE_LEN];
   uint8_t    uartIn, uartOut;
   bool       uartBusy, uartFull;
 
   message_t  radioQueueBufs[RADIO_QUEUE_LEN];
-  message_t  *radioQueue[RADIO_QUEUE_LEN];
+  message_t  * ONE_NOK radioQueue[RADIO_QUEUE_LEN];
   uint8_t    radioIn, radioOut;
   bool       radioBusy, radioFull;
 
@@ -131,7 +131,7 @@ implementation
 
   uint8_t count = 0;
 
-  message_t* receive(message_t* msg, void* payload, uint8_t len);
+  message_t* ONE receive(message_t* ONE msg, void* payload, uint8_t len);
   
   event message_t *RadioSnoop.receive[am_id_t id](message_t *msg,
                                                    void *payload,
@@ -191,6 +191,7 @@ implementation
     id = call RadioAMPacket.type(msg);
     addr = call RadioAMPacket.destination(msg);
     src = call RadioAMPacket.source(msg);
+    call UartPacket.clear(msg);
     call UartAMPacket.setSource(msg, src);
 
     if (call UartSend.send[id](addr, uartQueue[uartOut], len) == SUCCESS)
@@ -253,7 +254,7 @@ implementation
   task void radioSendTask() {
     uint8_t len;
     am_id_t id;
-    am_addr_t addr;
+    am_addr_t addr,source;
     message_t* msg;
     
     atomic
@@ -266,7 +267,12 @@ implementation
     msg = radioQueue[radioOut];
     len = call UartPacket.payloadLength(msg);
     addr = call UartAMPacket.destination(msg);
+    source = call UartAMPacket.source(msg);
     id = call UartAMPacket.type(msg);
+
+    call RadioPacket.clear(msg);
+    call RadioAMPacket.setSource(msg, source);
+    
     if (call RadioSend.send[id](addr, msg, len) == SUCCESS)
       call Leds.led0Toggle();
     else