Difference between revisions of "Downloading Agilla"

From Cyber-Physical Systems Laboratory
Jump to navigationJump to search
Line 3: Line 3:
 
== Version 3.0.3 ==
 
== Version 3.0.3 ==
 
* Release date: 05-13-2007
 
* Release date: 05-13-2007
* Download: Source
+
* Download
 
Changes:
 
Changes:
 
# Added #if statements around cc2420-specific code
 
# Added #if statements around cc2420-specific code

Revision as of 06:06, 10 December 2007

Agilla source code is distributed as a tarball. This page contains a list of releases that are available. For installation instructions, see lesson 1 of the tutorial.

Version 3.0.3

  • Release date: 05-13-2007
  • Download

Changes:

  1. Added #if statements around cc2420-specific code
  2. Modified the AgentInjector to check whether clustering is enabled before it resets the LocationMgr
  3. Modified some default settings to use relative paths for portability.

Version 3.0.2

  • Release date: 05-22-2006
  • Download: Source

Comments:

Added an Example Makefile.Agilla and updated the README to describe the flags in it.

Version 3.0.1

  • Release date: 05-16-2006

Comments:

Contains a small fix that rectifies the "QUEUE_ENQUEUE" error that sometimes occurs when there are numerous agents in the network. This distribution contains both the Java and NesC code in a single zip file. To install it, extract it to /opt/tinyos-1.x/.


   * 05-14-2006 Version 3.0 - NesC, Java
     Added support for TelosB platform. Allow the user to disable the grid topology filter and greedy routing. Note that the Java Makefile assumes a $AGILLA environment variable that specifies the root directory of Agilla's NesC code. Agilla's nesC code goes under tinyos-x.1/contrib/wustl/apps/Agilla/.
   *
     07-14-2005 Version 2.2 - NesC, Java
     Comments: Reduced memory usage to avoid stack overflow when large agents are injected.
   *
     05-25-2005 Version 2.1 - NesC, Java
     Comments: This version fixes a bug that prevented you from moving a mote more than once. It also changes the "reset all" function to only reset nodes that are reachable from the base station that broadcasted the reset message.
   * 05-17-2005 Version 2.0 - NesC, Java
     Comments:
     1) The grid size can be changed using the AgentInjector (you no longer have to reprogram all the motes to change the grid size)
     2) When specifying the grid size, you only specify the number of columns (you no longer need to specify the number of rows). The node’s TinyOS address still determines the mote’s location. Mote 0 is at (1,1) located at the lower-left corner of the grid. TinyOS address’s increase in row major order.
     3) A mote’s location can be changed using the AgentInjector (you no longer need to reprogram the mote to change its address/location). The original ID of the mote is always used to specify which mote to modify, e.g., “move mote 1 to location (2,3).”
     4) The AgentInjector enters a modal state for ~3 seconds after a reset to allow the network components to reinitialize themselves. This is especially critical now that I’m sending the base station a message immediately after it resets telling it that it is a base station.
     5) The nodes periodically broadcast a beacon, neighbor discovery is done by each node
     6) The base station can be any node in the network. It no longer has a special address. There can be multiple base stations. Base stations can also move, their location is set like any other node using the AgentInjector.
     7) Since the location of a base station is no longer known by the non-base station nodes, Agilla no longer performs multi-hop routing to (uart_x, uart_y). Only the base station can perform a remote tuple space operation to (uart_x, uart_y). It is now up to the application to route messages to the base station. If an agent knows the location of the base station, Agilla can still perform the greedy multi-hop routing to it.
   * 03-30-2005 Version 1.6 - NesC, Java
     Comments: Fixed a bug in OPcompare preventing comparisons between variables of two different types. Now, whenever you try to compare two variables of different types, the condition code will always be set to 0.
     Issues: Linux's timing seems to be different from Windows resulting in agents being corrupted when injected. To solve this, open <agilla>/types/MigrationMsgs.h, uncomment lines 63-66, and comment out lines 77-84.
   * 03-24-2005 Version 1.5 - NesC, Java
     Comments: Fixed a bug preventing agents in the WSN from inserting tuples into the laptop's tuple space. Added an Oscilloscope example to demonstrate how a Java application running on the laptop can access the laptop's tuple space.
   * 03-23-2005 Version 1.4 - NesC, Java
     Comments: Fixed the tuple space and modified assembler to report line numbers in errors.
   * 03-21-2005 Version 1.3 - NesC, Java
     Comments: This version removes instruction shiftl and shiftr and replaces them with mul (multiply) and div (divide). Agents can perform remote tuplespace operations on the laptop's tuple space by using location (uart_x, uart_y).
     Issues: The RMI code for allowing remote access to the laptop's tuple space has not been implemented yet.
   * 11-30-2004 Version 1.2 - NesC, Java
     Comments: This is the version used to write the IPSN 2005 SPOTS paper.
     Issues: The pc can access the tuplespace on mote (0,0), but there is no clean interface for this yet. The pc cannot register reactions as of yet. The agents on the laptop cannot register reactions on tuplespaces within the WSN.


 Once you have downloaded the tarball, you must extract the files.  By default, you must extract the tarball within $TOSROOT, which is normally /opt/tinyos-1.x on a Windows/Cygwin platform.  The following commands assume you are installing Agilla in its default location.
mv Agilla*.tar.gz $TOSROOT
cd $TOSROOT
tar zxvf Agilla*.tar.gz 

Once you have extracted the tarball, Agilla's source code will be located in three directories:

  • contrib/wustl/apps/Agilla: Agilla's firmware
  • contrib/wustl/tools/java: Agilla's Agent Injector Application
  • contrib/wustl/apps/AgillaAgents: Example Mobile Agents.

They should be located within your $TOSROOT directory, which is normally /opt/tinyos-1.x.


Previous versions can be downloaded through CVS.


Downloading Pre-Packaged Versions of Agilla

Click here to download a tarball containing Agilla's source code. Once you have downloaded it, you need to extract the source code. By default, the tarball should be extracted to /opt/tinyos-1.x.


Downloading Agilla via CVS

The latest version of Agilla can be downloaded using CVS. It is available through the TinyOS CVS repository located on Sourceforge. Instructions for accessing TinyOS's CVS repository are available here. Checkout module tinyos-1.x/contrib/wustl using the following command:

$ cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login $ cvs -z3 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co \

 -P tinyos-1.x/contrib/wustl

If you are TinyOS developer, you can download it using:

$ export CVS_RSH=ssh $ cvs -z3 -d:ext:developername@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co \

 -P tinyos-1.x/contrib/wustl

See Tutorial 1 for more details on how to install Agilla.

Demo Releases

   * IPSN SPOTS 2005 - NesC, Java

Remote Injection using RMI

RMI is used to remotely inject agents into the sensor network. To do this, you need to install this java policy file in /opt/tinyos-1.x/contrib/wustl/tools/java. See the tutorial on how to remote inject agents via RMI.

Useful Text Editing Tools

For Windows users, I recommend using TextPad to edit NesC and Mobile Agent files. Here are the color-syntax configurations for NesC and Agilla Agent files:

   * NesC
   * Mobile Agent

Install them in <Program Files>\TextPad 4\system. If you are using Linux, I recommend gEdit. Here are the syntax files:

   * NesC
   * Mobile Agent

Install them in /usr/share/gtksourceview-1.0/language-specs/