]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/tossim/TossimPacketModelC.nc
Merge over into the trunk.
[tinyos-2.x.git] / tos / lib / tossim / TossimPacketModelC.nc
index d503330fa154698b0c430127f50bb13fd8bc1cb4..bfe6d2fff79d83ab7322fcb8cb7aa48cc9c5b6aa 100644 (file)
@@ -64,6 +64,7 @@ implementation {
   uint8_t backoffCount;
   uint8_t neededFreeSamples;
   message_t* sending = NULL;
+  bool transmitting = FALSE;
   uint8_t sendingLength = 0;
   int destNode;
   
@@ -208,7 +209,7 @@ implementation {
       delay = sim_csma_rxtx_delay();
       delay *= (sim_ticks_per_sec() / sim_csma_symbols_per_sec());
       evt->time += delay;
-      
+      transmitting = TRUE;
       evt->handle = send_transmit;
       sim_queue_insert(evt);
     }
@@ -266,12 +267,13 @@ implementation {
   void send_transmit_done(sim_event_t* evt) {
     message_t* rval = sending;
     sending = NULL;
+    transmitting = FALSE;
     dbg("TossimPacketModelC", "PACKET: Signaling send done at %llu.\n", sim_time());
     signal Packet.sendDone(rval, SUCCESS);
   }
 
   event void GainRadioModel.receive(message_t* msg) {
-    if (running) {
+    if (running && !transmitting) {
       signal Packet.receive(msg);
     }
   }