[Tinyos-commits] CVS: tinyos-1.x/tos/lib/Rpc README, NONE, 1.1 Rpc.h, NONE, 1.1 RpcC.nc, NONE, 1.1 RpcM.nc, NONE, 1.1

Kamin Whitehouse kaminw at users.sourceforge.net
Fri Sep 23 03:13:58 PDT 2005


Update of /cvsroot/tinyos/tinyos-1.x/tos/lib/Rpc
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4228/Rpc

Added Files:
	README Rpc.h RpcC.nc RpcM.nc 
Log Message:
These are 5 new tinyos libraries to: 1) automatically define a namespace of node attributes such as location, sensor values, etc, which is exposed through a central 'registry' 2) store these attributes to flash 3) expand that namespace to attributes of neighbors (hood) 4) expose arbitrary functions, including the get/set functions of registry attributes to other nodes and/or the pc through an rpc interface 5) expose arbitrary module variables through the same rpc interface.  These libraries require code generation and must be used with nesc 1.2 or later. the code generation scripts are in tinyos-1.x/tools/scripts/codeGeneration.

--- NEW FILE: README ---
directory: tinyos-1.x/tos/lib/Rpc
author: kamin whitehouse
date: 9/23/05

Please see the following wiki page for documentation:
http://today.cs.berkeley.edu/nestfe/index.php/Rpc

--- NEW FILE: Rpc.h ---
//$Id: Rpc.h,v 1.1 2005/09/23 10:13:55 kaminw Exp $

/*									tab:4
 * "Copyright (c) 2000-2003 The Regents of the University  of California.  
 * All rights reserved.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose, without fee, and without written agreement is
 * hereby granted, provided that the above copyright notice, the following
 * two paragraphs and the author appear in all copies of this software.
 * 
 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
 * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
 * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
 *
 * Copyright (c) 2002-2003 Intel Corporation
 * All rights reserved.
 *
 * This file is distributed under the terms in the attached INTEL-LICENSE     
 * file. If you do not find these files, copies can be found by writing to
 * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, 
 * 94704.  Attention:  Intel License Inquiry.
 */

/**
 * @author Kamin Whitehouse
 */

#ifndef __RPC_H__
#define __RPC_H__

struct @rpc {
};


enum rpcMsgs {
  AM_RPCCOMMANDMSG         = 211,
  AM_RPCRESPONSEMSG        = 212,
  //  AM_RPCERRORMSG        = 213
};

/*** error codes ***/
enum rpcErrorCodes {
  RPC_SUCCESS            = 0, /* packet contains return values */
  RPC_GARBAGE_ARGS       = 1, /* can't decode arguments */
  RPC_RESPONSE_TOO_LARGE = 2, /* can we check for this at compile time? */
  RPC_PROCEDURE_UNAVAIL  = 3, /* you must be smoking */
  RPC_SYSTEM_ERR         = 4  /* I must be smoking */
};

typedef struct RpcCommandMsg {
  uint16_t     transactionID;   /*the id of the complete transaction*/
//uint16_t     msgSeqNo;       /*the number of this message within this transaction*/
  uint16_t     commandID;       /*the command that should be run*/
  uint16_t     address;        /*the address that this msg should be received by*/
  uint16_t     returnAddress;  /*the address that the return val should be sent to*/
  uint8_t      responseDesired;/*whether the node should send a response or not*/
  uint8_t      dataLength;
  uint8_t      data[0];
} __attribute__ ((packed)) RpcCommandMsg;

typedef struct RpcResponseMsg {
  uint16_t     transactionID;  /*the id of the complete transaction*/
//uint16_t     msgSeqNo;      /*the number of this message within this transaction*/
  uint16_t     commandID;      /*the command that should be run*/
  uint16_t     sourceAddress; /*the address that the return val came from*/
  uint16_t     errorCode;     /*see error codes above*/
  uint8_t      dataLength;
  uint8_t      data[0];
} __attribute__ ((packed)) RpcResponseMsg;


#endif //__RPC_H__

--- NEW FILE: RpcC.nc ---
//$Id: RpcC.nc,v 1.1 2005/09/23 10:13:55 kaminw Exp $

/*									tab:4
 * "Copyright (c) 2000-2003 The Regents of the University  of California.  
 * All rights reserved.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose, without fee, and without written agreement is
 * hereby granted, provided that the above copyright notice, the following
 * two paragraphs and the author appear in all copies of this software.
 * 
 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
 * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
 * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
 *
 * Copyright (c) 2002-2003 Intel Corporation
 * All rights reserved.
 *
 * This file is distributed under the terms in the attached INTEL-LICENSE     
 * file. If you do not find these files, copies can be found by writing to
 * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, 
 * 94704.  Attention:  Intel License Inquiry.
 */

