]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/rf2xx/layers/LowpanNetworkLayerC.nc
Use BareSend/BareReceive instead of Send/Receive to avoid duplication of payload...
[tinyos-2.x.git] / tos / chips / rf2xx / layers / LowpanNetworkLayerC.nc
index 4f9a22e220ae224a5ca9dbc82d1823eb69045c41..027ce10dfa46f42715f35fa3ddd713d6fc70e054 100644 (file)
@@ -27,8 +27,8 @@ module LowpanNetworkLayerC
 {
        provides
        {
-               interface Send;
-               interface Receive;
+               interface BareSend as Send;
+               interface BareReceive as Receive;
                interface RadioPacket;
 
                interface Receive as NonTinyosReceive[uint8_t network];
@@ -36,56 +36,52 @@ module LowpanNetworkLayerC
 
        uses
        {
-               interface Send as SubSend;
-               interface Receive as SubReceive;
+               interface BareSend as SubSend;
+               interface BareReceive as SubReceive;
                interface RadioPacket as SubPacket;
        }
 }
 
 implementation
 {
-#ifndef TINYOS_6LOWPAN_NETWORK_ID
-#define TINYOS_6LOWPAN_NETWORK_ID 0x3f
-#endif
-
        lowpan_header_t* getHeader(message_t* msg)
        {
                return ((void*)msg) + call SubPacket.headerLength(msg);
        }
 
-       command error_t Send.send(message_t* msg, uint8_t len)
+       void* getPayload(message_t* msg)
        {
-               getHeader(msg)->network = TINYOS_6LOWPAN_NETWORK_ID;
-               return call SubSend.send(msg, len);
+               return ((void*)msg) + call RadioPacket.headerLength(msg);
        }
 
-       command error_t Send.cancel(message_t* msg)
-       {
-               return call SubSend.cancel(msg);
-       }
+#ifndef TINYOS_6LOWPAN_NETWORK_ID
+#define TINYOS_6LOWPAN_NETWORK_ID 0x3f
+#endif
 
-       command uint8_t Send.maxPayloadLength()
+       command error_t Send.send(message_t* msg)
        {
-               return call SubSend.maxPayloadLength();
+               getHeader(msg)->network = TINYOS_6LOWPAN_NETWORK_ID;
+               return call SubSend.send(msg);
        }
 
-       command void* Send.getPayload(message_t* msg, uint8_t len)
+       command error_t Send.cancel(message_t* msg)
        {
-               return call SubSend.getPayload(msg, len);
+               return call SubSend.cancel(msg);
        }
-  
+
        event void SubSend.sendDone(message_t* msg, error_t error)
        {
                signal Send.sendDone(msg, error);
        }
   
-       event message_t *SubReceive.receive(message_t *msg, void *payload, uint8_t len)
+       event message_t *SubReceive.receive(message_t *msg)
        {
                uint8_t network = getHeader(msg)->network;
                if( network == TINYOS_6LOWPAN_NETWORK_ID )
-                       return signal Receive.receive(msg, payload, len);
+                       return signal Receive.receive(msg);
                else
-                       return signal NonTinyosReceive.receive[network](msg, payload, len);
+                       return signal NonTinyosReceive.receive[network](msg, 
+                               getPayload(msg), call RadioPacket.payloadLength(msg));
        }
 
        default event message_t *NonTinyosReceive.receive[uint8_t network](message_t *msg, void *payload, uint8_t len)