X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Flib%2Ftossim%2FTossimPacketModelC.nc;h=bfe6d2fff79d83ab7322fcb8cb7aa48cc9c5b6aa;hb=1a329382c4f4556fd52d85f4e3f4a67e54911682;hp=d503330fa154698b0c430127f50bb13fd8bc1cb4;hpb=3837fe262225242d1629ba72bdf12f6d162ba5c0;p=tinyos-2.x.git diff --git a/tos/lib/tossim/TossimPacketModelC.nc b/tos/lib/tossim/TossimPacketModelC.nc index d503330f..bfe6d2ff 100644 --- a/tos/lib/tossim/TossimPacketModelC.nc +++ b/tos/lib/tossim/TossimPacketModelC.nc @@ -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); } }