X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Flib%2Ftossim%2FTossimPacketModelC.nc;h=f887efca2ce27ca22f1ff8f0f94f970bb4baf9b6;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hp=392682fb4e6f4f86222be1abb9f4cc67668eb784;hpb=6f7715f3c62f5b96850b5c08c0d78ec16d74919b;p=tinyos-2.x.git diff --git a/tos/lib/tossim/TossimPacketModelC.nc b/tos/lib/tossim/TossimPacketModelC.nc index 392682fb..f887efca 100644 --- a/tos/lib/tossim/TossimPacketModelC.nc +++ b/tos/lib/tossim/TossimPacketModelC.nc @@ -133,7 +133,7 @@ implementation { tossim_metadata_t* meta = getMetadata(ack); return meta->ack; } - + task void sendDoneTask() { message_t* msg = sending; tossim_metadata_t* meta = getMetadata(msg); @@ -141,7 +141,7 @@ implementation { meta->strength = 0; meta->time = 0; sending = FALSE; - signal Packet.sendDone(msg, SUCCESS); + signal Packet.sendDone(msg, running? SUCCESS:EOFF); } command error_t Packet.cancel(message_t* msg) { @@ -214,6 +214,7 @@ implementation { delay *= (sim_ticks_per_sec() / sim_csma_symbols_per_sec()); evt->time += delay; transmitting = TRUE; + call GainRadioModel.setPendingTransmission(); evt->handle = send_transmit; sim_queue_insert(evt); } @@ -244,7 +245,7 @@ implementation { void send_transmit(sim_event_t* evt) { sim_time_t duration; tossim_metadata_t* metadata = getMetadata(sending); - + duration = 8 * (sendingLength + sim_packet_header_length()); duration /= sim_csma_bits_per_symbol(); duration += sim_csma_preamble_length(); @@ -273,7 +274,7 @@ implementation { sending = NULL; transmitting = FALSE; dbg("TossimPacketModelC", "PACKET: Signaling send done at %llu.\n", sim_time()); - signal Packet.sendDone(rval, SUCCESS); + signal Packet.sendDone(rval, running? SUCCESS:EOFF); } event void GainRadioModel.receive(message_t* msg) {