]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
Fix ACK request bit overwrite in Send.send
authormmaroti <mmaroti>
Wed, 17 Jun 2009 18:19:00 +0000 (18:19 +0000)
committermmaroti <mmaroti>
Wed, 17 Jun 2009 18:19:00 +0000 (18:19 +0000)
tos/chips/rf2xx/layers/IEEE154MessageLayerP.nc

index bd90a8c0e7de643f7224369e4ec4df53b0a747bb..9b59ff986e7052332d3328fa0c93928dc0883b67 100644 (file)
@@ -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);
        }