X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Frf2xx%2Flayers%2FLowpanNetworkLayerC.nc;h=027ce10dfa46f42715f35fa3ddd713d6fc70e054;hb=54538a754044acac23adbda11567f0e774ea1b80;hp=4f9a22e220ae224a5ca9dbc82d1823eb69045c41;hpb=e855a271834e27716a9c5d79cbf364aac22eb3bd;p=tinyos-2.x.git diff --git a/tos/chips/rf2xx/layers/LowpanNetworkLayerC.nc b/tos/chips/rf2xx/layers/LowpanNetworkLayerC.nc index 4f9a22e2..027ce10d 100644 --- a/tos/chips/rf2xx/layers/LowpanNetworkLayerC.nc +++ b/tos/chips/rf2xx/layers/LowpanNetworkLayerC.nc @@ -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)