X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=apps%2FBaseStation%2FBaseStationP.nc;h=2e647c7f83c6429b89f9c2ab7de285cc82cd507f;hb=7bae398b43f69d024cf524349705fee97ab002ae;hp=3395508ea731a97fc8c2dcf6350152c101eb14f8;hpb=e432b4056d4ef547d7c128f5fa78928c025d6a8a;p=tinyos-2.x.git diff --git a/apps/BaseStation/BaseStationP.nc b/apps/BaseStation/BaseStationP.nc index 3395508e..2e647c7f 100644 --- a/apps/BaseStation/BaseStationP.nc +++ b/apps/BaseStation/BaseStationP.nc @@ -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