X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Frf2xx%2Flayers%2FMetadataFlagsLayerC.nc;h=39b0beee8be7cca88b450a32be41919871433756;hb=97e9cb5f12a8fcdd7537ddd0eec19ffe364af663;hp=dffafb0b056592cc346e8705d02221f6b7e6f42f;hpb=51b365b6cb1df293dac98e285ae4856c2dccba2b;p=tinyos-2.x.git diff --git a/tos/chips/rf2xx/layers/MetadataFlagsLayerC.nc b/tos/chips/rf2xx/layers/MetadataFlagsLayerC.nc index dffafb0b..39b0beee 100644 --- a/tos/chips/rf2xx/layers/MetadataFlagsLayerC.nc +++ b/tos/chips/rf2xx/layers/MetadataFlagsLayerC.nc @@ -29,33 +29,41 @@ module MetadataFlagsLayerC provides { interface PacketFlag[uint8_t bit]; + interface RadioPacket; } uses { - interface PacketData as PacketFlagsMetadata; + interface RadioPacket as SubPacket; } } implementation { + flags_metadata_t* getMeta(message_t* msg) + { + return ((void*)msg) + sizeof(message_t) - call RadioPacket.metadataLength(msg); + } + +/*----------------- RadioPacket -----------------*/ + async command bool PacketFlag.get[uint8_t bit](message_t* msg) { - return (call PacketFlagsMetadata.get(msg))->flags & (1<flags & (1<flags |= (1<flags |= (1<flags &= ~(1<flags &= ~(1<flags = 0; + getMeta(msg)->flags = 0; + call SubPacket.clear(msg); } }