From fd826b0c6dd6212ab904a02b85130d620f6b8ab7 Mon Sep 17 00:00:00 2001 From: mmaroti Date: Wed, 17 Jun 2009 18:19:00 +0000 Subject: [PATCH] Fix ACK request bit overwrite in Send.send --- tos/chips/rf2xx/layers/IEEE154MessageLayerP.nc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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); } -- 2.39.2