<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.rifidi.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.rifidi.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kyle</id>
		<title>RifidiWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.rifidi.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kyle"/>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Special:Contributions/Kyle"/>
		<updated>2026-05-22T19:56:26Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Rifidi:Source_Code</id>
		<title>Rifidi:Source Code</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Rifidi:Source_Code"/>
				<updated>2010-09-14T16:32:14Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Check Out Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:developerDoc]]&lt;br /&gt;
This page explains how to download and run the source code for the Rifidi products.  However, please keep in mind that the code in this repository is not guaranteed to be stable. If you are interested in our latest stable release, visit our sourceforge page: http://sourceforge.net/projects/rifidi/.&lt;br /&gt;
=Quick Instructions=&lt;br /&gt;
The following are the basic steps needed to begin running Rifidi from source.  If you have trouble or need more explanation, please see the more detailed instructions on this page.&lt;br /&gt;
# Download the Eclipse for plugin developers (3.5 is what we are using)&lt;br /&gt;
# Install the subclipse plugin&lt;br /&gt;
# Add this svn to the list of repositories: https://svn.rifidi.org/svn/rep-external&lt;br /&gt;
# Check out the following projects from rifidi/trunk: org.rifidi.binary, org.rifidi.emulator.target, org.rifidi.ui.ide&lt;br /&gt;
# Open up the target file in org.rifidi.emulator.target and click the button that says &amp;quot;set as target platform&amp;quot;&lt;br /&gt;
# Open up the .product file in org.rifidi.ui.ide and click &amp;quot;launch an eclipse application&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Weekly Builds=&lt;br /&gt;
Because many of our users are intereted in running the latest version of the Rifidi products but don't want to go to all the trouble of downloading the source code, there is a weekly build of the products.  The weekly builds include the latest features, but is not as tested as the sourceforge releases.  A link will be provided soon.&lt;br /&gt;
=Rifidi Source Code=&lt;br /&gt;
For those who need to see the source code for the Rifidi products, you will have to check out the code from svn.  This section explains how to check out and run the code from source.&lt;br /&gt;
==Organization==&lt;br /&gt;
In general the code for Rifidi is organized into Eclipse plugins or bundles.  Eclipse handles the loading and execution of the plugins.  For more detailed information about how our source code is organized, please see [[Development and Release Process#Concepts]].&lt;br /&gt;
* '''SVN Structure''' - There are three main folders in the Rifidi directory on &amp;lt;code&amp;gt;rep-external&amp;lt;/code&amp;gt; (the main svn repository for Rifidi).  The ''trunk'' folder contains the code that is being developed.  It is ''not'' guaranteed to be stable.  The ''tags'' folder contains tagged versions of the source for each of the plugins.  The source in these plugins should be relatively stable.  The ''branches'' folder contains plugins that have been branched so that larger changes can be made on plugins without holding up other developers.  These changes can then later be merged back in.  For more details about our SVN, see [[Development and Release Process#SVN Structure]]&lt;br /&gt;
* Target Platform - A target platform is the base set of plugins that an Eclipse application needs to run.  In order to provide a more stable environment and to ensure a clean separation between the base plugins that Rifidi needs and the base plugins that your Eclipse IDE needs, we provide a target platform for each of the Rifidi products.  You can find these in the trunk.  They will be named something like &amp;lt;code&amp;gt;org.rifidi.emulator.target&amp;lt;/code&amp;gt;.  For more information see [[Development and Release Process#Target Platforms]].&lt;br /&gt;
* org.rifidi.binary - As the source code for Rifidi gets larger it begins to get harder to maintain a stable set of plugins.  In order to simplify things, there is a folder in the svn into which stable binaries of each of the plugins used in the rifidi project will be placed.  This folder is used in conjunction with the target platform.&lt;br /&gt;
* Product File - In Eclipse, a product file is used to define the needed eclipse plugins.  Running this file will create a new Eclipse 'Run Configuration' in your IDE.  You can then tweak this run configuration as needed.&lt;br /&gt;
* Source Code Plugins - A stable binary version of each of the plugins is contained in the org.rifidi.binary folder.  However, if you wish to view the source of a particular plugin or run a plugin from source, you must download the code from either the version in the trunk or a tagged version in the tags directory.&lt;br /&gt;
&lt;br /&gt;
==Downloading the Code==&lt;br /&gt;
&lt;br /&gt;
Our code is hosted at https://svn.rifidi.org/svn/rep-external.  The svn repository allows anonymous read access.  Because the svn repository is the same one that developers submit to, it contains the latest Rifidi code.&lt;br /&gt;
&lt;br /&gt;
The following steps explain how to check out and run Rifidi Emulator.  The other products in the Rifidi Suite follow similar steps.  If you need help with them, you can ask questions on IRC or our forums.&lt;br /&gt;
&lt;br /&gt;
===Prerequisites===&lt;br /&gt;
&lt;br /&gt;
The Rifidi Emulator is written in java and consists of Eclipse plugins. At this point it is easiest to compile and build it inside of the eclipse environment.  &lt;br /&gt;
&lt;br /&gt;
====Install Eclipse====&lt;br /&gt;
Note that you need the &amp;quot;Eclipse for RCP/Plug-in Developers&amp;quot; version of eclipse.  Rifidi will not run on other versions.&lt;br /&gt;
* If you do not already have eclipse, or if you have a different version, you will need to get this version&lt;br /&gt;
** Go to http://www.eclipse.org/downloads/ and download the &amp;quot;Eclipse for RCP/Plug-in Developers&amp;quot; version of Eclipse to a convenient location.&lt;br /&gt;
** Unzip the package.&lt;br /&gt;
** Double click on the execution file to get it started [[Image:Rifidi_from_source-1-opening_eclipse.png |none|thumb|800px|Double click on the executable to open up eclipse]]&lt;br /&gt;
* If you have not used eclipse before, you will be required to select a workspace when eclipse is opening.&lt;br /&gt;
** After eclipse opens go to the workbench[[Image:Rifidi_from_source-2-wokbench.png |none|thumb|800px|Open up the workbench]]&lt;br /&gt;
* If you have an existing workspace, you will need to create a new one.&lt;br /&gt;
** Go to file -&amp;gt; switch workspace -&amp;gt; other [[Image:Rifidi_from_source-3-switch_workspace.png |none|thumb|800px|Open up the workbench]] &lt;br /&gt;
** Select a new directory for your Rifidi workspace.&lt;br /&gt;
&lt;br /&gt;
====Install Subclipse====&lt;br /&gt;
&lt;br /&gt;
Subclipse is an eclipse plugin that manages svn commands.&lt;br /&gt;
&lt;br /&gt;
* Follow the instructions at http://subclipse.tigris.org/install.html.&lt;br /&gt;
* In step 6 of the above instructions, don't install the Optional Integrations.  Only the subclipse plugin is needed&lt;br /&gt;
&lt;br /&gt;
===Add Repository===&lt;br /&gt;
&lt;br /&gt;
* Open the 'SVN Repository Exploring' perspective&lt;br /&gt;
** Window -&amp;gt; Open Perspective -&amp;gt; Other [[Image:Rifidi_from_source-4-svn_rep_explore1.png |none|thumb|800px|Open up the perspective picker]]&lt;br /&gt;
** SVN Repository Exploring [[Image:Rifidi_from_source-5-svn_rep_explore2.png |none|thumb|400px|Open up the SVN Repository Explorer]]&lt;br /&gt;
* Add the rifidi repository&lt;br /&gt;
** Click 'Add SVN Repository' button&lt;br /&gt;
** Add 'https://svn.rifidi.org/svn/rep-external'[[Image:Rifidi_from_source-6-add_rep.png |none|400px|thumb|Add the repository]]&lt;br /&gt;
&lt;br /&gt;
===Check Out Code===&lt;br /&gt;
&lt;br /&gt;
* Check out all the projects in the rifidi/trunk folder of the repository&lt;br /&gt;
** Highlight the folders you would like to check out. For Emulator you will need&lt;br /&gt;
*** &amp;lt;code&amp;gt;org.rifidi.binary&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;org.rifidi.emulator.taget3.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;org.rifidi.ui.ide&amp;lt;/code&amp;gt;&lt;br /&gt;
** Right click them and select checkout [[Image:Rifidi_from_source-7-checkout1.png |none|800px|thumb|Select the projects]]&lt;br /&gt;
** Select Finish. [[Image:Rifidi_from_source-8-checkout2.png |none|400px|thumb|Checkout projects]]&lt;br /&gt;
&lt;br /&gt;
===Set The Target Platform===&lt;br /&gt;
* Open up the .target file in &amp;lt;code&amp;gt;org.rifidi.emulator.target&amp;lt;/code&amp;gt;&lt;br /&gt;
* Click the button that says &amp;quot;set as target platform&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Running Rifidi==&lt;br /&gt;
&lt;br /&gt;
The last step to get Rifidi running is to create a run configuration.&lt;br /&gt;
&lt;br /&gt;
A run configuration is the set of plugins that will be loaded when you run the application.  Plugins can come from one of two places:&lt;br /&gt;
#Workspace - these are the plugins that you have in the source tree on the left&lt;br /&gt;
#Target Environment - These are the plugins defined by the target environment that you are using that the time.&lt;br /&gt;
&lt;br /&gt;
Because there is a product file for emulator defined in the &amp;lt;code&amp;gt;org.rifidi.ui.ide&amp;lt;/code&amp;gt; plugin, the easiest way to create a new run configuration is by running the product file.  This will automatically create a new run configuration&lt;br /&gt;
&lt;br /&gt;
To Create a new Run Configuration: &lt;br /&gt;
* Switch to the Java perspective in the same way that you switched to the repository exploring view [[Image:Rifidi_from_source-9-java_view.png  |none|400px|thumb|Run Rifidi]]&lt;br /&gt;
* Right click on Rifidi.product in the org.rifidi.ui.ide project&lt;br /&gt;
* Click on &amp;quot;Run as eclipse application&amp;quot; [[Image:Rifidi_from_source-10_run_eclipse.png  |none|thumb|800px|Run Rifidi]]&lt;br /&gt;
* From now on, you can start Rifidi via the green triangle button at the top of eclipse&lt;br /&gt;
&lt;br /&gt;
If there was an error when starting the application, follow the step below to edit the run configuration:&lt;br /&gt;
&lt;br /&gt;
To Edit a Run Configuration:&lt;br /&gt;
* Run -&amp;gt; Open Run Dialog -&amp;gt; Eclipse Application -&amp;gt; Rifidi.product.  This is the run configuration.&lt;br /&gt;
* Go to the Tab Plug-ins.  The selected plugins are the ones that will be run.  Notice that there are two sections: &amp;quot;workspace&amp;quot; and &amp;quot;target platform&amp;quot;&lt;br /&gt;
* click the Button &amp;quot;Add Required Plug-ins&amp;quot; [[Image:Rifidi_from_source-11_add_plugins.png  |none|thumb|600px|Add required plugins]]&lt;br /&gt;
* check any plugins specifically required for the application to run (for example, the emulator requires the readers to be included).  Make sure that the plugin is coming from the place that you intended (i.e. workspace or target platform).&lt;br /&gt;
* click the Button &amp;quot;Validate Plug-ins&amp;quot; to make sure everything is set up correctly&lt;br /&gt;
* click the Button &amp;quot;Apply&amp;quot;&lt;br /&gt;
* click the Button &amp;quot;Run&amp;quot; and start the Project&lt;br /&gt;
&lt;br /&gt;
==Updating the code==&lt;br /&gt;
&lt;br /&gt;
Now that you have downloaded the code into an eclipse workspace, it is easy to get changes to the code as soon as we add them to the svn.  &lt;br /&gt;
&lt;br /&gt;
To update the code:&lt;br /&gt;
&lt;br /&gt;
* Open up the Team Synchronizing Perspective in eclipse&lt;br /&gt;
* Click the button that says &amp;quot;Synchronize&amp;quot;.&lt;br /&gt;
* Select all projects.&lt;br /&gt;
* Install any updates by selecting all the updates show, right clicking and choosing 'update'&lt;br /&gt;
&lt;br /&gt;
Now that you have the new code, just hit the green run button on the toolbar at the top (Eclipse automatically compiles the code for you, so you don't have to worry about that).&lt;br /&gt;
&lt;br /&gt;
==Switching Branches==&lt;br /&gt;
If you need to run code from another branch or tag, please see [[Switching Branches]].&lt;br /&gt;
&lt;br /&gt;
==Viewing Source and Running From Trunk==&lt;br /&gt;
By default all of the rifidi plugins you are running in eclipse are pre-compiled, binary plugins contained in the &amp;lt;code&amp;gt;org.rifidi.binary&amp;lt;/code&amp;gt; folder.  If you want to view or edit the source for a particular plugin, you will need to check out the plugin from the trunk.  Once it is checked out make sure to edit your run configuration so that the application will use the plugin from the workspace and not from the target platform. &lt;br /&gt;
&lt;br /&gt;
For example, suppose I want to view the source for the Alien reader plugin.  I need to follow the steps above to check out and run rifidi emulator.  In addition, I need to check out the &amp;lt;code&amp;gt;org.rifidi.emulator.readers.alien&amp;lt;/code&amp;gt; plugin.  This is the code for the alien reader.  In addition, I need to edit the run configuration to make sure that my workspace alien reader plugin is being used instead of the target platform alien reader plugin.&lt;br /&gt;
&lt;br /&gt;
=Reporting Bugs=&lt;br /&gt;
&lt;br /&gt;
To report bugs, please use the forum at&lt;br /&gt;
&lt;br /&gt;
 http://forums.rifidi.org&lt;br /&gt;
&lt;br /&gt;
or drop by our IRC channel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#rifidi on irc.freenode.org.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also visit us online at http://www.rifidi.org&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-09-07T20:53:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Remove this tr tag to remove the announcement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing Rifidi Edge Server 1.2!!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Version 1.2 offers many new features, including first class support for developing Rifidi applications. See [[Version 1.2]] for details&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://rifidi.org/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-09-07T20:52:43Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Remove this tr tag to remove the announcement --!&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing Rifidi Edge Server 1.2!!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Version 1.2 offers many new features, including first class support for developing Rifidi applications. See [[Version 1.2]] for details&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://rifidi.org/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-09-07T20:51:52Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing Rifidi Edge Server 1.2!!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Version 1.2 offers many new features, including first class support for developing Rifidi applications. See [[Version 1.2]] for details&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://rifidi.org/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Developer%27s_Guide</id>
		<title>Developer's Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Developer%27s_Guide"/>
				<updated>2010-09-07T20:51:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: Developer's Giude moved to Developer's Guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://rifidi.org/guides/Rifidi_Edge_Server_Developer_1.2.pdf Developer's Guide for 1.2.0]&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Developer%27s_Giude</id>
		<title>Developer's Giude</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Developer%27s_Giude"/>
				<updated>2010-09-07T20:51:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: Developer's Giude moved to Developer's Guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Developer's Guide]]&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Version_1.2</id>
		<title>Version 1.2</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Version_1.2"/>
				<updated>2010-09-07T20:48:47Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What's new in version 1.2=&lt;br /&gt;
&lt;br /&gt;
==Functionality==&lt;br /&gt;
* First class support for Rifidi Applications. In 1.1 applications were no more than OSGi bundles which hooked into Esper. In 1.2, can make use of the new Application API which provides many services which make it easier to make powerful RFID applications. For more information see the Developer’s guide included in the SDK release.&lt;br /&gt;
* ActiveMQ configuration is now more flexible. The configuration is provided via an xml file and the previously used system properties have been removed.&lt;br /&gt;
* Improved LLRP flexibility. LLRP configuration can now be done via XML files rather than commands.&lt;br /&gt;
* Serial barcode reader support&lt;br /&gt;
* Generic reader adapter for allowing connection to readers which specific reader adapters are not provided for.&lt;br /&gt;
* Diagnostic commands for determining if the Edge Server is connected to readers and processing tags.&lt;br /&gt;
&lt;br /&gt;
===Example of Rifidi Applications===&lt;br /&gt;
One of the great improvements with 1.2 is the 'Rifidi Application'. Rifidi Applications make it much easier to create RFID applications that run on top of the Rifidi Edge Server. The following is a simple example that prints a line when a tag arrives and when it departs. There are more examples inside the SDK release, including a completely re-worked Northwind example!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package test;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.TimeUnit;&lt;br /&gt;
&lt;br /&gt;
import org.rifidi.edge.core.app.api.AbstractRifidiApp;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZone;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZoneMonitoringService;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZoneSubscriber;&lt;br /&gt;
import org.rifidi.edge.core.services.notification.data.TagReadEvent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A simple app to monitor a read zone&lt;br /&gt;
 * @author Kyle Neumeier&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class MyApp extends AbstractRifidiApp implements ReadZoneSubscriber{&lt;br /&gt;
&lt;br /&gt;
	/**A service to monitor a read zone*/&lt;br /&gt;
	private ReadZoneMonitoringService readzoneService;&lt;br /&gt;
	&lt;br /&gt;
	public MyApp(String group, String name) {&lt;br /&gt;
		super(group, name);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void _start() {&lt;br /&gt;
		ReadZone zone = getReadZones().get(&amp;quot;dockdoor&amp;quot;);&lt;br /&gt;
		readzoneService.subscribe(this, zone, 10f, TimeUnit.SECONDS);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void _stop() {&lt;br /&gt;
		readzoneService.unsubscribe(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void initialize() {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void tagArrived(TagReadEvent tag) {&lt;br /&gt;
		System.out.println(&amp;quot;TAG ARRIVED!: &amp;quot; + tag);		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void tagDeparted(TagReadEvent tag) {&lt;br /&gt;
		System.out.println(&amp;quot;TAG DEPARTED!: &amp;quot; + tag);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param readzoneService the readzoneService to set&lt;br /&gt;
	 */&lt;br /&gt;
	public void setReadzoneService(ReadZoneMonitoringService readzoneService) {&lt;br /&gt;
		this.readzoneService = readzoneService;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Properties==&lt;br /&gt;
We've added a couple new properties that can be added to the system properties when you run the edge server&lt;br /&gt;
* org.rifidi.ui.notify. If set to true, tags will be delivered to Workbench over a JMS topic. If set to false, the tags will not be put onto JMS. Not sending tags improves performance. It is set to true by default.&lt;br /&gt;
* org.rifidi.home This set set to the home directory (where the 'applications' folder and the 'config' directory reside). It is useful to change this when you are developing applications in eclipse to the SDK directory so that your configuration files can be stored within eclipse. It is set to 'user.dir' by default.&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
We have added several new OSGi commands to help diagnose common problems with your applications. For example:&lt;br /&gt;
* &amp;lt;tt&amp;gt;tagrate&amp;lt;/tt&amp;gt; prints out how many tags per second the edge server is currently reading&lt;br /&gt;
* &amp;lt;tt&amp;gt;currenttags [readerID]&amp;lt;/tt&amp;gt; prints out a list of tags that can be currently seen by the given reader&lt;br /&gt;
&lt;br /&gt;
For a full list of commands, see the [[User's Guide]]&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
We now provide a [[User's Guide]] that describes many aspects of running, configuring, and administrating the Rifidi Edge Server.&lt;br /&gt;
&lt;br /&gt;
In addition, we provide a [[Developer's Guide]] that explains how to write Rifidi Applications using our new API.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Version_1.2</id>
		<title>Version 1.2</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Version_1.2"/>
				<updated>2010-09-07T20:47:12Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What's new in version 1.2=&lt;br /&gt;
&lt;br /&gt;
==Functionality==&lt;br /&gt;
* First class support for Rifidi Applications. In 1.1 applications were no more than OSGi bundles which hooked into Esper. In 1.2, can make use of the new Application API which provides many services which make it easier to make powerful RFID applications. For more information see the Developer’s guide included in the SDK release.&lt;br /&gt;
* ActiveMQ configuration is now more flexible. The configuration is provided via an xml file and the previously used system properties have been removed.&lt;br /&gt;
* Improved LLRP flexibility. LLRP configuration can now be done via XML files rather than commands.&lt;br /&gt;
* Serial barcode reader support&lt;br /&gt;
* Generic reader adapter for allowing connection to readers which specific reader adapters are not provided for.&lt;br /&gt;
* Diagnostic commands for determining if the Edge Server is connected to readers and processing tags.&lt;br /&gt;
&lt;br /&gt;
===Example of Rifidi Applications===&lt;br /&gt;
One of the great improvements with 1.2 is the 'Rifidi Application'. Rifidi Applications make it much easier to create RFID applications that run on top of the Rifidi Edge Server. The following is a simple example that prints a line when a tag arrives and when it departs. There are more examples inside the SDK release, including a completely re-worked Northwind example!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package test;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.TimeUnit;&lt;br /&gt;
&lt;br /&gt;
import org.rifidi.edge.core.app.api.AbstractRifidiApp;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZone;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZoneMonitoringService;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZoneSubscriber;&lt;br /&gt;
import org.rifidi.edge.core.services.notification.data.TagReadEvent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A simple app to monitor a read zone&lt;br /&gt;
 * @author Kyle Neumeier&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class MyApp extends AbstractRifidiApp implements ReadZoneSubscriber{&lt;br /&gt;
&lt;br /&gt;
	/**A service to monitor a read zone*/&lt;br /&gt;
	private ReadZoneMonitoringService readzoneService;&lt;br /&gt;
	&lt;br /&gt;
	public MyApp(String group, String name) {&lt;br /&gt;
		super(group, name);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void _start() {&lt;br /&gt;
		ReadZone zone = getReadZones().get(&amp;quot;dockdoor&amp;quot;);&lt;br /&gt;
		readzoneService.subscribe(this, zone, 10f, TimeUnit.SECONDS);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void _stop() {&lt;br /&gt;
		readzoneService.unsubscribe(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void initialize() {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void tagArrived(TagReadEvent tag) {&lt;br /&gt;
		System.out.println(&amp;quot;TAG ARRIVED!: &amp;quot; + tag);		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void tagDeparted(TagReadEvent tag) {&lt;br /&gt;
		System.out.println(&amp;quot;TAG DEPARTED!: &amp;quot; + tag);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param readzoneService the readzoneService to set&lt;br /&gt;
	 */&lt;br /&gt;
	public void setReadzoneService(ReadZoneMonitoringService readzoneService) {&lt;br /&gt;
		this.readzoneService = readzoneService;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Properties==&lt;br /&gt;
We've added a couple new properties that can be added to the system properties when you run the edge server&lt;br /&gt;
* org.rifidi.ui.notify. If set to true, tags will be delivered to Workbench over a JMS topic. If set to false, the tags will not be put onto JMS. Not sending tags improves performance. It is set to true by default.&lt;br /&gt;
* org.rifidi.home This set set to the home directory (where the 'applications' folder and the 'config' directory reside). It is useful to change this when you are developing applications in eclipse to the SDK directory so that your configuration files can be stored within eclipse. It is set to 'user.dir' by default.&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
We have added several new OSGi commands to help diagnose common problems with your applications. For example:&lt;br /&gt;
* &amp;lt;tt&amp;gt;tagrate&amp;lt;/tt&amp;gt; prints out how many tags per second the edge server is currently reading&lt;br /&gt;
* &amp;lt;tt&amp;gt;currenttags [readerID]&amp;lt;/tt&amp;gt; prints out a list of tags that can be currently seen by the given reader&lt;br /&gt;
&lt;br /&gt;
For a full list of commands, see the [[User's Guide]]&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Version_1.2</id>
		<title>Version 1.2</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Version_1.2"/>
				<updated>2010-09-07T20:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: New page: =What's new in version 1.2=  ==Functionality== * First class support for Rifidi Applications. In 1.1 applications were no more than OSGi bundles which hooked into Esper. In 1.2, can make u...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What's new in version 1.2=&lt;br /&gt;
&lt;br /&gt;
==Functionality==&lt;br /&gt;
* First class support for Rifidi Applications. In 1.1 applications were no more than OSGi bundles which hooked into Esper. In 1.2, can make use of the new Application API which provides many services which make it easier to make powerful RFID applications. For more information see the Developer’s guide included in the SDK release.&lt;br /&gt;
* ActiveMQ configuration is now more flexible. The configuration is provided via an xml file and the previously used system properties have been removed.&lt;br /&gt;
* Improved LLRP flexibility. LLRP configuration can now be done via XML files rather than commands.&lt;br /&gt;
* Serial barcode reader support&lt;br /&gt;
* Generic reader adapter for allowing connection to readers which specific reader adapters are not provided for.&lt;br /&gt;
* Diagnostic commands for determining if the Edge Server is connected to readers and processing tags.&lt;br /&gt;
&lt;br /&gt;
===Example of Rifidi Applications===&lt;br /&gt;
One of the great improvements with 1.2 is the 'Rifidi Application'. Rifidi Applications make it much easier to create RFID applications that run on top of the Rifidi Edge Server. The following is a simple example that prints a line when a tag arrives and when it departs. There are more examples inside the SDK release, including a completely re-worked Northwind example!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package test;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.TimeUnit;&lt;br /&gt;
&lt;br /&gt;
import org.rifidi.edge.core.app.api.AbstractRifidiApp;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZone;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZoneMonitoringService;&lt;br /&gt;
import org.rifidi.edge.core.app.api.service.tagmonitor.ReadZoneSubscriber;&lt;br /&gt;
import org.rifidi.edge.core.services.notification.data.TagReadEvent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A simple app to monitor a read zone&lt;br /&gt;
 * @author Kyle Neumeier&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class MyApp extends AbstractRifidiApp implements ReadZoneSubscriber{&lt;br /&gt;
&lt;br /&gt;
	/**A service to monitor a read zone*/&lt;br /&gt;
	private ReadZoneMonitoringService readzoneService;&lt;br /&gt;
	&lt;br /&gt;
	public MyApp(String group, String name) {&lt;br /&gt;
		super(group, name);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void _start() {&lt;br /&gt;
		ReadZone zone = getReadZones().get(&amp;quot;dockdoor&amp;quot;);&lt;br /&gt;
		readzoneService.subscribe(this, zone, 10f, TimeUnit.SECONDS);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void _stop() {&lt;br /&gt;
		readzoneService.unsubscribe(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void initialize() {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void tagArrived(TagReadEvent tag) {&lt;br /&gt;
		System.out.println(&amp;quot;TAG ARRIVED!: &amp;quot; + tag);		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void tagDeparted(TagReadEvent tag) {&lt;br /&gt;
		System.out.println(&amp;quot;TAG DEPARTED!: &amp;quot; + tag);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param readzoneService the readzoneService to set&lt;br /&gt;
	 */&lt;br /&gt;
	public void setReadzoneService(ReadZoneMonitoringService readzoneService) {&lt;br /&gt;
		this.readzoneService = readzoneService;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Properties==&lt;br /&gt;
We've added a couple new properties that can be added to the system properties when you run the edge server&lt;br /&gt;
* org.rifidi.ui.notify. If set to true, tags will be delivered to Workbench over a JMS topic. If set to false, the tags will not be put onto JMS. Not sending tags improves performance. It is set to true by default.&lt;br /&gt;
* org.rifidi.home This set set to the home directory (where the 'applications' folder and the 'config' directory reside). It is useful to change this when you are developing applications in eclipse to the SDK directory so that your configuration files can be stored within eclipse. It is set to 'user.dir' by default.&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-09-07T20:20:55Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing Rifidi Edge Server 1.2!!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Version 1.2 offers many new features, including first class support for developing Rifidi applications. See [[Version 1.2]] for details&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Giude | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://rifidi.org/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Developer%27s_Guide</id>
		<title>Developer's Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Developer%27s_Guide"/>
				<updated>2010-09-07T19:50:49Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: New page: *[http://rifidi.org/guides/Rifidi_Edge_Server_Developer_1.2.pdf Developer's Guide for 1.2.0]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://rifidi.org/guides/Rifidi_Edge_Server_Developer_1.2.pdf Developer's Guide for 1.2.0]&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/User%27s_Guide</id>
		<title>User's Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/User%27s_Guide"/>
				<updated>2010-09-07T19:50:13Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: New page: *[http://rifidi.org/guides/Rifidi_Edge_Server_User_1.2.pdf User's Guide for 1.2.0]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://rifidi.org/guides/Rifidi_Edge_Server_User_1.2.pdf User's Guide for 1.2.0]&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-09-07T19:46:21Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Giude | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://rifidi.org/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_Configuration</id>
		<title>Edge Server Configuration</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_Configuration"/>
				<updated>2010-09-02T19:50:52Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* VMArgs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains the various configuration options of the Rifidi Edge Server&lt;br /&gt;
=RifidiEdgeServer.ini=&lt;br /&gt;
The RifidiEdgeServer.ini is a property file that contains options for various options when the edge server starts up.  &lt;br /&gt;
==rifidiserver.ini file==&lt;br /&gt;
As of release 1.2.0, the default rifidiserver.ini file looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-os&lt;br /&gt;
${target.os}&lt;br /&gt;
-ws&lt;br /&gt;
${target.ws}&lt;br /&gt;
-arch&lt;br /&gt;
${target.arch}&lt;br /&gt;
-nl&lt;br /&gt;
${target.nl}&lt;br /&gt;
-vmargs&lt;br /&gt;
-Declipse.ignoreApp=true&lt;br /&gt;
-Dosgi.console&lt;br /&gt;
-Dosgi.noShutdown=true&lt;br /&gt;
-Dorg.rifidi.edge.configuration=config/rifidi.xml&lt;br /&gt;
-Dosgi.clean=true&lt;br /&gt;
-Dorg.osgi.framework.bootdelegation=javax.xml.ws&lt;br /&gt;
-Dcom.sun.management.jmxremote.port=2021&lt;br /&gt;
-Dcom.sun.management.jmxremote.authenticate=false&lt;br /&gt;
-Dcom.sun.management.jmxremote.ssl=false&lt;br /&gt;
-Djava.rmi.server.hostname=127.0.0.1&lt;br /&gt;
-Dorg.rifidi.edge.core.rmi.port=1101&lt;br /&gt;
-Dorg.rifidi.edge.ale.port=8081&lt;br /&gt;
-Dorg.rifidi.edge.ale.host=127.0.0.1&lt;br /&gt;
-Dosgi.framework.extensions=org.eclipse.equinox.weaving.hook&lt;br /&gt;
-Dorg.aspectj.osgi.verbose=true&lt;br /&gt;
-Dorg.rifidi.edge.autostart=true&lt;br /&gt;
-Dorg.rifidi.edge.logging=config/logging.properties&lt;br /&gt;
-Dorg.rifidi.ui.notify=true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Console==&lt;br /&gt;
;-console&lt;br /&gt;
:This starts up the OSGi console so that you can interact with the edge server from the command line.  For a list of commands that are available see [[Edge Server Commands]].  If you would like the console to be available over the network, supply a port after the -console (e.g. -console 2020). Now it is possible to telnet into the server at the given port.  It is recommended that you use ssh tunneling for security reasons (i.e. first ssh to the machine that is running the edge server, then telnet to the console). One thing to note is that after you telnet to the OSGi console, you cannot use the &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt; command as you normally would to close the telnet session.  This is because &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt; will be caught by the OSGi console and will perform a System.exit().  Instead, to exit the telnet session while keeping the server running, just close the telnet window.&lt;br /&gt;
==VMArgs==&lt;br /&gt;
VMArgs must follow the &amp;lt;tt&amp;gt;-vmargs&amp;lt;/tt&amp;gt; flag in the .ini file.  They must start with &amp;lt;tt&amp;gt;-D&amp;lt;/tt&amp;gt;.  Default values can be found in the &amp;lt;tt&amp;gt;bundle.properties&amp;lt;/tt&amp;gt; file in the spring directory for the appropriate option. Important VM args:&lt;br /&gt;
;-Dorg.rifidi.edge.configuration&lt;br /&gt;
:This is the path to the persistence file. See [[#rifidi.xml]].&lt;br /&gt;
;-Dcom.sun.management.jmxremote.port&lt;br /&gt;
:The port to open up JMX on.  This is important if you are using a program like VisualVM to profile the server&lt;br /&gt;
;-Djava.rmi.server.hostname&lt;br /&gt;
:The hostname to open up the RMI registry at.  Default is &amp;lt;tt&amp;gt;127.0.0.1&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.core.rmi.port&lt;br /&gt;
:The port of the RMI registry Default is &amp;lt;tt&amp;gt;1101&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.ale.host&lt;br /&gt;
:The hostname to publish the ALE webservices at.  Default is &amp;lt;tt&amp;gt;127.0.0.1&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.ale.port&lt;br /&gt;
:The port to publish the ALE webservices at.  Default is &amp;lt;tt&amp;gt;8081&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.ale.read&lt;br /&gt;
:The service name of the ALE reading service.  Default is &amp;lt;tt&amp;gt;ALEService&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.ale.logicalreader&lt;br /&gt;
:The service name of the ALE logical reader service. Default is &amp;lt;tt&amp;gt;ALELRService&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.home&lt;br /&gt;
:The Rifidi directory. If not set, it defaults to ${user.dir}&lt;br /&gt;
;-Dorg.rifidi.ui.notify&lt;br /&gt;
:If set to true, reader adapters will send tag notifications to workbench. Default is true&lt;br /&gt;
&lt;br /&gt;
=rifidi.xml=&lt;br /&gt;
The rifidi.xml file is the persistence file for the Rifidi Edge Server.  The two important services that are saved are Reader Configurations and Command Configurations.&lt;br /&gt;
&lt;br /&gt;
==Loading a configuration file==&lt;br /&gt;
Whenever the edge server starts up, it looks for the file that is specified in the &amp;lt;tt&amp;gt;org.rifidi.configuration&amp;lt;/tt&amp;gt; vm flag. After the configuration file is read, the server will attempt to recreate all services specified in the file.  If a needed factory is not available, the service will be skipped and recreated when the factory becomes available.  For example, suppose the configuration file has an Alien Reader Configuration and an LLRP Reader Configuration.  Suppose that when  the server starts up, only the Alien plugin is available (so the Alien Reader Factory is available, but the LLRP Reader Factory is not).  At this point the Alien Reader is recreated.  If later the LLRP plugin is installed, then the LLRP reader will be recreated.&lt;br /&gt;
&lt;br /&gt;
==File Structure==&lt;br /&gt;
The edge server uses JAXB to persist a configuration file.  Each service will have a serviceID and a factoryID.  The serviceID is the unique name of the service, and is used when using the service (such as starting a session on a reader).  The factoryID is the ID of the factory that can create a service.   The following is an example of file that has one Alien Reader saved.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;configurationStore&amp;gt;&lt;br /&gt;
    &amp;lt;services&amp;gt;&lt;br /&gt;
        &amp;lt;attributes&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;20000&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;InvertExternalOutput&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;PersistTime&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;-1&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;Username&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;alien&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;Password&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;password&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;InvertExternalInput&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;ReaderNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;ExternalOutput&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;127.0.0.1&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;RFAttenuation&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
        &amp;lt;/attributes&amp;gt;&lt;br /&gt;
        &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
        &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
    &amp;lt;/services&amp;gt;&lt;br /&gt;
&amp;lt;/configurationStore&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_Configuration</id>
		<title>Edge Server Configuration</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_Configuration"/>
				<updated>2010-09-02T19:48:59Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Default .ini file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains the various configuration options of the Rifidi Edge Server&lt;br /&gt;
=RifidiEdgeServer.ini=&lt;br /&gt;
The RifidiEdgeServer.ini is a property file that contains options for various options when the edge server starts up.  &lt;br /&gt;
==rifidiserver.ini file==&lt;br /&gt;
As of release 1.2.0, the default rifidiserver.ini file looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-os&lt;br /&gt;
${target.os}&lt;br /&gt;
-ws&lt;br /&gt;
${target.ws}&lt;br /&gt;
-arch&lt;br /&gt;
${target.arch}&lt;br /&gt;
-nl&lt;br /&gt;
${target.nl}&lt;br /&gt;
-vmargs&lt;br /&gt;
-Declipse.ignoreApp=true&lt;br /&gt;
-Dosgi.console&lt;br /&gt;
-Dosgi.noShutdown=true&lt;br /&gt;
-Dorg.rifidi.edge.configuration=config/rifidi.xml&lt;br /&gt;
-Dosgi.clean=true&lt;br /&gt;
-Dorg.osgi.framework.bootdelegation=javax.xml.ws&lt;br /&gt;
-Dcom.sun.management.jmxremote.port=2021&lt;br /&gt;
-Dcom.sun.management.jmxremote.authenticate=false&lt;br /&gt;
-Dcom.sun.management.jmxremote.ssl=false&lt;br /&gt;
-Djava.rmi.server.hostname=127.0.0.1&lt;br /&gt;
-Dorg.rifidi.edge.core.rmi.port=1101&lt;br /&gt;
-Dorg.rifidi.edge.ale.port=8081&lt;br /&gt;
-Dorg.rifidi.edge.ale.host=127.0.0.1&lt;br /&gt;
-Dosgi.framework.extensions=org.eclipse.equinox.weaving.hook&lt;br /&gt;
-Dorg.aspectj.osgi.verbose=true&lt;br /&gt;
-Dorg.rifidi.edge.autostart=true&lt;br /&gt;
-Dorg.rifidi.edge.logging=config/logging.properties&lt;br /&gt;
-Dorg.rifidi.ui.notify=true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Console==&lt;br /&gt;
;-console&lt;br /&gt;
:This starts up the OSGi console so that you can interact with the edge server from the command line.  For a list of commands that are available see [[Edge Server Commands]].  If you would like the console to be available over the network, supply a port after the -console (e.g. -console 2020). Now it is possible to telnet into the server at the given port.  It is recommended that you use ssh tunneling for security reasons (i.e. first ssh to the machine that is running the edge server, then telnet to the console). One thing to note is that after you telnet to the OSGi console, you cannot use the &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt; command as you normally would to close the telnet session.  This is because &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt; will be caught by the OSGi console and will perform a System.exit().  Instead, to exit the telnet session while keeping the server running, just close the telnet window.&lt;br /&gt;
==VMArgs==&lt;br /&gt;
VMArgs must follow the &amp;lt;tt&amp;gt;-vmargs&amp;lt;/tt&amp;gt; flag in the .ini file.  They must start with &amp;lt;tt&amp;gt;-D&amp;lt;/tt&amp;gt;.  Default values can be found in the &amp;lt;tt&amp;gt;bundle.properties&amp;lt;/tt&amp;gt; file in the spring directory for the appropriate option. Important VM args:&lt;br /&gt;
;-Dorg.rifidi.edge.configuration&lt;br /&gt;
:This is the path to the persistence file. See [[#rifidi.xml]].&lt;br /&gt;
;-Dcom.sun.management.jmxremote.port&lt;br /&gt;
:The port to open up JMX on.  This is important if you are using a program like VisualVM to profile the server&lt;br /&gt;
;-Djava.rmi.server.hostname&lt;br /&gt;
:The hostname to open up the RMI registry at.  Default is &amp;lt;tt&amp;gt;127.0.0.1&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.core.rmi.port&lt;br /&gt;
:The port of the RMI registry Default is &amp;lt;tt&amp;gt;1101&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.ale.host&lt;br /&gt;
:The hostname to publish the ALE webservices at.  Default is &amp;lt;tt&amp;gt;127.0.0.1&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.ale.port&lt;br /&gt;
:The port to publish the ALE webservices at.  Default is &amp;lt;tt&amp;gt;8081&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.ale.read&lt;br /&gt;
:The service name of the ALE reading service.  Default is &amp;lt;tt&amp;gt;ALEService&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.ale.logicalreader&lt;br /&gt;
:The service name of the ALE logical reader service. Default is &amp;lt;tt&amp;gt;ALELRService&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.jms.hostname&lt;br /&gt;
:The hostname to use for JMS.  Default is &amp;lt;tt&amp;gt;127.0.0.1&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.jms.port&lt;br /&gt;
:The port to use for JMS.  Default is &amp;lt;tt&amp;gt;1100&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.jms.topic.tags&lt;br /&gt;
:The topic name that JMS will publish all tag read events at.  Default is &amp;lt;tt&amp;gt;org.rifidi.edge.external.tags&amp;lt;/tt&amp;gt;&lt;br /&gt;
;-Dorg.rifidi.edge.jms.topic.notifications&lt;br /&gt;
:The topic name that JMS will publish all notification events (such as when a reader is added or a session is started).  Default is &amp;lt;tt&amp;gt;org.rifidi.edge.external.notifications&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=rifidi.xml=&lt;br /&gt;
The rifidi.xml file is the persistence file for the Rifidi Edge Server.  The two important services that are saved are Reader Configurations and Command Configurations.&lt;br /&gt;
&lt;br /&gt;
==Loading a configuration file==&lt;br /&gt;
Whenever the edge server starts up, it looks for the file that is specified in the &amp;lt;tt&amp;gt;org.rifidi.configuration&amp;lt;/tt&amp;gt; vm flag. After the configuration file is read, the server will attempt to recreate all services specified in the file.  If a needed factory is not available, the service will be skipped and recreated when the factory becomes available.  For example, suppose the configuration file has an Alien Reader Configuration and an LLRP Reader Configuration.  Suppose that when  the server starts up, only the Alien plugin is available (so the Alien Reader Factory is available, but the LLRP Reader Factory is not).  At this point the Alien Reader is recreated.  If later the LLRP plugin is installed, then the LLRP reader will be recreated.&lt;br /&gt;
&lt;br /&gt;
==File Structure==&lt;br /&gt;
The edge server uses JAXB to persist a configuration file.  Each service will have a serviceID and a factoryID.  The serviceID is the unique name of the service, and is used when using the service (such as starting a session on a reader).  The factoryID is the ID of the factory that can create a service.   The following is an example of file that has one Alien Reader saved.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;configurationStore&amp;gt;&lt;br /&gt;
    &amp;lt;services&amp;gt;&lt;br /&gt;
        &amp;lt;attributes&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;20000&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;InvertExternalOutput&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;PersistTime&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;-1&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;Username&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;alien&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;Password&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;password&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;InvertExternalInput&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;ReaderNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;ExternalOutput&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;127.0.0.1&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&lt;br /&gt;
                &amp;lt;key&amp;gt;RFAttenuation&amp;lt;/key&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/entry&amp;gt;&lt;br /&gt;
        &amp;lt;/attributes&amp;gt;&lt;br /&gt;
        &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
        &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
    &amp;lt;/services&amp;gt;&lt;br /&gt;
&amp;lt;/configurationStore&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_Getting_Started</id>
		<title>Edge Server Getting Started</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_Getting_Started"/>
				<updated>2010-09-02T19:45:11Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Develop Your Own Application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thank you for your interest in the Rifidi Edge Server -- an open source platform for developing and deploying RFID applications. Here's how to get started:&lt;br /&gt;
&lt;br /&gt;
==Run it==&lt;br /&gt;
# '''Download''' the [http://sourceforge.net/projects/rifidi/ Edge Server] from our sourceforge page. The download comes bundled with two programs: the '''Edge Server''' which does the core work of connecting to sensors (such as RFID readers), collecting tag information, and making that data available. It ships with adapters for Alien, LLRP, Awid, and several other types of RFID readers. It also ships with ALE support. The second program is '''Workbench''' which is a user interface that allows you to control the edge server and view tag information that it is collecting, as well as experiment with ALE.&lt;br /&gt;
# '''Download''' [http://sourceforge.net/projects/rifidi/files/ Rifidi Emulator]. This program allows you to virtualize several popular types of RFID readers on your desktop. &lt;br /&gt;
# '''Follow''' the [[Workbench User's Guide|quick start guide]] to start getting tag reads back from virtual readers.&lt;br /&gt;
&lt;br /&gt;
==Develop Your Own Application==&lt;br /&gt;
The edge server by itself allows you to connect to sensors and collect tag data from them, but if you really want to put it to work, you will need to develop your own applications that run on the edge server.&lt;br /&gt;
# '''Download''' our SDK (Standard Development Kit). This provides our API, sourcecode and examples to help you get started. You can find out how to set up a development environment here: [[Edge Server Development Environment]].&lt;br /&gt;
# '''Develop''' an application. There are several example applications which ship with the Rifidi Edge Server. You can read about them in detail in the developer guide that is included in the release&lt;br /&gt;
# [[How_to_export_your_custom_Rifidi_application|'''Export''']] your application&lt;br /&gt;
# '''Deploy''' the application you've built. Once you've built and tested your application, you can deploy it onto the edge server that you've downloaded.&lt;br /&gt;
&lt;br /&gt;
==Contribute Back==&lt;br /&gt;
The Rifidi Edge Server is open source. This means that if you find bugs or have ideas for useful features, you have the ability to extend the edge server yourself! We will gladly welcome contributions of any sort (code, documentation, testing, etc) and encourage you to submit these back. To get involved with the community:&lt;br /&gt;
# '''Visit''' our [http://forums.rifidi.org forums]. This is the best place to talk to our developers and users of Rifidi.&lt;br /&gt;
# '''Submit''' feature requests and bug reports. We have a [https://trac.rifidi.org bug tracking system] that manages outstanding feature requests and bugs. Before you submit bug reports here, we ask that you visit us on the forums first and make sure that there isn't a known solution for your question already&lt;br /&gt;
# '''Contribute''' to our wiki. We gladly welcome any documentation in the form of HOWTOs, example code, tutorials, or any other form that you find helpful.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Sensor_Plugin_API</id>
		<title>Sensor Plugin API</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Sensor_Plugin_API"/>
				<updated>2010-09-02T19:43:43Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An in-depth discussion of the Sensor API Architecture can be found in the developer documentation included with the SDK release 1.2.0 and above. You can also see the [[How to create a sensor plugin]] to learn about the Sensor API.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Rifidi_Edge_Server_Application_Tutorials</id>
		<title>Rifidi Edge Server Application Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Rifidi_Edge_Server_Application_Tutorials"/>
				<updated>2010-09-02T19:42:42Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With release 1.2.0 of the Rifidi Edge Server, a developer API is provided to make writing Rifidi Applications much easier. The best place to find out how to write applications is the developer document that is released as part of the SDK release.  There are several example applications included with the SDK and the developer documentation describes them in detail.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_API</id>
		<title>Edge Server API</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_API"/>
				<updated>2010-09-02T19:39:48Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://rifidi.org/javadoc/edge1.0.0/ 1.0.0 JavaDoc]&lt;br /&gt;
*[http://rifidi.org/javadoc/edge1.2.0/ 1.2.0 JavaDoc]&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_API</id>
		<title>Edge Server API</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_API"/>
				<updated>2010-06-04T17:51:16Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://rifidi.org/javadoc/edge1.0.0/ 1.0.0 JavaDoc]&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_Development_Environment</id>
		<title>Edge Server Development Environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_Development_Environment"/>
				<updated>2010-05-07T01:49:41Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Configuring eclipse environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document details the steps necessary to set up a development environment in order to either develop a custom Rifidi Edge Server application, or modify an existing Edge Server bundle.&lt;br /&gt;
=Configuring eclipse environment=&lt;br /&gt;
# [http://java.sun.com/javase/downloads/index.jsp Download] and install the latest version of the Java SE Development Kit (JDK) for your OS.&lt;br /&gt;
# [http://sourceforge.net/projects/rifidi/files/ Download] the latest version of the Rifidi Edge Server SDK.&lt;br /&gt;
# [http://www.eclipse.org/downloads/  Download] the Galileo release of Eclipse for RCP/Plugin developers.&lt;br /&gt;
# Run eclipse and create a new workspace.&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot1.png]]&lt;br /&gt;
# Unzip the Rifidi Edge Server SDK into the newly created workspace directory on your file system.&lt;br /&gt;
# In eclipse go to File-&amp;gt;Import.  Choose &amp;quot;Existing Projects into Workspace&amp;quot;.  Now select the SDK folder (which must reside in workspace directory).&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot2.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot3.png]]&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot4.png]]&lt;br /&gt;
# Open up the target platform file (the file that ends in .target).  Click the button that says &amp;quot;set as target platform&amp;quot; on the upper right-hand corner of the page.&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot5.png]]&lt;br /&gt;
# Go to Run-&amp;gt;Run Configurations. Open up the Edge Server OSGi run configuration (might be an item under &amp;quot;OSGi Framework&amp;quot;).  Click Run.  For more information about the run configuration see [[How to configure the run configuration in eclipse]]&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot6.png]]&lt;br /&gt;
Congratulations!  You have successfully set up and configured your eclipse environment and are ready to develop an edge server application!&lt;br /&gt;
&lt;br /&gt;
See the [[Developing a Rifidi Edge Server Application Tutorial]] for instructions on how to develop your first application to run on the edge server.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_Development_Environment</id>
		<title>Edge Server Development Environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_Development_Environment"/>
				<updated>2010-05-07T01:49:23Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Configuring eclipse environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document details the steps necessary to set up a development environment in order to either develop a custom Rifidi Edge Server application, or modify an existing Edge Server bundle.&lt;br /&gt;
=Configuring eclipse environment=&lt;br /&gt;
# [http://java.sun.com/javase/downloads/index.jsp Download] and install the latest version of the Java SE Development Kit (JDK) for your OS.&lt;br /&gt;
# [http://sourceforge.net/projects/rifidi/files/] the latest version of the Rifidi Edge Server SDK.&lt;br /&gt;
# [http://www.eclipse.org/downloads/  Download] the Galileo release of Eclipse for RCP/Plugin developers.&lt;br /&gt;
# Run eclipse and create a new workspace.&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot1.png]]&lt;br /&gt;
# Unzip the Rifidi Edge Server SDK into the newly created workspace directory on your file system.&lt;br /&gt;
# In eclipse go to File-&amp;gt;Import.  Choose &amp;quot;Existing Projects into Workspace&amp;quot;.  Now select the SDK folder (which must reside in workspace directory).&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot2.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot3.png]]&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot4.png]]&lt;br /&gt;
# Open up the target platform file (the file that ends in .target).  Click the button that says &amp;quot;set as target platform&amp;quot; on the upper right-hand corner of the page.&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot5.png]]&lt;br /&gt;
# Go to Run-&amp;gt;Run Configurations. Open up the Edge Server OSGi run configuration (might be an item under &amp;quot;OSGi Framework&amp;quot;).  Click Run.  For more information about the run configuration see [[How to configure the run configuration in eclipse]]&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot6.png]]&lt;br /&gt;
Congratulations!  You have successfully set up and configured your eclipse environment and are ready to develop an edge server application!&lt;br /&gt;
&lt;br /&gt;
See the [[Developing a Rifidi Edge Server Application Tutorial]] for instructions on how to develop your first application to run on the edge server.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-04-13T19:14:09Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://rifidi.org/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/How_to_Contribute_to_the_Rifidi_project</id>
		<title>How to Contribute to the Rifidi project</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/How_to_Contribute_to_the_Rifidi_project"/>
				<updated>2010-04-13T19:13:00Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Rifidi Edge Server is open source. This means that if you find bugs or have ideas for useful features, you have the ability to extend the edge server yourself! We will gladly welcome contributions of any sort (code, documentation, testing, etc) and encourage you to submit these back. To get involved with the community:&lt;br /&gt;
# '''Visit''' our [http://forums.rifidi.org forums]. This is the best place to talk to our developers and users of Rifidi.&lt;br /&gt;
# '''Submit''' feature requests and bug reports. We have a [https://trac.rifidi.org bug tracking system] that manages outstanding feature requests and bugs. Before you submit bug reports here, we ask that you visit us on the forums first and make sure that there isn't a known solution for your question already&lt;br /&gt;
# '''Contribute''' to our wiki. We gladly welcome any documentation in the form of HOWTOs, example code, tutorials, or any other form that you find helpful.&lt;br /&gt;
&lt;br /&gt;
For more information, please send emails to info@pramari.com&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/How_to_Contribute_to_the_Rifidi_project</id>
		<title>How to Contribute to the Rifidi project</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/How_to_Contribute_to_the_Rifidi_project"/>
				<updated>2010-04-13T19:12:27Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: New page: The Rifidi Edge Server is open source. This means that if you find bugs or have ideas for useful features, you have the ability to extend the edge server yourself! We will gladly welcome c...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Rifidi Edge Server is open source. This means that if you find bugs or have ideas for useful features, you have the ability to extend the edge server yourself! We will gladly welcome contributions of any sort (code, documentation, testing, etc) and encourage you to submit these back. To get involved with the community:&lt;br /&gt;
Visit our forums. This is the best place to talk to our developers and users of Rifidi.&lt;br /&gt;
Submit feature requests and bug reports. We have a bug tracking system that manages outstanding feature requests and bugs. Before you submit bug reports here, we ask that you visit us on the forums first and make sure that there isn't a known solution for your question already&lt;br /&gt;
Contribute to our wiki. We gladly welcome any documentation in the form of HOWTOs, example code, tutorials, or any other form that you find helpful.&lt;br /&gt;
&lt;br /&gt;
For more information, please send emails to info@pramari.com&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-04-13T19:12:01Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;About Rifidi&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Asset_Tracking:_An_end-to_end_solution_with_the_Rifidi_Platform</id>
		<title>Asset Tracking: An end-to end solution with the Rifidi Platform</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Asset_Tracking:_An_end-to_end_solution_with_the_Rifidi_Platform"/>
				<updated>2010-04-12T21:23:44Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: New page: The Rifidi suite allows you to build a complete, end-to-end solution from prototype to production system. This page demonstrates how you can use three Rifidi projects together to build an ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Rifidi suite allows you to build a complete, end-to-end solution from prototype to production system. This page demonstrates how you can use three Rifidi projects together to build an asset tracking solution. &lt;br /&gt;
&lt;br /&gt;
To get started, download the [http://rifidi.org/apps/AssetTrackingSolution.zip asset tracking solution]. To run the demonstration, you will need to be running MS Windows (xp, vista, or 7) and java 6.&lt;br /&gt;
&lt;br /&gt;
==Asset Tracking==&lt;br /&gt;
Every year, thousands of dollars in assets are lost due to theft of high value equipment. RFID technology has the potential to alleviate this problem. This demonstration shows how you can use the Rifidi suite to build a complete asset tracking solution. It includes a &amp;quot;virtual infrastructure&amp;quot; for use in demonstrations, the Rifidi Edge Server which collects tag reads, processes business rules, and provides integration with a client, and Workbench, which serves as both a management tool for the Edge Server and a monitor for the business events.&lt;br /&gt;
&lt;br /&gt;
==Prototyper==&lt;br /&gt;
Prototyper is a 2D layer on top of the Rifidi RFID reader emulation engine that allows you to quickly build out RFID-enabled business processes. Because Prototyper emulates RFID readers, RFID software (such as the Rifidi Edge Server) can then talk to the prototype in the same way it would talk to real hardware readers; in fact, the RFID software doesn't know that it's not talking to the real readers! &lt;br /&gt;
&lt;br /&gt;
To get started with the Asset Tracking Solution, open up Prototyper. Go to File-&amp;gt;Open Prototype and choose hospitalAssetTracking.rifidi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Prototyper-1.png|thumb|none|600px]]&lt;br /&gt;
&lt;br /&gt;
This map is the virtual infrastructure in an RFID-enabled Hospital. There are several read zones which are denoted on the map as antennas. There are several tagged items, including patients, microscopes, and mobile x-ray machines.  &lt;br /&gt;
&lt;br /&gt;
To use the prototype, take Prototyper out of edit mode by clicking the edge mode button at the top. At this point you can move assets around the floorplan. When you drag an asset on top of a read zone, a message will appear in the console indicating that an asset is now in the read zone.&lt;br /&gt;
&lt;br /&gt;
==Edge Server==&lt;br /&gt;
To get value out of an RFID solution, you need software that talks to RFID readers. The Rifidi Edge Server fills this need. The Edge Server is more than just software that collects tag IDs, however; It's an RFID application platform. This means that you can write your own code to fill your own business and integration needs and deploy it onto the Edge Server. The Edge Server takes care of the work of parsing reader protocols, reader management, sensor integration, tag filtering and aggregation and other common needs. &lt;br /&gt;
&lt;br /&gt;
For this application, we have built a simple application that listens for new tags to arrive in read zones. When this happens, it sends out an event message over JMS. When a tag has not been detected for a period of time (a few second for this demo), the application assumes the asset has departed from the read zone, and the application sends out another message over JMS to indicate that the asset can no longer be seen.&lt;br /&gt;
&lt;br /&gt;
To run the Rifidi Edge Server, run the Rifidi Edge Server executable.&lt;br /&gt;
&lt;br /&gt;
==Workbench==&lt;br /&gt;
&lt;br /&gt;
At this point the Rifidi Edge Server is processing asset tracking business events, but there is no software which is listening to the JMS queue. We developed a plugin for Workbench that listens for business events generated by the asset tracking Edge Server application. To use it, open up Rifidi Workbench. Right click on the Edge Server in the Edge Server View, and select &amp;quot;connect&amp;quot;. A list of all the reader configurations on the Edge Server will appear with their sessions in the connected state (indicated by a green light). &lt;br /&gt;
&lt;br /&gt;
[[Image:Workbench-1.png|thumb|none|600px]]&lt;br /&gt;
&lt;br /&gt;
Click on the &amp;quot;Event Monitor&amp;quot; button at the top. This brings up the Event Monitor perspective, which displays tracking messages from the asset tracking Edge Server application. If you move assets around on prototyper, you will be able to see messages appear in the event monitor.&lt;br /&gt;
&lt;br /&gt;
[[Image:Workbench-2.png|thumb|none|600px]]&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/File:Workbench-2.png</id>
		<title>File:Workbench-2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/File:Workbench-2.png"/>
				<updated>2010-04-12T21:20:23Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/File:Workbench-1.png</id>
		<title>File:Workbench-1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/File:Workbench-1.png"/>
				<updated>2010-04-12T21:20:12Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/File:Prototyper-1.png</id>
		<title>File:Prototyper-1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/File:Prototyper-1.png"/>
				<updated>2010-04-12T20:28:57Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-04-12T18:40:06Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;About Rifidi&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;How to Contribute to the Rifidi project&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Main_Page"/>
				<updated>2010-04-08T18:09:25Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID Middleware Platform&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Configuration]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Console]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Server Application Tutorials]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Plugging in a custom RCP perspective&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;quot;&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Developing an End-to-End RFID solution with Rifidi&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;About Rifidi&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;How to Contribute to the Rifidi project&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.org Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://svn.rifidi.org/svn/rep-external Rifidi Source SVN]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.pramari.com Pramari's Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ Spring]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/galileo/index.jsp Eclipse]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Configure_An_EdgeBox</id>
		<title>Configure An EdgeBox</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Configure_An_EdgeBox"/>
				<updated>2010-02-09T01:04:57Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Intall and Configure Edge Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains how to configure a Rifidi Edge Box. It steps through the process of installing and configuring linux on a machine for the edge server to run on. It takes about 1 hour 30 min to complete.&lt;br /&gt;
&lt;br /&gt;
==Prepare a USB installer==&lt;br /&gt;
# Download UNetbootin. This is a program that will automatically download Ubuntu's Net Installer and create a USB drive installer for you.&lt;br /&gt;
# Insert a blank USB key into your computer. Open UNetbootin. Select Ubuntu/9.10_NetInstall.&lt;br /&gt;
==Install and Configure Linux==&lt;br /&gt;
* Before you begin the installation, plug a monitor, keyboard, and ethernet cable into the Edge Box. For this installation, it is required that the Edge Box have access to the internet.&lt;br /&gt;
* Turn the ebox on, and open up the BIOS configuration. Ensure that the ebox will boot from USB.&lt;br /&gt;
* Insert the USB drive that you made in the previous step into the USB port. Restart the Edge Box.&lt;br /&gt;
* Step through the Ubunutu installation wizard. Here is some important information about how to standardize the installation:&lt;br /&gt;
** If the &amp;quot;Configure Network&amp;quot; step does not work, you may have the ethernet cable plugged in to the wrong port.&lt;br /&gt;
** For the hostname use rifidi-ebox-#, where # is an id, such as 0.&lt;br /&gt;
** When partitioning the disk, choose &amp;quot;guided partition, use entire disk&amp;quot;. Make sure to select the hard drive and not the USB!&lt;br /&gt;
** Make the full name &amp;quot;Rifidi&amp;quot;&lt;br /&gt;
** Make the username &amp;quot;rifidi&amp;quot;&lt;br /&gt;
** Make the password &amp;quot;rifidi&amp;quot;&lt;br /&gt;
** Choose no automatic updates.&lt;br /&gt;
** Choose to install OpenSSH server only.&lt;br /&gt;
* After the installation is complete, remove the USB drive, and restart the Edge Box. Log into it using &amp;quot;rifidi/rifidi&amp;quot;&lt;br /&gt;
* Install a text editor like VIm if you don't like nano.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install vim&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Now edit /etc/network/interfaces to look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /etc/network/interfaces&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This file describes the network interfaces available on your system&lt;br /&gt;
# and how to activate them. For more information, see interfaces(5).&lt;br /&gt;
&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
# Use these two lines if you want DHCP&lt;br /&gt;
#auto eth0&lt;br /&gt;
#iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
#Use these lines if you want static&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.125&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.1.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To refresh the network changes, type this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ifdown eth0&lt;br /&gt;
sudo ifup eth0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install java:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install sun-java6-jre&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Remove avahi-daemon for security reasons&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get purge avahi-daemon&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Intall and Configure Edge Server==&lt;br /&gt;
* Copy the latest version of the Rifidi Edge Server into /home/rifidi&lt;br /&gt;
&amp;lt;pre&amp;gt;cd ~&lt;br /&gt;
sudo wget http://dl.dropbox.com/u/1513839/pramari/Rifidi-Edge-1.1.beta.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Unizp the server and move the rifidi folder to /usr/local/sbin&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install unzip&lt;br /&gt;
unzip Rifidi-Edge-1.1.beta.zip&lt;br /&gt;
cd Rifidi-Edge-1.1.beta&lt;br /&gt;
sudo mv rifidi /usr/local/sbin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Make rifidiserver an executable&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /usr/local/sbin/rifidi&lt;br /&gt;
sudo chmod+x rifidiserver&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Move the startup script to /etc/init.d&lt;br /&gt;
&amp;lt;pre&amp;gt;cd startupscript&lt;br /&gt;
sudo mv rifidiserver /etc/init.d&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Now generate the symbolic links necessary for the init deamon to use the rifidiserver startup script when the system starts up:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /etc/init.d&lt;br /&gt;
sudo chmod 755 rifidiserver&lt;br /&gt;
sudo update-rc.d blah defaults&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can now start and stop the rifidi edgeserver like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo /etc/init.d/rifidiserver start&lt;br /&gt;
sudo /etc/inti.d/rifidiserver stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can edit the properties of the edge server in the rifidiserver.ini file in the /usr/local/sbin/rifidi folder. One important property that you don't change without knowing what you are doing is the osgi.console property. The osgi.console property opens up a telnet port at 2020 so that you can telnet into the server for administrative control. However, since telnet is not secure, the startup scripts blocks port 2020 from the outside. In order to access the osgi console, first ssh into the edge box, then telnet to localhost port 2020. If you need to change this port, you need to edit the startup script so that the new osgi console port is secured properly.&lt;br /&gt;
&lt;br /&gt;
In order to open up access to the workbench over the network, set the rmi hostname and jms hostname to the address of the edge box (e.g. 192.168.1.125).&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Configure_An_EdgeBox</id>
		<title>Configure An EdgeBox</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Configure_An_EdgeBox"/>
				<updated>2010-02-09T01:04:29Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Intall and Configure Edge Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains how to configure a Rifidi Edge Box. It steps through the process of installing and configuring linux on a machine for the edge server to run on. It takes about 1 hour 30 min to complete.&lt;br /&gt;
&lt;br /&gt;
==Prepare a USB installer==&lt;br /&gt;
# Download UNetbootin. This is a program that will automatically download Ubuntu's Net Installer and create a USB drive installer for you.&lt;br /&gt;
# Insert a blank USB key into your computer. Open UNetbootin. Select Ubuntu/9.10_NetInstall.&lt;br /&gt;
==Install and Configure Linux==&lt;br /&gt;
* Before you begin the installation, plug a monitor, keyboard, and ethernet cable into the Edge Box. For this installation, it is required that the Edge Box have access to the internet.&lt;br /&gt;
* Turn the ebox on, and open up the BIOS configuration. Ensure that the ebox will boot from USB.&lt;br /&gt;
* Insert the USB drive that you made in the previous step into the USB port. Restart the Edge Box.&lt;br /&gt;
* Step through the Ubunutu installation wizard. Here is some important information about how to standardize the installation:&lt;br /&gt;
** If the &amp;quot;Configure Network&amp;quot; step does not work, you may have the ethernet cable plugged in to the wrong port.&lt;br /&gt;
** For the hostname use rifidi-ebox-#, where # is an id, such as 0.&lt;br /&gt;
** When partitioning the disk, choose &amp;quot;guided partition, use entire disk&amp;quot;. Make sure to select the hard drive and not the USB!&lt;br /&gt;
** Make the full name &amp;quot;Rifidi&amp;quot;&lt;br /&gt;
** Make the username &amp;quot;rifidi&amp;quot;&lt;br /&gt;
** Make the password &amp;quot;rifidi&amp;quot;&lt;br /&gt;
** Choose no automatic updates.&lt;br /&gt;
** Choose to install OpenSSH server only.&lt;br /&gt;
* After the installation is complete, remove the USB drive, and restart the Edge Box. Log into it using &amp;quot;rifidi/rifidi&amp;quot;&lt;br /&gt;
* Install a text editor like VIm if you don't like nano.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install vim&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Now edit /etc/network/interfaces to look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /etc/network/interfaces&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This file describes the network interfaces available on your system&lt;br /&gt;
# and how to activate them. For more information, see interfaces(5).&lt;br /&gt;
&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
# Use these two lines if you want DHCP&lt;br /&gt;
#auto eth0&lt;br /&gt;
#iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
#Use these lines if you want static&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.125&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.1.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To refresh the network changes, type this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ifdown eth0&lt;br /&gt;
sudo ifup eth0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install java:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install sun-java6-jre&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Remove avahi-daemon for security reasons&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get purge avahi-daemon&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Intall and Configure Edge Server==&lt;br /&gt;
* Copy the latest version of the Rifidi Edge Server into /home/rifidi&lt;br /&gt;
&amp;lt;pre&amp;gt;cd ~&lt;br /&gt;
sudo wget http://dl.dropbox.com/u/1513839/pramari/Rifidi-Edge-1.1.beta.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Unizp the server and move the rifidi folder to /usr/local/sbin&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install unzip&lt;br /&gt;
unzip Rifidi-Edge-1.1.beta.zip&lt;br /&gt;
cd Rifidi-Edge-1.1.beta&lt;br /&gt;
sudo mv rifidi /usr/local/sbin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Make rifidiserver an executable&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /usr/local/sbin/rifidi&lt;br /&gt;
sudo chmod+x rifidiserver&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Move the startup script to /etc/init.d&lt;br /&gt;
&amp;lt;pre&amp;gt;cd startupscript&lt;br /&gt;
sudo mv rifidiserver /etc/init.d&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Now generate the symbolic links necessary for the init deamon to use the rifidiserver startup script when the system starts up:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /etc/init.d&lt;br /&gt;
sudo chmod 755 rifidiserver&lt;br /&gt;
sudo update-rc.d blah defaults&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can now start and stop the rifidi edgeserver like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo /etc/init.d/rifidiserver starte &lt;br /&gt;
sudo /etc/inti.d/rifidiserver stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can edit the properties of the edge server in the rifidiserver.ini file in the /usr/local/sbin/rifidi folder. One important property that you don't change without knowing what you are doing is the osgi.console property. The osgi.console property opens up a telnet port at 2020 so that you can telnet into the server for administrative control. However, since telnet is not secure, the startup scripts blocks port 2020 from the outside. In order to access the osgi console, first ssh into the edge box, then telnet to localhost port 2020. If you need to change this port, you need to edit the startup script so that the new osgi console port is secured properly.&lt;br /&gt;
&lt;br /&gt;
In order to open up access to the workbench over the network, set the rmi hostname and jms hostname to the address of the edge box (e.g. 192.168.1.125).&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Configure_An_EdgeBox</id>
		<title>Configure An EdgeBox</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Configure_An_EdgeBox"/>
				<updated>2010-02-09T01:04:01Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: New page: This page explains how to configure a Rifidi Edge Box. It steps through the process of installing and configuring linux on a machine for the edge server to run on. It takes about 1 hour 30...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains how to configure a Rifidi Edge Box. It steps through the process of installing and configuring linux on a machine for the edge server to run on. It takes about 1 hour 30 min to complete.&lt;br /&gt;
&lt;br /&gt;
==Prepare a USB installer==&lt;br /&gt;
# Download UNetbootin. This is a program that will automatically download Ubuntu's Net Installer and create a USB drive installer for you.&lt;br /&gt;
# Insert a blank USB key into your computer. Open UNetbootin. Select Ubuntu/9.10_NetInstall.&lt;br /&gt;
==Install and Configure Linux==&lt;br /&gt;
* Before you begin the installation, plug a monitor, keyboard, and ethernet cable into the Edge Box. For this installation, it is required that the Edge Box have access to the internet.&lt;br /&gt;
* Turn the ebox on, and open up the BIOS configuration. Ensure that the ebox will boot from USB.&lt;br /&gt;
* Insert the USB drive that you made in the previous step into the USB port. Restart the Edge Box.&lt;br /&gt;
* Step through the Ubunutu installation wizard. Here is some important information about how to standardize the installation:&lt;br /&gt;
** If the &amp;quot;Configure Network&amp;quot; step does not work, you may have the ethernet cable plugged in to the wrong port.&lt;br /&gt;
** For the hostname use rifidi-ebox-#, where # is an id, such as 0.&lt;br /&gt;
** When partitioning the disk, choose &amp;quot;guided partition, use entire disk&amp;quot;. Make sure to select the hard drive and not the USB!&lt;br /&gt;
** Make the full name &amp;quot;Rifidi&amp;quot;&lt;br /&gt;
** Make the username &amp;quot;rifidi&amp;quot;&lt;br /&gt;
** Make the password &amp;quot;rifidi&amp;quot;&lt;br /&gt;
** Choose no automatic updates.&lt;br /&gt;
** Choose to install OpenSSH server only.&lt;br /&gt;
* After the installation is complete, remove the USB drive, and restart the Edge Box. Log into it using &amp;quot;rifidi/rifidi&amp;quot;&lt;br /&gt;
* Install a text editor like VIm if you don't like nano.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install vim&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Now edit /etc/network/interfaces to look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /etc/network/interfaces&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This file describes the network interfaces available on your system&lt;br /&gt;
# and how to activate them. For more information, see interfaces(5).&lt;br /&gt;
&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
# Use these two lines if you want DHCP&lt;br /&gt;
#auto eth0&lt;br /&gt;
#iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
#Use these lines if you want static&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.125&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.1.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To refresh the network changes, type this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ifdown eth0&lt;br /&gt;
sudo ifup eth0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install java:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install sun-java6-jre&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Remove avahi-daemon for security reasons&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get purge avahi-daemon&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Intall and Configure Edge Server==&lt;br /&gt;
* Copy the latest version of the Rifidi Edge Server into /home/rifidi&lt;br /&gt;
&amp;lt;pre&amp;gt;cd ~&lt;br /&gt;
sudo wget http://dl.dropbox.com/u/1513839/pramari/Rifidi-Edge-1.1.beta.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Unizp the server and move the rifidi folder to /usr/local/sbin&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install unzip&lt;br /&gt;
unzip Rifidi-Edge-1.1.beta.zip&lt;br /&gt;
cd Rifidi-Edge-1.1.beta&lt;br /&gt;
sudo mv rifidi /usr/local/sbin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Make rifidiserver an executable&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /usr/local/sbin/rifidi&lt;br /&gt;
sudo chmod+x rifidiserver&lt;br /&gt;
* Move the startup script to /etc/init.d&lt;br /&gt;
&amp;lt;pre&amp;gt;cd startupscript&lt;br /&gt;
sudo mv rifidiserver /etc/init.d&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Now generate the symbolic links necessary for the init deamon to use the rifidiserver startup script when the system starts up:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /etc/init.d&lt;br /&gt;
sudo chmod 755 rifidiserver&lt;br /&gt;
sudo update-rc.d blah defaults&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can now start and stop the rifidi edgeserver like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo /etc/init.d/rifidiserver starte &lt;br /&gt;
sudo /etc/inti.d/rifidiserver stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can edit the properties of the edge server in the rifidiserver.ini file in the /usr/local/sbin/rifidi folder. One important property that you don't change without knowing what you are doing is the osgi.console property. The osgi.console property opens up a telnet port at 2020 so that you can telnet into the server for administrative control. However, since telnet is not secure, the startup scripts blocks port 2020 from the outside. In order to access the osgi console, first ssh into the edge box, then telnet to localhost port 2020. If you need to change this port, you need to edit the startup script so that the new osgi console port is secured properly.&lt;br /&gt;
&lt;br /&gt;
In order to open up access to the workbench over the network, set the rmi hostname and jms hostname to the address of the edge box (e.g. 192.168.1.125).&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Rifidi_Edge_Server_Application_Tutorials</id>
		<title>Rifidi Edge Server Application Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Rifidi_Edge_Server_Application_Tutorials"/>
				<updated>2010-02-02T14:33:01Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Rifidi Edge Server is an application platform that provides developers with a way to quickly develop and deploy RFID applications.  This page lists several tutorials that will help you get started learning the Rifidi platform.&lt;br /&gt;
;[[Northwind Tutorial]]&lt;br /&gt;
:This tutorial is an in-depth, step-by-step guide for absolute beginners. It delves into details about how to get started doing everything from creating an eclipse project to dependency injection using spring to writing a JSP. The tutorial show you how to create some esper statements that filter on certain events, push the out events over JMS, use spring to listen to a JMS Queue, and display the events in using a JSP deployed as a web application.&lt;br /&gt;
;[[Database Tutorial]]&lt;br /&gt;
:This is a short tutorial that shows you how to build an application which collects information from readers and inserts them into a database. It uses JDBC and spring for database connectivity. The example has been tested with both an embedded derby and MySQL database.  It also shows you how to contribute commands to the osgi command interface so that you can control the application. It has much less detail than the Northwind tutorial.&lt;br /&gt;
&lt;br /&gt;
After you have written your own application, you will need to export it so that you can deploy it on the Rifidi Edge Sever. Follow these [[How_to_export_your_custom_Rifidi_application | instructions]] to learn how.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_Getting_Started</id>
		<title>Edge Server Getting Started</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_Getting_Started"/>
				<updated>2010-02-02T14:31:46Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Develop Your Own Application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thank you for your interest in the Rifidi Edge Server -- an open source platform for developing and deploying RFID applications. Here's how to get started:&lt;br /&gt;
&lt;br /&gt;
==Run it==&lt;br /&gt;
# '''Download''' the [http://sourceforge.net/projects/rifidi/ Edge Server] from our sourceforge page. The download comes bundled with two programs: the '''Edge Server''' which does the core work of connecting to sensors (such as RFID readers), collecting tag information, and making that data available. It ships with adapters for Alien, LLRP, Awid, and several other types of RFID readers. It also ships with ALE support. The second program is '''Workbench''' which is a user interface that allows you to control the edge server and view tag information that it is collecting, as well as experiment with ALE.&lt;br /&gt;
# '''Download''' [http://sourceforge.net/projects/rifidi/files/ Rifidi Emulator]. This program allows you to virtualize several popular types of RFID readers on your desktop. &lt;br /&gt;
# '''Follow''' the [[Workbench User's Guide|quick start guide]] to start getting tag reads back from virtual readers.&lt;br /&gt;
&lt;br /&gt;
==Develop Your Own Application==&lt;br /&gt;
The edge server by itself allows you to connect to sensors and collect tag data from them, but if you really want to put it to work, you will need to develop your own applications that run on the edge server.&lt;br /&gt;
# '''Download''' our SDK (Standard Development Kit). This provides our API, sourcecode and examples to help you get started. You can find out how to set up a development environment here: [[Edge Server Development Environment]].&lt;br /&gt;
# '''Develop''' an application. We currently have a couple of [[Rifidi_Edge_Server_Application_Tutorials| tutorials]] on our wiki that explain the process of developing an application in a step-by-step manner. There will be more to come.&lt;br /&gt;
# [[How_to_export_your_custom_Rifidi_application|'''Export''']] your application&lt;br /&gt;
# '''Deploy''' the application you've built. Once you've built and tested your application, you can deploy it onto the edge server that you've downloaded.&lt;br /&gt;
&lt;br /&gt;
==Contribute Back==&lt;br /&gt;
The Rifidi Edge Server is open source. This means that if you find bugs or have ideas for useful features, you have the ability to extend the edge server yourself! We will gladly welcome contributions of any sort (code, documentation, testing, etc) and encourage you to submit these back. To get involved with the community:&lt;br /&gt;
# '''Visit''' our [http://forums.rifidi.org forums]. This is the best place to talk to our developers and users of Rifidi.&lt;br /&gt;
# '''Submit''' feature requests and bug reports. We have a [https://trac.rifidi.org bug tracking system] that manages outstanding feature requests and bugs. Before you submit bug reports here, we ask that you visit us on the forums first and make sure that there isn't a known solution for your question already&lt;br /&gt;
# '''Contribute''' to our wiki. We gladly welcome any documentation in the form of HOWTOs, example code, tutorials, or any other form that you find helpful.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/How_to_export_your_custom_Rifidi_application</id>
		<title>How to export your custom Rifidi application</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/How_to_export_your_custom_Rifidi_application"/>
				<updated>2010-02-02T14:27:43Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: New page: Once you have finished writing, debuging, and testing your application, you will need to export it so that you can put it in the applications folder of the Rifidi Edge Server.   ==Step 1: ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Once you have finished writing, debuging, and testing your application, you will need to export it so that you can put it in the applications folder of the Rifidi Edge Server. &lt;br /&gt;
&lt;br /&gt;
==Step 1: Export the Application Bundles==&lt;br /&gt;
# Open up the Manifest.MF of your application bundle. If you have more than one bundle in your application, just pick one. [[Image:ExportApp1.png|thumb|600px|none]]&lt;br /&gt;
# Click on &amp;quot;Export Wizard&amp;quot; in the Exporting section&lt;br /&gt;
# Select the bundle(s) that comprise your application.&lt;br /&gt;
# Choose a Directory to export to. Usually it is easiest to export to Desktop [[Image:exportApp2.png|thumb|none|400px]]&lt;br /&gt;
# In the options tab, choose to package as individual JAR archives. Also, unselect the qualifier replacement.&lt;br /&gt;
# Click finish.&lt;br /&gt;
&lt;br /&gt;
==Step 2: Create the Application==&lt;br /&gt;
# Create a new folder, and give it the name of the application. For example, &amp;quot;AcmeApp&amp;quot;&lt;br /&gt;
# Move the plugins folder that was created during Step 1 into the new applications folder&lt;br /&gt;
# If you have any other bundle dependencies that are not provided by the edge server, drop them into the plugins folder. For example in the dbapp, the mysql driver bundle is not provided by the edge server core. So it is necessary to drop this dependency into the plugins folder.&lt;br /&gt;
# Download the [http://www.osgi.org/Repository/BIndex bindex] utility.&lt;br /&gt;
# Copy bindex.jar into the application folder. &lt;br /&gt;
# From the command line, cd into the application folder.&lt;br /&gt;
# Type 'java -jar bindex plugins/*.jar'. This should create a file called repository.xml in the application folder. [[Image:exportApp3.png|none|thumb|400px]]&lt;br /&gt;
# Delete bindex.jar from the application folder&lt;br /&gt;
&lt;br /&gt;
==Step 3: Deploy the Application==&lt;br /&gt;
# Copy the application that you have just created into the applications folder in the edge server&lt;br /&gt;
# Start the edge server. After everything starts up, type 'loadApp &amp;lt;appname&amp;gt;' where &amp;lt;appname&amp;gt; is the name of the application folder that you created in step 2. For example 'loadApp AcmeApp'.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/File:ExportApp3.png</id>
		<title>File:ExportApp3.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/File:ExportApp3.png"/>
				<updated>2010-02-02T14:24:38Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/File:ExportApp2.png</id>
		<title>File:ExportApp2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/File:ExportApp2.png"/>
				<updated>2010-02-02T14:24:12Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/File:ExportApp1.png</id>
		<title>File:ExportApp1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/File:ExportApp1.png"/>
				<updated>2010-02-02T14:23:39Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_HOWTOs</id>
		<title>Edge Server HOWTOs</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_HOWTOs"/>
				<updated>2010-02-02T13:08:10Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[How to change logging levels]]&lt;br /&gt;
*[[How to export a service using RMI]]&lt;br /&gt;
*[[How to export a service using web services]]&lt;br /&gt;
*[[EdgeServerJMS#Setting up a Consumer|How to consume tag events from the Internal JMS Message Bus]]&lt;br /&gt;
*[[How to write esper queries]]&lt;br /&gt;
*[[How to configure Manifest.MF in my bundle]]&lt;br /&gt;
*[[How to configure spring.xml in my bundle]]&lt;br /&gt;
*[[How to use OSGi Services]]&lt;br /&gt;
*[[How to create a sensor plugin]]&lt;br /&gt;
*[[How to configure the run configuration in eclipse]]&lt;br /&gt;
*[[How to Add your own event types to Esper]]&lt;br /&gt;
*[[How to export your custom Rifidi application]]&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Edge_Server_Getting_Started</id>
		<title>Edge Server Getting Started</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Edge_Server_Getting_Started"/>
				<updated>2010-02-02T13:07:09Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Develop Your Own Application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thank you for your interest in the Rifidi Edge Server -- an open source platform for developing and deploying RFID applications. Here's how to get started:&lt;br /&gt;
&lt;br /&gt;
==Run it==&lt;br /&gt;
# '''Download''' the [http://sourceforge.net/projects/rifidi/ Edge Server] from our sourceforge page. The download comes bundled with two programs: the '''Edge Server''' which does the core work of connecting to sensors (such as RFID readers), collecting tag information, and making that data available. It ships with adapters for Alien, LLRP, Awid, and several other types of RFID readers. It also ships with ALE support. The second program is '''Workbench''' which is a user interface that allows you to control the edge server and view tag information that it is collecting, as well as experiment with ALE.&lt;br /&gt;
# '''Download''' [http://sourceforge.net/projects/rifidi/files/ Rifidi Emulator]. This program allows you to virtualize several popular types of RFID readers on your desktop. &lt;br /&gt;
# '''Follow''' the [[Workbench User's Guide|quick start guide]] to start getting tag reads back from virtual readers.&lt;br /&gt;
&lt;br /&gt;
==Develop Your Own Application==&lt;br /&gt;
The edge server by itself allows you to connect to sensors and collect tag data from them, but if you really want to put it to work, you will need to develop your own applications that run on the edge server.&lt;br /&gt;
# '''Download''' our SDK (Standard Development Kit). This provides our API, sourcecode and examples to help you get started. You can find out how to set up a development environment here: [[Edge Server Development Environment]].&lt;br /&gt;
# '''Develop''' an application. We currently have a couple of [[Rifidi_Edge_Server_Application_Tutorials| tutorials]] on our wiki that explain the process of developing an application in a step-by-step manner. There will be more to come.&lt;br /&gt;
# '''Deploy''' the application you've built. Once you've built and tested your application, you can deploy it onto the edge server that you've downloaded.&lt;br /&gt;
&lt;br /&gt;
==Contribute Back==&lt;br /&gt;
The Rifidi Edge Server is open source. This means that if you find bugs or have ideas for useful features, you have the ability to extend the edge server yourself! We will gladly welcome contributions of any sort (code, documentation, testing, etc) and encourage you to submit these back. To get involved with the community:&lt;br /&gt;
# '''Visit''' our [http://forums.rifidi.org forums]. This is the best place to talk to our developers and users of Rifidi.&lt;br /&gt;
# '''Submit''' feature requests and bug reports. We have a [https://trac.rifidi.org bug tracking system] that manages outstanding feature requests and bugs. Before you submit bug reports here, we ask that you visit us on the forums first and make sure that there isn't a known solution for your question already&lt;br /&gt;
# '''Contribute''' to our wiki. We gladly welcome any documentation in the form of HOWTOs, example code, tutorials, or any other form that you find helpful.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Using_the_Engine_API</id>
		<title>Using the Engine API</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Using_the_Engine_API"/>
				<updated>2010-01-27T15:52:41Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Run the program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:developerDoc]][[Category:EmulatorDoc]]&lt;br /&gt;
This page describes how to create an instance of the Rifidi engine, create readers, and add and remove tags from that engine all programatically via RMI.  It is a tutorial for creating a &amp;quot;hello world&amp;quot; Rifidi application just to show you how the engine works.  In production code, however, you shouldn't run the program from the activator.&lt;br /&gt;
=Download the source code=&lt;br /&gt;
In order to use the Engine API, you will first need to download the core rifidi plugins from svn.  See [[Rifidi:Source_Code|Running Rifidi from Source]] for instructions on how to do this&lt;br /&gt;
=Create a new OSGi bundle=&lt;br /&gt;
Because Rifidi is OSGi based, all code must be written inside an OSGi bundle.  The thing  you will need to create a new OSGi bundle for your code to run in.  To do this, follow the same steps as in [[Create a new reader project]].  You do not need to add the project to svn.  &lt;br /&gt;
&lt;br /&gt;
For this example, you will want to declare dependencies on the following plugins:&lt;br /&gt;
* org.rifidi.emulator&lt;br /&gt;
* org.rifidi.services&lt;br /&gt;
* org.rifidi.tags&lt;br /&gt;
* org.rifidi.emulator.reader.alien&lt;br /&gt;
&lt;br /&gt;
=Create a program=&lt;br /&gt;
# Create a new package.  &lt;br /&gt;
## Right click on the package found in the src directory.&lt;br /&gt;
## Select new package&lt;br /&gt;
## Give the package a name and select Finish&lt;br /&gt;
# Create a new class&lt;br /&gt;
## Right Click on the new package&lt;br /&gt;
## Select new class&lt;br /&gt;
## Give the class a name and click finish&lt;br /&gt;
=Write the Hello World Application=&lt;br /&gt;
&amp;lt;pre&amp;gt;package testproj;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
&lt;br /&gt;
import org.rifidi.emulator.manager.ReaderManager;&lt;br /&gt;
import org.rifidi.emulator.reader.module.GeneralReaderPropertyHolder;&lt;br /&gt;
import org.rifidi.services.annotations.Inject;&lt;br /&gt;
import org.rifidi.services.registry.ServiceRegistry;&lt;br /&gt;
import org.rifidi.tags.enums.TagGen;&lt;br /&gt;
import org.rifidi.tags.factory.TagCreationPattern;&lt;br /&gt;
import org.rifidi.tags.factory.TagFactory;&lt;br /&gt;
import org.rifidi.tags.id.TagType;&lt;br /&gt;
import org.rifidi.tags.impl.RifidiTag;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This class demonstrates how to use the Rifidi Engine RMI API to create a&lt;br /&gt;
 * virtual reader and add tags to it.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public class RifidiClass {&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The reader manager - the service that controls the virtual RFID readers&lt;br /&gt;
	 */&lt;br /&gt;
	private ReaderManager readerManager;&lt;br /&gt;
&lt;br /&gt;
	public RifidiClass() {&lt;br /&gt;
		// tell the service registry to inject dependencies into this object&lt;br /&gt;
		ServiceRegistry.getInstance().service(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private void startReader() {&lt;br /&gt;
		try {&lt;br /&gt;
&lt;br /&gt;
			/** The IP address of the virtual reader */&lt;br /&gt;
			String READER_IP = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
			/** The port of the virtual reader */&lt;br /&gt;
			int READER_PORT = 20000;&lt;br /&gt;
			String READER_NAME = &amp;quot;alien_test&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			// The GeneralReaderPropertyHolder is the object that defines a new&lt;br /&gt;
			// virtual reader to create&lt;br /&gt;
			GeneralReaderPropertyHolder readerProperties = new GeneralReaderPropertyHolder();&lt;br /&gt;
			readerProperties&lt;br /&gt;
					.setReaderClassName(&amp;quot;org.rifidi.emulator.reader.alien.module.AlienReaderModule&amp;quot;);&lt;br /&gt;
			readerProperties.setNumAntennas(2);&lt;br /&gt;
			readerProperties.setReaderName(READER_NAME);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;inet_address&amp;quot;, READER_IP + &amp;quot;:&amp;quot;&lt;br /&gt;
					+ READER_PORT);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;heartbeat_address&amp;quot;, READER_IP&lt;br /&gt;
					+ &amp;quot;:54321&amp;quot;);&lt;br /&gt;
			readerProperties.setNumGPIs(4);&lt;br /&gt;
			readerProperties.setNumGPOs(8);&lt;br /&gt;
&lt;br /&gt;
			// create the virtual reader on the remote engine&lt;br /&gt;
			readerManager.createReader(readerProperties);&lt;br /&gt;
&lt;br /&gt;
			// turn the reader on so that you can connect to it from a client&lt;br /&gt;
			// (e.g. telnet)&lt;br /&gt;
			readerManager.start(READER_NAME);&lt;br /&gt;
&lt;br /&gt;
			// The TagCreationPattern is the object that defines how to create a&lt;br /&gt;
			// batch of tags&lt;br /&gt;
			TagCreationPattern tagPattern = new TagCreationPattern();&lt;br /&gt;
			tagPattern.setNumberOfTags(5);&lt;br /&gt;
			tagPattern.setTagGeneration(TagGen.GEN2);&lt;br /&gt;
			tagPattern.setTagType(TagType.SGTIN96);&lt;br /&gt;
&lt;br /&gt;
			// uses the TagFactory to generate some new tags&lt;br /&gt;
			ArrayList&amp;lt;RifidiTag&amp;gt; tags = TagFactory.generateTags(tagPattern);&lt;br /&gt;
&lt;br /&gt;
			// Set the Unique IDs for each of the tags. This is *not* the EPC.&lt;br /&gt;
			// The UniqueID is the ID used internally to differentiate between&lt;br /&gt;
			// tags.&lt;br /&gt;
			long id = 1;&lt;br /&gt;
			for (RifidiTag tag : tags) {&lt;br /&gt;
				tag.setTagEntitiyID(id++);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add the tags to the virtual reader&lt;br /&gt;
			readerManager.addTags(READER_NAME, 0, new HashSet&amp;lt;RifidiTag&amp;gt;(tags));&lt;br /&gt;
&lt;br /&gt;
			// sleep for 500 miliseconds&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
&lt;br /&gt;
			/*&lt;br /&gt;
			 * The next bit of code is &amp;quot;client&amp;quot; code. It is equivalent to&lt;br /&gt;
			 * connecting to an alien reader over telnet and seding the 'get&lt;br /&gt;
			 * taglist' command. It is only shown here to demonstrate that the&lt;br /&gt;
			 * tags that reader has been turned on and tags were added&lt;br /&gt;
			 * successfully.&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			// create a new socket connection to the reader&lt;br /&gt;
			Socket connection = new Socket(READER_IP, READER_PORT);&lt;br /&gt;
&lt;br /&gt;
			BufferedReader in = new BufferedReader(new InputStreamReader(&lt;br /&gt;
					connection.getInputStream()));&lt;br /&gt;
			PrintWriter out = new PrintWriter(connection.getOutputStream());&lt;br /&gt;
&lt;br /&gt;
			// send username and password&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			out.write(&amp;quot;alien\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
			out.write(&amp;quot;password\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
&lt;br /&gt;
			// send get taglist command&lt;br /&gt;
			out.write(&amp;quot;t\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			String returnVal = readFromReader(in);&lt;br /&gt;
&lt;br /&gt;
			// print tag list coming back from reader&lt;br /&gt;
			System.out.println(returnVal);&lt;br /&gt;
		} catch (Exception e) {&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method reads from the socket.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param inBuf&lt;br /&gt;
	 * @return The string that was read&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 */&lt;br /&gt;
	public String readFromReader(BufferedReader inBuf) throws IOException {&lt;br /&gt;
		StringBuffer buf = new StringBuffer();&lt;br /&gt;
		int ch = inBuf.read();&lt;br /&gt;
		while ((char) ch != '\0') {&lt;br /&gt;
			buf.append((char) ch);&lt;br /&gt;
			ch = inBuf.read();&lt;br /&gt;
		}&lt;br /&gt;
		return buf.toString();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method is called by the service registry to inject the ReaderManager&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param readerManager&lt;br /&gt;
	 */&lt;br /&gt;
	@Inject&lt;br /&gt;
	public void setReaderManager(ReaderManager readerManager) {&lt;br /&gt;
		this.readerManager = readerManager;&lt;br /&gt;
		// start the program now that we know the readerManager has been&lt;br /&gt;
		// injected.&lt;br /&gt;
		startReader();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Edit the Activator=&lt;br /&gt;
The Activator is the class that the OSGi framework uses to start and stop the bundle that you wrote.  The start() method is called when your bundle is activated, and the stop() method is called when  the bundle is deactivated.  For an introduction to OSGi see [http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html this article].  &lt;br /&gt;
&lt;br /&gt;
Although this is a bad idea for production code, for the sake of simplicity, the start() method in the activator for this project starts the hello world class.  This is the activator for the bundle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;package testproj;&lt;br /&gt;
&lt;br /&gt;
import org.osgi.framework.BundleActivator;&lt;br /&gt;
import org.osgi.framework.BundleContext;&lt;br /&gt;
&lt;br /&gt;
import testproj.RifidiClass;&lt;br /&gt;
&lt;br /&gt;
public class Activator implements BundleActivator {&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * &lt;br /&gt;
	 * @see&lt;br /&gt;
	 * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext&lt;br /&gt;
	 * )&lt;br /&gt;
	 */&lt;br /&gt;
	public void start(BundleContext context) throws Exception {&lt;br /&gt;
		Thread t = new Thread(new TestRunner(), &amp;quot;Rifidi Hello World Thread&amp;quot;);&lt;br /&gt;
		t.start();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * &lt;br /&gt;
	 * @see&lt;br /&gt;
	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void stop(BundleContext context) throws Exception {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Run the program in a separate thread so we don't occupy the OSGi starter&lt;br /&gt;
	 * thread.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
	 * &lt;br /&gt;
	 */&lt;br /&gt;
	private class TestRunner implements Runnable {&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		public void run() {&lt;br /&gt;
			new RifidiClass();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Run the program=&lt;br /&gt;
To run this program from Eclipse, you need to create a new Run Configuration.&lt;br /&gt;
# Click Run-&amp;gt;Run Configurations&lt;br /&gt;
# Double click on OSGi Framework on the tree on the left&lt;br /&gt;
# Select the required bundles. The 'bundles' list displays a list of the bundles that will be activated when you run the program.  You only want the bundles selected that are required.&lt;br /&gt;
## Click 'Deselct All'&lt;br /&gt;
## Check the bundle that you just created.&lt;br /&gt;
## Check all the bundles that start with 'org.springframework...'&lt;br /&gt;
## Select 'Add Required Bundles'&lt;br /&gt;
#Click 'Run'&lt;br /&gt;
&lt;br /&gt;
You should see alot of output in the console, and at the bottom of the output, you should see the tags that you &amp;quot;client&amp;quot; got from the reader:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tag:304A 37DA 04A4 4927 D1C8 0775, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:3008 26FD CCAC 1E53 612D 56EB, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:302E 5243 7D73 9CEF 1E8A 08FA, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:307A 11F3 960A B58C 7454 B248, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:308C 5BD0 BA14 CB02 55D4 89D5, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Using_the_Engine_API</id>
		<title>Using the Engine API</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Using_the_Engine_API"/>
				<updated>2010-01-27T15:46:33Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Edit the Activator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:developerDoc]][[Category:EmulatorDoc]]&lt;br /&gt;
This page describes how to create an instance of the Rifidi engine, create readers, and add and remove tags from that engine all programatically via RMI.  It is a tutorial for creating a &amp;quot;hello world&amp;quot; Rifidi application just to show you how the engine works.  In production code, however, you shouldn't run the program from the activator.&lt;br /&gt;
=Download the source code=&lt;br /&gt;
In order to use the Engine API, you will first need to download the core rifidi plugins from svn.  See [[Rifidi:Source_Code|Running Rifidi from Source]] for instructions on how to do this&lt;br /&gt;
=Create a new OSGi bundle=&lt;br /&gt;
Because Rifidi is OSGi based, all code must be written inside an OSGi bundle.  The thing  you will need to create a new OSGi bundle for your code to run in.  To do this, follow the same steps as in [[Create a new reader project]].  You do not need to add the project to svn.  &lt;br /&gt;
&lt;br /&gt;
For this example, you will want to declare dependencies on the following plugins:&lt;br /&gt;
* org.rifidi.emulator&lt;br /&gt;
* org.rifidi.services&lt;br /&gt;
* org.rifidi.tags&lt;br /&gt;
* org.rifidi.emulator.reader.alien&lt;br /&gt;
&lt;br /&gt;
=Create a program=&lt;br /&gt;
# Create a new package.  &lt;br /&gt;
## Right click on the package found in the src directory.&lt;br /&gt;
## Select new package&lt;br /&gt;
## Give the package a name and select Finish&lt;br /&gt;
# Create a new class&lt;br /&gt;
## Right Click on the new package&lt;br /&gt;
## Select new class&lt;br /&gt;
## Give the class a name and click finish&lt;br /&gt;
=Write the Hello World Application=&lt;br /&gt;
&amp;lt;pre&amp;gt;package testproj;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
&lt;br /&gt;
import org.rifidi.emulator.manager.ReaderManager;&lt;br /&gt;
import org.rifidi.emulator.reader.module.GeneralReaderPropertyHolder;&lt;br /&gt;
import org.rifidi.services.annotations.Inject;&lt;br /&gt;
import org.rifidi.services.registry.ServiceRegistry;&lt;br /&gt;
import org.rifidi.tags.enums.TagGen;&lt;br /&gt;
import org.rifidi.tags.factory.TagCreationPattern;&lt;br /&gt;
import org.rifidi.tags.factory.TagFactory;&lt;br /&gt;
import org.rifidi.tags.id.TagType;&lt;br /&gt;
import org.rifidi.tags.impl.RifidiTag;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This class demonstrates how to use the Rifidi Engine RMI API to create a&lt;br /&gt;
 * virtual reader and add tags to it.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public class RifidiClass {&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The reader manager - the service that controls the virtual RFID readers&lt;br /&gt;
	 */&lt;br /&gt;
	private ReaderManager readerManager;&lt;br /&gt;
&lt;br /&gt;
	public RifidiClass() {&lt;br /&gt;
		// tell the service registry to inject dependencies into this object&lt;br /&gt;
		ServiceRegistry.getInstance().service(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private void startReader() {&lt;br /&gt;
		try {&lt;br /&gt;
&lt;br /&gt;
			/** The IP address of the virtual reader */&lt;br /&gt;
			String READER_IP = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
			/** The port of the virtual reader */&lt;br /&gt;
			int READER_PORT = 20000;&lt;br /&gt;
			String READER_NAME = &amp;quot;alien_test&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			// The GeneralReaderPropertyHolder is the object that defines a new&lt;br /&gt;
			// virtual reader to create&lt;br /&gt;
			GeneralReaderPropertyHolder readerProperties = new GeneralReaderPropertyHolder();&lt;br /&gt;
			readerProperties&lt;br /&gt;
					.setReaderClassName(&amp;quot;org.rifidi.emulator.reader.alien.module.AlienReaderModule&amp;quot;);&lt;br /&gt;
			readerProperties.setNumAntennas(2);&lt;br /&gt;
			readerProperties.setReaderName(READER_NAME);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;inet_address&amp;quot;, READER_IP + &amp;quot;:&amp;quot;&lt;br /&gt;
					+ READER_PORT);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;heartbeat_address&amp;quot;, READER_IP&lt;br /&gt;
					+ &amp;quot;:54321&amp;quot;);&lt;br /&gt;
			readerProperties.setNumGPIs(4);&lt;br /&gt;
			readerProperties.setNumGPOs(8);&lt;br /&gt;
&lt;br /&gt;
			// create the virtual reader on the remote engine&lt;br /&gt;
			readerManager.createReader(readerProperties);&lt;br /&gt;
&lt;br /&gt;
			// turn the reader on so that you can connect to it from a client&lt;br /&gt;
			// (e.g. telnet)&lt;br /&gt;
			readerManager.start(READER_NAME);&lt;br /&gt;
&lt;br /&gt;
			// The TagCreationPattern is the object that defines how to create a&lt;br /&gt;
			// batch of tags&lt;br /&gt;
			TagCreationPattern tagPattern = new TagCreationPattern();&lt;br /&gt;
			tagPattern.setNumberOfTags(5);&lt;br /&gt;
			tagPattern.setTagGeneration(TagGen.GEN2);&lt;br /&gt;
			tagPattern.setTagType(TagType.SGTIN96);&lt;br /&gt;
&lt;br /&gt;
			// uses the TagFactory to generate some new tags&lt;br /&gt;
			ArrayList&amp;lt;RifidiTag&amp;gt; tags = TagFactory.generateTags(tagPattern);&lt;br /&gt;
&lt;br /&gt;
			// Set the Unique IDs for each of the tags. This is *not* the EPC.&lt;br /&gt;
			// The UniqueID is the ID used internally to differentiate between&lt;br /&gt;
			// tags.&lt;br /&gt;
			long id = 1;&lt;br /&gt;
			for (RifidiTag tag : tags) {&lt;br /&gt;
				tag.setTagEntitiyID(id++);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add the tags to the virtual reader&lt;br /&gt;
			readerManager.addTags(READER_NAME, 0, new HashSet&amp;lt;RifidiTag&amp;gt;(tags));&lt;br /&gt;
&lt;br /&gt;
			// sleep for 500 miliseconds&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
&lt;br /&gt;
			/*&lt;br /&gt;
			 * The next bit of code is &amp;quot;client&amp;quot; code. It is equivalent to&lt;br /&gt;
			 * connecting to an alien reader over telnet and seding the 'get&lt;br /&gt;
			 * taglist' command. It is only shown here to demonstrate that the&lt;br /&gt;
			 * tags that reader has been turned on and tags were added&lt;br /&gt;
			 * successfully.&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			// create a new socket connection to the reader&lt;br /&gt;
			Socket connection = new Socket(READER_IP, READER_PORT);&lt;br /&gt;
&lt;br /&gt;
			BufferedReader in = new BufferedReader(new InputStreamReader(&lt;br /&gt;
					connection.getInputStream()));&lt;br /&gt;
			PrintWriter out = new PrintWriter(connection.getOutputStream());&lt;br /&gt;
&lt;br /&gt;
			// send username and password&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			out.write(&amp;quot;alien\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
			out.write(&amp;quot;password\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
&lt;br /&gt;
			// send get taglist command&lt;br /&gt;
			out.write(&amp;quot;t\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			String returnVal = readFromReader(in);&lt;br /&gt;
&lt;br /&gt;
			// print tag list coming back from reader&lt;br /&gt;
			System.out.println(returnVal);&lt;br /&gt;
		} catch (Exception e) {&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method reads from the socket.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param inBuf&lt;br /&gt;
	 * @return The string that was read&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 */&lt;br /&gt;
	public String readFromReader(BufferedReader inBuf) throws IOException {&lt;br /&gt;
		StringBuffer buf = new StringBuffer();&lt;br /&gt;
		int ch = inBuf.read();&lt;br /&gt;
		while ((char) ch != '\0') {&lt;br /&gt;
			buf.append((char) ch);&lt;br /&gt;
			ch = inBuf.read();&lt;br /&gt;
		}&lt;br /&gt;
		return buf.toString();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method is called by the service registry to inject the ReaderManager&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param readerManager&lt;br /&gt;
	 */&lt;br /&gt;
	@Inject&lt;br /&gt;
	public void setReaderManager(ReaderManager readerManager) {&lt;br /&gt;
		this.readerManager = readerManager;&lt;br /&gt;
		// start the program now that we know the readerManager has been&lt;br /&gt;
		// injected.&lt;br /&gt;
		startReader();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Edit the Activator=&lt;br /&gt;
The Activator is the class that the OSGi framework uses to start and stop the bundle that you wrote.  The start() method is called when your bundle is activated, and the stop() method is called when  the bundle is deactivated.  For an introduction to OSGi see [http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html this article].  &lt;br /&gt;
&lt;br /&gt;
Although this is a bad idea for production code, for the sake of simplicity, the start() method in the activator for this project starts the hello world class.  This is the activator for the bundle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;package testproj;&lt;br /&gt;
&lt;br /&gt;
import org.osgi.framework.BundleActivator;&lt;br /&gt;
import org.osgi.framework.BundleContext;&lt;br /&gt;
&lt;br /&gt;
import testproj.RifidiClass;&lt;br /&gt;
&lt;br /&gt;
public class Activator implements BundleActivator {&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * &lt;br /&gt;
	 * @see&lt;br /&gt;
	 * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext&lt;br /&gt;
	 * )&lt;br /&gt;
	 */&lt;br /&gt;
	public void start(BundleContext context) throws Exception {&lt;br /&gt;
		Thread t = new Thread(new TestRunner(), &amp;quot;Rifidi Hello World Thread&amp;quot;);&lt;br /&gt;
		t.start();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * &lt;br /&gt;
	 * @see&lt;br /&gt;
	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void stop(BundleContext context) throws Exception {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Run the program in a separate thread so we don't occupy the OSGi starter&lt;br /&gt;
	 * thread.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
	 * &lt;br /&gt;
	 */&lt;br /&gt;
	private class TestRunner implements Runnable {&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		public void run() {&lt;br /&gt;
			new RifidiClass();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Run the program=&lt;br /&gt;
To run this program from Eclipse, you need to create a new Run Configuration.&lt;br /&gt;
# Click Run-&amp;gt;Run Configurations&lt;br /&gt;
# Double click on OSGi Framework on the tree on the left&lt;br /&gt;
# Select the required bundles. The 'bundles' list displays a list of the bundles that will be activated when you run the program.  You only want the bundles selected that are required.&lt;br /&gt;
## Click 'Deselct All'&lt;br /&gt;
## Check the bundle that you just created.&lt;br /&gt;
## Select 'Add Required Bundles'&lt;br /&gt;
#Click 'Run'&lt;br /&gt;
&lt;br /&gt;
You should see alot of output in the console, and at the bottom of the output, you should see the tags that you &amp;quot;client&amp;quot; got from the reader:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tag:304A 37DA 04A4 4927 D1C8 0775, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:3008 26FD CCAC 1E53 612D 56EB, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:302E 5243 7D73 9CEF 1E8A 08FA, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:307A 11F3 960A B58C 7454 B248, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:308C 5BD0 BA14 CB02 55D4 89D5, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Using_the_Engine_API</id>
		<title>Using the Engine API</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Using_the_Engine_API"/>
				<updated>2010-01-27T15:46:00Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Create a new OSGi bundle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:developerDoc]][[Category:EmulatorDoc]]&lt;br /&gt;
This page describes how to create an instance of the Rifidi engine, create readers, and add and remove tags from that engine all programatically via RMI.  It is a tutorial for creating a &amp;quot;hello world&amp;quot; Rifidi application just to show you how the engine works.  In production code, however, you shouldn't run the program from the activator.&lt;br /&gt;
=Download the source code=&lt;br /&gt;
In order to use the Engine API, you will first need to download the core rifidi plugins from svn.  See [[Rifidi:Source_Code|Running Rifidi from Source]] for instructions on how to do this&lt;br /&gt;
=Create a new OSGi bundle=&lt;br /&gt;
Because Rifidi is OSGi based, all code must be written inside an OSGi bundle.  The thing  you will need to create a new OSGi bundle for your code to run in.  To do this, follow the same steps as in [[Create a new reader project]].  You do not need to add the project to svn.  &lt;br /&gt;
&lt;br /&gt;
For this example, you will want to declare dependencies on the following plugins:&lt;br /&gt;
* org.rifidi.emulator&lt;br /&gt;
* org.rifidi.services&lt;br /&gt;
* org.rifidi.tags&lt;br /&gt;
* org.rifidi.emulator.reader.alien&lt;br /&gt;
&lt;br /&gt;
=Create a program=&lt;br /&gt;
# Create a new package.  &lt;br /&gt;
## Right click on the package found in the src directory.&lt;br /&gt;
## Select new package&lt;br /&gt;
## Give the package a name and select Finish&lt;br /&gt;
# Create a new class&lt;br /&gt;
## Right Click on the new package&lt;br /&gt;
## Select new class&lt;br /&gt;
## Give the class a name and click finish&lt;br /&gt;
=Write the Hello World Application=&lt;br /&gt;
&amp;lt;pre&amp;gt;package testproj;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
&lt;br /&gt;
import org.rifidi.emulator.manager.ReaderManager;&lt;br /&gt;
import org.rifidi.emulator.reader.module.GeneralReaderPropertyHolder;&lt;br /&gt;
import org.rifidi.services.annotations.Inject;&lt;br /&gt;
import org.rifidi.services.registry.ServiceRegistry;&lt;br /&gt;
import org.rifidi.tags.enums.TagGen;&lt;br /&gt;
import org.rifidi.tags.factory.TagCreationPattern;&lt;br /&gt;
import org.rifidi.tags.factory.TagFactory;&lt;br /&gt;
import org.rifidi.tags.id.TagType;&lt;br /&gt;
import org.rifidi.tags.impl.RifidiTag;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This class demonstrates how to use the Rifidi Engine RMI API to create a&lt;br /&gt;
 * virtual reader and add tags to it.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public class RifidiClass {&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The reader manager - the service that controls the virtual RFID readers&lt;br /&gt;
	 */&lt;br /&gt;
	private ReaderManager readerManager;&lt;br /&gt;
&lt;br /&gt;
	public RifidiClass() {&lt;br /&gt;
		// tell the service registry to inject dependencies into this object&lt;br /&gt;
		ServiceRegistry.getInstance().service(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private void startReader() {&lt;br /&gt;
		try {&lt;br /&gt;
&lt;br /&gt;
			/** The IP address of the virtual reader */&lt;br /&gt;
			String READER_IP = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
			/** The port of the virtual reader */&lt;br /&gt;
			int READER_PORT = 20000;&lt;br /&gt;
			String READER_NAME = &amp;quot;alien_test&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			// The GeneralReaderPropertyHolder is the object that defines a new&lt;br /&gt;
			// virtual reader to create&lt;br /&gt;
			GeneralReaderPropertyHolder readerProperties = new GeneralReaderPropertyHolder();&lt;br /&gt;
			readerProperties&lt;br /&gt;
					.setReaderClassName(&amp;quot;org.rifidi.emulator.reader.alien.module.AlienReaderModule&amp;quot;);&lt;br /&gt;
			readerProperties.setNumAntennas(2);&lt;br /&gt;
			readerProperties.setReaderName(READER_NAME);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;inet_address&amp;quot;, READER_IP + &amp;quot;:&amp;quot;&lt;br /&gt;
					+ READER_PORT);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;heartbeat_address&amp;quot;, READER_IP&lt;br /&gt;
					+ &amp;quot;:54321&amp;quot;);&lt;br /&gt;
			readerProperties.setNumGPIs(4);&lt;br /&gt;
			readerProperties.setNumGPOs(8);&lt;br /&gt;
&lt;br /&gt;
			// create the virtual reader on the remote engine&lt;br /&gt;
			readerManager.createReader(readerProperties);&lt;br /&gt;
&lt;br /&gt;
			// turn the reader on so that you can connect to it from a client&lt;br /&gt;
			// (e.g. telnet)&lt;br /&gt;
			readerManager.start(READER_NAME);&lt;br /&gt;
&lt;br /&gt;
			// The TagCreationPattern is the object that defines how to create a&lt;br /&gt;
			// batch of tags&lt;br /&gt;
			TagCreationPattern tagPattern = new TagCreationPattern();&lt;br /&gt;
			tagPattern.setNumberOfTags(5);&lt;br /&gt;
			tagPattern.setTagGeneration(TagGen.GEN2);&lt;br /&gt;
			tagPattern.setTagType(TagType.SGTIN96);&lt;br /&gt;
&lt;br /&gt;
			// uses the TagFactory to generate some new tags&lt;br /&gt;
			ArrayList&amp;lt;RifidiTag&amp;gt; tags = TagFactory.generateTags(tagPattern);&lt;br /&gt;
&lt;br /&gt;
			// Set the Unique IDs for each of the tags. This is *not* the EPC.&lt;br /&gt;
			// The UniqueID is the ID used internally to differentiate between&lt;br /&gt;
			// tags.&lt;br /&gt;
			long id = 1;&lt;br /&gt;
			for (RifidiTag tag : tags) {&lt;br /&gt;
				tag.setTagEntitiyID(id++);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add the tags to the virtual reader&lt;br /&gt;
			readerManager.addTags(READER_NAME, 0, new HashSet&amp;lt;RifidiTag&amp;gt;(tags));&lt;br /&gt;
&lt;br /&gt;
			// sleep for 500 miliseconds&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
&lt;br /&gt;
			/*&lt;br /&gt;
			 * The next bit of code is &amp;quot;client&amp;quot; code. It is equivalent to&lt;br /&gt;
			 * connecting to an alien reader over telnet and seding the 'get&lt;br /&gt;
			 * taglist' command. It is only shown here to demonstrate that the&lt;br /&gt;
			 * tags that reader has been turned on and tags were added&lt;br /&gt;
			 * successfully.&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			// create a new socket connection to the reader&lt;br /&gt;
			Socket connection = new Socket(READER_IP, READER_PORT);&lt;br /&gt;
&lt;br /&gt;
			BufferedReader in = new BufferedReader(new InputStreamReader(&lt;br /&gt;
					connection.getInputStream()));&lt;br /&gt;
			PrintWriter out = new PrintWriter(connection.getOutputStream());&lt;br /&gt;
&lt;br /&gt;
			// send username and password&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			out.write(&amp;quot;alien\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
			out.write(&amp;quot;password\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
&lt;br /&gt;
			// send get taglist command&lt;br /&gt;
			out.write(&amp;quot;t\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			String returnVal = readFromReader(in);&lt;br /&gt;
&lt;br /&gt;
			// print tag list coming back from reader&lt;br /&gt;
			System.out.println(returnVal);&lt;br /&gt;
		} catch (Exception e) {&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method reads from the socket.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param inBuf&lt;br /&gt;
	 * @return The string that was read&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 */&lt;br /&gt;
	public String readFromReader(BufferedReader inBuf) throws IOException {&lt;br /&gt;
		StringBuffer buf = new StringBuffer();&lt;br /&gt;
		int ch = inBuf.read();&lt;br /&gt;
		while ((char) ch != '\0') {&lt;br /&gt;
			buf.append((char) ch);&lt;br /&gt;
			ch = inBuf.read();&lt;br /&gt;
		}&lt;br /&gt;
		return buf.toString();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method is called by the service registry to inject the ReaderManager&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param readerManager&lt;br /&gt;
	 */&lt;br /&gt;
	@Inject&lt;br /&gt;
	public void setReaderManager(ReaderManager readerManager) {&lt;br /&gt;
		this.readerManager = readerManager;&lt;br /&gt;
		// start the program now that we know the readerManager has been&lt;br /&gt;
		// injected.&lt;br /&gt;
		startReader();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Edit the Activator=&lt;br /&gt;
The Activator is the class that the OSGi framework uses to start and stop the bundle that you wrote.  The start() method is called when your bundle is activated, and the stop() method is called when  the bundle is deactivated.  For an introduction to OSGi see [http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html this article].  &lt;br /&gt;
&lt;br /&gt;
Although this is a bad idea for production code, for the sake of simplicity, the start() method in the activator for this project starts the hello world class.  This is the activator for the bundle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package testproj;&lt;br /&gt;
&lt;br /&gt;
import org.osgi.framework.BundleActivator;&lt;br /&gt;
import org.osgi.framework.BundleContext;&lt;br /&gt;
&lt;br /&gt;
import testproj.RifidiClass;&lt;br /&gt;
&lt;br /&gt;
public class Activator implements BundleActivator {&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void start(BundleContext context) throws Exception {&lt;br /&gt;
		Thread t = new Thread(new TestRunner(), &amp;quot;Rifidi Hello World Thread&amp;quot;);&lt;br /&gt;
		t.start();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void stop(BundleContext context) throws Exception {&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private class TestRunner implements Runnable{&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		public void run() {&lt;br /&gt;
			RifidiClass rifidiClass = new RifidiClass();&lt;br /&gt;
			rifidiClass.start();&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Run the program=&lt;br /&gt;
To run this program from Eclipse, you need to create a new Run Configuration.&lt;br /&gt;
# Click Run-&amp;gt;Run Configurations&lt;br /&gt;
# Double click on OSGi Framework on the tree on the left&lt;br /&gt;
# Select the required bundles. The 'bundles' list displays a list of the bundles that will be activated when you run the program.  You only want the bundles selected that are required.&lt;br /&gt;
## Click 'Deselct All'&lt;br /&gt;
## Check the bundle that you just created.&lt;br /&gt;
## Select 'Add Required Bundles'&lt;br /&gt;
#Click 'Run'&lt;br /&gt;
&lt;br /&gt;
You should see alot of output in the console, and at the bottom of the output, you should see the tags that you &amp;quot;client&amp;quot; got from the reader:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tag:304A 37DA 04A4 4927 D1C8 0775, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:3008 26FD CCAC 1E53 612D 56EB, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:302E 5243 7D73 9CEF 1E8A 08FA, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:307A 11F3 960A B58C 7454 B248, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:308C 5BD0 BA14 CB02 55D4 89D5, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Using_the_Engine_API</id>
		<title>Using the Engine API</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Using_the_Engine_API"/>
				<updated>2010-01-27T15:45:09Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Write the Hello World Application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:developerDoc]][[Category:EmulatorDoc]]&lt;br /&gt;
This page describes how to create an instance of the Rifidi engine, create readers, and add and remove tags from that engine all programatically via RMI.  It is a tutorial for creating a &amp;quot;hello world&amp;quot; Rifidi application just to show you how the engine works.  In production code, however, you shouldn't run the program from the activator.&lt;br /&gt;
=Download the source code=&lt;br /&gt;
In order to use the Engine API, you will first need to download the core rifidi plugins from svn.  See [[Rifidi:Source_Code|Running Rifidi from Source]] for instructions on how to do this&lt;br /&gt;
=Create a new OSGi bundle=&lt;br /&gt;
Because Rifidi is OSGi based, all code must be written inside an OSGi bundle.  The thing  you will need to create a new OSGi bundle for your code to run in.  To do this, follow the same steps as in [[Create a new reader project]].  You do not need to add the project to svn.  &lt;br /&gt;
&lt;br /&gt;
For this example, you will want to declare dependencies on the following plugins:&lt;br /&gt;
* org.rifidi.emulator&lt;br /&gt;
* org.rifidi.dependencies&lt;br /&gt;
* org.rifidi.services.tags&lt;br /&gt;
* org.rifidi.emulator.reader.alien&lt;br /&gt;
&lt;br /&gt;
=Create a program=&lt;br /&gt;
# Create a new package.  &lt;br /&gt;
## Right click on the package found in the src directory.&lt;br /&gt;
## Select new package&lt;br /&gt;
## Give the package a name and select Finish&lt;br /&gt;
# Create a new class&lt;br /&gt;
## Right Click on the new package&lt;br /&gt;
## Select new class&lt;br /&gt;
## Give the class a name and click finish&lt;br /&gt;
=Write the Hello World Application=&lt;br /&gt;
&amp;lt;pre&amp;gt;package testproj;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
&lt;br /&gt;
import org.rifidi.emulator.manager.ReaderManager;&lt;br /&gt;
import org.rifidi.emulator.reader.module.GeneralReaderPropertyHolder;&lt;br /&gt;
import org.rifidi.services.annotations.Inject;&lt;br /&gt;
import org.rifidi.services.registry.ServiceRegistry;&lt;br /&gt;
import org.rifidi.tags.enums.TagGen;&lt;br /&gt;
import org.rifidi.tags.factory.TagCreationPattern;&lt;br /&gt;
import org.rifidi.tags.factory.TagFactory;&lt;br /&gt;
import org.rifidi.tags.id.TagType;&lt;br /&gt;
import org.rifidi.tags.impl.RifidiTag;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This class demonstrates how to use the Rifidi Engine RMI API to create a&lt;br /&gt;
 * virtual reader and add tags to it.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public class RifidiClass {&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The reader manager - the service that controls the virtual RFID readers&lt;br /&gt;
	 */&lt;br /&gt;
	private ReaderManager readerManager;&lt;br /&gt;
&lt;br /&gt;
	public RifidiClass() {&lt;br /&gt;
		// tell the service registry to inject dependencies into this object&lt;br /&gt;
		ServiceRegistry.getInstance().service(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private void startReader() {&lt;br /&gt;
		try {&lt;br /&gt;
&lt;br /&gt;
			/** The IP address of the virtual reader */&lt;br /&gt;
			String READER_IP = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
			/** The port of the virtual reader */&lt;br /&gt;
			int READER_PORT = 20000;&lt;br /&gt;
			String READER_NAME = &amp;quot;alien_test&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			// The GeneralReaderPropertyHolder is the object that defines a new&lt;br /&gt;
			// virtual reader to create&lt;br /&gt;
			GeneralReaderPropertyHolder readerProperties = new GeneralReaderPropertyHolder();&lt;br /&gt;
			readerProperties&lt;br /&gt;
					.setReaderClassName(&amp;quot;org.rifidi.emulator.reader.alien.module.AlienReaderModule&amp;quot;);&lt;br /&gt;
			readerProperties.setNumAntennas(2);&lt;br /&gt;
			readerProperties.setReaderName(READER_NAME);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;inet_address&amp;quot;, READER_IP + &amp;quot;:&amp;quot;&lt;br /&gt;
					+ READER_PORT);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;heartbeat_address&amp;quot;, READER_IP&lt;br /&gt;
					+ &amp;quot;:54321&amp;quot;);&lt;br /&gt;
			readerProperties.setNumGPIs(4);&lt;br /&gt;
			readerProperties.setNumGPOs(8);&lt;br /&gt;
&lt;br /&gt;
			// create the virtual reader on the remote engine&lt;br /&gt;
			readerManager.createReader(readerProperties);&lt;br /&gt;
&lt;br /&gt;
			// turn the reader on so that you can connect to it from a client&lt;br /&gt;
			// (e.g. telnet)&lt;br /&gt;
			readerManager.start(READER_NAME);&lt;br /&gt;
&lt;br /&gt;
			// The TagCreationPattern is the object that defines how to create a&lt;br /&gt;
			// batch of tags&lt;br /&gt;
			TagCreationPattern tagPattern = new TagCreationPattern();&lt;br /&gt;
			tagPattern.setNumberOfTags(5);&lt;br /&gt;
			tagPattern.setTagGeneration(TagGen.GEN2);&lt;br /&gt;
			tagPattern.setTagType(TagType.SGTIN96);&lt;br /&gt;
&lt;br /&gt;
			// uses the TagFactory to generate some new tags&lt;br /&gt;
			ArrayList&amp;lt;RifidiTag&amp;gt; tags = TagFactory.generateTags(tagPattern);&lt;br /&gt;
&lt;br /&gt;
			// Set the Unique IDs for each of the tags. This is *not* the EPC.&lt;br /&gt;
			// The UniqueID is the ID used internally to differentiate between&lt;br /&gt;
			// tags.&lt;br /&gt;
			long id = 1;&lt;br /&gt;
			for (RifidiTag tag : tags) {&lt;br /&gt;
				tag.setTagEntitiyID(id++);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add the tags to the virtual reader&lt;br /&gt;
			readerManager.addTags(READER_NAME, 0, new HashSet&amp;lt;RifidiTag&amp;gt;(tags));&lt;br /&gt;
&lt;br /&gt;
			// sleep for 500 miliseconds&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
&lt;br /&gt;
			/*&lt;br /&gt;
			 * The next bit of code is &amp;quot;client&amp;quot; code. It is equivalent to&lt;br /&gt;
			 * connecting to an alien reader over telnet and seding the 'get&lt;br /&gt;
			 * taglist' command. It is only shown here to demonstrate that the&lt;br /&gt;
			 * tags that reader has been turned on and tags were added&lt;br /&gt;
			 * successfully.&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			// create a new socket connection to the reader&lt;br /&gt;
			Socket connection = new Socket(READER_IP, READER_PORT);&lt;br /&gt;
&lt;br /&gt;
			BufferedReader in = new BufferedReader(new InputStreamReader(&lt;br /&gt;
					connection.getInputStream()));&lt;br /&gt;
			PrintWriter out = new PrintWriter(connection.getOutputStream());&lt;br /&gt;
&lt;br /&gt;
			// send username and password&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			out.write(&amp;quot;alien\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
			out.write(&amp;quot;password\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
&lt;br /&gt;
			// send get taglist command&lt;br /&gt;
			out.write(&amp;quot;t\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			String returnVal = readFromReader(in);&lt;br /&gt;
&lt;br /&gt;
			// print tag list coming back from reader&lt;br /&gt;
			System.out.println(returnVal);&lt;br /&gt;
		} catch (Exception e) {&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method reads from the socket.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param inBuf&lt;br /&gt;
	 * @return The string that was read&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 */&lt;br /&gt;
	public String readFromReader(BufferedReader inBuf) throws IOException {&lt;br /&gt;
		StringBuffer buf = new StringBuffer();&lt;br /&gt;
		int ch = inBuf.read();&lt;br /&gt;
		while ((char) ch != '\0') {&lt;br /&gt;
			buf.append((char) ch);&lt;br /&gt;
			ch = inBuf.read();&lt;br /&gt;
		}&lt;br /&gt;
		return buf.toString();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method is called by the service registry to inject the ReaderManager&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param readerManager&lt;br /&gt;
	 */&lt;br /&gt;
	@Inject&lt;br /&gt;
	public void setReaderManager(ReaderManager readerManager) {&lt;br /&gt;
		this.readerManager = readerManager;&lt;br /&gt;
		// start the program now that we know the readerManager has been&lt;br /&gt;
		// injected.&lt;br /&gt;
		startReader();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Edit the Activator=&lt;br /&gt;
The Activator is the class that the OSGi framework uses to start and stop the bundle that you wrote.  The start() method is called when your bundle is activated, and the stop() method is called when  the bundle is deactivated.  For an introduction to OSGi see [http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html this article].  &lt;br /&gt;
&lt;br /&gt;
Although this is a bad idea for production code, for the sake of simplicity, the start() method in the activator for this project starts the hello world class.  This is the activator for the bundle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package testproj;&lt;br /&gt;
&lt;br /&gt;
import org.osgi.framework.BundleActivator;&lt;br /&gt;
import org.osgi.framework.BundleContext;&lt;br /&gt;
&lt;br /&gt;
import testproj.RifidiClass;&lt;br /&gt;
&lt;br /&gt;
public class Activator implements BundleActivator {&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void start(BundleContext context) throws Exception {&lt;br /&gt;
		Thread t = new Thread(new TestRunner(), &amp;quot;Rifidi Hello World Thread&amp;quot;);&lt;br /&gt;
		t.start();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void stop(BundleContext context) throws Exception {&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private class TestRunner implements Runnable{&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		public void run() {&lt;br /&gt;
			RifidiClass rifidiClass = new RifidiClass();&lt;br /&gt;
			rifidiClass.start();&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Run the program=&lt;br /&gt;
To run this program from Eclipse, you need to create a new Run Configuration.&lt;br /&gt;
# Click Run-&amp;gt;Run Configurations&lt;br /&gt;
# Double click on OSGi Framework on the tree on the left&lt;br /&gt;
# Select the required bundles. The 'bundles' list displays a list of the bundles that will be activated when you run the program.  You only want the bundles selected that are required.&lt;br /&gt;
## Click 'Deselct All'&lt;br /&gt;
## Check the bundle that you just created.&lt;br /&gt;
## Select 'Add Required Bundles'&lt;br /&gt;
#Click 'Run'&lt;br /&gt;
&lt;br /&gt;
You should see alot of output in the console, and at the bottom of the output, you should see the tags that you &amp;quot;client&amp;quot; got from the reader:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tag:304A 37DA 04A4 4927 D1C8 0775, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:3008 26FD CCAC 1E53 612D 56EB, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:302E 5243 7D73 9CEF 1E8A 08FA, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:307A 11F3 960A B58C 7454 B248, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:308C 5BD0 BA14 CB02 55D4 89D5, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Using_the_Engine_API</id>
		<title>Using the Engine API</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Using_the_Engine_API"/>
				<updated>2010-01-27T15:28:08Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Edit the Activator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:developerDoc]][[Category:EmulatorDoc]]&lt;br /&gt;
This page describes how to create an instance of the Rifidi engine, create readers, and add and remove tags from that engine all programatically via RMI.  It is a tutorial for creating a &amp;quot;hello world&amp;quot; Rifidi application just to show you how the engine works.  In production code, however, you shouldn't run the program from the activator.&lt;br /&gt;
=Download the source code=&lt;br /&gt;
In order to use the Engine API, you will first need to download the core rifidi plugins from svn.  See [[Rifidi:Source_Code|Running Rifidi from Source]] for instructions on how to do this&lt;br /&gt;
=Create a new OSGi bundle=&lt;br /&gt;
Because Rifidi is OSGi based, all code must be written inside an OSGi bundle.  The thing  you will need to create a new OSGi bundle for your code to run in.  To do this, follow the same steps as in [[Create a new reader project]].  You do not need to add the project to svn.  &lt;br /&gt;
&lt;br /&gt;
For this example, you will want to declare dependencies on the following plugins:&lt;br /&gt;
* org.rifidi.emulator&lt;br /&gt;
* org.rifidi.dependencies&lt;br /&gt;
* org.rifidi.services.tags&lt;br /&gt;
* org.rifidi.emulator.reader.alien&lt;br /&gt;
&lt;br /&gt;
=Create a program=&lt;br /&gt;
# Create a new package.  &lt;br /&gt;
## Right click on the package found in the src directory.&lt;br /&gt;
## Select new package&lt;br /&gt;
## Give the package a name and select Finish&lt;br /&gt;
# Create a new class&lt;br /&gt;
## Right Click on the new package&lt;br /&gt;
## Select new class&lt;br /&gt;
## Give the class a name and click finish&lt;br /&gt;
=Write the Hello World Application=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package testproj.program;&lt;br /&gt;
&lt;br /&gt;
import gnu.cajo.utils.extra.TransparentItemProxy;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
&lt;br /&gt;
import org.rifidi.emulator.reader.module.GeneralReaderPropertyHolder;&lt;br /&gt;
import org.rifidi.emulator.rmi.server.ReaderModuleManagerInterface;&lt;br /&gt;
import org.rifidi.emulator.rmi.server.RifidiManager;&lt;br /&gt;
import org.rifidi.emulator.rmi.server.RifidiManagerInterface;&lt;br /&gt;
import org.rifidi.services.tags.enums.TagGen;&lt;br /&gt;
import org.rifidi.services.tags.factory.TagCreationPattern;&lt;br /&gt;
import org.rifidi.services.tags.factory.TagFactory;&lt;br /&gt;
import org.rifidi.services.tags.id.TagType;&lt;br /&gt;
import org.rifidi.services.tags.impl.RifidiTag;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This class demonstrates how to use the Rifidi Engine RMI API to create a&lt;br /&gt;
 * virtual reader and add tags to it.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public class RifidiClass {&lt;br /&gt;
&lt;br /&gt;
	public void HelloWorld() {&lt;br /&gt;
		try {&lt;br /&gt;
&lt;br /&gt;
			/**&lt;br /&gt;
			 * The IP address of the virtual reader&lt;br /&gt;
			 */&lt;br /&gt;
			String READER_IP = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			/**&lt;br /&gt;
			 * The port of the virtual reader&lt;br /&gt;
			 */&lt;br /&gt;
			int READER_PORT = 20000;&lt;br /&gt;
&lt;br /&gt;
			/**&lt;br /&gt;
			 * The IP of the RMI server&lt;br /&gt;
			 */&lt;br /&gt;
			String RMI_IP = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			/**&lt;br /&gt;
			 * The IP of the RMI port&lt;br /&gt;
			 */&lt;br /&gt;
			int RMI_PORT = 1198;&lt;br /&gt;
&lt;br /&gt;
			// Start up the RMI Server&lt;br /&gt;
			RifidiManager.startManager(RMI_IP, RMI_PORT);&lt;br /&gt;
&lt;br /&gt;
			// Get the remote object that allows you to create and destroy&lt;br /&gt;
			// virtual readers from the RMI registry&lt;br /&gt;
			RifidiManagerInterface managerInterface = (RifidiManagerInterface) TransparentItemProxy&lt;br /&gt;
					.getItem(&amp;quot;//&amp;quot; + RMI_IP + &amp;quot;:&amp;quot; + RMI_PORT + &amp;quot;/&amp;quot;&lt;br /&gt;
							+ RifidiManager.URL,&lt;br /&gt;
							new Class[] { RifidiManagerInterface.class });&lt;br /&gt;
&lt;br /&gt;
			// The GeneralReaderPropertyHolder is the object that defines a new&lt;br /&gt;
			// virtual reader to create&lt;br /&gt;
			GeneralReaderPropertyHolder readerProperties = new GeneralReaderPropertyHolder();&lt;br /&gt;
			readerProperties&lt;br /&gt;
					.setReaderClassName(&amp;quot;org.rifidi.emulator.reader.alien.module.AlienReaderModule&amp;quot;);&lt;br /&gt;
			readerProperties.setNumAntennas(2);&lt;br /&gt;
			readerProperties.setReaderName(&amp;quot;alien_test&amp;quot;);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;inet_address&amp;quot;, READER_IP + &amp;quot;:&amp;quot;&lt;br /&gt;
					+ READER_PORT);&lt;br /&gt;
			readerProperties.setProperty(&amp;quot;heartbeat_address&amp;quot;, READER_IP&lt;br /&gt;
					+ &amp;quot;:54321&amp;quot;);&lt;br /&gt;
			readerProperties.setNumGPIs(4);&lt;br /&gt;
			readerProperties.setNumGPOs(8);&lt;br /&gt;
&lt;br /&gt;
			// create the virtual reader on the remote engine&lt;br /&gt;
			managerInterface.createReader(readerProperties);&lt;br /&gt;
&lt;br /&gt;
			// get the remote object that allows you to control the virtual&lt;br /&gt;
			// reader&lt;br /&gt;
			ReaderModuleManagerInterface remoteVirtualReader = (ReaderModuleManagerInterface) TransparentItemProxy&lt;br /&gt;
					.getItem(&amp;quot;//&amp;quot; + RMI_IP + &amp;quot;:&amp;quot; + RMI_PORT + &amp;quot;/&amp;quot;&lt;br /&gt;
							+ readerProperties.getReaderName(),&lt;br /&gt;
							new Class[] { ReaderModuleManagerInterface.class });&lt;br /&gt;
&lt;br /&gt;
			// turn the reader on so that you can connect to it from a client&lt;br /&gt;
			// (e.g. telnet)&lt;br /&gt;
			remoteVirtualReader.turnReaderOn();&lt;br /&gt;
&lt;br /&gt;
			// The TagCreationPattern is the object that defines how to create a&lt;br /&gt;
			// batch of tags&lt;br /&gt;
			TagCreationPattern tagPattern = new TagCreationPattern();&lt;br /&gt;
			tagPattern.setNumberOfTags(5);&lt;br /&gt;
			tagPattern.setTagGeneration(TagGen.GEN2);&lt;br /&gt;
			tagPattern.setTagType(TagType.SGTIN96);&lt;br /&gt;
&lt;br /&gt;
			// uses the TagFactory to generate some new tags&lt;br /&gt;
			ArrayList&amp;lt;RifidiTag&amp;gt; tags = TagFactory.generateTags(tagPattern);&lt;br /&gt;
&lt;br /&gt;
			// Set the Unique IDs for each of the tags. This is *not* the EPC.&lt;br /&gt;
			// The UniqueID is the ID used internally to differentiate between&lt;br /&gt;
			// tags.&lt;br /&gt;
			long id = 1;&lt;br /&gt;
			for (RifidiTag tag : tags) {&lt;br /&gt;
				tag.setTagEntitiyID(id++);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add the tags to the virtual reader&lt;br /&gt;
			remoteVirtualReader.addTags(0, tags);&lt;br /&gt;
&lt;br /&gt;
			// sleep for 500 miliseconds&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
&lt;br /&gt;
			/*&lt;br /&gt;
			 * The next bit of code is &amp;quot;client&amp;quot; code. It is equivalent to&lt;br /&gt;
			 * connecting to an alien reader over telnet and seding the 'get&lt;br /&gt;
			 * taglist' command. It is only shown here to demonstrate that the&lt;br /&gt;
			 * tags that reader has been turned on and tags were added&lt;br /&gt;
			 * successfully.&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			// create a new socket connection to the reader&lt;br /&gt;
			Socket connection = new Socket(READER_IP, READER_PORT);&lt;br /&gt;
&lt;br /&gt;
			BufferedReader in = new BufferedReader(new InputStreamReader(&lt;br /&gt;
					connection.getInputStream()));&lt;br /&gt;
			PrintWriter out = new PrintWriter(connection.getOutputStream());&lt;br /&gt;
&lt;br /&gt;
			// send username and password&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			out.write(&amp;quot;alien\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
			Thread.sleep(500);&lt;br /&gt;
			out.write(&amp;quot;password\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			System.out.println(readFromReader(in));&lt;br /&gt;
&lt;br /&gt;
			// send get taglist command&lt;br /&gt;
			out.write(&amp;quot;t\n&amp;quot;);&lt;br /&gt;
			out.flush();&lt;br /&gt;
			String returnVal = readFromReader(in);&lt;br /&gt;
&lt;br /&gt;
			// print tag list coming back from reader&lt;br /&gt;
			System.out.println(returnVal);&lt;br /&gt;
		} catch (Exception e) {&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This method reads from the socket.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param inBuf&lt;br /&gt;
	 * @return The string that was read&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 */&lt;br /&gt;
	public String readFromReader(BufferedReader inBuf) throws IOException {&lt;br /&gt;
		StringBuffer buf = new StringBuffer();&lt;br /&gt;
		int ch = inBuf.read();&lt;br /&gt;
		while ((char) ch != '\0') {&lt;br /&gt;
			buf.append((char) ch);&lt;br /&gt;
			ch = inBuf.read();&lt;br /&gt;
		}&lt;br /&gt;
		return buf.toString();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Edit the Activator=&lt;br /&gt;
The Activator is the class that the OSGi framework uses to start and stop the bundle that you wrote.  The start() method is called when your bundle is activated, and the stop() method is called when  the bundle is deactivated.  For an introduction to OSGi see [http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html this article].  &lt;br /&gt;
&lt;br /&gt;
Although this is a bad idea for production code, for the sake of simplicity, the start() method in the activator for this project starts the hello world class.  This is the activator for the bundle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package testproj;&lt;br /&gt;
&lt;br /&gt;
import org.osgi.framework.BundleActivator;&lt;br /&gt;
import org.osgi.framework.BundleContext;&lt;br /&gt;
&lt;br /&gt;
import testproj.RifidiClass;&lt;br /&gt;
&lt;br /&gt;
public class Activator implements BundleActivator {&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void start(BundleContext context) throws Exception {&lt;br /&gt;
		Thread t = new Thread(new TestRunner(), &amp;quot;Rifidi Hello World Thread&amp;quot;);&lt;br /&gt;
		t.start();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void stop(BundleContext context) throws Exception {&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private class TestRunner implements Runnable{&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		public void run() {&lt;br /&gt;
			RifidiClass rifidiClass = new RifidiClass();&lt;br /&gt;
			rifidiClass.start();&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Run the program=&lt;br /&gt;
To run this program from Eclipse, you need to create a new Run Configuration.&lt;br /&gt;
# Click Run-&amp;gt;Run Configurations&lt;br /&gt;
# Double click on OSGi Framework on the tree on the left&lt;br /&gt;
# Select the required bundles. The 'bundles' list displays a list of the bundles that will be activated when you run the program.  You only want the bundles selected that are required.&lt;br /&gt;
## Click 'Deselct All'&lt;br /&gt;
## Check the bundle that you just created.&lt;br /&gt;
## Select 'Add Required Bundles'&lt;br /&gt;
#Click 'Run'&lt;br /&gt;
&lt;br /&gt;
You should see alot of output in the console, and at the bottom of the output, you should see the tags that you &amp;quot;client&amp;quot; got from the reader:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tag:304A 37DA 04A4 4927 D1C8 0775, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:3008 26FD CCAC 1E53 612D 56EB, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:302E 5243 7D73 9CEF 1E8A 08FA, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:307A 11F3 960A B58C 7454 B248, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
Tag:308C 5BD0 BA14 CB02 55D4 89D5, Disc:2008/11/19 12:09:20, Last:2008/11/19 12:09:21, Count:1, Ant:0, Proto:2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Database_Tutorial_Command_Provider</id>
		<title>Database Tutorial Command Provider</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Database_Tutorial_Command_Provider"/>
				<updated>2009-12-03T22:27:01Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Extra Credit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to control the database application, you can use a CommandProvider, which is a class that plugs into the eclipse osgi console and allows you to provide custom commands.&lt;br /&gt;
=Implement the CommandProvider interface=&lt;br /&gt;
The org.eclipse.osgi.framework.console.CommandProvider interface allows you to write methods which are exposed as commands in the eclipse console. By convention, any methods that you want to expose should start with an underscore (i.e. '_'), should have a return type of Object and should take in a CommandInterpreter (which allows you to get input and write output to the eclipse console ).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Start the application&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param intp&lt;br /&gt;
	 * @return&lt;br /&gt;
	 */&lt;br /&gt;
	public Object _dbstart(CommandInterpreter intp) {&lt;br /&gt;
		app.start();&lt;br /&gt;
		return null;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Stop the application&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param intp&lt;br /&gt;
	 * @return&lt;br /&gt;
	 */&lt;br /&gt;
	public Object _dbstop(CommandInterpreter intp) {&lt;br /&gt;
		app.stop();&lt;br /&gt;
		return null;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Dependency Injection==&lt;br /&gt;
Like the other objects we have create so far, we are going to use dependency injection to give the CommandProvider access to the DBApp object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Called by spring&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param app&lt;br /&gt;
	 *            the app to set&lt;br /&gt;
	 */&lt;br /&gt;
	public void setApp(DBApp app) {&lt;br /&gt;
		this.app = app;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Extra Credit=&lt;br /&gt;
Here are some extra things that could be added to this class to extend functionality.&lt;br /&gt;
==A command that lists the last five tag reads==&lt;br /&gt;
Right now the console only allows you to start and stop the application. However, it could provide richer functionality. For example, suppose you wrote a method like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public Object _lastFiveTagReads(CommandInterpreter intp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This method might print out the last five tag reads seen by the reader. &lt;br /&gt;
==Control the DBApp with RMI instead of the console==&lt;br /&gt;
The Eclipse Console is one way to control the DB Application, but it has its pitfalls. For example, if the edge server is started up as a background service, you won't have access to the console. In this case, you may want a more robust way to control the application. You could do this any number of ways, one of which would be to use RMI (Remote Method Invocation). This would allow clients in the network to issue commands to your application.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php/Database_Tutorial_Data_Access_Object</id>
		<title>Database Tutorial Data Access Object</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php/Database_Tutorial_Data_Access_Object"/>
				<updated>2009-12-03T22:20:42Z</updated>
		
		<summary type="html">&lt;p&gt;Kyle: /* Properly closing the Database connection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Data Access Object is an object-oriented pattern that is often used in conjunction with databases to hide the details of interfacing with a database. In our case, it allows us to encapsulate all the work of talking with JDBC so that none of that logic is included in the DBApp class.&lt;br /&gt;
=The DAO interface=&lt;br /&gt;
The first step is to create an interface class that the DBApp can use to add new RFIDEvent objects to the database. For now, we will keep it very simple:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * This interface is implemented by Data Access Objects (DAO) that have the&lt;br /&gt;
 * ability to write to our data source.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public interface RFID_DAO {&lt;br /&gt;
&lt;br /&gt;
	/***&lt;br /&gt;
	 * Write the supplied event to the data source&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param event&lt;br /&gt;
	 */&lt;br /&gt;
	public void addRow(RFIDEvent event);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=The DAO Implementation=&lt;br /&gt;
The next step is to create an object that implements the &amp;lt;tt&amp;gt;RFID_DAO&amp;lt;/tt&amp;gt; interface and can use JDBC to write to a database.&lt;br /&gt;
==Define the table and column names==&lt;br /&gt;
To make sure that we use the same table and column names throughout the application, let's define some static final members:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	/** The name of the table to write to */&lt;br /&gt;
	private static final String TABLE = &amp;quot;rfidevents&amp;quot;;&lt;br /&gt;
	/** The name of the ID column in the table */&lt;br /&gt;
	private static final String COL_ID = &amp;quot;id&amp;quot;;&lt;br /&gt;
	/** The name of the reader column in the table */&lt;br /&gt;
	private static final String COL_READER = &amp;quot;reader&amp;quot;;&lt;br /&gt;
	/** The name of the antenna column in the table */&lt;br /&gt;
	private static final String COL_ANT = &amp;quot;antenna&amp;quot;;&lt;br /&gt;
	/** The name of the time column in the table */&lt;br /&gt;
	private static final String COL_TIME = &amp;quot;time&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Dependency Injection==&lt;br /&gt;
Like the DBApp class, the DAO should have its dependencies injected by spring. In this case, we only have one dependency:&lt;br /&gt;
;SimpleDriverDataSource&lt;br /&gt;
:This object contains the information about how to connect to a database: the JDBC driver to use, the URL of the database, and the username and pass.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method called by spring to inject the datasource. This method also opens&lt;br /&gt;
	 * up the connection to the datasource.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param ds&lt;br /&gt;
	 */&lt;br /&gt;
	public void setDataSource(SimpleDriverDataSource ds) {&lt;br /&gt;
		this.ds = ds;&lt;br /&gt;
		template = new SimpleJdbcTemplate(ds);&lt;br /&gt;
&lt;br /&gt;
		// first thing to do is to drop the table if it exists already.&lt;br /&gt;
		try {&lt;br /&gt;
			template.update(&amp;quot;drop table &amp;quot; + TABLE, new Object[] {});&lt;br /&gt;
			logger.debug(&amp;quot;RFIDEVENTS table dropped&amp;quot;);&lt;br /&gt;
		} catch (DataAccessException dae) {&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// next create the table&lt;br /&gt;
		template.update(&amp;quot;create table &amp;quot; + TABLE + &amp;quot;(&amp;quot; + COL_ID&lt;br /&gt;
				+ &amp;quot; VARCHAR(24), &amp;quot; + COL_READER + &amp;quot; VARCHAR(50),&amp;quot; + COL_ANT&lt;br /&gt;
				+ &amp;quot; INTEGER, &amp;quot; + COL_TIME + &amp;quot; TIMESTAMP)&amp;quot;, new Object[] {});&lt;br /&gt;
		logger.debug(&amp;quot;New RFIDEVENTS table created&amp;quot;);&lt;br /&gt;
		insertRFIDEvent = new SimpleJdbcInsert(ds).withTableName(TABLE);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This setter method is a bit more complicated than the one in the DBApp class. Whenever spring hands the DAO a new datasource, it needs to do some setup.&lt;br /&gt;
First, it needs to create the &amp;lt;tt&amp;gt;SimpleJdbsTemplate&amp;lt;/tt&amp;gt; which is a helper class provided by spring that simplifies JDBC database access. Next it attempts to drop the table if it has already been created. Then it tries to create the table. There are definitely more sophisticated ways to ensure that a table exists and that there are no rows in it, but this is simple enough. Finally, the setter method creates another spring helper object called SimpleJdbcInsert which (as the name implies) simplifies the process of writing a new row in the database.&lt;br /&gt;
==Add Rows==&lt;br /&gt;
The last piece of functionality that the DAO needs is to implement the addRow method from its interface.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * &lt;br /&gt;
	 * @see&lt;br /&gt;
	 * org.rifidi.edge.app.db.dao.RFIDDAO#addRow(org.rifidi.edge.app.db.domain&lt;br /&gt;
	 * .RFIDEvent)&lt;br /&gt;
	 */&lt;br /&gt;
	@Override&lt;br /&gt;
	public void addRow(RFIDEvent event) {&lt;br /&gt;
		Map&amp;lt;String, Object&amp;gt; parameters = new HashMap&amp;lt;String, Object&amp;gt;();&lt;br /&gt;
		parameters.put(COL_ID, event.getId());&lt;br /&gt;
		parameters.put(COL_READER, event.getReader());&lt;br /&gt;
		parameters.put(COL_ANT, event.getAntenna());&lt;br /&gt;
		parameters.put(COL_TIME, new Timestamp(event.getTimestamp()));&lt;br /&gt;
		insertRFIDEvent.execute(parameters);&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This method is self-evident. Whenever it is called with an RFID event object, it creates a map containing the information to be inserted and the columns to insert that data into. Then it inserts a new row into the database.&lt;br /&gt;
=Extra Credit=&lt;br /&gt;
Here are a few ideas for extra functionality that might be useful for this DAO to have&lt;br /&gt;
==Query the database==&lt;br /&gt;
This particular application only writes some basic information to the DB. One thing that you could do with the SimpleJdbcTemplate is to query the database. For example, you could write a method in the interface:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List&amp;lt;RFIDEvent&amp;gt; queryByReader(String readerID);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This method would allow an object that has access to the DAO (for example, the DBApp) to get a list of tags that has been seen by a certain reader.&lt;br /&gt;
&lt;br /&gt;
==Properly closing the Database connection==&lt;br /&gt;
This DAO does not properly shut down the JDBC connection. You could possibly add a method called &amp;lt;tt&amp;gt;close()&amp;lt;/tt&amp;gt; to the DAO interface and then let the DBApp object call this method when its stop method is called.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	</feed>