/**
 * @author Kamin Whitehouse
 */

includes Rpc;

configuration RpcC {
  provides {
    interface StdControl;
  }
}
implementation {

  components 
    RpcM,
    GenericComm,
    DrainC,
    DestC,
    DripC, 
    DripStateC;

  StdControl = RpcM;

  RpcM.SubControl -> GenericComm;
  RpcM.SubControl -> DrainC;
  RpcM.SubControl -> DripC;

  //genericComm wiring
  RpcM.CommandReceiveLocal -> GenericComm.ReceiveMsg[AM_RPCCOMMANDMSG];

  //drip wiring
  RpcM.CommandReceiveDrip -> DripC.Receive[AM_RPCCOMMANDMSG];
  RpcM.CommandDrip -> DripC.Drip[AM_RPCCOMMANDMSG];
  DripC.DripState[AM_RPCCOMMANDMSG] -> DripStateC.DripState[unique("DripState")];
  RpcM.Dest -> DestC;

  //drain wiring
  RpcM.ResponseSendMsgDrain -> DrainC.SendMsg[AM_RPCRESPONSEMSG];
  RpcM.ResponseSendDrain -> DrainC.Send[AM_RPCRESPONSEMSG];
}

--- NEW FILE: RpcM.nc ---
//$Id: RpcM.nc,v 1.1 2005/09/23 10:13:55 kaminw Exp $

/*									tab:4
 * "Copyright (c) 2000-2003 The Regents of the University  of California.  
 * All rights reserved.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose, without fee, and without written agreement is
 * hereby granted, provided that the above copyright notice, the following
 * two paragraphs and the author appear in all copies of this software.
 * 
 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
 * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
 * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
 *
 * Copyright (c) 2002-2003 Intel Corporation
 * All rights reserved.
 *
 * This file is distributed under the terms in the attached INTEL-LICENSE     
 * file. If you do not find these files, copies can be found by writing to
 * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, 
 * 94704.  Attention:  Intel License Inquiry.
 */

/**
 * @author Kamin Whitehouse
 */

includes Drain;
includes Rpc;
includes DestMsg;

module RpcM {
  provides {
    interface StdControl;
  }
  uses {
    interface StdControl as SubControl;

    interface ReceiveMsg as CommandReceiveLocal;

    interface Send as ResponseSendDrain;
    interface SendMsg as ResponseSendMsgDrain;

    interface Receive as CommandReceiveDrip;
    interface Drip as CommandDrip;
    interface Dest;
  }
}
implementation {

  TOS_Msg dripStore;
  uint16_t dripStoreLength;
  uint16_t queryID;
  uint16_t returnAddress;

  command result_t StdControl.init() {
    call SubControl.init();
    dbg(DBG_USR2, "init in dummy file\n");
    return SUCCESS;
  }

  command result_t StdControl.start() {
    call SubControl.start();
    call CommandDrip.init();
    dbg(DBG_USR2, "start in dummy file\n");
    return SUCCESS;
  }

  command result_t StdControl.stop() {
    dbg(DBG_USR2, "stop in dummy file\n");
    return SUCCESS;
  }

  event TOS_MsgPtr CommandReceiveDrip.receive(TOS_MsgPtr pMsg, void* payload, uint16_t payloadLength) {
    dbg(DBG_USR2, "Received drip message in dummy file\n");
    return pMsg;
  }

  event TOS_MsgPtr CommandReceiveLocal.receive(TOS_MsgPtr pMsg) {
    dbg(DBG_USR2, "Received local message in dummy file\n"); 
   return pMsg;
  }

  event result_t CommandDrip.rebroadcastRequest(TOS_MsgPtr msg, void *payload) {
    dbg(DBG_USR2, "Received rebroadcast request in dummy file\n");
    return SUCCESS;
  }

  event result_t ResponseSendMsgDrain.sendDone(TOS_MsgPtr pMsg, result_t success) {
    dbg(DBG_USR2, "send done in dummy file\n");
    return SUCCESS;
  }

  event result_t ResponseSendDrain.sendDone(TOS_MsgPtr pMsg, result_t success) {
    dbg(DBG_USR2, "send done in dummy file\n");
    return SUCCESS;
  }

  

}



More information about the Tinyos-commits mailing list