From: mmaroti Date: Wed, 17 Jun 2009 18:19:00 +0000 (+0000) Subject: Fix ACK request bit overwrite in Send.send X-Git-Tag: rc_6_tinyos_2_1_1~371 X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=commitdiff_plain;h=fd826b0c6dd6212ab904a02b85130d620f6b8ab7 Fix ACK request bit overwrite in Send.send --- diff --git a/tos/chips/rf2xx/layers/IEEE154MessageLayerP.nc b/tos/chips/rf2xx/layers/IEEE154MessageLayerP.nc index bd90a8c0..9b59ff98 100644 --- a/tos/chips/rf2xx/layers/IEEE154MessageLayerP.nc +++ b/tos/chips/rf2xx/layers/IEEE154MessageLayerP.nc @@ -286,6 +286,7 @@ implementation async command void RadioPacket.clear(message_t* msg) { + call IEEE154MessageLayer.createDataFrame(msg); call SubPacket.clear(msg); } @@ -341,7 +342,10 @@ implementation if( len > call Packet.maxPayloadLength() ) return EINVAL; - call IEEE154MessageLayer.createDataFrame(msg); + // user forgot to call Packet.clear(), maybe we should return EFAIL + if( ! call IEEE154MessageLayer.isDataFrame(msg) ) + call IEEE154MessageLayer.createDataFrame(msg); + call Packet.setPayloadLength(msg, len); call Ieee154Packet.setSource(msg, call Ieee154Packet.address()); call Ieee154Packet.setDestination(msg, addr); @@ -364,8 +368,9 @@ implementation command error_t Send.send(message_t* msg) { - // lower leveles can send other frames - call IEEE154MessageLayer.createDataFrame(msg); + // user forgot to call Packet.clear(), lower levels can send other types + if( ! call IEEE154MessageLayer.isDataFrame(msg) ) + call IEEE154MessageLayer.createDataFrame(msg); return call SubSend.send(msg); }