]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/rf2xx/layers/ActiveMessageLayerC.nc
reorganized packet header handling
[tinyos-2.x.git] / tos / chips / rf2xx / layers / ActiveMessageLayerC.nc
index f635a9c67cf225b850753a76f7ca661f53828953..055aaa729a3eace08120105d012f35a2ee5316dc 100755 (executable)
@@ -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
  * Author: Miklos Maroti
  */
 
-module ActiveMessageLayerC
+#include <ActiveMessageLayer.h>
+
+configuration ActiveMessageLayerC
 {
        provides
        {
+               interface AMPacket;
                interface AMSend[am_id_t id];
                interface Receive[am_id_t id];
                interface Receive as Snoop[am_id_t id]; 
        }
+
        uses
        {
                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;
+
+       AMPacket = ActiveMessageLayerP;
+       AMSend = ActiveMessageLayerP;
+       Receive = ActiveMessageLayerP.Receive;
+       Snoop = ActiveMessageLayerP.Snoop;
+       
+       SubSend = ActiveMessageLayerP;
+       SubReceive = ActiveMessageLayerP;
+       Config = ActiveMessageLayerP;
 }