[Tinyos-contrib-commits] CVS: tinyos-1.x/contrib/wustl/apps/Agilla
3x3.nss, 1.1, 1.2 Agilla.nc, 1.23, 1.24 AgillaOpcodes.h, 1.17,
1.18 Example Makefile.Agilla, 1.34, 1.35 README, 1.21,
1.22 platforms.properties, 1.4, 1.5
Chien-Liang Fok
chien-liang at users.sourceforge.net
Thu May 18 12:58:42 PDT 2006
Update of /cvsroot/tinyos/tinyos-1.x/contrib/wustl/apps/Agilla
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv25569/contrib/wustl/apps/Agilla
Modified Files:
3x3.nss Agilla.nc AgillaOpcodes.h Example Makefile.Agilla
README platforms.properties
Log Message:
Index: 3x3.nss
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/wustl/apps/Agilla/3x3.nss,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** 3x3.nss 6 Jan 2006 19:52:11 -0000 1.1
--- 3x3.nss 18 May 2006 19:58:40 -0000 1.2
***************
*** 1,48 ****
! 0:1:0.0
! 0:3:0.0
! 0:4:0.0
!
! 1:0:0.0
! 1:3:0.0
! 1:4:0.0
! 1:5:0.0
! 1:2:0.0
!
! 2:1:0.0
! 2:4:0.0
! 2:5:0.0
!
! 3:6:0.0
! 3:7:0.0
! 3:4:0.0
! 3:1:0.0
! 3:0:0.0
!
! 4:6:0.0
! 4:7:0.0
! 4:8:0.0
! 4:3:0.0
! 4:5:0.0
! 4:0:0.0
! 4:1:0.0
! 4:2:0.0
!
! 5:1:0.0
! 5:2:0.0
! 5:4:0.0
! 5:7:0.0
! 5:8:0.0
!
! 6:3:0.0
! 6:4:0.0
! 6:7:0.0
!
! 7:3:0.0
! 7:4:0.0
! 7:5:0.0
! 7:6:0.0
! 7:8:0.0
!
! 8:7:0.0
! 8:4:0.0
8:5:0.0
\ No newline at end of file
--- 1,48 ----
! 0:1:0.0
! 0:3:0.0
! 0:4:0.0
!
! 1:0:0.0
! 1:3:0.0
! 1:4:0.0
! 1:5:0.0
! 1:2:0.0
!
! 2:1:0.0
! 2:4:0.0
! 2:5:0.0
!
! 3:6:0.0
! 3:7:0.0
! 3:4:0.0
! 3:1:0.0
! 3:0:0.0
!
! 4:6:0.0
! 4:7:0.0
! 4:8:0.0
! 4:3:0.0
! 4:5:0.0
! 4:0:0.0
! 4:1:0.0
! 4:2:0.0
!
! 5:1:0.0
! 5:2:0.0
! 5:4:0.0
! 5:7:0.0
! 5:8:0.0
!
! 6:3:0.0
! 6:4:0.0
! 6:7:0.0
!
! 7:3:0.0
! 7:4:0.0
! 7:5:0.0
! 7:6:0.0
! 7:8:0.0
!
! 8:7:0.0
! 8:4:0.0
8:5:0.0
\ No newline at end of file
Index: Agilla.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/wustl/apps/Agilla/Agilla.nc,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** Agilla.nc 6 May 2006 00:26:57 -0000 1.23
--- Agilla.nc 18 May 2006 19:58:40 -0000 1.24
***************
*** 85,92 ****
components OPcistype, OPloc, /*OPvicinity,*/ OPclear, OPnumnbrs;
components OPrandnbr;
!
! #if !ENABLE_CLUSTERING
! components OPwait;
! #endif
// One operand instructions
--- 85,89 ----
components OPcistype, OPloc, /*OPvicinity,*/ OPclear, OPnumnbrs;
components OPrandnbr;
! components OPwait;
// One operand instructions
***************
*** 156,163 ****
AgillaEngineC.BasicISA[IOPrandnbr] -> OPrandnbr;
!
! #if !ENABLE_CLUSTERING
! AgillaEngineC.BasicISA[IOPwait] -> OPwait;
! #endif
// One operand instructions
--- 153,157 ----
AgillaEngineC.BasicISA[IOPrandnbr] -> OPrandnbr;
! AgillaEngineC.BasicISA[IOPwait] -> OPwait;
// One operand instructions
Index: AgillaOpcodes.h
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/wustl/apps/Agilla/AgillaOpcodes.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** AgillaOpcodes.h 6 May 2006 00:26:57 -0000 1.17
--- AgillaOpcodes.h 18 May 2006 19:58:40 -0000 1.18
***************
*** 1,256 ****
! // $Id$
!
! /* Agilla - A middleware for wireless sensor networks.
! * Copyright (C) 2004, Washington University in Saint Louis
! * By Chien-Liang Fok.
! *
! * Washington University states that Agilla is free software;
! * you can redistribute it and/or modify it under the terms of
! * the current version of the GNU Lesser General Public License
! * as published by the Free Software Foundation.
! *
! * Agilla is distributed in the hope that it will be useful, but
! * THERE ARE NO WARRANTIES, WHETHER ORAL OR WRITTEN, EXPRESS OR
! * IMPLIED, INCLUDING BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
! * MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.
! *
! * YOU UNDERSTAND THAT AGILLA IS PROVIDED "AS IS" FOR WHICH NO
! * WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. THERE ARE NO
! * WARRANTIES AND NO REPRESENTATION THAT AGILLA IS FREE OF
! * INFRINGEMENT OF THIRD PARTY PATENT, CIOPYRIGHT, OR OTHER
! * PRIOPRIETARY RIGHTS. THERE ARE NO WARRANTIES THAT SOFTWARE IS
! * FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS",
! * OR OTHER HARMFUL CODE.
! *
! * YOU ASSUME THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR
! * ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF
! * INFORMATION GENERATED USING SOFTWARE. By using Agilla you agree to
! * indemnify, defend, and hold harmless WU, its employees, officers and
! * agents from any and all claims, costs, or liabilities, including
! * attorneys fees and court costs at both the trial and appellate levels
! * for any loss, damage, or injury caused by your actions or actions of
! * your officers, servants, agents or third parties acting on behalf or
! * under authorization from you, as a result of using Agilla.
! *
! * See the GNU Lesser General Public License for more details, which can
! * be found here: http://www.gnu.org/copyleft/lesser.html
! */
!
! /* tab:4
! *
! *
! * "Copyright (c) 2000-2002 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."
! *
! */
!
! /* tab:4
! * IMPORTANT: READ BEFORE DOWNLOADING, CIOPYING, INSTALLING OR USING. By
! * downloading, copying, installing or using the software you agree to
! * this license. If you do not agree to this license, do not download,
! * install, copy or use the software.
! *
! * Intel Open Source License
! *
! * Copyright (c) 2002 Intel Corporation
! * 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 Intel Corporation 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 CIOPYRIGHT 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 INTEL OR ITS
! * 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.
! *
! *
! */
!
! /**
! * Authors: Neil Patel
! * History: created 6/20/2003
! */
!
! /**
! * @author Neil Patel
! * @author Chien-Liang Fok
! */
!
!
! #ifndef AGILLA_CONSTANTS_H_INCLUDED
! #define AGILLA_CONSTANTS_H_INCLUDED
!
! typedef enum {
!
! /* B-class instructions */
!
! // zero operand instructions
! IOPhalt = 0x00,
! IOPaddr = 0x01,
! IOPaid = 0x02,
! IOPrand = 0x03,
! IOPcpush = 0x04,
! IOPloc = 0x05,
! IOPvicinity = 0x06,
! IOPclear = 0x07,
! IOPnumnbrs = 0x08,
! IOPrandnbr = 0x09,
! IOPwait = 0x0a,
!
! // One operand instructions
! IOPinc = 0x0b,
! IOPclearvar = 0x0c,
! IOPinv = 0x0d,
! IOPnot = 0x0e,
! IOPlnot = 0x0f,
! IOPcopy = 0x10,
! IOPpop = 0x11,
! IOPcpull = 0x12,
! IOPsleep = 0x13,
! IOPjumpc = 0x14,
! IOPjumps = 0x15,
! IOPputled = 0x16,
! IOPsmove = 0x17,
! IOPwmove = 0x18,
! IOPsclone = 0x19,
! IOPwclone = 0x1a,
! IOPgetvars = 0x1b,
! IOPsetvars = 0x1c,
! IOPgetnbr = 0x1d,
! IOPcisnbr = 0x1e,
! IOPsense = 0x1f,
! IOPdec = 0x20,
!
! // Two and three operand-instructions
! IOPdist = 0x21,
! IOPswap = 0x22,
! IOPland = 0x23,
! IOPlor = 0x24,
! IOPand = 0x25,
! IOPor = 0x26,
! IOPmul = 0x27,
! IOPdiv = 0x28,
! IOPadd = 0x29,
! IOPmod = 0x2a,
! IOPceq = 0x2b, // LSB = 1
! IOPcneq = 0x2c, // LSB = 0
! IOPclt = 0x2d,
! IOPcgt = 0x2e,
! IOPclte = 0x2f,
! IOPcgte = 0x30,
! IOPceqtype = 0x31,
! IOPcistype = 0x32,
!
! IOPout = 0x33,
! IOPinp = 0x34,
! IOPrdp = 0x35,
! IOPin = 0x36,
! IOPrd = 0x37,
! IOPendrxn = 0x38,
!
! IOProut = 0x39,
! IOPrinp = 0x3a,
! IOPrrdp = 0x3b,
! IOProutg = 0x3c,
! IOPrrdpg = 0x3d,
! IOPregrxn = 0x3e,
! IOPderegrxn = 0x3f,
!
! /* T class Instruction format: 0100 ixxx*/
! IOPpushrt = 0x40,
! IOPpusht = 0x48,
!
! /* E-Class Instruction, format: 0101 ixxx yyyy yyyy yyyy yyyy]*/
! IOPpushn = 0x50,
! IOPpushcl = 0x51,
! IOPpushloc = 0x52,
!
! IOPextend1 = 0x53, // put the mote into extended ISA 1
! IOPextend2 = 0x54, // put the mote into extended ISA 2
! IOPextend3 = 0x55, // put the mote into extended ISA 3
! IOPextend4 = 0x56, // put the mote into extended ISA 4
! IOPextend5 = 0x57, // put the mote into extended ISA 5
! IOPextend6 = 0x58, // put the mote into extended ISA 6
! IOPextend7 = 0x59, // put the mote into extended ISA 7
! IOPextend8 = 0x5a, // put the mote into extended ISA 8
! IOPextend9 = 0x5b, // put the mote into extended ISA 9
! IOPextend10 = 0x5c, // put the mote into extended ISA 10
! IOPextend11 = 0x5d, // put the mote into extended ISA 11
! IOPextend12 = 0x5e, // put the mote into extended ISA 12
! IOPextend13 = 0x5f, // put the mote into extended ISA 13
!
! /* V-Class Instruction, format: 011i xxxx */
! IOPgetvar = 0x60, // 5th bit must = 1
! IOPsetvar = 0x70, // 5th bit must = 0
!
! /* J class Instruction format: 10ix xxxx */
! IOPrjumpc = 0x80, // 100x xxxx conditional relative jump
! IOPrjump = 0xa0, // 101x xxxx unconditional relative jump
!
! /* xclass Instruction format: 11xx xxxx*/
! IOPpushc = 0xc0 // push a constant onto op stack
! } BasicInstruction;
!
! typedef enum {
! IOPshiftr = 0x00,
! IOPshiftl = 0x01,
! IOPdepth = 0x02,
! IOPerr = 0x03,
! IOPtcount = 0x04,
! IOProutgs = 0x05,
! IOPremove = 0x06,
! IOPhid = 0x07,
! IOPlocToValue = 0x08,
! IOPrrdpgs = 0x09,
! IOPsub = 0x0a,
!
! IOPgetAgents = 0x10,
! IOPgetLocation = 0x11,
! IOPgetNumAgents = 0x12,
! IOPgetClosestAgent = 0x13,
!
! IOPtoAgentID = 0x14,
!
! IOPsetdesc = 0x1a,
! IOPgetdesc = 0x1b,
!
! IOPfindMatch = 0x1c,
!
! IOPegetvar = 0x80, // 10xx xxxx
! IOPesetvar = 0xc0, // 11xx xxxx
!
! } ExtendedISA1;
!
! #endif
--- 1,256 ----
! // $Id$
!
! /* Agilla - A middleware for wireless sensor networks.
! * Copyright (C) 2004, Washington University in Saint Louis
! * By Chien-Liang Fok.
! *
! * Washington University states that Agilla is free software;
! * you can redistribute it and/or modify it under the terms of
! * the current version of the GNU Lesser General Public License
! * as published by the Free Software Foundation.
! *
! * Agilla is distributed in the hope that it will be useful, but
! * THERE ARE NO WARRANTIES, WHETHER ORAL OR WRITTEN, EXPRESS OR
! * IMPLIED, INCLUDING BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
! * MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.
! *
! * YOU UNDERSTAND THAT AGILLA IS PROVIDED "AS IS" FOR WHICH NO
! * WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. THERE ARE NO
! * WARRANTIES AND NO REPRESENTATION THAT AGILLA IS FREE OF
! * INFRINGEMENT OF THIRD PARTY PATENT, CIOPYRIGHT, OR OTHER
! * PRIOPRIETARY RIGHTS. THERE ARE NO WARRANTIES THAT SOFTWARE IS
! * FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS",
! * OR OTHER HARMFUL CODE.
! *
! * YOU ASSUME THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR
! * ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF
! * INFORMATION GENERATED USING SOFTWARE. By using Agilla you agree to
! * indemnify, defend, and hold harmless WU, its employees, officers and
! * agents from any and all claims, costs, or liabilities, including
! * attorneys fees and court costs at both the trial and appellate levels
! * for any loss, damage, or injury caused by your actions or actions of
! * your officers, servants, agents or third parties acting on behalf or
! * under authorization from you, as a result of using Agilla.
! *
! * See the GNU Lesser General Public License for more details, which can
! * be found here: http://www.gnu.org/copyleft/lesser.html
! */
!
! /* tab:4
! *
! *
! * "Copyright (c) 2000-2002 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."
! *
! */
!
! /* tab:4
! * IMPORTANT: READ BEFORE DOWNLOADING, CIOPYING, INSTALLING OR USING. By
! * downloading, copying, installing or using the software you agree to
! * this license. If you do not agree to this license, do not download,
! * install, copy or use the software.
! *
! * Intel Open Source License
! *
! * Copyright (c) 2002 Intel Corporation
! * 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 Intel Corporation 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 CIOPYRIGHT 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 INTEL OR ITS
! * 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.
! *
! *
! */
!
! /**
! * Authors: Neil Patel
! * History: created 6/20/2003
! */
!
! /**
! * @author Neil Patel
! * @author Chien-Liang Fok
! */
!
!
! #ifndef AGILLA_CONSTANTS_H_INCLUDED
! #define AGILLA_CONSTANTS_H_INCLUDED
!
! typedef enum {
!
! /* B-class instructions */
!
! // zero operand instructions
! IOPhalt = 0x00,
! IOPaddr = 0x01,
! IOPaid = 0x02,
! IOPrand = 0x03,
! IOPcpush = 0x04,
! IOPloc = 0x05,
! IOPvicinity = 0x06,
! IOPclear = 0x07,
! IOPnumnbrs = 0x08,
! IOPrandnbr = 0x09,
! IOPwait = 0x0a,
!
! // One operand instructions
! IOPinc = 0x0b,
! IOPclearvar = 0x0c,
! IOPinv = 0x0d,
! IOPnot = 0x0e,
! IOPlnot = 0x0f,
! IOPcopy = 0x10,
! IOPpop = 0x11,
! IOPcpull = 0x12,
! IOPsleep = 0x13,
! IOPjumpc = 0x14,
! IOPjumps = 0x15,
! IOPputled = 0x16,
! IOPsmove = 0x17,
! IOPwmove = 0x18,
! IOPsclone = 0x19,
! IOPwclone = 0x1a,
! IOPgetvars = 0x1b,
! IOPsetvars = 0x1c,
! IOPgetnbr = 0x1d,
! IOPcisnbr = 0x1e,
! IOPsense = 0x1f,
! IOPdec = 0x20,
!
! // Two and three operand-instructions
! IOPdist = 0x21,
! IOPswap = 0x22,
! IOPland = 0x23,
! IOPlor = 0x24,
! IOPand = 0x25,
! IOPor = 0x26,
! IOPmul = 0x27,
! IOPdiv = 0x28,
! IOPadd = 0x29,
! IOPmod = 0x2a,
! IOPceq = 0x2b, // LSB = 1
! IOPcneq = 0x2c, // LSB = 0
! IOPclt = 0x2d,
! IOPcgt = 0x2e,
! IOPclte = 0x2f,
! IOPcgte = 0x30,
! IOPceqtype = 0x31,
! IOPcistype = 0x32,
!
! IOPout = 0x33,
! IOPinp = 0x34,
! IOPrdp = 0x35,
! IOPin = 0x36,
! IOPrd = 0x37,
! IOPendrxn = 0x38,
!
! IOProut = 0x39,
! IOPrinp = 0x3a,
! IOPrrdp = 0x3b,
! IOProutg = 0x3c,
! IOPrrdpg = 0x3d,
! IOPregrxn = 0x3e,
! IOPderegrxn = 0x3f,
!
! /* T class Instruction format: 0100 ixxx*/
! IOPpushrt = 0x40,
! IOPpusht = 0x48,
!
! /* E-Class Instruction, format: 0101 ixxx yyyy yyyy yyyy yyyy]*/
! IOPpushn = 0x50,
! IOPpushcl = 0x51,
! IOPpushloc = 0x52,
!
! IOPextend1 = 0x53, // put the mote into extended ISA 1
! IOPextend2 = 0x54, // put the mote into extended ISA 2
! IOPextend3 = 0x55, // put the mote into extended ISA 3
! IOPextend4 = 0x56, // put the mote into extended ISA 4
! IOPextend5 = 0x57, // put the mote into extended ISA 5
! IOPextend6 = 0x58, // put the mote into extended ISA 6
! IOPextend7 = 0x59, // put the mote into extended ISA 7
! IOPextend8 = 0x5a, // put the mote into extended ISA 8
! IOPextend9 = 0x5b, // put the mote into extended ISA 9
! IOPextend10 = 0x5c, // put the mote into extended ISA 10
! IOPextend11 = 0x5d, // put the mote into extended ISA 11
! IOPextend12 = 0x5e, // put the mote into extended ISA 12
! IOPextend13 = 0x5f, // put the mote into extended ISA 13
!
! /* V-Class Instruction, format: 011i xxxx */
! IOPgetvar = 0x60, // 5th bit must = 1
! IOPsetvar = 0x70, // 5th bit must = 0
!
! /* J class Instruction format: 10ix xxxx */
! IOPrjumpc = 0x80, // 100x xxxx conditional relative jump
! IOPrjump = 0xa0, // 101x xxxx unconditional relative jump
!
! /* xclass Instruction format: 11xx xxxx*/
! IOPpushc = 0xc0 // push a constant onto op stack
! } BasicInstruction;
!
! typedef enum {
! IOPshiftr = 0x00,
! IOPshiftl = 0x01,
! IOPdepth = 0x02,
! IOPerr = 0x03,
! IOPtcount = 0x04,
! IOProutgs = 0x05,
! IOPremove = 0x06,
! IOPhid = 0x07,
! IOPlocToValue = 0x08,
! IOPrrdpgs = 0x09,
! IOPsub = 0x0a,
!
! IOPgetAgents = 0x10,
! IOPgetLocation = 0x11,
! IOPgetNumAgents = 0x12,
! IOPgetClosestAgent = 0x13,
!
! IOPtoAgentID = 0x14,
!
! IOPsetdesc = 0x1a,
! IOPgetdesc = 0x1b,
!
! IOPfindMatch = 0x1c,
!
! IOPegetvar = 0x80, // 10xx xxxx
! IOPesetvar = 0xc0, // 11xx xxxx
!
! } ExtendedISA1;
!
! #endif
Index: Example Makefile.Agilla
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/wustl/apps/Agilla/Example Makefile.Agilla,v
retrieving revision 1.34
retrieving revision 1.35
diff -C2 -d -r1.34 -r1.35
*** Example Makefile.Agilla 27 Apr 2006 23:53:18 -0000 1.34
--- Example Makefile.Agilla 18 May 2006 19:58:40 -0000 1.35
***************
*** 73,75 ****
--- 73,76 ----
-DDEBUG_OP_GETNUMAGENTS=0 \
-DDEBUG_OP_RTS=0 \
+ -DDEBUG_OP_FIND_MATCH=0 \
-DNBR_LIST_PRINT_CHANGES=0
Index: README
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/wustl/apps/Agilla/README,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** README 20 Mar 2006 20:06:40 -0000 1.21
--- README 18 May 2006 19:58:40 -0000 1.22
***************
*** 1,444 ****
! $Id$
!
! Agilla: a mobile agent middleware for wireless sensor networks. Agilla enables
! users to inject mobile agents into a wireless sensor network. Agents are
! autonomous computational entities that can migrate or clone across nodes in a
! wireless sensor network. Two types of migration and clone instructions are
! provided: "strong" in which both code and state is maintained, and "weak" in which
! only the code is maintained.
!
! Agilla facilitates inter-agent coordination via localized tuple spaces,
! remote tuple space operations, and a neighbor list.
!
! This document can be found in the TinyOS CVS repository under module
! tinyos-1.x/contrib/wustl/apps/Agilla.
!
! Author: Chien-Liang Fok <liangfok at wustl.edu>
! Website: http://mobilab.wustl.edu/projects/agilla/index.html
!
! DOWNLOADING AGILLA
! -------------------------------------------------------------------------------
! The latest version of Agilla can be downloaded off the TinyOS CVS server.
! Instructions for downloading it are available here:
! http://sourceforge.net/cvs/?group_id=28656
!
! Checkout module tinyos-1.x/contrib/wustl. You can use the following command:
!
! cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/tinyos co \
! -P tinyos-1.x/contrib/wustl
!
! Once downloaded, Agilla's firmware will be in tinyos-1.x/contrib/wustl/apps/Agilla,
! and the AgentInjector will be in tinyos-1.x/contrib/wustl/tools/java/.
!
! PREREQUISITE CHANGES TO TINYOS
! -------------------------------------------------------------------------------
! Agilla interfaces with the SpaceLocalizer (module
! tinyos-1.x/contrib/wustl/apps/SpaceLocalizer) to gain spatial information.
! SpaceLocalizer requires that the mote's UART port be set to 115200bps, which is
! by default 57600. To change it to 115200, open
! tinyos-1.x/tos/platforms/<platform>/UPLUART0M.nc and change "outp(15, UBRR0L);"
! to "outp(7, UBRR0L);".
!
!
! HARDWARE REQUIREMENTS
! -------------------------------------------------------------------------------
! This version of Agilla has been tested with Mica2 and MicaZ motes. Note that
! currently SpaceLocalizer must be disabled when using MicaZ motes.
!
!
! DEPENDENCIES
! -------------------------------------------------------------------------------
! Agilla relies on the following modules within TinyOS's CVS repository:
! 1) tinyos-1.x/contrib/wustl/apps/AgillaAgents
! -This contains numerous sample Agilla agents.
! 2) tinyos-1.x/contrib/wustl/apps/LEDBlinker
! -A utility that blinks the LEDs in various patterns. Only uses
! a single timer. Used primarily for debugging purposes.
! 3) tinyos-1.x/contrib/wustl/apps/SpaceLocalizer
! -Interfaces with a Cricket mote for location-aware applications
! 4) tinyos-1.x/contrib/wustl/tools/java/edu/wustl/mobilab/agilla
! -The Java-based AgentInjector application.
!
!
! MAKEFILE FLAGS
! -------------------------------------------------------------------------------
! Agilla's makefile system requires that you create a "Makefile.Agilla" file
! within tinyos-1.x/contrib/wustl/apps/Agilla/. The contents of this file must
! look like:
!
! PFLAGS_AGILLA=-DAGILLA_NUM_AGENTS=3 \
! -DAGILLA_NUM_CODE_BLOCKS=12 \
! -DAGILLA_NETWORK_INTERFACE_RECEIVE_QUEUE_SIZE=4 \
! -DAGILLA_NETWORK_INTERFACE_SEND_QUEUE_SIZE=4 \
! -DAGILLA_SNDR_BUFF_SIZE=1 \
! -DAGILLA_SNDR_RETRY_TIMER=512 \
! -DAGILLA_SNDR_MAX_RETRIES=2 \
! -DAGILLA_SNDR_RXMIT_TIMER=290 \
! -DAGILLA_SNDR_MAX_RETRANSMITS=4 \
! -DAGILLA_SNDR_ABORT_TIMER=1536 \
! -DAGILLA_RCVR_ABORT_TIMER=1000 \
! -DAGILLA_RCVR_FIN_TIMER=300 \
! -DAGILLA_MAX_NUM_NEIGHBORS=20 \
! -DDEFAULT_NUM_COLUMNS=4 \
! -DAGILLA_REMOTE_TS_OP_Q_SIZE=3 \
! -DAGILLA_TS_SIZE=100 \
! -DAGILLA_RTS_TIMEOUT=256 \
! -DAGILLA_RTS_MAX_NUM_TRIES=4 \
! -DAGILLA_TS_BOUNCEQ_SIZE=2 \
! -DAGILLA_TS_NO_DUPLICATE=0 \
! -DREACTION_MGR_BUFFER_SIZE=5 \
! -DBEACON_PERIOD=2048 \
! -DBEACON_RAND=1024 \
! -DBEACON_TIMEOUT=9216 \
! -DTIMEOUT_GET_LOCATION=1024 \
! -DENABLE_SPACE_LOCALIZER=1 \
! -DENABLE_NEIGHBOR_LIST_FILTER=0 \
! -DOMIT_AGENT_SENDER=0 \
! -DOMIT_AGENT_RECEIVER=0 \
! -DOMIT_CONTEXT_DISCOVERY=0 \
! -DINCLUDE_DEFAULT_AGENT=0 \
! -DPRINT_RXN_FIRED=0 \
! -DDEBUG_AGENT_RECEIVER=0 \
! -DDEBUG_AGENT_SENDER=0 \
! -DDEBUG_OPSTACK=0 \
! -DDEBUG_HEAPMGR=0 \
! -DDEBUG_AGENT_MGR=0 \
! -DDEBUG_CODEMGR=0 \
! -DDEBUG_REMOTE_TS_OP_MGR=0 \
! -DDEBUG_RXNMGR=0 \
! -DDEBUG_TS=0 \
! -DDEBUG_TUPLE_UTIL=0 \
! -DDEBUG_NEIGHBORLIST=0 \
! -DDEBUG_AGILLA_ENGINE=0 \
! -DDEBUG_OP_SLEEP=0 \
! -DDEBUG_OP_RXN=0 \
! -DDEBUG_OPCOMPARE=0 \
! -DDEBUG_ADDRESS_MGR=0 \
! -DNBR_LIST_PRINT_CHANGES=0
!
!
! Details on each of these flags is described below. Default values are in
! parenthesis.
!
! -DAGILLA_NUM_AGENTS=<num> (3)
! The maximum number of agents per node. This value depends on
! the amount of memory available. Try to keep RAM usage below 3.5K.
!
! -DAGILLA_NUM_CODE_BLOCKS=<num> (12)
! The number of code blocks within the CodeMgr. Each code block is 22 bytes.
! The CodeMgr allocates the minimum number of blocks necessary to hold an
! agent's code.
!
! -DAGILLA_NETWORK_INTERFACE_RECEIVE_QUEUE_SIZE=<num> (3)
! The maximum number of incoming messages Agilla should enqueue.
! A higher value makes communication more reliable, but increases
! memory usage.
!
! -DAGILLA_NETWORK_INTERFACE_SEND_QUEUE_SIZE=<num> (3)
! The maximum number of outgoing messages Agilla should enqueue.
! A higher value makes communication more reliable, but increases
! memory usage.
!
! -DDEBUG_NETWORK_INTERFACE=<0/1> (0)
! Prints out debug messages generated from within the NetworkInterface
! components. The NetworkInterface manages the send and receive buffers.
!
! -DAGILLA_SNDR_BUFF_SIZE=<num> (1)
! The maximum number of simultaneous outgoing agents.
!
! -DAGILLA_SNDR_RETRY_TIMER=<num> (512)
! The amount of time in binary milliseconds before the agent sender
! aborts the migration process and retries from the beginning.
!
! -DAGILLA_SNDR_MAX_RETRIES=<num> (2)
! The maximum number of times the agent sender will retry migrating an
! agent before permanently aborting.
!
! -DAGILLA_SNDR_MAX_RETRANSMITS=<num> (4)
! The maximum number of times the agent sender will retransmit a message
! before aborting.
!
! -DAGILLA_SNDR_RXMIT_TIMER=<num> (256)
! The amount of time in binary milliseconds before the agent sender
! retransmits a message. If an acknowledgement is received within this
! time, the message is not retransmitted.
!
! -DAGILLA_SNDR_ABORT_TIMER=<num> (1536)
! The amount of time the sender pauses before aborting an agent. This
! ensures that the destination node times out the receive process and
! frees up the memory. This must be higher than -DAGILLA_RCVR_ABORT_TIMER.
!
! -DAGILLA_RCVR_BUFF_SIZE=<num> (1)
! The number of simultaneous incoming agents. This value is limited
! by memory availability. NOTE: THIS OPTION IS NO LONGER AVAILABLE
!
! -DAGILLA_RCVR_ABORT_TIMER=<num> (1000)
! The amount of time without receiving messages that the agent receiver
! abort the migration process.
!
! -DAGILLA_RCVR_FIN_TIMER=<num> (300)
! The amount of time that the receiver waits after receiving an agent to make
! sure no duplicate messages for the agent arrive. The main purpose of this
! is to prevent duplicate agents.
!
! -DAGILLA_MAX_NUM_NEIGHBORS=<num> (20)
! The size of the neighbor list.
!
! -DDEFAULT_NUM_COLUMNS=<num> (20)
! Specifies the default number of columns. This is used when
! DENABLE_NEIGHBOR_LIST_FILTER=1. It creates a virtual multi-hop network
! by limiting the neighbor list to contain only nodes within 1 hop as defined
! within a grid topology.
!
! -DAGILLA_REMOTE_TS_OP_Q_SIZE=<num> (3)
! The maximum number of remote tuple space operations.
!
! -DAGILLA_TS_SIZE=<num> (100)
! The size of the tuple space in bytes. Note that this consumes RAM.
!
! -DAGILLA_TS_NO_DUPLICATE=<num> (0)
! Determines whether duplicate tuples should be allowed in the tuple space.
! This is useful when performing rout operations. If the ACK is lost, the
! initiating node will retransmit. This may result in duplicate tuples
! in the destination's tuple space.
!
! -DAGILLA_RTS_TIMEOUT=<num> (1024)
! The maximum amount of time a node waits for an acknowledgement when
! performing a remove tuple space operation.
!
! -DTIMEOUT_GET_LOCATION=<num> (1024)
! The amount of time Agilla waits before cancelling a getAgentLocation
! operation.
!
! -DAGILLA_RTS_MAX_NUM_TRIES=<num> (4)
! The maximum number of times a node will retry transmitting a tuple space
! operation before trimming out.
!
! -DAGILLA_TS_BOUNCEQ_SIZE=<num> (1)
! The maximum number of pending remote tuple space operations.
!
! -DREACTION_MGR_BUFFER_SIZE=<num> (5
! The maximum number of reactions that can be registered.
!
! -DBEACON_PERIOD=<num> (2048)
! The minimum beacon period. Used for maintaining the neighbor list.
!
! -DBEACON_RAND=<num> (1024)
! The randomized part of the beacon period. The actual beacon period is
! between BEACON_PERIOD and BEACON_PERIOD+BEACON_RAND.
!
! -DBEACON_TIMEOUT=<num> (9216)
! The amount of time over which no beacon from a particular neighbor is
! received before removing that neighbor from the neighbor list.
!
! -DENABLE_SPACE_LOCALIZER=<1/0> (1)
! Specifies whether Agilla should use the SpaceLocalizer to change
! radio frequencies when the mote's location changes. To configure the
! possible location spaces, and what radio frequencies are used for each
! space, edit event "SpaceLocalizerI.moved(...)" within
! <agilla>/components/LocationMgrM.nc. By default, there are two spaces
! defined: "DOCK" and "SHIP". DOCK uses CC1000_CHANNEL_2 while SHIP uses
! CC1000_CHANNEL_4. The CC1000 channel frequencies are defined within
! module tinyos-1.x/contrib/wustl/SpaceLocalizer/SpaceLocalizer.h.
!
! -DENABLE_NEIGHBOR_LIST_FILTER=<1/0> (0)
! Specifies whether the neighbor list filter is enabled. If enabled, the
! filter will block adding any neighbors that are not immdiate neighbors
! based on the grid topology from being added to the neighbor list. This
! is used to simulate a multi-hop network.
!
! -DINCLUDE_DEFAULT_AGENT=<1/0> (0)
! Sets whether an agent is hard-coded into the middleware and automatically
! started when the mote boots. This is useful for running Agilla without
! an AgentInjector.
!
! -DOMIT_AGENT_SENDER=<1/0> (0)
! Specifies whether the agent sender should be included. This is use for
! isolating bugs. When set to 1, the agent sender components will not be
! compiled.
!
! -DOMIT_AGENT_RECEIVER=<1/0> (0)
! Specifies whether the agent receiver should be included. This is use for
! isolating bugs. When set to 1, the agent receiver components will not be
! compiled.
!
! -DOMIT_CONTEXT_DISCOVERY=<1/0> (0)
! Specifies whether the context discovery components should be included. This
! is use for isolating bugs. When set to 1, the context discovery components
! will not be compiled.
!
! -DINCLUDE_DEFAULT_AGENT=<1/0> (0)
! Whether to include a default agent within the firmware. If a default agent
! is included, it will be started automatically when the mote is turned on.
!
! -DDEBUG_AGENT_RECEIVER=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_AGENT_SENDER=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_OPSTACK=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_HEAPMGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_AGENT_MGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_CODEMGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_REMOTE_TS_OP_MGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_RXNMGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_TS=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_TUPLE_UTIL=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_NEIGHBORLIST=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_AGILLA_ENGINE=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DNBR_LIST_PRINT_CHANGES=<1/0> (0)
! A flag that controls whether to print statements to the screen that
! indicate changes to the neighbor list.
!
!
! STARTING THE AGENT INJECTOR
! -------------------------------------------------------------------------------
! Agilla uses a Java-based AgentInjector to inject agents into a wireless sensor
! network. The AgentInjector is located in module
! tinyos-1.x/contrib/wustl/tools/java/edu/wustl/mobilab/agilla.
!
! To compile the AgentInjector, go into its directory and type "make".
!
! Start the AgentInjector using the following command:
!
! $ java -Djava.security.policy=java.policy edu.wustl.mobilab.agilla.AgentInjector
! -comm COM1:115200 -d &
!
! Make sure /opt/tinyos-1.x/contrib/wustl/tools/java/ is in the CLASSPATH.
!
!
! REMOTE TUPLE SPACE OPERATIONS
! -------------------------------------------------------------------------------
!
! The following diagram shows the sequence of messages that are passed during a
! remote tuple space operation where the initiator is the PC, and the destination
! is a node not directly connected to it.
!
! ---- (1) -------- (2) --------
! | | ----> | | ----> | |
! | PC | | Mote 1 | | Mote 2 |
! | | <---- | | <---- | |
! ---- (4) -------- (3) --------
!
!
! (1) dest=mote2, reply=null
! (2) dest=mote2, reply=mote1*
! (3) dest=mote1
! (4) dest=uart**
!
! * When mote 1 receives a request destined for a remote node, it assumes it came
! from the base station, and forwards the request to the destination after
! setting the reply address to be itself.
! ** When mote 1 receives an unexpected results message from mote2, it assumes its
! for the base station and forwards it to the uart. A possible race condition
! will occur if an agent on Mote 1 issues a remote operation using the same
! template while still waiting for a base station operation's results to arrive.
! The probability of this occurring is minimal.
!
! The following diagram shows the sequence of messages that are passed during a
! remote tuple space operation where the initiator is a node not connected to a
! programming board, and the destination is the PC. Note that no address renaming
! occurs.
!
! ---- (2) -------- (1) --------
! | | <---- | | <---- | |
! | PC | | Mote 1 | | Mote 2 |
! | | ----> | | ----> | |
! ---- (3) -------- (4) --------
!
!
! (1) dest=uart, reply=mote2
! (2) dest=uart, reply=mote2
! (3) dest=mote2
! (4) dest=mote2
!
! Note that in stage (3), if no match was found, the original template is saved as
! the results, and the success field is set to 0. This allows mote 1 to determine
! whether it should forward the results to mote 2, or keep it for itself.
!
!
! GET NEIGHBOR LIST OPERATION
! -------------------------------------------------------------------------------
! The AgentInjector provides the following public method:
!
! public Vector queryNbrList(int addr);
!
! This method allows a user to query the neighbor list of a mote. The mote's
! neighbor list is maintained using periodic beacons by
! components/ContextDiscovery/NeighborListM.nc. A user can query the neighbor
! list of a mote assuming it is physically one hop away from the base station.
! Note that if DENABLE_NEIGHBOR_LIST_FILTER=1, a mote may be multiple virtual
! hops away from the base station. This does not matter. So long as the mote is
! one physical hop away from the base station, the neighbor list can be queries.
!
! Query neighbor list works as follows. Suppose you want to query the neighbor list
! of mote 2 in a network with the following topology:
!
! ---- (1) -------- (2) --------
! | | ----> | | ----> | |
! | PC | | Mote 1 | | Mote 2 |
! | | <---- | | <---- | |
! ---- (4) -------- (3) --------
!
!
! (1) The query is issued and passed over a serial link to Mote 1.
! (2) The query is bounced off Mote 1 to Mote 2. The reply address of the query is
! changed to be mote 1.
! (3) Mote 2 responds with its neighbor list. Note that this may be more than
! one message
! (4) Mote 1 receives a response, and forwards it to the PC. Mote 1 will only
! forward it to the PC if it is a base station. Mote 1 knows its a base
! station if it receives a heart beat from the PC.
!
!
! FUTURE IMPROVEMENTS
! -------------------------------------------------------------------------------
! 1) Error reporting mechanism will offer more details on what went wrong. The
! current error message only includes up to 2 bytes of data and the total
! message size is only 13 bytes.
! 2) regrxn should update condition codes
! 3) If the CodeMgr fails to allocate enough code blocks for an agent, send an
! error back to the node from which the agent is arriving instead of going into
! an AGILLA_ERROR_GET_FREE_BLOCK error mode.
! 4) Use the flash memory for the tuple space. Offer persistent tuple space.
! 5) Port Agilla to Telos.
! 6) High-level language.
! 7) Policies for determining which agent should run when the mote cannot support
! any more agents.
! 8) Middlware cognizant of global priority level; kill agents that are below current
! priority.
! 9) Reactions sensitive to thresholds, e.g., react when the temperature is above a certain value...
10)Remote reactions.
\ No newline at end of file
--- 1,444 ----
! $Id$
!
! Agilla: a mobile agent middleware for wireless sensor networks. Agilla enables
! users to inject mobile agents into a wireless sensor network. Agents are
! autonomous computational entities that can migrate or clone across nodes in a
! wireless sensor network. Two types of migration and clone instructions are
! provided: "strong" in which both code and state is maintained, and "weak" in which
! only the code is maintained.
!
! Agilla facilitates inter-agent coordination via localized tuple spaces,
! remote tuple space operations, and a neighbor list.
!
! This document can be found in the TinyOS CVS repository under module
! tinyos-1.x/contrib/wustl/apps/Agilla.
!
! Author: Chien-Liang Fok <liangfok at wustl.edu>
! Website: http://mobilab.wustl.edu/projects/agilla/index.html
!
! DOWNLOADING AGILLA
! -------------------------------------------------------------------------------
! The latest version of Agilla can be downloaded off the TinyOS CVS server.
! Instructions for downloading it are available here:
! http://sourceforge.net/cvs/?group_id=28656
!
! Checkout module tinyos-1.x/contrib/wustl. You can use the following command:
!
! cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/tinyos co \
! -P tinyos-1.x/contrib/wustl
!
! Once downloaded, Agilla's firmware will be in tinyos-1.x/contrib/wustl/apps/Agilla,
! and the AgentInjector will be in tinyos-1.x/contrib/wustl/tools/java/.
!
! PREREQUISITE CHANGES TO TINYOS
! -------------------------------------------------------------------------------
! Agilla interfaces with the SpaceLocalizer (module
! tinyos-1.x/contrib/wustl/apps/SpaceLocalizer) to gain spatial information.
! SpaceLocalizer requires that the mote's UART port be set to 115200bps, which is
! by default 57600. To change it to 115200, open
! tinyos-1.x/tos/platforms/<platform>/UPLUART0M.nc and change "outp(15, UBRR0L);"
! to "outp(7, UBRR0L);".
!
!
! HARDWARE REQUIREMENTS
! -------------------------------------------------------------------------------
! This version of Agilla has been tested with Mica2 and MicaZ motes. Note that
! currently SpaceLocalizer must be disabled when using MicaZ motes.
!
!
! DEPENDENCIES
! -------------------------------------------------------------------------------
! Agilla relies on the following modules within TinyOS's CVS repository:
! 1) tinyos-1.x/contrib/wustl/apps/AgillaAgents
! -This contains numerous sample Agilla agents.
! 2) tinyos-1.x/contrib/wustl/apps/LEDBlinker
! -A utility that blinks the LEDs in various patterns. Only uses
! a single timer. Used primarily for debugging purposes.
! 3) tinyos-1.x/contrib/wustl/apps/SpaceLocalizer
! -Interfaces with a Cricket mote for location-aware applications
! 4) tinyos-1.x/contrib/wustl/tools/java/edu/wustl/mobilab/agilla
! -The Java-based AgentInjector application.
!
!
! MAKEFILE FLAGS
! -------------------------------------------------------------------------------
! Agilla's makefile system requires that you create a "Makefile.Agilla" file
! within tinyos-1.x/contrib/wustl/apps/Agilla/. The contents of this file must
! look like:
!
! PFLAGS_AGILLA=-DAGILLA_NUM_AGENTS=3 \
! -DAGILLA_NUM_CODE_BLOCKS=12 \
! -DAGILLA_NETWORK_INTERFACE_RECEIVE_QUEUE_SIZE=4 \
! -DAGILLA_NETWORK_INTERFACE_SEND_QUEUE_SIZE=4 \
! -DAGILLA_SNDR_BUFF_SIZE=1 \
! -DAGILLA_SNDR_RETRY_TIMER=512 \
! -DAGILLA_SNDR_MAX_RETRIES=2 \
! -DAGILLA_SNDR_RXMIT_TIMER=290 \
! -DAGILLA_SNDR_MAX_RETRANSMITS=4 \
! -DAGILLA_SNDR_ABORT_TIMER=1536 \
! -DAGILLA_RCVR_ABORT_TIMER=1000 \
! -DAGILLA_RCVR_FIN_TIMER=300 \
! -DAGILLA_MAX_NUM_NEIGHBORS=20 \
! -DDEFAULT_NUM_COLUMNS=4 \
! -DAGILLA_REMOTE_TS_OP_Q_SIZE=3 \
! -DAGILLA_TS_SIZE=100 \
! -DAGILLA_RTS_TIMEOUT=256 \
! -DAGILLA_RTS_MAX_NUM_TRIES=4 \
! -DAGILLA_TS_BOUNCEQ_SIZE=2 \
! -DAGILLA_TS_NO_DUPLICATE=0 \
! -DREACTION_MGR_BUFFER_SIZE=5 \
! -DBEACON_PERIOD=2048 \
! -DBEACON_RAND=1024 \
! -DBEACON_TIMEOUT=9216 \
! -DTIMEOUT_GET_LOCATION=1024 \
! -DENABLE_SPACE_LOCALIZER=1 \
! -DENABLE_NEIGHBOR_LIST_FILTER=0 \
! -DOMIT_AGENT_SENDER=0 \
! -DOMIT_AGENT_RECEIVER=0 \
! -DOMIT_CONTEXT_DISCOVERY=0 \
! -DINCLUDE_DEFAULT_AGENT=0 \
! -DPRINT_RXN_FIRED=0 \
! -DDEBUG_AGENT_RECEIVER=0 \
! -DDEBUG_AGENT_SENDER=0 \
! -DDEBUG_OPSTACK=0 \
! -DDEBUG_HEAPMGR=0 \
! -DDEBUG_AGENT_MGR=0 \
! -DDEBUG_CODEMGR=0 \
! -DDEBUG_REMOTE_TS_OP_MGR=0 \
! -DDEBUG_RXNMGR=0 \
! -DDEBUG_TS=0 \
! -DDEBUG_TUPLE_UTIL=0 \
! -DDEBUG_NEIGHBORLIST=0 \
! -DDEBUG_AGILLA_ENGINE=0 \
! -DDEBUG_OP_SLEEP=0 \
! -DDEBUG_OP_RXN=0 \
! -DDEBUG_OPCOMPARE=0 \
! -DDEBUG_ADDRESS_MGR=0 \
! -DNBR_LIST_PRINT_CHANGES=0
!
!
! Details on each of these flags is described below. Default values are in
! parenthesis.
!
! -DAGILLA_NUM_AGENTS=<num> (3)
! The maximum number of agents per node. This value depends on
! the amount of memory available. Try to keep RAM usage below 3.5K.
!
! -DAGILLA_NUM_CODE_BLOCKS=<num> (12)
! The number of code blocks within the CodeMgr. Each code block is 22 bytes.
! The CodeMgr allocates the minimum number of blocks necessary to hold an
! agent's code.
!
! -DAGILLA_NETWORK_INTERFACE_RECEIVE_QUEUE_SIZE=<num> (3)
! The maximum number of incoming messages Agilla should enqueue.
! A higher value makes communication more reliable, but increases
! memory usage.
!
! -DAGILLA_NETWORK_INTERFACE_SEND_QUEUE_SIZE=<num> (3)
! The maximum number of outgoing messages Agilla should enqueue.
! A higher value makes communication more reliable, but increases
! memory usage.
!
! -DDEBUG_NETWORK_INTERFACE=<0/1> (0)
! Prints out debug messages generated from within the NetworkInterface
! components. The NetworkInterface manages the send and receive buffers.
!
! -DAGILLA_SNDR_BUFF_SIZE=<num> (1)
! The maximum number of simultaneous outgoing agents.
!
! -DAGILLA_SNDR_RETRY_TIMER=<num> (512)
! The amount of time in binary milliseconds before the agent sender
! aborts the migration process and retries from the beginning.
!
! -DAGILLA_SNDR_MAX_RETRIES=<num> (2)
! The maximum number of times the agent sender will retry migrating an
! agent before permanently aborting.
!
! -DAGILLA_SNDR_MAX_RETRANSMITS=<num> (4)
! The maximum number of times the agent sender will retransmit a message
! before aborting.
!
! -DAGILLA_SNDR_RXMIT_TIMER=<num> (256)
! The amount of time in binary milliseconds before the agent sender
! retransmits a message. If an acknowledgement is received within this
! time, the message is not retransmitted.
!
! -DAGILLA_SNDR_ABORT_TIMER=<num> (1536)
! The amount of time the sender pauses before aborting an agent. This
! ensures that the destination node times out the receive process and
! frees up the memory. This must be higher than -DAGILLA_RCVR_ABORT_TIMER.
!
! -DAGILLA_RCVR_BUFF_SIZE=<num> (1)
! The number of simultaneous incoming agents. This value is limited
! by memory availability. NOTE: THIS OPTION IS NO LONGER AVAILABLE
!
! -DAGILLA_RCVR_ABORT_TIMER=<num> (1000)
! The amount of time without receiving messages that the agent receiver
! abort the migration process.
!
! -DAGILLA_RCVR_FIN_TIMER=<num> (300)
! The amount of time that the receiver waits after receiving an agent to make
! sure no duplicate messages for the agent arrive. The main purpose of this
! is to prevent duplicate agents.
!
! -DAGILLA_MAX_NUM_NEIGHBORS=<num> (20)
! The size of the neighbor list.
!
! -DDEFAULT_NUM_COLUMNS=<num> (20)
! Specifies the default number of columns. This is used when
! DENABLE_NEIGHBOR_LIST_FILTER=1. It creates a virtual multi-hop network
! by limiting the neighbor list to contain only nodes within 1 hop as defined
! within a grid topology.
!
! -DAGILLA_REMOTE_TS_OP_Q_SIZE=<num> (3)
! The maximum number of remote tuple space operations.
!
! -DAGILLA_TS_SIZE=<num> (100)
! The size of the tuple space in bytes. Note that this consumes RAM.
!
! -DAGILLA_TS_NO_DUPLICATE=<num> (0)
! Determines whether duplicate tuples should be allowed in the tuple space.
! This is useful when performing rout operations. If the ACK is lost, the
! initiating node will retransmit. This may result in duplicate tuples
! in the destination's tuple space.
!
! -DAGILLA_RTS_TIMEOUT=<num> (1024)
! The maximum amount of time a node waits for an acknowledgement when
! performing a remove tuple space operation.
!
! -DTIMEOUT_GET_LOCATION=<num> (1024)
! The amount of time Agilla waits before cancelling a getAgentLocation
! operation.
!
! -DAGILLA_RTS_MAX_NUM_TRIES=<num> (4)
! The maximum number of times a node will retry transmitting a tuple space
! operation before trimming out.
!
! -DAGILLA_TS_BOUNCEQ_SIZE=<num> (1)
! The maximum number of pending remote tuple space operations.
!
! -DREACTION_MGR_BUFFER_SIZE=<num> (5
! The maximum number of reactions that can be registered.
!
! -DBEACON_PERIOD=<num> (2048)
! The minimum beacon period. Used for maintaining the neighbor list.
!
! -DBEACON_RAND=<num> (1024)
! The randomized part of the beacon period. The actual beacon period is
! between BEACON_PERIOD and BEACON_PERIOD+BEACON_RAND.
!
! -DBEACON_TIMEOUT=<num> (9216)
! The amount of time over which no beacon from a particular neighbor is
! received before removing that neighbor from the neighbor list.
!
! -DENABLE_SPACE_LOCALIZER=<1/0> (1)
! Specifies whether Agilla should use the SpaceLocalizer to change
! radio frequencies when the mote's location changes. To configure the
! possible location spaces, and what radio frequencies are used for each
! space, edit event "SpaceLocalizerI.moved(...)" within
! <agilla>/components/LocationMgrM.nc. By default, there are two spaces
! defined: "DOCK" and "SHIP". DOCK uses CC1000_CHANNEL_2 while SHIP uses
! CC1000_CHANNEL_4. The CC1000 channel frequencies are defined within
! module tinyos-1.x/contrib/wustl/SpaceLocalizer/SpaceLocalizer.h.
!
! -DENABLE_NEIGHBOR_LIST_FILTER=<1/0> (0)
! Specifies whether the neighbor list filter is enabled. If enabled, the
! filter will block adding any neighbors that are not immdiate neighbors
! based on the grid topology from being added to the neighbor list. This
! is used to simulate a multi-hop network.
!
! -DINCLUDE_DEFAULT_AGENT=<1/0> (0)
! Sets whether an agent is hard-coded into the middleware and automatically
! started when the mote boots. This is useful for running Agilla without
! an AgentInjector.
!
! -DOMIT_AGENT_SENDER=<1/0> (0)
! Specifies whether the agent sender should be included. This is use for
! isolating bugs. When set to 1, the agent sender components will not be
! compiled.
!
! -DOMIT_AGENT_RECEIVER=<1/0> (0)
! Specifies whether the agent receiver should be included. This is use for
! isolating bugs. When set to 1, the agent receiver components will not be
! compiled.
!
! -DOMIT_CONTEXT_DISCOVERY=<1/0> (0)
! Specifies whether the context discovery components should be included. This
! is use for isolating bugs. When set to 1, the context discovery components
! will not be compiled.
!
! -DINCLUDE_DEFAULT_AGENT=<1/0> (0)
! Whether to include a default agent within the firmware. If a default agent
! is included, it will be started automatically when the mote is turned on.
!
! -DDEBUG_AGENT_RECEIVER=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_AGENT_SENDER=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_OPSTACK=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_HEAPMGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_AGENT_MGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_CODEMGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_REMOTE_TS_OP_MGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_RXNMGR=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_TS=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_TUPLE_UTIL=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_NEIGHBORLIST=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DDEBUG_AGILLA_ENGINE=<1/0> (0)
! A flag that controls whether to print debug statements to the screen under
! mode "usr1".
!
! -DNBR_LIST_PRINT_CHANGES=<1/0> (0)
! A flag that controls whether to print statements to the screen that
! indicate changes to the neighbor list.
!
!
! STARTING THE AGENT INJECTOR
! -------------------------------------------------------------------------------
! Agilla uses a Java-based AgentInjector to inject agents into a wireless sensor
! network. The AgentInjector is located in module
! tinyos-1.x/contrib/wustl/tools/java/edu/wustl/mobilab/agilla.
!
! To compile the AgentInjector, go into its directory and type "make".
!
! Start the AgentInjector using the following command:
!
! $ java -Djava.security.policy=java.policy edu.wustl.mobilab.agilla.AgentInjector
! -comm COM1:115200 -d &
!
! Make sure /opt/tinyos-1.x/contrib/wustl/tools/java/ is in the CLASSPATH.
!
!
! REMOTE TUPLE SPACE OPERATIONS
! -------------------------------------------------------------------------------
!
! The following diagram shows the sequence of messages that are passed during a
! remote tuple space operation where the initiator is the PC, and the destination
! is a node not directly connected to it.
!
! ---- (1) -------- (2) --------
! | | ----> | | ----> | |
! | PC | | Mote 1 | | Mote 2 |
! | | <---- | | <---- | |
! ---- (4) -------- (3) --------
!
!
! (1) dest=mote2, reply=null
! (2) dest=mote2, reply=mote1*
! (3) dest=mote1
! (4) dest=uart**
!
! * When mote 1 receives a request destined for a remote node, it assumes it came
! from the base station, and forwards the request to the destination after
! setting the reply address to be itself.
! ** When mote 1 receives an unexpected results message from mote2, it assumes its
! for the base station and forwards it to the uart. A possible race condition
! will occur if an agent on Mote 1 issues a remote operation using the same
! template while still waiting for a base station operation's results to arrive.
! The probability of this occurring is minimal.
!
! The following diagram shows the sequence of messages that are passed during a
! remote tuple space operation where the initiator is a node not connected to a
! programming board, and the destination is the PC. Note that no address renaming
! occurs.
!
! ---- (2) -------- (1) --------
! | | <---- | | <---- | |
! | PC | | Mote 1 | | Mote 2 |
! | | ----> | | ----> | |
! ---- (3) -------- (4) --------
!
!
! (1) dest=uart, reply=mote2
! (2) dest=uart, reply=mote2
! (3) dest=mote2
! (4) dest=mote2
!
! Note that in stage (3), if no match was found, the original template is saved as
! the results, and the success field is set to 0. This allows mote 1 to determine
! whether it should forward the results to mote 2, or keep it for itself.
!
!
! GET NEIGHBOR LIST OPERATION
! -------------------------------------------------------------------------------
! The AgentInjector provides the following public method:
!
! public Vector queryNbrList(int addr);
!
! This method allows a user to query the neighbor list of a mote. The mote's
! neighbor list is maintained using periodic beacons by
! components/ContextDiscovery/NeighborListM.nc. A user can query the neighbor
! list of a mote assuming it is physically one hop away from the base station.
! Note that if DENABLE_NEIGHBOR_LIST_FILTER=1, a mote may be multiple virtual
! hops away from the base station. This does not matter. So long as the mote is
! one physical hop away from the base station, the neighbor list can be queries.
!
! Query neighbor list works as follows. Suppose you want to query the neighbor list
! of mote 2 in a network with the following topology:
!
! ---- (1) -------- (2) --------
! | | ----> | | ----> | |
! | PC | | Mote 1 | | Mote 2 |
! | | <---- | | <---- | |
! ---- (4) -------- (3) --------
!
!
! (1) The query is issued and passed over a serial link to Mote 1.
! (2) The query is bounced off Mote 1 to Mote 2. The reply address of the query is
! changed to be mote 1.
! (3) Mote 2 responds with its neighbor list. Note that this may be more than
! one message
! (4) Mote 1 receives a response, and forwards it to the PC. Mote 1 will only
! forward it to the PC if it is a base station. Mote 1 knows its a base
! station if it receives a heart beat from the PC.
!
!
! FUTURE IMPROVEMENTS
! -------------------------------------------------------------------------------
! 1) Error reporting mechanism will offer more details on what went wrong. The
! current error message only includes up to 2 bytes of data and the total
! message size is only 13 bytes.
! 2) regrxn should update condition codes
! 3) If the CodeMgr fails to allocate enough code blocks for an agent, send an
! error back to the node from which the agent is arriving instead of going into
! an AGILLA_ERROR_GET_FREE_BLOCK error mode.
! 4) Use the flash memory for the tuple space. Offer persistent tuple space.
! 5) Port Agilla to Telos.
! 6) High-level language.
! 7) Policies for determining which agent should run when the mote cannot support
! any more agents.
! 8) Middlware cognizant of global priority level; kill agents that are below current
! priority.
! 9) Reactions sensitive to thresholds, e.g., react when the temperature is above a certain value...
10)Remote reactions.
\ No newline at end of file
Index: platforms.properties
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/wustl/apps/Agilla/platforms.properties,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** platforms.properties 7 Apr 2006 01:14:32 -0000 1.4
--- platforms.properties 18 May 2006 19:58:40 -0000 1.5
***************
*** 1,20 ****
! ##Initial properties for the known platforms
! #This property file is used to associate the platforms specified in the comm
! #ID string (e.g. serial at COM1:mica) with various plaftorm-specific parameters
! #The entry format is as follows:
! # <platform>=<platform package>, <integer ID>, <baudrate>
! # where
! #<platform> -- that's the platform we compile for (i.e. valid nesc target
! #<platform package> -- name of the common package family that uses the same AM format (e.g. avrmote)
! #<integer ID> -- unique integer that is used by serial forwarder to identify the platform across the network
! #<baudrate> -- default serial port datarate used to communicate with the mote
!
! #Thu Nov 04 18:44:39 PST 2004
! telos=telos,1,57600
! tmote=tmote,1,57600
! mica=avrmote,2,19200
! eyes=eyes,4,19200
! micaz=micaz,3,57600
! mica2=avrmote,2,57600
! mica2dot=avrmote,2,19200
--- 1,20 ----
! ##Initial properties for the known platforms
! #This property file is used to associate the platforms specified in the comm
! #ID string (e.g. serial at COM1:mica) with various plaftorm-specific parameters
! #The entry format is as follows:
! # <platform>=<platform package>, <integer ID>, <baudrate>
! # where
! #<platform> -- that's the platform we compile for (i.e. valid nesc target
! #<platform package> -- name of the common package family that uses the same AM format (e.g. avrmote)
! #<integer ID> -- unique integer that is used by serial forwarder to identify the platform across the network
! #<baudrate> -- default serial port datarate used to communicate with the mote
!
! #Thu Nov 04 18:44:39 PST 2004
! telos=telos,1,57600
! tmote=tmote,1,57600
! mica=avrmote,2,19200
! eyes=eyes,4,19200
! micaz=micaz,3,57600
! mica2=avrmote,2,57600
! mica2dot=avrmote,2,19200
More information about the Tinyos-contrib-commits
mailing list