X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Frf2xx%2Flayers%2FActiveMessageLayerC.nc;h=29c6d944da4b70beba60246e3a478e60add7b5bf;hb=9d7e3ad7a39e567bb854afe46e24f544618e34fa;hp=f635a9c67cf225b850753a76f7ca661f53828953;hpb=7cb3053eaa216416d4833656f2ffbee14a5c0970;p=tinyos-2.x.git diff --git a/tos/chips/rf2xx/layers/ActiveMessageLayerC.nc b/tos/chips/rf2xx/layers/ActiveMessageLayerC.nc index f635a9c6..29c6d944 100755 --- a/tos/chips/rf2xx/layers/ActiveMessageLayerC.nc +++ b/tos/chips/rf2xx/layers/ActiveMessageLayerC.nc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Vanderbilt University + * Copyright (c) 2009, Vanderbilt University * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its @@ -21,87 +21,43 @@ * Author: Miklos Maroti */ -module ActiveMessageLayerC +configuration ActiveMessageLayerC { provides { + interface RadioPacket; + interface AMPacket; + interface Packet; interface AMSend[am_id_t id]; interface Receive[am_id_t id]; interface Receive as Snoop[am_id_t id]; + interface SendNotifier[am_id_t id]; } + uses { + interface RadioPacket as SubPacket; interface Send as SubSend; interface Receive as SubReceive; - interface AMPacket; interface ActiveMessageConfig as Config; } } implementation { -/*----------------- Send -----------------*/ - - command error_t AMSend.send[am_id_t id](am_addr_t addr, message_t* msg, uint8_t len) - { - error_t error; - - error = call Config.checkPacket(msg); - if( error != SUCCESS ) - return error; - - call AMPacket.setSource(msg, call AMPacket.address()); - call AMPacket.setGroup(msg, call AMPacket.localGroup()); - call AMPacket.setType(msg, id); - call AMPacket.setDestination(msg, addr); - - return call SubSend.send(msg, len); - } - - inline event void SubSend.sendDone(message_t* msg, error_t error) - { - signal AMSend.sendDone[call AMPacket.type(msg)](msg, error); - } - - inline command error_t AMSend.cancel[am_id_t id](message_t* msg) - { - return call SubSend.cancel(msg); - } - - default event void AMSend.sendDone[am_id_t id](message_t* msg, error_t error) - { - } - - inline command uint8_t AMSend.maxPayloadLength[am_id_t id]() - { - return call SubSend.maxPayloadLength(); - } - - inline command void* AMSend.getPayload[am_id_t id](message_t* msg, uint8_t len) - { - return call SubSend.getPayload(msg, len); - } - -/*----------------- Receive -----------------*/ - - event message_t* SubReceive.receive(message_t* msg, void* payload, uint8_t len) - { - am_id_t type = call AMPacket.type(msg); - - msg = call AMPacket.isForMe(msg) - ? signal Receive.receive[type](msg, payload, len) - : signal Snoop.receive[type](msg, payload, len); - - return msg; - } - - default event message_t* Receive.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) - { - return msg; - } - - default event message_t* Snoop.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) - { - return msg; - } + components ActiveMessageLayerP, ActiveMessageAddressC; + ActiveMessageLayerP.ActiveMessageAddress -> ActiveMessageAddressC; + + RadioPacket = ActiveMessageLayerP; + AMPacket = ActiveMessageLayerP; + Packet = ActiveMessageLayerP; + AMSend = ActiveMessageLayerP; + Receive = ActiveMessageLayerP.Receive; + Snoop = ActiveMessageLayerP.Snoop; + SendNotifier = ActiveMessageLayerP; + + SubPacket = ActiveMessageLayerP; + SubSend = ActiveMessageLayerP; + SubReceive = ActiveMessageLayerP; + Config = ActiveMessageLayerP; }