[Tinyos-2-commits] CVS: tinyos-2.x/tos/platforms/eyesIFX ActiveMessageFilterC.nc, NONE, 1.1.2.1 ActiveMessageC.nc, 1.1.2.6, 1.1.2.7

Jan-Hinrich Hauer janhauer at users.sourceforge.net
Fri Aug 11 04:31:08 PDT 2006


Update of /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv18322/tos/platforms/eyesIFX

Modified Files:
      Tag: tinyos-2_0_devel-BRANCH
	ActiveMessageC.nc 
Added Files:
      Tag: tinyos-2_0_devel-BRANCH
	ActiveMessageFilterC.nc 
Log Message:
Changed the wiring in ActiveMessageC to let all messages be passed through a filter component ActiveMessageFilterC. The default filter component (in this directory) does not do anything, it uses no RAM and nesC will compile all its code away. Its purpose is to allow other components to shadow (overwrite) it to implement their own filter/statistic component between AM and the clients of AM.

--- NEW FILE: ActiveMessageFilterC.nc ---
/* 
 * Copyright (c) 2006, Technische Universitaet Berlin
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 * - Neither the name of the Technische Universitaet Berlin nor the names
 *   of its contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1.2.1 $
 * $Date: 2006/08/11 11:31:06 $
 * @author: Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

 /* This component is the default AM filter component: it does not do anything,
  * it uses no RAM and nesC will compile all code away. Its purpose is to allow
  * other components to shadow (overwrite) it to implement their own
  * filter/statistic component.
  */

#include "AM.h"
module ActiveMessageFilterC {
  provides {
    interface AMSend[am_id_t id];
    interface Receive[am_id_t id];
    interface Receive as Snoop[am_id_t id];
  }
  uses {
    interface AMSend as SubAMSend[am_id_t id];
    interface Receive as SubReceive[am_id_t id];
    interface Receive as SubSnoop[am_id_t id];
  }
} implementation {

  command error_t AMSend.send[am_id_t id](am_addr_t addr, message_t* msg, uint8_t len){ return call SubAMSend.send[id](addr, msg, len);}
  command error_t AMSend.cancel[am_id_t id](message_t* msg){ return call SubAMSend.cancel[id](msg);}
  command uint8_t AMSend.maxPayloadLength[am_id_t id](){ return call SubAMSend.maxPayloadLength[id]();}
  command void* AMSend.getPayload[am_id_t id](message_t* msg){ return call SubAMSend.getPayload[id](msg);}
  event void SubAMSend.sendDone[am_id_t id](message_t* msg, error_t error) { signal AMSend.sendDone[id](msg, error); }

  command void* Receive.getPayload[am_id_t id](message_t* msg, uint8_t* len){ return call SubReceive.getPayload[id](msg, len);}
  command uint8_t Receive.payloadLength[am_id_t id](message_t* msg){ return call SubReceive.payloadLength[id](msg);}
  event message_t* SubReceive.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) { return signal Receive.receive[id](msg, payload, len); }
  default event message_t* Receive.receive[am_id_t id](message_t* msg, void* payload, uint8_t len){ return msg;}
  
  command void* Snoop.getPayload[am_id_t id](message_t* msg, uint8_t* len){ return call SubSnoop.getPayload[id](msg, len);}
  command uint8_t Snoop.payloadLength[am_id_t id](message_t* msg){ return call SubSnoop.payloadLength[id](msg);}
  event message_t* SubSnoop.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) { return signal Snoop.receive[id](msg, payload, len);
  }
  default event message_t* Snoop.receive[am_id_t id](message_t* msg, void* payload, uint8_t len){return msg;}
}

Index: ActiveMessageC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/ActiveMessageC.nc,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -C2 -d -r1.1.2.6 -r1.1.2.7
*** ActiveMessageC.nc	27 May 2006 21:23:15 -0000	1.1.2.6
--- ActiveMessageC.nc	11 Aug 2006 11:31:06 -0000	1.1.2.7
***************
*** 61,70 ****
  }
  implementation {
    components Tda5250ActiveMessageC as AM;
  
    SplitControl = AM;
-   AMSend       = AM;
-   Receive      = AM.Receive;
-   Snoop        = AM.Snoop;
    Packet       = AM;
    AMPacket     = AM;
--- 61,76 ----
  }
  implementation {
+   components ActiveMessageFilterC as Filter;
    components Tda5250ActiveMessageC as AM;
+   
+   AMSend       = Filter;
+   Receive      = Filter.Receive;
+   Snoop        = Filter.Snoop;
+ 
+   Filter.SubAMSend -> AM;
+   Filter.SubReceive -> AM.Receive;
+   Filter.SubSnoop  -> AM.Snoop;
  
    SplitControl = AM;
    Packet       = AM;
    AMPacket     = AM;



More information about the Tinyos-2-commits mailing list