<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.transcends.co/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.transcends.co/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amesycyxa</id>
		<title>RifidiWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.transcends.co/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amesycyxa"/>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Special:Contributions/Amesycyxa"/>
		<updated>2026-06-04T16:42:07Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>https://wiki.transcends.co/index.php/Suspend_Functionality</id>
		<title>Suspend Functionality</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Suspend_Functionality"/>
				<updated>2010-11-24T10:34:02Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=Alien Reader Suspend/Resume Tests=&lt;br /&gt;
==Required Changes==&lt;br /&gt;
*Autonomous Mode&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
=LLRP Reader Suspend/Resume=&lt;br /&gt;
==Required Changes==&lt;br /&gt;
* ROSpec needs to be able to be suspended &amp;amp;amp; Resumed&lt;br /&gt;
* AISpec needs to be abled to be suspened &amp;amp;amp; Resumed&lt;br /&gt;
** The loop in AISpec that does the work should be put to sleep and made to wake up&lt;br /&gt;
* Triggers need to implement Suspend and Resume&lt;br /&gt;
** Timers need to put to sleep and know how long they slept&lt;br /&gt;
==Use Cases==&lt;br /&gt;
These use cases describe several important scenarios that occur when LLRP Readers are suspended&lt;br /&gt;
===Message processing functionality===&lt;br /&gt;
Basic functionality of LLRP Suspend/Resume, when no autonomous mode is running&lt;br /&gt;
====UseCase: Basic suspend/resume====&lt;br /&gt;
# LLRP Reader started&lt;br /&gt;
# Reader is suspended&lt;br /&gt;
# Reader is resumed&lt;br /&gt;
# LLRP Message sent to reader&lt;br /&gt;
&lt;br /&gt;
;Outcome &lt;br /&gt;
:LLRP Response message comes back from the reader as normal&lt;br /&gt;
&lt;br /&gt;
====Use Case: Suspend/Resume with a message====&lt;br /&gt;
# LLRPReader started&lt;br /&gt;
# REader is suspended&lt;br /&gt;
# GET_READER_CONFIG message sent&lt;br /&gt;
# Reader is resumed&lt;br /&gt;
# GET_READER_CONFIG_RESPONSE message is receieved&lt;br /&gt;
&lt;br /&gt;
;Outcome: &lt;br /&gt;
:GET_READER_CONFIG message is not processed until after reader is resumed.  Response is not recieved until after it is resumed&lt;br /&gt;
&lt;br /&gt;
====Use Case: Suspend/Resume with multiple messages====&lt;br /&gt;
# LLRPReader is started&lt;br /&gt;
# Reader is suspended&lt;br /&gt;
# GET_READER_CONFIG message sent&lt;br /&gt;
# GET_READER_CAPABILITEIES message sent&lt;br /&gt;
# Reader is resumed&lt;br /&gt;
# GET_READER_CONFIG_RESPONSE message is received&lt;br /&gt;
# GET_READER_CAPABILITIES_RESPONSE message is received&lt;br /&gt;
&lt;br /&gt;
;Outcome &lt;br /&gt;
:Two messages arn't processed until after reader is resumed.  Both response messages come back and are in proper order&lt;br /&gt;
&lt;br /&gt;
===ROspec Functionality===&lt;br /&gt;
&lt;br /&gt;
How Suspend and Resume would interact with ROSpecs and execution of ROSpecs&lt;br /&gt;
&lt;br /&gt;
;Prerequisites: &lt;br /&gt;
:Two Tags on Reader&lt;br /&gt;
&lt;br /&gt;
====Use Case: Reader suspend during ROSpec execution====&lt;br /&gt;
# LLRP Reader started&lt;br /&gt;
# ADD_ROSPEC message sent with a null start trigger and null stop trigger&lt;br /&gt;
# ENABLE_ROSPEC message sent&lt;br /&gt;
# START_ROSPEC message sent&lt;br /&gt;
# ROSpec Started&lt;br /&gt;
# LLRP Reader is suspended&lt;br /&gt;
# LLRP Reader is resumed&lt;br /&gt;
# STOP_ROSPEC Message sent&lt;br /&gt;
&lt;br /&gt;
;Outcome&lt;br /&gt;
:Reader stoped polling and resumed polling when it was suspended and resumed&lt;br /&gt;
&lt;br /&gt;
====Use Case: Tag added while reader suspended====&lt;br /&gt;
# LLRP Reader started&lt;br /&gt;
# ADD_ROSPEC message sent with a null start trigger and null stop trigger&lt;br /&gt;
# ENABLE_ROSPEC message sent&lt;br /&gt;
# START_ROSPEC message sent&lt;br /&gt;
# ROSpec Started&lt;br /&gt;
# LLRP Reader is suspended&lt;br /&gt;
# Tag Added and Removed&lt;br /&gt;
# LLRP Reader is resumed&lt;br /&gt;
# STOP_ROSPEC Message sent&lt;br /&gt;
&lt;br /&gt;
;Outcome&lt;br /&gt;
:Reader stoped polling and resumed polling when it was suspended and resumed.  The RO_ACCESS_REPORT does not contain the tag added in step 7.&lt;br /&gt;
&lt;br /&gt;
====Use Case: Reader suspended while executing Rospec with time-based stop triggger====&lt;br /&gt;
# LLRP Reader started&lt;br /&gt;
# ADD_ROSPEC message sent with a null start trigger and time based stop trigger (10 seconds)&lt;br /&gt;
# ENABLE_ROSPEC message sent&lt;br /&gt;
# START_ROSPEC message sent&lt;br /&gt;
# ROSpec Started&lt;br /&gt;
# LLRP Reader is suspended&lt;br /&gt;
# wait 15 seconds&lt;br /&gt;
# LLRP Reader is resumed&lt;br /&gt;
&lt;br /&gt;
;Outcome&lt;br /&gt;
:Reader stoped polling when it was suspended.  The ROSpec should have only executed for 10 seconds.  This means when the reader is resumed, the time trigger fires 15 seconds later than it would have if it had not been paused&lt;br /&gt;
&lt;br /&gt;
====Use Case: Reader Suspended while executing ROSpec with periodic start trigger====&lt;br /&gt;
#LLRP Reader started&lt;br /&gt;
#ADD_ROSPEC message sent with a Periodic start trigger(offset: 5 seconds, period: 10 seconds) and time based stop trigger (5 seconds)&lt;br /&gt;
#ENABLE_ROSPEC message sent&lt;br /&gt;
#Suspend LLRP Reader. wait 10 seconds. Resume LLRP Reader. Make sure ROSpec starts after 5 seconds&lt;br /&gt;
#ROSpec Started&lt;br /&gt;
#Wait 5 seconds for ROSpec to stop&lt;br /&gt;
#LLRP Reader is suspended&lt;br /&gt;
#wait 10 seconds&lt;br /&gt;
#LLRP Reader is resumed&lt;br /&gt;
&lt;br /&gt;
;Outcome&lt;br /&gt;
:ROSpec started executing again approximatey 5 seconds (15 second peridon - 10 seconds exuecting ) after LLRP Reader is resumed, and not while the reader was suspended&lt;br /&gt;
&lt;br /&gt;
====Use Case: Reader suspended while executing Rospec with AISpec with time-based stop triggger====&lt;br /&gt;
# LLRP Reader started&lt;br /&gt;
# ADD_ROSPEC message sent with a null start trigger, null stop trigger and AISpec with Time based stop trigger (10 second)&lt;br /&gt;
# ENABLE_ROSPEC message sent&lt;br /&gt;
# START_ROSPEC message sent&lt;br /&gt;
# ROSpec Started&lt;br /&gt;
# LLRP Reader is suspended&lt;br /&gt;
# wait 15 seconds&lt;br /&gt;
# LLRP Reader is resumed&lt;br /&gt;
&lt;br /&gt;
;Outcome&lt;br /&gt;
:Reader stoped polling when it was suspended.  The ROSpec should have only executed for 10 seconds.  This means when the reader is resumed, the time trigger fires 15 seconds later than it would have if it had not been paused&lt;br /&gt;
&lt;br /&gt;
===GPIO Functionality===&lt;br /&gt;
How Suspend and Resume affects GPIO scenarios&lt;br /&gt;
&lt;br /&gt;
====Use Case: Changes to GPI when reader is suspended do not trigger event reports====&lt;br /&gt;
# LLRP Reader with 2 GPI lines started&lt;br /&gt;
# SET_READER_CONFIG Message sent that enable event reports from GPI Changes&lt;br /&gt;
# LLRP Reader is suspended&lt;br /&gt;
# GPI line one changes&lt;br /&gt;
# LLRP Reader is resumed&lt;br /&gt;
&lt;br /&gt;
;Outcome&lt;br /&gt;
:No GPI event is reported&lt;br /&gt;
&lt;br /&gt;
====Use Case: Changes to GPI when reader is suspended do not trigger ROSpecs to start executing====&lt;br /&gt;
# LLRP Reader with 2 GPI lines started&lt;br /&gt;
# SET_READER_CONFIG Message sent that enable event reports from GPI Changes&lt;br /&gt;
# Send ADD_ROSPEC Message with ROSpec where start trigger is GPI, and stop trigger is null&lt;br /&gt;
# Send ENABLE_ROSPEC Message&lt;br /&gt;
# LLRP Reader is suspended&lt;br /&gt;
# GPI line one changes&lt;br /&gt;
# LLRP Reader is resumed&lt;br /&gt;
&lt;br /&gt;
;Outcome&lt;br /&gt;
:No ROSPec begins execution&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Threads</id>
		<title>Threads</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Threads"/>
				<updated>2010-11-24T10:14:36Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://odygobyciqi.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
Rendering and it's threads are now part of our jmonkey plugin:[http://wiki.rifidi.org/index.php/Rifidi:jmeswt jmeswt]&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Documentation in this chapter is from now on obsolete!&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Designer runs as a combination of eclipse and a 3d engine.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
It is very important to closely look where things are going.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Just some rules:&lt;br /&gt;
* GameTaskQueueManager.getInstance().render()/update() can be called from every part of the application and should be used to submit things to the 3d engine. &amp;amp;lt;br/&amp;amp;gt; It is very important to add and remove nodes inside callables that get submitted to the 3d engine as it might break the software if you don't do it this way.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old stuff:&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
IF YOU HAVE BEEN USING THE HELPER CLASS REMOVE THAT CODE AS IT WILL CAUSE A DEADLOCK FROM DESIGNER 1.3 ON!&lt;br /&gt;
* Waiting on Futures: Sometimes it is important to be able to wait on a future when you have submitted a callable. The [http://www.rifidi.org/javadoc/designer/doc/org/rifidi/designer/utils/Helpers.html Helpers class] contains a static method called waitOnCallable. This method can be used to wait for a futue to return and is the only way (that I know of) to do this from inside the eclipse thread.&amp;amp;lt;br/&amp;amp;gt;THIS METHOD IS BLOCKING AND IF  CALLED WHEN UPDATETHREAD IS IN THE PAUSEDSTATE WILL BLOCK FOREVER!!&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
APPARENTLY THIS ISSUE GOT RESOLVED WITH ECLIPSE 3.3!&lt;br /&gt;
* syncExec/asyncExec: Avoid syncExec. According to some newsgroup posts as of eclipse 3.2 there is a deadlock condition that might cause a hang on syncExec. Use asyncExec and a callback.&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Tag_Streamer_1.1.1</id>
		<title>Tag Streamer 1.1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Tag_Streamer_1.1.1"/>
				<updated>2010-11-24T10:14:23Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://axuzexy.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://axuzexy.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This page lists some new changes to Tag Streamer.  For more information on how to use Tag Streamer see the [[Tag_Streamer_User's_Guide|User's Guide]]&lt;br /&gt;
=New Features=&lt;br /&gt;
==Tag Creation Patterns ==&lt;br /&gt;
The only big change to Tag Streamer (besides those made to the Emulator Core in version [[Emulator_1.5.2|1.5.2]], is that the Tag Action XML is now specified in terms of a Tag Creation Pattern xml Element.  This enables users to have more than one kind of tag (e.g. Gen1) in a single Tag Action.  For example, the old XML specified Tag Actions like this:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;batchSuite&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batch id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;tagAction&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;execDuration&amp;amp;gt;1000&amp;amp;lt;/execDuration&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;number&amp;amp;gt;4&amp;amp;lt;/number&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;prefix&amp;amp;gt;&amp;amp;lt;/prefix&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;regenerate&amp;amp;gt;true&amp;amp;lt;/regenerate&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;tagGen&amp;amp;gt;GEN2&amp;amp;lt;/tagGen&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;tagType&amp;amp;gt;DoD96&amp;amp;lt;/tagType&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/tagAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batch&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batch id=&amp;amp;quot;2&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;tagAction&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;execDuration&amp;amp;gt;1000&amp;amp;lt;/execDuration&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;number&amp;amp;gt;5&amp;amp;lt;/number&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;prefix&amp;amp;gt;FFF&amp;amp;lt;/prefix&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;regenerate&amp;amp;gt;true&amp;amp;lt;/regenerate&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;tagGen&amp;amp;gt;GEN2&amp;amp;lt;/tagGen&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;tagType&amp;amp;gt;CustomEPC96&amp;amp;lt;/tagType&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/tagAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batch&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/batchSuite&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In version 1.2, Tag Actions are specified like this:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;batchSuite&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batch id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;tagAction&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;execDuration&amp;amp;gt;1000&amp;amp;lt;/execDuration&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;regenerate&amp;amp;gt;true&amp;amp;lt;/regenerate&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;tagCreationPattern&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;accessPass&amp;amp;gt;AAAAAA==&amp;amp;lt;/accessPass&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;lockPass&amp;amp;gt;AAAAAA==&amp;amp;lt;/lockPass&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;numberOfTags&amp;amp;gt;4&amp;amp;lt;/numberOfTags&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;prefix&amp;amp;gt;&amp;amp;lt;/prefix&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;tagGeneration&amp;amp;gt;GEN2&amp;amp;lt;/tagGeneration&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;tagType&amp;amp;gt;DoD96&amp;amp;lt;/tagType&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;/tagCreationPattern&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/tagAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batch&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batch id=&amp;amp;quot;2&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;tagAction&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;execDuration&amp;amp;gt;1000&amp;amp;lt;/execDuration&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;regenerate&amp;amp;gt;true&amp;amp;lt;/regenerate&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;tagCreationPattern&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;accessPass&amp;amp;gt;AAAAAA==&amp;amp;lt;/accessPass&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;lockPass&amp;amp;gt;AAAAAA==&amp;amp;lt;/lockPass&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;numberOfTags&amp;amp;gt;5&amp;amp;lt;/numberOfTags&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;prefix&amp;amp;gt;FFF&amp;amp;lt;/prefix&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;tagGeneration&amp;amp;gt;GEN2&amp;amp;lt;/tagGeneration&amp;amp;gt;&lt;br /&gt;
                    &amp;amp;lt;tagType&amp;amp;gt;CustomEPC96&amp;amp;lt;/tagType&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;/tagCreationPattern&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/tagAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batch&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/batchSuite&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two Tag Actions are equivalent.  In the second one, more than one Pattern can be specified per action.&lt;br /&gt;
&lt;br /&gt;
=Bug Fixes=&lt;br /&gt;
=Required Bundles=&lt;br /&gt;
This is a list of bundles (and their bundle numbers) that have been tagged as stable for this release&lt;br /&gt;
*org.rifidi.common.utilities (1.0.0)&lt;br /&gt;
*org.rifidi.dependencies (1.0.0)&lt;br /&gt;
*org.rifidi.emulator (2.0.2)&lt;br /&gt;
*org.rifidi.emulator.reader.alien (2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.awid(2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.epc(2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.llrp (2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.symbol(2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.thingmagic (1.1.0)&lt;br /&gt;
*org.rifidi.log4j(1.0.0)&lt;br /&gt;
*org.rifidi.services (1.0.0)&lt;br /&gt;
*org.rifidi.services.tags(2.0.2)&lt;br /&gt;
*org.rifidi.streamer (2.1.1)&lt;br /&gt;
*org.rifidi.streamer.xml (2.1.1)&lt;br /&gt;
*org.rifidi.ui.common(2.0.0)&lt;br /&gt;
*org.rifidi.ui.streamer(2.1.2)&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/READERNAME_CommandFormatter.java</id>
		<title>READERNAME CommandFormatter.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/READERNAME_CommandFormatter.java"/>
				<updated>2010-11-24T10:14:09Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://oleqatyqi.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://oleqatyqi.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
This class should implement CommandHandler.  This page goes through each of the four methods in CommandHandler and describes in detail what each one does and how it should be implemented.  The first two methods are important, and the last two methods are not as important.&lt;br /&gt;
&lt;br /&gt;
=decode=&lt;br /&gt;
&lt;br /&gt;
This method needs to decode an incoming command into a command to be handled in the command formatter.  It should put the command into a commandObject and put the commandObject in the first slot in an arraylist and return the arraylist. Normally the command object is a string that Rifidi uses to find the the appropriate command handler. The rest of the slots in the ArrayList may be used to pass arguments to the command handler, i.e. a coherent object that contains the the information already parsed and ready for consumption. For an idea on how to do that, look up the ThingMagic source code.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;public ArrayList&amp;amp;lt;Object&amp;amp;gt; decode(byte[] arg);&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
#arg - The incoming command as an array of bytes.&lt;br /&gt;
&lt;br /&gt;
==Return Value==&lt;br /&gt;
An array of objects where the first object is a command in the correct format to be processed by the command handler&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
This is the decode method in the alien reader&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public ArrayList&amp;amp;lt;Object&amp;amp;gt; decode(byte[] arg) {&lt;br /&gt;
		if (arg.length == 0) {&lt;br /&gt;
			ArrayList&amp;amp;lt;Object&amp;amp;gt; argArray = new ArrayList&amp;amp;lt;Object&amp;amp;gt;();&lt;br /&gt;
			argArray.add(&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
			console = false;&lt;br /&gt;
			return argArray;&lt;br /&gt;
		}&lt;br /&gt;
		String newString = new String(arg);&lt;br /&gt;
&lt;br /&gt;
		logger.debug(&amp;amp;quot;Formatter arg: &amp;amp;quot; + newString);&lt;br /&gt;
&lt;br /&gt;
		ArrayList&amp;amp;lt;Object&amp;amp;gt; retVal = this.parseCommand(newString);&lt;br /&gt;
&lt;br /&gt;
		return retVal;&lt;br /&gt;
	}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=encode=&lt;br /&gt;
After a command has been processed by the command handler, the response it returns must be formatted to be sent back out to the client.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;public ArrayList&amp;amp;lt;Object&amp;amp;gt; encode(ArrayList&amp;amp;lt;Object&amp;amp;gt; arg);&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
#arg - The return message(s) before they has been processed is in the array of objects&lt;br /&gt;
&lt;br /&gt;
==Return Value==&lt;br /&gt;
An array of objects where each object is a formatted response message ready to be sent back to the client. It must be formatted in a way that [[READERNAME_Protocol.java]]::addProtocol() can understand.&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
This is the encode method for the symbol reader.  Because some commands in the symbol reader need to have more than one response message (e.g. a data message and a final message), more than one raw message can be in the array list in arg.  For each message, the CRC must be calculated and appended.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public ArrayList&amp;amp;lt;Object&amp;amp;gt; encode(ArrayList&amp;amp;lt;Object&amp;amp;gt; arg) {&lt;br /&gt;
&lt;br /&gt;
		ArrayList&amp;amp;lt;Object&amp;amp;gt; retVal = new ArrayList&amp;amp;lt;Object&amp;amp;gt;();&lt;br /&gt;
&lt;br /&gt;
		for (Object o : arg) {&lt;br /&gt;
			byte[] command = (byte[]) o;&lt;br /&gt;
&lt;br /&gt;
			/*&lt;br /&gt;
			 * Create outgoing array list that is 3 slots bigger than incoming&lt;br /&gt;
			 * one: one for start of frame and two for crc bytes&lt;br /&gt;
			 */&lt;br /&gt;
			byte[] outgoingCommand = new byte[command.length + 3];&lt;br /&gt;
			for (int i = 0; i &amp;amp;lt; command.length; i++) {&lt;br /&gt;
				outgoingCommand[i + 1] = command[i];&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			/* Add Start of Frame Byte */&lt;br /&gt;
			outgoingCommand[0] = 0x01;&lt;br /&gt;
&lt;br /&gt;
			// Calculate CRC&lt;br /&gt;
			int crc = CRC16.calculateCRC(command, 0xBEEF,&lt;br /&gt;
					CRC16.XR400_CRC_TABLE, true);&lt;br /&gt;
			byte[] crcBytes = ByteAndHexConvertingUtility&lt;br /&gt;
					.intToByteArray(crc, 2);&lt;br /&gt;
&lt;br /&gt;
			// put crc in outgoingCommand, LSB first&lt;br /&gt;
			outgoingCommand[outgoingCommand.length - 2] = crcBytes[1];&lt;br /&gt;
			outgoingCommand[outgoingCommand.length - 1] = crcBytes[0];&lt;br /&gt;
			&lt;br /&gt;
			logger.debug(ByteAndHexConvertingUtility.toHexString(outgoingCommand));&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			retVal.add(outgoingCommand);&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return retVal;&lt;br /&gt;
	}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=promptSuppress=&lt;br /&gt;
This method is mainly used by the alien reader to determine if the reader should supress the prompt when sending back a response.  Other readers may need similar functionality.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;public boolean promptSuppress();&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
&lt;br /&gt;
==Return Value==&lt;br /&gt;
true if the prompt should be surpressed&lt;br /&gt;
&lt;br /&gt;
=getActualCommand=&lt;br /&gt;
This method is mainly used by the alien reader to return a string that a user actually typed in.  Other readers may need similar functionality&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;public String getActualCommand(byte[] arg);&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
#arg - The incoming command&lt;br /&gt;
&lt;br /&gt;
==Return Value==&lt;br /&gt;
A string that is the command the user typed in&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/REDERNAME_Module.java</id>
		<title>REDERNAME Module.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/REDERNAME_Module.java"/>
				<updated>2010-11-24T10:09:33Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://ecacoraqosy.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
The readerModule is the constructor for the reader.  Every reader needs one of these classes.  The class needs to extend AbstractPowerModule and implement ReaderModule.&lt;br /&gt;
&lt;br /&gt;
=READERNAMEModule=&lt;br /&gt;
This is the main constructor for the reader  There should actually be two constructors.  One is an empty constructor that is needed for jaxb to automatically create the reader.  It should look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public SymbolReaderModule(){&lt;br /&gt;
	}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The readermodule also needs a main constructor with this signature:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public SymbolReaderModule(ControlSignal&amp;amp;lt;Boolean&amp;amp;gt; powerControlSignal,GeneralReaderPropertyHolder properties);&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
# powerControlSignal - The power control signal for the entire reader.  It is used to turn the reader on and off as well as to suspend and resume the reader.  See information on the power states in the module package for more explanation of this.&lt;br /&gt;
# properties - These are the properties that the reader creation wizzard constructed.  The GeneralReaderPropertyHolder contains the information required by the [[emulator.xml]].&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
This is the constructor for the SymbolReaderModule.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public SymbolReaderModule(ControlSignal&amp;amp;lt;Boolean&amp;amp;gt; powerControlSignal,&lt;br /&gt;
			GeneralReaderPropertyHolder properties) {&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
always start out with a call to the super class&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
                super(SymbolReaderModuleOffPowerState.getInstance(),powerControlSignal);&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
write some basic information to the console to let the user know that the reader is starting.  Note that we are getting some information from the generalRederProperyHolder&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		consoleLogger = LogFactory.getLog(&amp;amp;quot;console.&amp;amp;quot;&lt;br /&gt;
				+ properties.getReaderName());&lt;br /&gt;
		consoleLogger.info(SymbolReaderModule.startupText&lt;br /&gt;
				+ &amp;amp;quot;Instantiated Symbol Reader with name: &amp;amp;quot;&lt;br /&gt;
				+ properties.getReaderName());&lt;br /&gt;
		consoleLogger.info(SymbolReaderModule.startupText&lt;br /&gt;
				+ properties.getReaderName() + &amp;amp;quot; IP Address: &amp;amp;quot;&lt;br /&gt;
				+ properties.getProperty(&amp;amp;quot;byte_address&amp;amp;quot;));&lt;br /&gt;
		consoleLogger.info(SymbolReaderModule.startupText&lt;br /&gt;
				+ properties.getReaderName() + &amp;amp;quot; has &amp;amp;quot;&lt;br /&gt;
				+ properties.getNumAntennas() + &amp;amp;quot; antennas&amp;amp;quot;);&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
set the name of the reader equal to the name given in the generalReaderPropertyHolder&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		this.name = properties.getReaderName();&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
Initialize the digester and read in the command hander methods supplied in the [[reader.xml]] file&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		digester = new CommandXMLDigester();&lt;br /&gt;
		digester.parseToCommand(this.getClass().getClassLoader()&lt;br /&gt;
				.getResourceAsStream(XMLLOCATION + &amp;amp;quot;reader.xml&amp;amp;quot;));&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
Create a new tag memory, create antennas, create a new radio and supply the tagMemory and antennas to the radio&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		SymbolTagMemory tagMemory = new SymbolTagMemory();&lt;br /&gt;
&lt;br /&gt;
		HashMap&amp;amp;lt;Integer, Antenna&amp;amp;gt; antennaList = new HashMap&amp;amp;lt;Integer, Antenna&amp;amp;gt;();&lt;br /&gt;
		for (int i = 0; i &amp;amp;lt; properties.getNumAntennas(); i++) {&lt;br /&gt;
			logger.debug(&amp;amp;quot;creating an antenna: &amp;amp;quot; + i);&lt;br /&gt;
			antennaList.put(i, new Antenna(i));&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/* Make a Radio for the reader */&lt;br /&gt;
		GenericRadio genericRadio = new GenericRadio(antennaList, 25, tagMemory);&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
The symbol reader has two different IP addresses being used.  One is for byte commands, and the other is for HTTP commands.  parse out the IPs and ports from the GeneralReaderPropertyHolder&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		String byte_address = ((String) properties.getProperty(&amp;amp;quot;byte_address&amp;amp;quot;))&lt;br /&gt;
				.split(&amp;amp;quot;:&amp;amp;quot;)[0];&lt;br /&gt;
		int byte_port = Integer.parseInt(((String) properties&lt;br /&gt;
				.getProperty(&amp;amp;quot;byte_address&amp;amp;quot;)).split(&amp;amp;quot;:&amp;amp;quot;)[1]);&lt;br /&gt;
&lt;br /&gt;
		String http_address = ((String) properties.getProperty(&amp;amp;quot;http_address&amp;amp;quot;))&lt;br /&gt;
				.split(&amp;amp;quot;:&amp;amp;quot;)[0];&lt;br /&gt;
		int http_port = Integer.parseInt(((String) properties&lt;br /&gt;
				.getProperty(&amp;amp;quot;http_address&amp;amp;quot;)).split(&amp;amp;quot;:&amp;amp;quot;)[1]);&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
create the shared resources and supply necessary information to it&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		this.srsr = new SymbolReaderSharedResources(genericRadio, tagMemory,&lt;br /&gt;
				new ControlSignal&amp;amp;lt;Boolean&amp;amp;gt;(false), name, null, digester,&lt;br /&gt;
				new ControlSignal&amp;amp;lt;Boolean&amp;amp;gt;(false), new ControlSignal&amp;amp;lt;Boolean&amp;amp;gt;(&lt;br /&gt;
						false), new ControlSignal&amp;amp;lt;Boolean&amp;amp;gt;(false),&lt;br /&gt;
				new ControlSignal&amp;amp;lt;Boolean&amp;amp;gt;(false), antennaList.size());&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
Create the communication objects.  In this case, we need two communication objects (one for bytes, and one for http), however, most readers will probably only need one.  Notice that this is where we supply the reader with the [[READERNAME_Protocol.java|Protocol]], [[READERNAME_StreamReaderFormatter.java|Stream Reader]], and [[READERNAME_LogFormatter.java|Log Formatter]]&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		this.httpComm = new TCPServerCommunication(new RawProtocol(), this.srsr&lt;br /&gt;
				.getInteractiveHttpPowerSignal(), this.srsr&lt;br /&gt;
				.getInteractiveHttpConnectionSignal(), http_address, http_port,&lt;br /&gt;
				this.name, GenericByteStreamReader.class, new GenericByteLogFormatter());&lt;br /&gt;
&lt;br /&gt;
		this.byteComm = new TCPServerCommunication(new RawProtocol(), this.srsr&lt;br /&gt;
				.getInteractiveBytePowerSignal(), this.srsr&lt;br /&gt;
				.getInteractiveByteConnectionSignal(), byte_address, byte_port,&lt;br /&gt;
				this.name, GenericByteStreamReader.class, new GenericByteLogFormatter());&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
Build the adapters for this reader.  Again, because the Symbol reader has two ways of communicating, we need two adapters.  See [[Command Flow]] for more information about the adapter.  This is where we supply the reader with the [[READERNAME_CommandFormatter.java|CommandFormatter]] and the [[READERNAME_ExceptionHanlder.java|ExceptionHandler]]&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		this.interactiveBitAdapter = new ReflectiveCommandAdapter(&lt;br /&gt;
				&amp;amp;quot;Interactive&amp;amp;quot;, new SymbolBitCommandFormatter(), new SymbolBitExceptionHandler(),&lt;br /&gt;
				this.srsr, new RawCommandSearcher());&lt;br /&gt;
&lt;br /&gt;
		this.interactiveHttpAdapter = new ReflectiveCommandAdapter(&lt;br /&gt;
				&amp;amp;quot;Interactive&amp;amp;quot;, null, new SymbolBitExceptionHandler(), this.srsr, new RawCommandSearcher());&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
Build the controllers.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		this.interactiveBitController = new InteractiveCommandController(&lt;br /&gt;
				new LoginAuthenticatedCommandControllerOperatingState(&lt;br /&gt;
						interactiveBitAdapter), this.srsr&lt;br /&gt;
						.getInteractiveBytePowerSignal(), this.srsr&lt;br /&gt;
						.getInteractiveByteConnectionSignal(), this.byteComm);&lt;br /&gt;
&lt;br /&gt;
		this.interactiveHttpController = new InteractiveCommandController(&lt;br /&gt;
				new LoginAuthenticatedCommandControllerOperatingState(&lt;br /&gt;
						interactiveHttpAdapter), this.srsr&lt;br /&gt;
						.getInteractiveHttpPowerSignal(), this.srsr&lt;br /&gt;
						.getInteractiveHttpConnectionSignal(), this.httpComm);&lt;br /&gt;
	}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
=Other Notes=&lt;br /&gt;
Here is an example from the Thing Magic reader:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		this.RQLComm = new TCPServerCommunication(new ThingMagicProtocol(), this.tmsr&lt;br /&gt;
				.getInteractiveRQLPowerSignal(), this.tmsr&lt;br /&gt;
				.getInteractiveRQLConnectionSignal(), rql_address, rql_port,&lt;br /&gt;
				this.name, GenericCharStreamReader.class, new GenericStringLogFormatter());&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
Notice the difference of this from the Symbol example. We are using GenericCharStreamReader and GenericStringLogFormatter instead. These are used when a client can be a standard telnet connection (another example of this is the Alien reader).&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition, if you need to override the default command searcher, RawCommandSearcher, then replace this class with a different implementation and pass it to ReflectiveCommandAdapter instead of the default one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, one can add a few more parameters to ones implementation of the shared resources if it that information (object or primitive type) if it is needed across different areas of the reader (including its accessors and mutators if needed).&lt;br /&gt;
&lt;br /&gt;
=Other Methods=&lt;br /&gt;
The ReaderModule will also need to implement some other methods required by the interface that it implements, however, these methods should be nearly identical to similar methods in the other readers.  Please see the other readers and follow examples there for more information.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:REDERNAME_Module.java</id>
		<title>Talk:REDERNAME Module.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:REDERNAME_Module.java"/>
				<updated>2010-11-24T10:09:02Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ecacoraqosy.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ecacoraqosy.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/TagStreamerSpecification</id>
		<title>TagStreamerSpecification</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/TagStreamerSpecification"/>
				<updated>2010-11-24T08:32:32Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://ojaperiwiva.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This document describes a possible use case for TagStreamer 2.0 for the purpose of demonstrating how it would work.  The basic idea is to define a Scenario that describes the flow of input data through processing points and BatchPattern which describe the input data in general. The processing points of the Scenario are called path items.  They consist of either a reader or a GPI Listener and a time to wait before moving on to the next path item.  It is important to note that the scenario and the data are decoupled. The BatchPattern describes the speed which data will put into the Scenario and how many tags will be generated. The Tag Generator uses that information and executes the BatchPattern one activated. &lt;br /&gt;
&lt;br /&gt;
In the below scenario, a batch item – a group of tags – moves into the entry point of the scenario by being processed by reader 1.   Reader 1 adds the tags to its antenna for a variable amount of time, between 4 and 8 seconds.  Then the tags wait for 5 seconds before moving on to the next path item.  &lt;br /&gt;
&lt;br /&gt;
The next path item is a GPI Listener that is tied to Reader 2.  Because this particular Batch Item is set to trigger GPI Listeners, the GPI Listener will toggle one of Reader 2's GPI ports.  The batch item now waits for 5 more seconds.  Now the tags in the batch are seen by reader 2's antenna for 3 seconds and then wait for anywhere between 10 and 20 seconds before moving on to Reader 3.&lt;br /&gt;
&lt;br /&gt;
Once the tags are seen by reader 3, this iteration of the scenario is over.  The TagGenerator can execute a BatchPattern more than once. This will be defined as the iteration of the BatchPattern. &lt;br /&gt;
&lt;br /&gt;
[[Image:TagStreamerSpec.png]]&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
A TagStreamer usecase consists of two main components -- the Scenario and the Input Data. Both are decoupled so that neither depends on the other part. &lt;br /&gt;
&lt;br /&gt;
# Scenario - The Scenario describes the path through which a tag batch flows.  It is made up of path items.  It also contains a variable that controls how many times the scenario is repeated.  If the variable is 0, the scenario is run infinitely.  If it is positive, it is run n times.&lt;br /&gt;
## PathItem - A path item consists of either a reader or a GPI Listener and a time to wait.&lt;br /&gt;
###Reader - An RFID reader which tags appear on&lt;br /&gt;
###GPI Listener - If a Batch Item which is set to trigger a GPI event passes through a GPI Listener, it will trigger a GPI event on the GPI Listener's reader.&lt;br /&gt;
###Time - A time is used either to describe the amount of time that a batch item should wait on a Path Item, or the amount of time a batch item should wait after being processed by the path item.  For example, in the above use case, if the tag batch moved to reader 1, it is processed by the reader  for 4-8 seconds (i.e. It is added to the reader's antenna for this amount of time).  Then it waits for 5 seconds before it proceeds to the next path item.  It can be a random amount of time with a min value and a max value. If it's not a random value both values should be equal.&lt;br /&gt;
#BatchPattern - A way to describe BathItems generated at the runtime.  Each batch items flows through the Scenario by starting at the entry point and being processed sequentially at each Path Item.&lt;br /&gt;
##BatchItem - A batch item contains a list of tags, a boolean that describes whether or not it should trigger GPI Listeners and a time value that describes the amount of time it should wait before being processed by the first path item.&lt;br /&gt;
### GPI Trigger - A boolean value that defines whether or not the asociated batch item should cause GPI Listerns to fire a GPI event.&lt;br /&gt;
### Tags - A list of RFID tags to be added to readers.  They are defined by an ID, a Generation( Gen1 or Gen2), and type (e.g. DOD-96).&lt;br /&gt;
&lt;br /&gt;
==XML==&lt;br /&gt;
===Scenario.xml===&lt;br /&gt;
This XML describes the PathItems and the way Data moves through the scenario to the various components like RFID Readers &amp;amp;amp; GPI Listeners.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;scenario id=&amp;amp;quot;0&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;pathItem id=&amp;amp;quot;0&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;timeEntity&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;minValue&amp;amp;gt;400&amp;amp;lt;/minValue&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;maxValue&amp;amp;gt;500&amp;amp;lt;/maxValue&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/timeEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;readerID&amp;amp;gt;0&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/readerEntity&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;timeEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;minValue&amp;amp;gt;400&amp;amp;lt;/minValue&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;maxValue&amp;amp;gt;500&amp;amp;lt;/maxValue&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/timeEntity&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;pathItem id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;gpiListenerEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;timeEntity&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;minValue&amp;amp;gt;400&amp;amp;lt;/minValue&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;maxValue&amp;amp;gt;500&amp;amp;lt;/maxValue&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/timeEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;gpiListenerID&amp;amp;gt;0&amp;amp;lt;/gpiListenerID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/gpiListenerEntity&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;timeEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;minValue&amp;amp;gt;400&amp;amp;lt;/minValue&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;maxValue&amp;amp;gt;500&amp;amp;lt;/maxValue&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/timeEntity&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;pathItem id=&amp;amp;quot;2&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;timeEntity&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;minValue&amp;amp;gt;400&amp;amp;lt;/minValue&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;maxValue&amp;amp;gt;500&amp;amp;lt;/maxValue&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/timeEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;readerID&amp;amp;gt;0&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/readerEntity&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;timeEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;minValue&amp;amp;gt;400&amp;amp;lt;/minValue&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;maxValue&amp;amp;gt;500&amp;amp;lt;/maxValue&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/timeEntity&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;pathItem id=&amp;amp;quot;3&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;timeEntity&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;minValue&amp;amp;gt;400&amp;amp;lt;/minValue&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;maxValue&amp;amp;gt;500&amp;amp;lt;/maxValue&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/timeEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;readerID&amp;amp;gt;0&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/readerEntity&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;timeEntity&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;minValue&amp;amp;gt;400&amp;amp;lt;/minValue&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;maxValue&amp;amp;gt;500&amp;amp;lt;/maxValue&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/timeEntity&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/scenario&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Component.xml===&lt;br /&gt;
This XML describes the various components (ie RFID Readers &amp;amp;amp; GPI Listeners) in the scenario&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;componentList id=&amp;amp;quot;0&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;readerComponents id=&amp;amp;quot;0&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;127.0.0.1:10101&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;127.0.0.1:5084&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerClassName&amp;amp;gt;org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerName&amp;amp;gt;LLRPreader&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerType&amp;amp;gt;LLRPReader&amp;amp;lt;/readerType&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;readerComponents id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;127.0.0.1:10102&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;127.0.0.1:5085&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerClassName&amp;amp;gt;org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerName&amp;amp;gt;LLRPreader2&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerType&amp;amp;gt;LLRPReader&amp;amp;lt;/readerType&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;gpiListenerComponents id=&amp;amp;quot;0&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;port&amp;amp;gt;0&amp;amp;lt;/port&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerID&amp;amp;gt;0&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;signalValue&amp;amp;gt;true&amp;amp;lt;/signalValue&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/gpiListenerComponents&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/componentList&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BatchPattern.xml===&lt;br /&gt;
The BatchPattern describes the input data generated at the runtime by the BatchGenerators. This will create BatchItems wich certain tags and flow through the scenario.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;batchPattern id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;scenario&amp;amp;gt;3&amp;amp;lt;/scenario&amp;amp;gt;	&lt;br /&gt;
	&amp;amp;lt;interation&amp;amp;gt;250&amp;amp;lt;/iteration&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;burstNumber&amp;amp;gt;50&amp;amp;lt;/busrtNumber&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;burstInterval&amp;amp;gt;4000&amp;amp;lt;/burstInterval&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;isGPITrigger&amp;amp;gt;true&amp;amp;lt;/isGPITrigger&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;tagPattern count=&amp;amp;quot;100&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;type&amp;amp;gt;Custom&amp;amp;lt;/type&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;prefix&amp;amp;gt;eef&amp;amp;lt;/prefix&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;gen&amp;amp;gt;2&amp;amp;lt;/gen&amp;amp;gt;	&lt;br /&gt;
	&amp;amp;lt;/tagPattern&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;tagPattern count=&amp;amp;quot;90&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;type&amp;amp;gt;DOD&amp;amp;lt;/type&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/prefix&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;gen&amp;amp;gt;2&amp;amp;lt;/gen&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/tagPattern&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/batchPattern&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/READERNAME_ReaderModuleOnPowerState.java</id>
		<title>READERNAME ReaderModuleOnPowerState.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/READERNAME_ReaderModuleOnPowerState.java"/>
				<updated>2010-11-24T08:32:27Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://exytebuc.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
This class needs to be implemented for each reader to handle the state transitions from on-&amp;amp;gt;off and from on-&amp;amp;gt;suspend.  It should extend AbstractOnPowerState.&lt;br /&gt;
&lt;br /&gt;
=turnOff=&lt;br /&gt;
&lt;br /&gt;
This method should turn the reader and all of its components off.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;public void turnOff(PowerControllable pcObject, Class callingClass) &amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
#pcObject - The ReaderModule&lt;br /&gt;
#callingClass - The class that called the turnOff method&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
This is the implementation of the turnOff() method in the Symbol Reader.  It basically turns off its two communication objects and controllers.  It turns off the controllers by calling their respective turn off methods.  It then turns off the communication by turning off each communication object's power and connection signal (Each Communication object has a control signal that represents the whether or not the communication is 'on', and another control signal that represents whether or not the communication is 'connected' to client).  Finally, this method moves the symbol reader into the 'off' state by calling the 'changePowerState' method.  This method doesn't do anything but declare that the reader is now off.&lt;br /&gt;
&lt;br /&gt;
This method is typical of what needs to happen to turn a reader off; however some reader may need to do other things.  For example, if the reader has an autonomous mode, the autonomous mode may need to be turned off.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public void turnOff(PowerControllable pcObject, Class callingClass) {&lt;br /&gt;
		SymbolReaderModule rm = (SymbolReaderModule) pcObject;&lt;br /&gt;
		rm.getInteractiveBitController().turnOff(this.getClass());&lt;br /&gt;
		rm.getInteractiveHttpController().turnOff(this.getClass());&lt;br /&gt;
&lt;br /&gt;
		rm.getSharedResources().getInteractiveBytePowerSignal()&lt;br /&gt;
				.setControlVariableValue(false);&lt;br /&gt;
		rm.getSharedResources().getInteractiveHttpPowerSignal()&lt;br /&gt;
				.setControlVariableValue(false);&lt;br /&gt;
		rm.getSharedResources().getInteractiveByteConnectionSignal()&lt;br /&gt;
				.setControlVariableValue(false);&lt;br /&gt;
		rm.getSharedResources().getInteractiveHttpConnectionSignal()&lt;br /&gt;
				.setControlVariableValue(false);&lt;br /&gt;
		&lt;br /&gt;
		SymbolReaderSharedResources ssr = rm.getSharedResources();&lt;br /&gt;
&lt;br /&gt;
		rm.changePowerState(SymbolReaderModuleOffPowerState.getInstance());&lt;br /&gt;
		&lt;br /&gt;
		String readername = rm.getSharedResources().getReaderName();&lt;br /&gt;
		LogFactory.getLog(&amp;amp;quot;console.&amp;amp;quot; + readername).info(readername + &amp;amp;quot; off&amp;amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=suspend=&lt;br /&gt;
&lt;br /&gt;
This method moves the reader into the suspended state.  Readers should be able to be 'suspended' and 'resumed' so that functions like 'pause' will work in Rifidi Designer.  For the most part, suspend should just queue incoming and outgoing messages.  This functionality works by just suspending the communication that the reader is using.  The complication comes in when a reader needs to be suspended while in autonomous mode.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;public void suspend(PowerControllable pcObject) &amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
#pcObject - The ReaderModule&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
This is the implementation of the suspend() method in the Symbol Reader. It works by suspending its communication and controllers.  Then it moves the reader into the SuspendedState by calling the changePowerState() method.&lt;br /&gt;
&lt;br /&gt;
Note that because the reader does not have an autonomous mode that is implemented it does not need to do anything else.  The LLRP reader does, however, have an autonomous mode, and so it needs to make sure the autonomous mode is suspended.  See that reader's OnPowerState class to see how it suspends its autonomous mode.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public void suspend(PowerControllable pcObject) {&lt;br /&gt;
		SymbolReaderModule rm = (SymbolReaderModule) pcObject;&lt;br /&gt;
		rm.getHttpComm().suspend();&lt;br /&gt;
		rm.getByteComm().suspend();&lt;br /&gt;
		rm.getInteractiveBitController().suspend();&lt;br /&gt;
		rm.getInteractiveHttpController().suspend();&lt;br /&gt;
		&lt;br /&gt;
		SymbolReaderSharedResources ssr = rm.getSharedResources();&lt;br /&gt;
		&lt;br /&gt;
		ssr.getTagMemory().suspend();&lt;br /&gt;
&lt;br /&gt;
		rm.changePowerState(SymbolReaderModuleSuspendedPowerState.getInstance());&lt;br /&gt;
		&lt;br /&gt;
		String readername = rm.getSharedResources().getReaderName();&lt;br /&gt;
		LogFactory.getLog(&amp;amp;quot;console.&amp;amp;quot; + readername).info(readername + &amp;amp;quot; suspended&amp;amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Northwind_Hello_World_Servlet</id>
		<title>Northwind Hello World Servlet</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Northwind_Hello_World_Servlet"/>
				<updated>2010-11-24T08:32:08Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://exowufo.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://exowufo.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This is Step 7 in the [[Northwind Tutorial|Northwind Application Tutorial]]&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
Previous Step: [[Northwind Creating the Web Application | Step 6: Create the Web Application]]&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
Next Step: [[Northwind TagLocationService | Step 8: Write a Tag Location Service and JMS Listener]]&lt;br /&gt;
===What you will learn===&lt;br /&gt;
* How to use Spring's MVC Controller&lt;br /&gt;
* How to write a servlet&lt;br /&gt;
* How to write a JSP&lt;br /&gt;
===Write a JSP===&lt;br /&gt;
Create a new file in the jsp directory called taglocation.jsp.  Edit it as follows:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;%@ include file=&amp;amp;quot;/WEB-INF/jsp/include.jsp&amp;amp;quot; %&amp;amp;gt;&lt;br /&gt;
Hello World at &amp;amp;lt;fmt:formatDate value=&amp;amp;quot;${model.date}&amp;amp;quot; pattern=&amp;amp;quot;MM.dd.yyyy&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
As you can see, this does the same thing as the index page, except it will get the date passed in from the Contoller in the &amp;amp;quot;model&amp;amp;quot; instead of getting it from a JSP tag.&lt;br /&gt;
===Write a Controller===&lt;br /&gt;
The next thing to do is to create the controller.  The controller's purpose is to pass in a model to the view.  In this case, our model is simply a date object.  However, this will change when we hook up our web app to our RFID application.  For now, create a new package called &amp;amp;lt;tt?&amp;amp;gt;com.northwind.rfid.shipping.war&amp;amp;lt;/tt&amp;amp;gt;.  Create a new Java class called TagLocationController.  Edit it as follows:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
package com.northwind.rfid.shipping.war;&lt;br /&gt;
&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
&lt;br /&gt;
import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
import javax.servlet.http.HttpServletResponse;&lt;br /&gt;
&lt;br /&gt;
import org.springframework.web.servlet.ModelAndView;&lt;br /&gt;
import org.springframework.web.servlet.mvc.Controller;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class TagLocationController implements Controller{&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public ModelAndView handleRequest(HttpServletRequest arg0,&lt;br /&gt;
			HttpServletResponse arg1) throws Exception {&lt;br /&gt;
		HashMap&amp;amp;lt;String, Object&amp;amp;gt; model = new HashMap&amp;amp;lt;String, Object&amp;amp;gt;();&lt;br /&gt;
		model.put(&amp;amp;quot;date&amp;amp;quot;, new Date(System.currentTimeMillis()));&lt;br /&gt;
		&lt;br /&gt;
		return new ModelAndView(&amp;amp;quot;/WEB-INF/jsp/taglocation.jsp&amp;amp;quot;, &amp;amp;quot;model&amp;amp;quot;, model);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
What happens now is that anytime a web page that is controlled by this controller is loaded, the handleRequest method will be invoked.  This method simply passes in a model object to the proper jsp.&lt;br /&gt;
===Modify the web.XML===&lt;br /&gt;
Now we need to modify the web.xml so that the controller will be loaded at the proper time.  The web.xml should now look like this:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;web-app version=&amp;amp;quot;2.4&amp;amp;quot; xmlns=&amp;amp;quot;http://java.sun.com/xml/ns/j2ee&amp;amp;quot;&lt;br /&gt;
	xmlns:xsi=&amp;amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;amp;quot;&lt;br /&gt;
	xsi:schemaLocation=&amp;amp;quot;http://java.sun.com/xml/ns/j2ee &lt;br /&gt;
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;welcome-file-list&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;welcome-file&amp;amp;gt;index.jsp&amp;amp;lt;/welcome-file&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/welcome-file-list&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;lt;jsp-config&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;taglib&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;taglib-uri&amp;amp;gt;/spring&amp;amp;lt;/taglib-uri&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;taglib-location&amp;amp;gt;/WEB-INF/spring.tld&amp;amp;lt;/taglib-location&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/taglib&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/jsp-config&amp;amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;amp;lt;servlet&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;servlet-name&amp;amp;gt;NorthwindDemo&amp;amp;lt;/servlet-name&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;servlet-class&amp;amp;gt;org.springframework.web.servlet.DispatcherServlet&amp;amp;lt;/servlet-class&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;load-on-startup&amp;amp;gt;1&amp;amp;lt;/load-on-startup&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/servlet&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;lt;servlet-mapping&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;servlet-name&amp;amp;gt;NorthwindDemo&amp;amp;lt;/servlet-name&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;url-pattern&amp;amp;gt;/taglocation.htm&amp;amp;lt;/url-pattern&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/servlet-mapping&amp;amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;amp;lt;/web-app&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
The two things we did here:&lt;br /&gt;
# Told the web application about a servlet called NorthwindDemo.&lt;br /&gt;
# Told the web application to invoke the NorthwindDemo servlet whenever a page called 'taglocation.htm' is requested.&lt;br /&gt;
&lt;br /&gt;
===Create a servlet xml===&lt;br /&gt;
Now we need to create a servlet XML that controls how the NorthwindDemo servlet behaves.  Create a new file called NorthwindDemo-servlet.xml in the WEB-INF folder (the name of the file must be the name of the servlet with &amp;amp;quot;-servlet.xml&amp;amp;quot; appended to it).  Make the servlet xml look like this:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;beans xmlns=&amp;amp;quot;http://www.springframework.org/schema/beans&amp;amp;quot;&lt;br /&gt;
	xmlns:xsi=&amp;amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;amp;quot; xmlns:osgi=&amp;amp;quot;http://www.springframework.org/schema/osgi&amp;amp;quot;&lt;br /&gt;
	xmlns:amq=&amp;amp;quot;http://activemq.apache.org/schema/core&amp;amp;quot;&lt;br /&gt;
	xsi:schemaLocation=&amp;amp;quot;http://www.springframework.org/schema/beans &lt;br /&gt;
	META-INF/xsd/spring-beans-2.5.xsd&lt;br /&gt;
    http://www.springframework.org/schema/osgi &lt;br /&gt;
    http://www.springframework.org/schema/osgi/spring-osgi.xsd&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;lt;bean name=&amp;amp;quot;/taglocation.htm&amp;amp;quot; class=&amp;amp;quot;com.northwind.rfid.shipping.war.TagLocationController&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/beans&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modify index.jsp===&lt;br /&gt;
The last thing to do is to modify our welcome file so that we are redirected to 'taglocation.htm' by default&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;%@ include file=&amp;amp;quot;/WEB-INF/jsp/include.jsp&amp;amp;quot; %&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;%-- Redirected because we can't set the welcome page to a virtual URL. --%&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;c:redirect url=&amp;amp;quot;/taglocation.htm&amp;amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
===Run It!===&lt;br /&gt;
When you run the web application again (or use the 'update' trick) and point your browser to http://127.0.0.1:8080/NORTHWIND-DEMO, you should see the same Hello World message as last time.  This time however, the back end is using Spring's Web MVC framework.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:READERNAME_ReaderModuleOnPowerState.java</id>
		<title>Talk:READERNAME ReaderModuleOnPowerState.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:READERNAME_ReaderModuleOnPowerState.java"/>
				<updated>2010-11-24T08:32:01Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://exytebuc.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://exytebuc.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Command_Flow</id>
		<title>Command Flow</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Command_Flow"/>
				<updated>2010-11-24T08:31:48Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://eludevyvema.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://eludevyvema.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:developerDoc]][[Category:EmulatorDoc]][[Category:EngineImplementation]]&lt;br /&gt;
&lt;br /&gt;
This page shows how commands go through the components in the engine.  In particular it describes the various transformations that a single message goes through.&lt;br /&gt;
&lt;br /&gt;
[[Image:commandFlow.png|thumb|800px|none|How a command flows through the engine]]&lt;br /&gt;
&lt;br /&gt;
# Commands are sent to the TCP Incomming buffer which is located inside the TCP Socket.  The Stream Reader is a reader-specific class designed to read bytes off of the socket.  It is needed because some types of readers, such as the Alien, use plain text for their commands, so it is easier to use a readLine() method to read from the socket.  Other readers, such as the LLRP reader need to use a readByte() method, because the commands are byte strings.&lt;br /&gt;
#  From there, the command moves to the [[READERNAME_Protocol.java|protocol]].  The Protocol is a reader-specific class that performs two functions:&lt;br /&gt;
## It removes any kind of protocol that the reader uses to communicate, such as HTTP&lt;br /&gt;
## It is possible for a client to send two commands at once.  If this happens, The protocol breaks up multiple commands and places each one on the Incomming Message Buffer to be processed individually.&lt;br /&gt;
#After a Command is placed onto the Incomming Message Buffer, the buffer notifies the command controller to take off the next command from it&lt;br /&gt;
#Next the command goes through the [[READERNAME_CommandFormatter.java|command Formatter]], which transforms the message from a sequence of bytes into a command object that can be executed in a [[READERNAME_CATEGORY_Handler.java|handler method]]&lt;br /&gt;
#The Adapter uses the newly formed command object and the command searcher to look up a handler method name in the [[reader.xml]] file.  After it finds the handler method which should process the command, it invokes the handler method using reflection.&lt;br /&gt;
#The handler method processes the command in some specific way.  For example, if the command is 'get taglist' in an alien reader, it will scan the radio and collect the tag information. The radio will read the reader's [[TagMemory|tag memory]]. The handler method will put any return value into the command object and return back to the adapter.&lt;br /&gt;
#The adapter now passes the command back through the formatter to turn the command object into a response message.&lt;br /&gt;
#The command formatter will place the outgoing message onto the outgoing message buffer&lt;br /&gt;
#The Buffer will pass the message back through the protocol to add back in a protocol if it needs to be done&lt;br /&gt;
#The TCP Outgoing Buffer will send the response back to the clien&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:TagStreamerSpecification</id>
		<title>Talk:TagStreamerSpecification</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:TagStreamerSpecification"/>
				<updated>2010-11-24T08:31:44Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ojaperiwiva.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ojaperiwiva.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Package_Structure_for_a_reader_project</id>
		<title>Package Structure for a reader project</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Package_Structure_for_a_reader_project"/>
				<updated>2010-11-24T07:30:48Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://orylyvejuza.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
&lt;br /&gt;
Please refer to [[Create a new reader project | this document]] to figure out how to create a new reader project in eclipse&lt;br /&gt;
&lt;br /&gt;
This page enumerates the very basic packages that a reader will need to have and the important files in each one.  Complex readers will have more packages than these, but this is a bare minimum.  These packages correspond with what you will need to program in [[Reader_Development_Stages#Stage_2_Reader_Core_Implementation| stage 2 of reader creation]].&lt;br /&gt;
==org.rifidi.emulator.reader.READERNAME==&lt;br /&gt;
This package just contains the osgi activator.  It should be created for you automatically when you create the project.  You have to modify it only to make sure it sets up the reader. [[Reader_Activator.java|Activator.java]]&lt;br /&gt;
&lt;br /&gt;
==org.rifidi.emulator.reader.READERNAME.command.exception==&lt;br /&gt;
This package contains a file that handles exceptions that occur in the parsing and execution of reader commands.&lt;br /&gt;
*[[READERNAME_ExceptionHandler.java]]&lt;br /&gt;
&lt;br /&gt;
==org.rifidi.emulator.reader.READERNAME.commandhandler==&lt;br /&gt;
This package contains one or more files that handle incoming reader messages.  Normally commands can be divided into general categories.  For example, with the LLRP reader, there are a set of commands that deal with ROSPec messages (such as ADD_ROSPEC, ENABLE_ROSPEC, etc.) and a separate set of commands that deal with AccessSpec messages (such as ADD_ACCESSSPEC, ENABLE_ACCESSSPEC).  So for the LLRP reader, there is one file called 'LLRPReaderOperationControl.java' that contains the handler methods for ROSpec commands and  a file called 'LLRPAccessControl.java' that contains the handler methods for AccessSpec commands.  &lt;br /&gt;
*[[READERNAME_CATEGORY_Handler.java]]&lt;br /&gt;
==org.rifidi.emulator.reader.READERNAME.formatter==&lt;br /&gt;
Any kind of formatters used should go into this package.  You will definitely need a formatter that handles the parsing of incoming and outgoing commands called &lt;br /&gt;
*[[READERNAME_CommandFormatter.java]]&lt;br /&gt;
But you may also need formatters such as &lt;br /&gt;
*[[READERNAME_LogFormatter.java]] (not required)&lt;br /&gt;
that handles how incoming and outgoing messages should look in the log file.&lt;br /&gt;
Another useful formatter that may be necessary is&lt;br /&gt;
*[[READERNAME_StreamReaderFormatter.java]] (not required)&lt;br /&gt;
that controls how bytes are read off of and written to the TCPSocket.&lt;br /&gt;
&lt;br /&gt;
==org.rifidi.emulator.reader.READERNAME.protocol==&lt;br /&gt;
The protocol package contains one file whose purpose is twofold.  The protocol needs to:&lt;br /&gt;
#strip any extra protocol-- such as HTTP that the reader uses to communicate-- off of incoming messages and apply these protocols back to outgoing messages.&lt;br /&gt;
#Sometimes two or more commands can be read off of the TCP socket at the same time if the messages are sent quickly.  Therefore the protocol needs to make sure that each command is placed on the incoming buffer individually.&lt;br /&gt;
*[[READERNAME_Protocol.java]]&lt;br /&gt;
&lt;br /&gt;
==org.rifidi.emulator.reader.READERNAME.module==&lt;br /&gt;
The module is the heart of the reader.  It contains all the essential classes to get the reader up and running.&lt;br /&gt;
*[[reader.xml]] is a file that has the mappings between command names and handler methods&lt;br /&gt;
*[[emulator.xml]] is a file that contains with some basic configuration information&lt;br /&gt;
*[[REDERNAME_Module.java]] has the constructor for the reader&lt;br /&gt;
*[[READERNAME_ReaderSharedResources.java]] - The shared resources for this reader.  It allows various pieces of the reader to be accessed in different parts.&lt;br /&gt;
*[[READERNAME_ReaderModuleOnPowerState.java]] - contains the transition functions for how to go from on-&amp;amp;gt;off and on-&amp;amp;gt;suspend&lt;br /&gt;
*[[READERNAME_ReaderModuleOffPowerState.java]] - contains the transition functions for how to go from off-&amp;amp;gt;on&lt;br /&gt;
*[[READERNAME_ReaderModuleSuspendPowerState.java]] - contains the transition functions for how to go from suspended-&amp;amp;gt;on and suspended-&amp;amp;gt;off&lt;br /&gt;
&lt;br /&gt;
==org.rifidi.emulator.reader.READERNAME.tagbuffer==&lt;br /&gt;
Because every real reader has a slightly different way that they remember tags, each virtual reader will need a class to handle tag reads.&lt;br /&gt;
* [[READERNAME_TagMemory.java]] is a class that keeps up with tag reads for the reader.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:Package_Structure_for_a_reader_project</id>
		<title>Talk:Package Structure for a reader project</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:Package_Structure_for_a_reader_project"/>
				<updated>2010-11-24T07:29:47Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://orylyvejuza.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://orylyvejuza.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Services</id>
		<title>Services</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Services"/>
				<updated>2010-11-24T06:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://upezobyxez.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
Since designer 1.3 we have changed a lot of the it's internal works.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
We tried to stick even more with the principle of dependency injection.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
The most important change we made is that we switched from our custom services and their ServiceRegistry-Singleton to the service architecture that comes with OSGi.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
We also created a service locator to make it even easier to make use of these services.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
The following chapters will introduce the basic concepts of services and how we use it in designer. I will also try to show how to create your own service.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
The last chapter will then introduce the various services that we are providing with the core of designer.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Create_a_new_reader_project</id>
		<title>Create a new reader project</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Create_a_new_reader_project"/>
				<updated>2010-11-24T06:39:00Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ujybyqum.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ujybyqum.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
= How to create a new Reader Project =&lt;br /&gt;
If you start up a new Reader it is necessary to create a new Plugin Project for the new reader. This HowTo shows how to do this in Eclipse.&lt;br /&gt;
&lt;br /&gt;
== Creating a new Project in Eclipse ==&lt;br /&gt;
First you need to set up your Eclipse Workspace. After that you can start creating a new Project by selecting the &amp;amp;quot;File&amp;amp;quot;-menu in the eclipse menubar. &lt;br /&gt;
&lt;br /&gt;
File -&amp;amp;gt; New... -&amp;amp;gt; Project &lt;br /&gt;
&lt;br /&gt;
Now you will see the &amp;amp;quot;New Project Wizard&amp;amp;quot;. &lt;br /&gt;
# create a new Eclipse Plug-in Project&lt;br /&gt;
# enter a name for the new Project and select as Target Platform Equinox&lt;br /&gt;
# enter the name of the Plug-in Provider and click the finish button&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;amp;quot;0&amp;amp;quot; style=&amp;amp;quot;background:transparent;&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:NewPluginProject1.png|300px|thumb|left|create a new &amp;amp;quot;PluginProject&amp;amp;quot; in Eclipse]]&lt;br /&gt;
||&lt;br /&gt;
[[Image:NewPluginProject2.png|300px|thumb|left|enter the name for the project and select as target Equinox]]&lt;br /&gt;
||&lt;br /&gt;
[[Image:NewPluginProject3.png|300px|thumb|left| Enter the Name of the Plug-in Provider]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Add the project's dependencies==&lt;br /&gt;
#Double click on the project's MANIFEST.MF file&lt;br /&gt;
#Select the Dependencies tab&lt;br /&gt;
#For new readers, add the following packages:&lt;br /&gt;
*org.rifidi.emulator&lt;br /&gt;
*org.rifidi.common.utilities&lt;br /&gt;
*org.rifidi.services.tags&lt;br /&gt;
&lt;br /&gt;
== Add the project to the SVN Server (Optional)==&lt;br /&gt;
&lt;br /&gt;
If you are saving the project in the Rifidi SVN, you can do that from right inside eclipse using the subclipse plugin&lt;br /&gt;
&lt;br /&gt;
If you already created a new Eclipse Plug-in Project you need to add it to the Subversion Server. This can be done by following these 4 steps.&lt;br /&gt;
&lt;br /&gt;
# right click on the new Project and select &amp;amp;quot;Team&amp;amp;quot; -&amp;amp;gt; &amp;amp;quot;Share Project...&amp;amp;quot;&lt;br /&gt;
# select SVN as repository type &lt;br /&gt;
# select the repository location &lt;br /&gt;
# select the folder you want to save the project ()&lt;br /&gt;
&lt;br /&gt;
Usually our projects are stored in the trunk of the subversion server. If you want to contribute you a new project with the name '''org.rifidi.emulator.reader.test''', the path would be:&lt;br /&gt;
&lt;br /&gt;
'''http://[Address of Subversion]/rifidi/trunk/org.rifidi.emulator.reader.test'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;amp;quot;0&amp;amp;quot; style=&amp;amp;quot;background:transparent;&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:ShareProject1.png|300px|thumb|left| right click on the new Project and select &amp;amp;quot;Team&amp;amp;quot; -&amp;amp;gt; &amp;amp;quot;Share Project...&amp;amp;quot; ]]&lt;br /&gt;
| [[Image:ShareProject2.png|300px|thumb|left| select SVN as repository type  ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:ShareProject3.png|300px|thumb|left| select the repository location]]&lt;br /&gt;
| [[Image:ShareProject4.png|300px|thumb|left|  select the folder you want to save the project ()]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Northwind_Using_Emulator</id>
		<title>Northwind Using Emulator</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Northwind_Using_Emulator"/>
				<updated>2010-11-24T06:38:55Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ynejynezex.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ynejynezex.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This is Step 2 in the [[Northwind Tutorial|Northwind Application Tutorial]]&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
Previous Step: [[Northwind Creating the Application | Step 1: Create the Application]]&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
Next Step: [[Northwind Esper: Track Packages| Step 3: Esper: Track Packages]]&lt;br /&gt;
===What You Will Learn===&lt;br /&gt;
* Using Rifidi Emulator to speed up RFID development.&lt;br /&gt;
* Controlling the edge server from the command line.&lt;br /&gt;
===Running Rifidi Emulator===&lt;br /&gt;
Rifidi Emulator is a developer tool that emulates the interfaces of many popular RFID readers.  It can be used to speed up development of RFID applications, since you can write applications that talk to RFID readers without the need for access for a physical reader.  To get Rifidi Emulator up and running follow the steps in the [[Emulator User's Guide]].&lt;br /&gt;
&lt;br /&gt;
For the purposes of this tutorial, create two Alien ALR readers.  The first reader will represent the Dock Door.  Assign it IP address &amp;amp;lt;tt&amp;amp;gt;127.0.0.1:20000&amp;amp;lt;/tt&amp;amp;gt;  The second reader will represent the weigh station.  Asssing it &amp;amp;lt;tt&amp;amp;gt;127.0.0.1:20001&amp;amp;lt;/tt&amp;amp;gt;.  Create a few tags (does not matter which kind).  Drag and drop the tags onto the antenna.  Start the readers.&lt;br /&gt;
&lt;br /&gt;
Instead of creating the readers yourself, you can load the configuration from [[Image:Northwind-emulator.rfts.zip| this file]].  Simply unizp it and choose File-&amp;amp;gt;Open IDE Configuration and choose the rtfs file.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tutorial-Emulator.png|thumb|none|600px]]&lt;br /&gt;
&lt;br /&gt;
===Connecting to Emulator from the Edge Server===&lt;br /&gt;
There are two ways (currently) to create a connection to a reader using the edge server.  One is to use [[Workbench User's Guide|Workbench]].  &lt;br /&gt;
&lt;br /&gt;
However, when developing applications on the edge server, it is often quicker to use the [[Edge Server Console]].&lt;br /&gt;
&lt;br /&gt;
Once the edge server is up and going, type the following commands into the console:&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;readertypes&amp;amp;lt;/tt&amp;amp;gt; - This lists the kind of reader adapters available.  You should see one called &amp;amp;lt;tt&amp;amp;gt;Alien&amp;amp;lt;/tt&amp;amp;gt;&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;createreader Alien&amp;amp;lt;/tt&amp;amp;gt; - This makes a new instance of a reader configuration with the default properties (including the IP &amp;amp;amp; port, which by default is &amp;amp;lt;tt&amp;amp;gt;127.0.0.1:20000&amp;amp;lt;/tt&amp;amp;gt; for the Alien).  This will connect to the Dock Door, for the purposes of this demo.  You should see output indicating the sensor was created along with it's ID (probably &amp;amp;lt;tt&amp;amp;gt;Alien_1&amp;amp;lt;/tt&amp;amp;gt;).&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;readers&amp;amp;lt;/tt&amp;amp;gt; -  This lists the created readers.  You should see your reader listed here.&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;createsession Alien_1&amp;amp;lt;/tt&amp;amp;gt; -  This creates a session that you will use to connect to Dock Door Reader.&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;commandtypes&amp;amp;lt;/tt&amp;amp;gt; - This lists the available kind of commands you can execute.&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;createcommand Alien-Poll&amp;amp;lt;/tt&amp;amp;gt; -  Like &amp;amp;lt;tt&amp;amp;gt;createreader&amp;amp;lt;/tt&amp;amp;gt; this creates a new configuration with default properties, except this time its a command configuration.&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;executecommand Alien_1 1 Alien_Poll_1 1000&amp;amp;lt;/tt&amp;amp;gt; -  This tells the edge server to schedule a Alien_Poll command on session 1 of Alien_1 once every second.&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;startsession Alien_1 1&amp;amp;lt;/tt&amp;amp;gt; - This tells the session to make the TCP/IP connection to the Dock Door Reader.  At this point you should see activity on the console of the emulator.&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;createreader Alien Port 20001&amp;amp;lt;/tt&amp;amp;gt; - This makes a new instance of a reader configuration that connects to &amp;amp;lt;tt&amp;amp;gt;127.0.0.1:20001&amp;amp;lt;/tt&amp;amp;gt; (which is the weigh station, for the purposes of this demo).&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;createsession Alien_2&amp;amp;lt;/tt&amp;amp;gt; - This creates a session that you will use to connect to Weigh Station Reader.&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;executecommand Alien_2 1 Alien_Poll_1 1000&amp;amp;lt;/tt&amp;amp;gt; - You can execute the command that you've previously created on the second session.&lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;startsession Alien_2 1&amp;amp;lt;/tt&amp;amp;gt; - This tells the session to make the TCP/IP connection to the Weigh Station Reader.  &lt;br /&gt;
#&amp;amp;lt;tt&amp;amp;gt;save&amp;amp;lt;/tt&amp;amp;gt; - This saves the configurations so that you don't have to type all these commands again.&lt;br /&gt;
&lt;br /&gt;
Once you make sure this configuration is working, you can stop the sessions for now.  Just type &lt;br /&gt;
# &amp;amp;lt;tt&amp;amp;gt;stopsession Alien_1 1&amp;amp;lt;/tt&amp;amp;gt; - Stop the Dock Door Reader&lt;br /&gt;
# &amp;amp;lt;tt&amp;amp;gt;stopsession Alien_2 1&amp;amp;lt;/tt&amp;amp;gt; - Stop the Weigh Station Reader&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:Compiling_Rifidi_with_JDK_6.0_update_4</id>
		<title>Talk:Compiling Rifidi with JDK 6.0 update 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:Compiling_Rifidi_with_JDK_6.0_update_4"/>
				<updated>2010-11-24T06:38:55Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ucozisit.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ucozisit.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Reader_Guides</id>
		<title>Reader Guides</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Reader_Guides"/>
				<updated>2010-11-24T06:38:50Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://enececufo.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
=Virtual RFID Reader User's guides=&lt;br /&gt;
The following pages contain information about how to use and develop with specific virtual readers.&lt;br /&gt;
*[[LLRP_Reader |LLRP Reader]] &lt;br /&gt;
*[[Alien 9800]]&lt;br /&gt;
*[[Symbol XR440]]&lt;br /&gt;
*[[Awid MPR ]]&lt;br /&gt;
*[[EPC Reader| EPC V1.1 ]]&lt;br /&gt;
*[[ThingMagic]]&lt;br /&gt;
*[[Sirit INfinity510|Sirit INfinity510 (work in progress)]]&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:Services</id>
		<title>Talk:Services</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:Services"/>
				<updated>2010-11-24T06:38:42Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://upezobyxez.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://upezobyxez.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/TagStreamerArchitecture</id>
		<title>TagStreamerArchitecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/TagStreamerArchitecture"/>
				<updated>2010-11-24T06:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ucozisit.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ucozisit.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
= Tag Streamer 2.0 =&lt;br /&gt;
&lt;br /&gt;
As we talk about Tag Streamer 2.0 we talk about a new Software. The software comes along with Objects and object orientated programming. One of the modern software development concepts is the &amp;amp;quot;Model Viewer Controller&amp;amp;quot; principle. It defines 3 main parts of a program.&lt;br /&gt;
&lt;br /&gt;
* the Viewer&lt;br /&gt;
* the Model&lt;br /&gt;
* the Controller&lt;br /&gt;
&lt;br /&gt;
== The Viewer ==&lt;br /&gt;
The Viewer will be defined in a later phase of the implementation because the main task of Tag Streamer will be the execution of predefined XML files.&lt;br /&gt;
&lt;br /&gt;
== The Model ==&lt;br /&gt;
The Model represents the input data. In Tag Streamer we can identify 4 parts.&lt;br /&gt;
&lt;br /&gt;
* the Batch&lt;br /&gt;
* the Scenario&lt;br /&gt;
* the Components&lt;br /&gt;
* the LoadTestSuite &lt;br /&gt;
&lt;br /&gt;
=== The Batch ===&lt;br /&gt;
Describes what should be done on the PathItems along the Scenario.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;batch id=&amp;amp;quot;0&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;waitAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;waitTime&amp;amp;gt;100&amp;amp;lt;/waitTime&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/waitAction&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;tagAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;execDuration&amp;amp;gt;200&amp;amp;lt;/execDuration&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;number&amp;amp;gt;20&amp;amp;lt;/number&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;prefix&amp;amp;gt;eef&amp;amp;lt;/prefix&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;tagGen&amp;amp;gt;GEN2&amp;amp;lt;/tagGen&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;tagType&amp;amp;gt;CustomEPC96&amp;amp;lt;/tagType&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/tagAction&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;waitAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;waitTime&amp;amp;gt;100&amp;amp;lt;/waitTime&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/waitAction&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;gpiAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;port&amp;amp;gt;0&amp;amp;lt;/port&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;signal&amp;amp;gt;true&amp;amp;lt;/signal&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/gpiAction&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/batch&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Scenario ===&lt;br /&gt;
Describes how the PathItems are connected to each other to simulate a assembly line in a factory.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;scenario&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;pathUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerID&amp;amp;gt;0&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;travelTime&amp;amp;gt;400&amp;amp;lt;/travelTime&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/pathUnit&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;pathUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerID&amp;amp;gt;0&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;travelTime&amp;amp;gt;400&amp;amp;lt;/travelTime&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/pathUnit&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;pathUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerID&amp;amp;gt;0&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;travelTime&amp;amp;gt;400&amp;amp;lt;/travelTime&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/pathUnit&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/scenario&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Components ===&lt;br /&gt;
Describes the affected devices in the PathItems. That can be RFID readers and in the future some more devices along a assembly line.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;componentList id=&amp;amp;quot;0&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;readerComponents id=&amp;amp;quot;0&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;127.0.0.1:10101&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;127.0.0.1:5084&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerClassName&amp;amp;gt;org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerName&amp;amp;gt;LLRPreader&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerType&amp;amp;gt;LLRPReader&amp;amp;lt;/readerType&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;readerComponents id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;127.0.0.1:10102&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;value&amp;amp;gt;127.0.0.1:5085&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerClassName&amp;amp;gt;org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerName&amp;amp;gt;LLRPreader2&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;readerType&amp;amp;gt;LLRPReader&amp;amp;lt;/readerType&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/componentList&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The LoadTestSuite ===&lt;br /&gt;
Describes how many Scenarios are executed and how are the Batches are connected to the scenarios, the speed new batches are created and how long the wait time will be until it's executed again.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;loadTestSuite&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;fileUnits&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileName&amp;amp;gt;scenario.xml&amp;amp;lt;/fileName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileType&amp;amp;gt;SCENARIO&amp;amp;lt;/fileType&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/fileUnits&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;fileUnits&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileName&amp;amp;gt;scenario2.xml&amp;amp;lt;/fileName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileType&amp;amp;gt;SCENARIO&amp;amp;lt;/fileType&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/fileUnits&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;fileUnits&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileName&amp;amp;gt;batch.xml&amp;amp;lt;/fileName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileType&amp;amp;gt;BATCH&amp;amp;lt;/fileType&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/fileUnits&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;testUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batchID&amp;amp;gt;1&amp;amp;lt;/batchID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;rampTime&amp;amp;gt;4000&amp;amp;lt;/rampTime&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;scenarios&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;id&amp;amp;gt;1&amp;amp;lt;/id&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;id&amp;amp;gt;2&amp;amp;lt;/id&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/scenarios&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/testUnit&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;testUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batchID&amp;amp;gt;1&amp;amp;lt;/batchID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;rampTime&amp;amp;gt;4000&amp;amp;lt;/rampTime&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;scenarios&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;id&amp;amp;gt;1&amp;amp;lt;/id&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/scenarios&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/testUnit&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;testUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batchID&amp;amp;gt;1&amp;amp;lt;/batchID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;rampTime&amp;amp;gt;4000&amp;amp;lt;/rampTime&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;scenarios&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;id&amp;amp;gt;1&amp;amp;lt;/id&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;id&amp;amp;gt;2&amp;amp;lt;/id&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/scenarios&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/testUnit&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/loadTestSuite&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Controller ==&lt;br /&gt;
The Controller specifies how the input data will be processed. A example &amp;amp;quot;use case&amp;amp;quot; is provided here:  [[TagStreamerSpecification]].&lt;br /&gt;
&lt;br /&gt;
As parts of the controller we can identify the following components:&lt;br /&gt;
&lt;br /&gt;
* the BatchGenerator&lt;br /&gt;
* the PathItem&lt;br /&gt;
* the LoadTestProcessor&lt;br /&gt;
&lt;br /&gt;
=== The BatchGenerator ===&lt;br /&gt;
It uses the Batch as input data and creates the BatchItems which are floating through the Scenario.&lt;br /&gt;
&lt;br /&gt;
=== The PathItem ===&lt;br /&gt;
A thread which will take a Batch as input and execute the the defined operations in it.&lt;br /&gt;
&lt;br /&gt;
=== The LoadTestProcessor ===&lt;br /&gt;
A Thread which takes the LoadTestSuite as input and creates all the necessary objects to operate.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/TagStreamerUseCaseScenarios</id>
		<title>TagStreamerUseCaseScenarios</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/TagStreamerUseCaseScenarios"/>
				<updated>2010-11-24T06:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ekipebu.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ekipebu.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=Starting up Tag Streamer alpha 2.0=&lt;br /&gt;
# Follow the [[Rifidi:Source_Code|instructions]] to download Rifidi Tag Streamer from source&lt;br /&gt;
## Download the following [[Tag_Streamer_Packages|packages]]&lt;br /&gt;
# Open up the Lauch Configuration wizard by going to run-&amp;amp;gt;Open Run Dialog... [[Image:Streamer-setup-osgi.png|thumb|800px|none]]&lt;br /&gt;
#Create a new OSGI Framwork launch configuration [[Image:Streamer-setup-plugins.png|thumb|800px|none]]&lt;br /&gt;
##Click 'Deselect All'&lt;br /&gt;
##Click the box next to org.rifidi.streamer&lt;br /&gt;
##Click 'Add Required Bundles'&lt;br /&gt;
##Click the boxes next to all the reader bundles (i.e. org.rifidi.emulator.reader.llrp, org.rifidi.emulator.reader.alien, etc)&lt;br /&gt;
##Click 'Apply'&lt;br /&gt;
##Click 'Run'&lt;br /&gt;
#The application should now fail with a FileNotFound Exception.  You need to place the four XML files (loadTestSuite.xml, scenario.xml, components.xml, and batch.xml) into this directory&lt;br /&gt;
&lt;br /&gt;
= Use Case: Bursts of tags =&lt;br /&gt;
This use case simulates scenarios when you have short bursts of tags on many readers, such as several dock doors.  We define a scenario suite with five scenarios, each having one reader.  You can think of this as having five dock doors.  Then we define the actual readers in the components.xml.  This defines what kind of reader will be used in the scenarios as well as some additional information about the readers, such as their IP address and how many GPIO ports they have.  The batchSuite defines the patterns of tags that will be seen by the readers.  The first thing that this batch does is wait for a random amount of time so that all batches do not start at the same time. We also define a pattern of 20 tags (number) that represent a burst.  Finally a LoadTestSuite is defined that defines a)The path to the xml files that are used (scenario, components, and batch), and b) the execution structure.  The execution structure has a number of times to run, a time to wait between loops, and a mapping between scenarios and batches.  These mappings, called batchActions, define which batches each scenario should run.  All of the batchActions happen in parallel (that is why we put a random wait time at the beginning of the batch -- so that &lt;br /&gt;
== Scenarios ==&lt;br /&gt;
The following scenario describes how the readers are located. In this special case all scenarios consist of only one reader. Because none of these readers have following readers the traveltime is 0.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;scenarioSuite&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;scenario id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;pathItem&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;readerID&amp;amp;gt;1&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;travelTime&amp;amp;gt;0&amp;amp;lt;/travelTime&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/scenario&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;scenario id=&amp;amp;quot;2&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;pathItem&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;readerID&amp;amp;gt;2&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;travelTime&amp;amp;gt;0&amp;amp;lt;/travelTime&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/scenario&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;scenario id=&amp;amp;quot;3&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;pathItem&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;readerID&amp;amp;gt;3&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;travelTime&amp;amp;gt;0&amp;amp;lt;/travelTime&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/scenario&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;scenario id=&amp;amp;quot;4&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;pathItem&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;readerID&amp;amp;gt;4&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;travelTime&amp;amp;gt;0&amp;amp;lt;/travelTime&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/scenario&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;scenario id=&amp;amp;quot;5&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;pathItem&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;readerID&amp;amp;gt;5&amp;amp;lt;/readerID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;travelTime&amp;amp;gt;0&amp;amp;lt;/travelTime&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/pathItem&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/scenario&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/scenarioSuite&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
This file describes all the components the streamer should load. In this case we describe 5 LLRP Readers. Wich will be emulated by RifidiEmulator.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;componentSuite&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;readerComponents id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:5084&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:10101&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerClassName&amp;amp;gt;&lt;br /&gt;
				org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&lt;br /&gt;
			&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerName&amp;amp;gt;LLRPReader1&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;readerComponents id=&amp;amp;quot;2&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:5085&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:10102&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerClassName&amp;amp;gt;&lt;br /&gt;
				org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&lt;br /&gt;
			&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerName&amp;amp;gt;LLRPReader2&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;readerComponents id=&amp;amp;quot;3&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:5086&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:10103&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerClassName&amp;amp;gt;&lt;br /&gt;
				org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&lt;br /&gt;
			&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerName&amp;amp;gt;LLRPReader3&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;readerComponents id=&amp;amp;quot;4&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:5087&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:10104&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerClassName&amp;amp;gt;&lt;br /&gt;
				org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&lt;br /&gt;
			&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerName&amp;amp;gt;LLRPReader4&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;readerComponents id=&amp;amp;quot;5&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;reader&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numAntennas&amp;amp;gt;1&amp;amp;lt;/numAntennas&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPIs&amp;amp;gt;4&amp;amp;lt;/numGPIs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;numGPOs&amp;amp;gt;4&amp;amp;lt;/numGPOs&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;propertiesMap&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;llrp_inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:5088&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;inet_address&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;127.0.0.1:10104&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;entry&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;key&amp;amp;gt;servermode&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;value&amp;amp;gt;true&amp;amp;lt;/value&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;/propertiesMap&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerClassName&amp;amp;gt;&lt;br /&gt;
				org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&lt;br /&gt;
			&amp;amp;lt;/readerClassName&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;readerName&amp;amp;gt;LLRPReader5&amp;amp;lt;/readerName&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/reader&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/readerComponents&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/componentSuite&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Batch ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;batchSuite&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;batch id=&amp;amp;quot;1&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;waitAction&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;maxWaitTime&amp;amp;gt;100&amp;amp;lt;/maxWaitTime&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;minWaitTime&amp;amp;gt;200&amp;amp;lt;/minWaitTime&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;random&amp;amp;gt;true&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/waitAction&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;tagAction&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;execDuration&amp;amp;gt;200&amp;amp;lt;/execDuration&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;number&amp;amp;gt;20&amp;amp;lt;/number&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;prefix&amp;amp;gt;eef&amp;amp;lt;/prefix&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;regenerate&amp;amp;gt;true&amp;amp;lt;/regenerate&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;tagGen&amp;amp;gt;GEN2&amp;amp;lt;/tagGen&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;tagType&amp;amp;gt;CustomEPC96&amp;amp;lt;/tagType&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/tagAction&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/batch&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/batchSuite&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LoadTestSuite == &lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot; standalone=&amp;amp;quot;yes&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;loadTestSuite&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;fileUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileName&amp;amp;gt;components.xml&amp;amp;lt;/fileName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileType&amp;amp;gt;COMPONENT&amp;amp;lt;/fileType&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/fileUnit&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;fileUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileName&amp;amp;gt;batches.xml&amp;amp;lt;/fileName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileType&amp;amp;gt;BATCH&amp;amp;lt;/fileType&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/fileUnit&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;fileUnit&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileName&amp;amp;gt;scenario.xml&amp;amp;lt;/fileName&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;fileType&amp;amp;gt;SCENARIO&amp;amp;lt;/fileType&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/fileUnit&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;testUnit iterations=&amp;amp;quot;5000&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;waitAction&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;maxWaitTime&amp;amp;gt;1000&amp;amp;lt;/maxWaitTime&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;minWaitTime&amp;amp;gt;0000&amp;amp;lt;/minWaitTime&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;random&amp;amp;gt;false&amp;amp;lt;/random&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/waitAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batchAction&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;batchID&amp;amp;gt;1&amp;amp;lt;/batchID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;scenarioID&amp;amp;gt;1&amp;amp;lt;/scenarioID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batchAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batchAction&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;batchID&amp;amp;gt;1&amp;amp;lt;/batchID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;scenarioID&amp;amp;gt;2&amp;amp;lt;/scenarioID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batchAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batchAction&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;batchID&amp;amp;gt;1&amp;amp;lt;/batchID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;scenarioID&amp;amp;gt;3&amp;amp;lt;/scenarioID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batchAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batchAction&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;batchID&amp;amp;gt;1&amp;amp;lt;/batchID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;scenarioID&amp;amp;gt;4&amp;amp;lt;/scenarioID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batchAction&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;batchAction&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;batchID&amp;amp;gt;1&amp;amp;lt;/batchID&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;scenarioID&amp;amp;gt;5&amp;amp;lt;/scenarioID&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/batchAction&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/testUnit&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/loadTestSuite&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Category:EngineImplementation</id>
		<title>Category:EngineImplementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Category:EngineImplementation"/>
				<updated>2010-11-23T23:27:23Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://ecacoraqosy.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
'''Pages that describe specific details about how some aspect of our code is implemented'''&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Category_talk:EngineImplementation</id>
		<title>Category talk:EngineImplementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Category_talk:EngineImplementation"/>
				<updated>2010-11-23T23:26:57Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ecacoraqosy.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ecacoraqosy.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Server_API</id>
		<title>Edge Server API</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Server_API"/>
				<updated>2010-11-23T23:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://ukusypumi.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&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>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/READERNAME_ReaderSharedResources.java</id>
		<title>READERNAME ReaderSharedResources.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/READERNAME_ReaderSharedResources.java"/>
				<updated>2010-11-23T23:26:42Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://otyxemydu.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://otyxemydu.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
The SharedResources act as common repository for various objects used in various places in the code.  Each reader should have a shared resources and it should extend AbstractReaderSharedResources.&lt;br /&gt;
&lt;br /&gt;
All of the methods in the shared resources are just getters and setters for the components that are held in it.  The only method that this page will cover is the constructor.&lt;br /&gt;
&lt;br /&gt;
=Constructor=&lt;br /&gt;
The constructor for the shared resources should be called in the [[REDERNAME_Module.java| reader module]].&lt;br /&gt;
The constructor for the shared resources must take in the following things:&lt;br /&gt;
#GenericRadio radio&lt;br /&gt;
#TagMemory tagMemory&lt;br /&gt;
#ControlSignal&amp;amp;lt;Boolean&amp;amp;gt; readerPowerSignal&lt;br /&gt;
#String readerName&lt;br /&gt;
#GenericExceptionHandler geh&lt;br /&gt;
#CommandDigester digester&lt;br /&gt;
#int numberOfAntennas&lt;br /&gt;
&lt;br /&gt;
The first thing that the constructor should do is make a call to its super class:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
		super(radio, tagMemory, readerPowerSignal, readerName, geh digester, numberOfAntennas);&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then it should set the rest of the variables that are required by the reader to be in the shared resources. If more than one class or part of the reader needs the same object or information then it should be placed inside the shared resources. For more information see the sharedResources in one of the other readers.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:Edge_Server_API</id>
		<title>Talk:Edge Server API</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:Edge_Server_API"/>
				<updated>2010-11-23T23:26:32Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ukusypumi.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ukusypumi.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Development_Process</id>
		<title>Development Process</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Development_Process"/>
				<updated>2010-11-23T23:26:20Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://axufizyfe.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://axufizyfe.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
*[[Development and Release Process]]&lt;br /&gt;
*[[Style Guide]]&lt;br /&gt;
*HOWTOs&lt;br /&gt;
**[[Rifidi:Source Code|Running Rifidi from Source]]&lt;br /&gt;
**[[Create a new bundle from a 3rd party jar]]&lt;br /&gt;
**[[Use org.rifidi.logging]]&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Alien_Example_Client</id>
		<title>Alien Example Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Alien_Example_Client"/>
				<updated>2010-11-23T23:26:12Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://yjucofi.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
You can see a list of possible alien commands by sending the 'help' command to the alien reader.  However, not all of these commands are implemented in rifidi.  See this [[Alien_9800#Supported Commands | List of supported commands]]. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *  AlienExampleClient.java&lt;br /&gt;
 *&lt;br /&gt;
 *  Created:	Dec 6, 2007&lt;br /&gt;
 *  Project:	RiFidi Emulator - A Software Simulation Tool for RFID Devices&lt;br /&gt;
 *  				http://www.rifidi.org&lt;br /&gt;
 *  				http://rifidi.sourceforge.net&lt;br /&gt;
 *  Copyright:	Pramari LLC and the Rifidi Project&lt;br /&gt;
 *  License:	Lesser GNU Public License (LGPL)&lt;br /&gt;
 *  				http://www.opensource.org/licenses/lgpl-license.html&lt;br /&gt;
 *  Author:    Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 */&lt;br /&gt;
package sandbox;&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;
&lt;br /&gt;
/**&lt;br /&gt;
 * This class shows how to create a program to talk to the alien reader.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class AlienExampleClient {&lt;br /&gt;
&lt;br /&gt;
	public static final String IP_ADDRESS = new String(&amp;amp;quot;127.0.0.1&amp;amp;quot;);&lt;br /&gt;
	public static final int READER_PORT = 20000;&lt;br /&gt;
	private static Socket connection = null;&lt;br /&gt;
&lt;br /&gt;
	private static PrintWriter out = null;&lt;br /&gt;
	private static BufferedReader in = null;&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Initialize the connection and send username/password&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 * @throws InterruptedException&lt;br /&gt;
	 */&lt;br /&gt;
	private void  init() throws IOException, InterruptedException{&lt;br /&gt;
		connection = new Socket(&amp;amp;quot;127.0.0.1&amp;amp;quot;, READER_PORT);&lt;br /&gt;
&lt;br /&gt;
		in = new BufferedReader(new InputStreamReader(connection&lt;br /&gt;
				.getInputStream()));&lt;br /&gt;
		out = new PrintWriter(connection.getOutputStream());&lt;br /&gt;
&lt;br /&gt;
		Thread.sleep(500);&lt;br /&gt;
		System.out.println(readFromReader(in));&lt;br /&gt;
		out.write(&amp;amp;quot;alien\n&amp;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;amp;quot;password\n&amp;amp;quot;);&lt;br /&gt;
		out.flush();&lt;br /&gt;
		System.out.println(readFromReader(in));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Tear down the connection&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 */&lt;br /&gt;
	private void tearDown() throws IOException{&lt;br /&gt;
		out.write(&amp;amp;quot;q&amp;amp;quot;);&lt;br /&gt;
		out.flush();&lt;br /&gt;
		connection.close();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get tags back from the alien reader&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 */&lt;br /&gt;
	private String getTags() throws IOException{&lt;br /&gt;
		String command = &amp;amp;quot;t&amp;amp;quot;;&lt;br /&gt;
		out.write(command + &amp;amp;quot;\n&amp;amp;quot;);&lt;br /&gt;
		out.flush();&lt;br /&gt;
		String returnVal = readFromReader(in);&lt;br /&gt;
		return returnVal;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param args&lt;br /&gt;
	 * @throws InterruptedException &lt;br /&gt;
	 * @throws IOException &lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args) throws IOException, InterruptedException {&lt;br /&gt;
		AlienExampleClient client = new AlienExampleClient();&lt;br /&gt;
		client.init();&lt;br /&gt;
		Thread.sleep(500);&lt;br /&gt;
		String tags = client.getTags();&lt;br /&gt;
		System.out.println(tags);&lt;br /&gt;
		Thread.sleep(500);&lt;br /&gt;
		client.tearDown();&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Read responses from the socket&lt;br /&gt;
	 * @param inBuf&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * @throws IOException&lt;br /&gt;
	 */&lt;br /&gt;
	public static 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;
&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Emulator_Packages</id>
		<title>Emulator Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Emulator_Packages"/>
				<updated>2010-11-23T23:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ekygelymib.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ekygelymib.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Packages needed for to run the emulator from source:&lt;br /&gt;
*org.rifidi.dependencies&lt;br /&gt;
*org.rifidi.emulator&lt;br /&gt;
*org.rifidi.emulator.reader.alien&lt;br /&gt;
*org.rifidi.emulator.reader.awid&lt;br /&gt;
*org.rifidi.emulator.reader.epc&lt;br /&gt;
*org.rifidi.emulator.reader.llrp&lt;br /&gt;
*org.rifidi.emulator.reader.symbol&lt;br /&gt;
*org.rifidi.log4j&lt;br /&gt;
*org.rifidi.ui.common&lt;br /&gt;
*org.rifidi.ui.ide&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:Alien_Example_Client</id>
		<title>Talk:Alien Example Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:Alien_Example_Client"/>
				<updated>2010-11-23T23:25:54Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yjucofi.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yjucofi.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Northwind_Creating_the_Web_Application</id>
		<title>Northwind Creating the Web Application</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Northwind_Creating_the_Web_Application"/>
				<updated>2010-11-23T23:25:03Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This is Step 6 in the [[Northwind Tutorial|Northwind Application Tutorial]]&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
Previous Step: [[Northwind JMS Send | Step 5: Send Notifications Over JMS]]&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
Next Step: [[Northwind Hello World Servlet | Step 7: Write a Hello World Servlet]]&lt;br /&gt;
===What you will learn===&lt;br /&gt;
* How to set up a web application project&lt;br /&gt;
===Create the project===&lt;br /&gt;
Just like when we created a new project for the Northwind application, we need to create a new project for the web application.&lt;br /&gt;
# Go to File-&amp;amp;gt; New -&amp;amp;gt; Project. Select &amp;amp;quot;Plug-in Project&amp;amp;quot; from the file chooser. Click &amp;amp;quot;Next.&amp;amp;quot;&lt;br /&gt;
# Assign the project a name. For web applications, the application needs to end in 'war'. I chose &amp;amp;lt;tt&amp;amp;gt;com.northwind.rfid.shipping.war&amp;amp;lt;/tt&amp;amp;gt;. Click next.&lt;br /&gt;
# Assign the plugin an ID, which is used to identify the bundle in the OSGi environment. Give it a descriptive name as well as the the name of the entity (company, person, project) that will maintain the bundle. For this bundle, we don't need the Activator, so uncheck that box.&lt;br /&gt;
===Add the necessary files and folders===&lt;br /&gt;
# Download and unzip this file: [[Image:Tutorial-war-files.zip]].  It's a zip file that contains two files you will need.&lt;br /&gt;
# In the main project, make a new folder called 'WEB-INF'&lt;br /&gt;
# In the WEB-INF folder, make a new folder called 'jsp'&lt;br /&gt;
# In the WEB-INF folder, make a new file called 'web.xml'&lt;br /&gt;
# Put the file 'spring.tld' in the WEB-INF folder. &lt;br /&gt;
# In the META-INF folder, make a new folder called 'xsd'&lt;br /&gt;
# Put the file 'spring-beans-2.5.xsd' in the xsd folder.&lt;br /&gt;
# In the root folder, create a file called 'index.jsp'&lt;br /&gt;
Your project should now look like this:&lt;br /&gt;
[[Image:Tutorial-war-structure.png|thumb|none|400px]]&lt;br /&gt;
&lt;br /&gt;
===Configure the Manifest===&lt;br /&gt;
Open up the Manifest.MF file.  Click on the Dependencies tab.&lt;br /&gt;
*On the Required Plug-ins Section, add the following bundles&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
** com.northwind.rfid.shipping&lt;br /&gt;
** com.springsource.org.apache.taglibs.standard&lt;br /&gt;
* On the Imported Packages section, add the following packages&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
** javax.jms&lt;br /&gt;
** javax.servlet&lt;br /&gt;
** javax.servlet.http&lt;br /&gt;
** javax.servlet.jsp&lt;br /&gt;
** javax.servlet.jsp.jstl.core&lt;br /&gt;
** org.apache.activemq.command&lt;br /&gt;
** org.apache.activemq.spring&lt;br /&gt;
** org.springframework.jms.core&lt;br /&gt;
** org.springframework.jms.listener&lt;br /&gt;
** org.springframework.web.servlet&lt;br /&gt;
** org.springframework.web.servlet.mvc&lt;br /&gt;
** org.springframework.web.servlet.view&lt;br /&gt;
* Click the Manifest.MF tab.  Add the following line to the end.  Make sure there is an blank line as the last line of the Manifest.MF (and make sure there is no leading whitespace for this line).&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
Web-ContextPath: NORTHWIND-DEMO&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modify the web.xml===&lt;br /&gt;
Open up the Web.xml file.  Modify it to look like this:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;web-app version=&amp;amp;quot;2.4&amp;amp;quot; xmlns=&amp;amp;quot;http://java.sun.com/xml/ns/j2ee&amp;amp;quot;&lt;br /&gt;
	xmlns:xsi=&amp;amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;amp;quot;&lt;br /&gt;
	xsi:schemaLocation=&amp;amp;quot;http://java.sun.com/xml/ns/j2ee &lt;br /&gt;
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;lt;welcome-file-list&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;welcome-file&amp;amp;gt;index.jsp&amp;amp;lt;/welcome-file&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/welcome-file-list&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;lt;jsp-config&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;taglib&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;taglib-uri&amp;amp;gt;/spring&amp;amp;lt;/taglib-uri&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;taglib-location&amp;amp;gt;/WEB-INF/spring.tld&amp;amp;lt;/taglib-location&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/taglib&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/jsp-config&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/web-app&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building web applications in java, the web.xml file provides configuration and deployment information for the Web components. Initially, we supply two pieces of information: &lt;br /&gt;
# The welcome file is page that is loaded by default when you go to 127.0.0.1:8080/NORTHWIND-DEMO&lt;br /&gt;
# The &amp;amp;lt;tt&amp;amp;gt;jsp-config&amp;amp;lt;/tt&amp;amp;gt; provides the location of some jsp tags provided by spring.&lt;br /&gt;
&lt;br /&gt;
===Add a include.jsp===&lt;br /&gt;
Make a new file called include.jsp inside of the jsp folder.  Modify it to look like this:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;%@ page session=&amp;amp;quot;false&amp;amp;quot;%&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;%@ taglib prefix=&amp;amp;quot;c&amp;amp;quot; uri=&amp;amp;quot;http://java.sun.com/jsp/jstl/core&amp;amp;quot; %&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;%@ taglib prefix=&amp;amp;quot;fmt&amp;amp;quot; uri=&amp;amp;quot;http://java.sun.com/jsp/jstl/fmt&amp;amp;quot; %&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file simply includes some headers that we want on top of every JSP we will make.  Therefore, in each JSP, we only have to have one include instead of several.&lt;br /&gt;
&lt;br /&gt;
===Modify index.jsp===&lt;br /&gt;
Open up index.jsp.  Modify it to look like this:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;%@ include file=&amp;amp;quot;/WEB-INF/jsp/include.jsp&amp;amp;quot; %&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;jsp:useBean id=&amp;amp;quot;now&amp;amp;quot; class=&amp;amp;quot;java.util.Date&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
Hello World at &amp;amp;lt;fmt:formatDate value=&amp;amp;quot;${now}&amp;amp;quot; pattern=&amp;amp;quot;MM.dd.yyyy&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, we use some JSP tags to print out the date.&lt;br /&gt;
&lt;br /&gt;
===Run the web application===&lt;br /&gt;
# Open up the run configuration and select the com.nortwind.rfid.shipping.war plugin. Run&lt;br /&gt;
# Point your browser to http://127.0.0.1:8080/NORTHWIND-DEMO/&lt;br /&gt;
&lt;br /&gt;
If everything worked, you should see 'hello world' and the date.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Use_org.rifidi.logging</id>
		<title>Use org.rifidi.logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Use_org.rifidi.logging"/>
				<updated>2010-11-23T23:24:35Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://asuxoqonyb.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
&amp;amp;lt;code&amp;amp;gt;org.rifidi.logging&amp;amp;lt;/code&amp;amp;gt; is a bundle that provides a logging service for other bundles in the rifidi project.  Specifically it provides &amp;amp;lt;code&amp;amp;gt;org.apache.commons.logging&amp;amp;lt;/code&amp;amp;gt; and &amp;amp;lt;code&amp;amp;gt;org.apache.log4j&amp;amp;lt;/code&amp;amp;gt;.  Log4J relies on a file called &amp;amp;lt;code&amp;amp;gt;log4j.properties&amp;amp;lt;/code&amp;amp;gt; to provide configuration information. The plugin itself does not have a &amp;amp;lt;code&amp;amp;gt;log4j.properties&amp;amp;lt;/code&amp;amp;gt; folder in it.  Instead, it relies on a OSGi bundle fragment to add one to the classpath.&lt;br /&gt;
&lt;br /&gt;
To use it in another plugin:&lt;br /&gt;
# Make sure that the bundle is checked out in your workspace.  You can either download the plugin from the &amp;amp;lt;code&amp;amp;gt;rep-external&amp;amp;lt;/code&amp;amp;gt; svn repository, or you can use the binary from &amp;amp;lt;code&amp;amp;gt;org.rifidi.binary&amp;amp;lt;/code&amp;amp;gt; along with a target platform.&lt;br /&gt;
# In the Manifest for your plugin, declare a package import of &amp;amp;lt;code&amp;amp;gt;org.apache.commons.logging&amp;amp;lt;/code&amp;amp;gt;.  Make sure that the minimum version is 1.0.4.&lt;br /&gt;
# In the run configuration:&lt;br /&gt;
## Make sure that &amp;amp;lt;code&amp;amp;gt;org.rifidi.logging&amp;amp;lt;/code&amp;amp;gt; is checked.&lt;br /&gt;
## Make sure that only one log4J fragment is checked.  If more than one is loaded, it is not defined which one will be used to configure log4j.&lt;br /&gt;
## Make sure that &amp;amp;lt;code&amp;amp;gt;org.apache.commons.logging&amp;amp;lt;/code&amp;amp;gt; or &amp;amp;lt;code&amp;amp;gt;org.apache.log4j&amp;amp;lt;/code&amp;amp;gt; is not being provided by a target platform.  It is recommended that target platforms used by rifidi not contain either of these two bundles.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Alien_Edge_Server_Guide</id>
		<title>Alien Edge Server Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Alien_Edge_Server_Guide"/>
				<updated>2010-11-23T23:24:34Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ucozisit.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ucozisit.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
This guide will help you quickly get an Alien reader up and reading tags on Rifidi Edge.  The supported Alien readers are the 9800, the 9900, the 8800, and the 9600.  Other versions haven't been tested, but may still work.  &lt;br /&gt;
&lt;br /&gt;
*Start the edge server and the edge client.  Connect the client to the server.  &lt;br /&gt;
*Right click on the 'Edge Server' icon in the 'Edge Server View' and select 'New Reader'.&lt;br /&gt;
*Select 'Alien' from the drop-down and click 'Next'.  &lt;br /&gt;
*Type in the IP and port of the reader you wish to in their respective boxes.  If you are using an emulated Alien, you can check this in the emulator itself.  If you are connecting to a physical reader, you might need to use the discovery tool in the Alien software to find out what the IP and port are if you don't know them offhand.  &lt;br /&gt;
*Set the username and password of the reader.  The default is 'alien' and 'password', respectively.  &lt;br /&gt;
*Select the reconnect interval (in milliseconds).  If you want the Edge Server to keep trying to connect if the reader loses connection while running or if it can't connect to start with, you can set this value to what you want (in milliseconds).  If you are unsure, you can just leave it at the default 500.  &lt;br /&gt;
*Select the maximum number of times the server will try to connect to an unresponsive reader.  -1 means it will keep going until it gets a connection.  To turn this feature off, set it to 0.  &lt;br /&gt;
&lt;br /&gt;
==Reading Tags==&lt;br /&gt;
&lt;br /&gt;
Now that the reader is set up, its time to actually connect to it and read some tags.  &lt;br /&gt;
&lt;br /&gt;
*First, click on the reader icon that has appeared under the 'Edge Server'.  It probably looks something like 'Alien_1'.  Now look at the 'properties' tab at the bottom.  There are many properties here, some of which can be adjusted.  If you wish to adjust a property, type in the new value you want, press 'enter', then right click on the reader and select 'Commit Property Changes'.  If you wish to learn more about a specific property, consult the Alien documentation.  &lt;br /&gt;
*Right click the reader and press 'create session'.  If the IP is correct and the reader is turned on, the session should go to 'green'.  If something is wrong, it will stay yellow or go back to red.  Check and make sure the IP and port are correct and the reader is turned on if you have trouble connecting.  &lt;br /&gt;
*Now go to the bottom left window, the 'Command View'.  Right click on the 'Alien-Poll' folder and click 'create command template'.  &lt;br /&gt;
*Click on the command you just created, and set the options you wish in the same way you set the reader properties (just with the command instead).  &lt;br /&gt;
*Now right click on the session you created under the reader and press 'submit job'.  Select the 'Alien-Poll' job you created, select 'Recurring Execution', and select the interval you want to read tags for (default is 1 second).  &lt;br /&gt;
*Press 'Finish'.  Congratulations!  You are now reading tags from an Alien reader.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Reader_Activator.java</id>
		<title>Reader Activator.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Reader_Activator.java"/>
				<updated>2010-11-23T23:24:19Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://yhenaju.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
You should only modify Activator.java that was automatically created to create and register the reader--like this (Example taken from ThingMagic Reader):&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&amp;amp;lt;nowiki&amp;amp;gt;&lt;br /&gt;
public class Activator implements BundleActivator  {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void start(BundleContext context) throws Exception {&lt;br /&gt;
		System.out.println(&amp;amp;quot;Registered org.rifidi.emulator.reader.thingmagic&amp;amp;quot;);&lt;br /&gt;
		context.registerService(new String[]{ReaderModule.class.getName()}, new ThingMagicReaderModule(), new Hashtable());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)&lt;br /&gt;
	 */&lt;br /&gt;
	public void stop(BundleContext context) throws Exception {&lt;br /&gt;
		System.out.println(&amp;amp;quot;Shutting down org.rifidi.emulator.reader.thingmagic&amp;amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;/nowiki&amp;amp;gt;&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
Notice those those three total lines of code in the methods '''start''' and '''stop'''. Those are the only lines one has to add then chance '''ThingMagic''' or '''thingmagic''' to match the name of the reader one is building.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:Use_org.rifidi.logging</id>
		<title>Talk:Use org.rifidi.logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:Use_org.rifidi.logging"/>
				<updated>2010-11-23T23:23:59Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://asuxoqonyb.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://asuxoqonyb.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:Tag_Streamer_1.1</id>
		<title>Talk:Tag Streamer 1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:Tag_Streamer_1.1"/>
				<updated>2010-11-23T23:23:43Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://obibohococ.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://obibohococ.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Emulator_1.5.2</id>
		<title>Emulator 1.5.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Emulator_1.5.2"/>
				<updated>2010-11-23T23:23:40Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ipelasuq.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ipelasuq.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=New Features=&lt;br /&gt;
This section describes some of the new features in release 1.5.2 --COMING SOON--&lt;br /&gt;
&lt;br /&gt;
Testing with [[OpenJDK6]].&lt;br /&gt;
&lt;br /&gt;
==Tabbed Antenna View==&lt;br /&gt;
The IDE now displays antennas using tabs.  In addition, the button to toggle between GPI/O view and Antenna View has moved to the main tool bar.&lt;br /&gt;
[[image:Emulator1.5.2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==Better GPIO View==&lt;br /&gt;
#GPI and GPO ports are now numbered in a reader-specific way.&lt;br /&gt;
#Added LEDs instead of checkboxes to determine if GPOs are high or low.  The LED icons come from [http://www.modernlifeisrubbish.co.uk/ Stuart Brown's] website [http://www.modernlifeisrubbish.co.uk/article/led-icons here].&lt;br /&gt;
[[image:gpioview1.5.2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==Alien==&lt;br /&gt;
#Uptime for the Alien is now accurate.&lt;br /&gt;
&lt;br /&gt;
==Thing Magic==&lt;br /&gt;
The Thing Magic reader has been updated.  For a list of features, see [[ThingMagic|the Thing Magic User's Guide]]&lt;br /&gt;
&lt;br /&gt;
=Bug Fixes=&lt;br /&gt;
The following section describes a few of the bugs that have been fixed in this release&lt;br /&gt;
&lt;br /&gt;
==Bug [ 12 ] Alien %i custom format doesn't work==&lt;br /&gt;
https://67.207.137.86/trac/rep-external-trac/ticket/12&lt;br /&gt;
==Bug [ 17 ] Null pointer for blank login credentials==&lt;br /&gt;
https://67.207.137.86/trac/rep-external-trac/ticket/17&lt;br /&gt;
==Bug [ 32 ] Alien GPI/O in Automode error. AutoTrueOutput not being set to true==&lt;br /&gt;
https://67.207.137.86/trac/rep-external-trac/ticket/32&lt;br /&gt;
==Bug [ 50 ] Emulator crashes if a reader command returns null==&lt;br /&gt;
https://67.207.137.86/trac/rep-external-trac/ticket/50&lt;br /&gt;
&lt;br /&gt;
=Required Bundles=&lt;br /&gt;
This is a list of bundles (and their bundle numbers) that have been tagged as stable for this release&lt;br /&gt;
*org.rifidi.common.utilities (1.0.0)&lt;br /&gt;
*org.rifidi.dependencies (1.0.0)&lt;br /&gt;
*org.rifidi.emulator (2.0.2)&lt;br /&gt;
*org.rifidi.emulator.reader.alien (2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.awid(2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.epc(2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.llrp (2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.symbol(2.0.0)&lt;br /&gt;
*org.rifidi.emulator.reader.thingmagic (1.1.0)&lt;br /&gt;
*org.rifidi.log4j(1.0.0)&lt;br /&gt;
*org.rifidi.services (1.0.0)&lt;br /&gt;
*org.rifidi.services.tags(2.0.2)&lt;br /&gt;
*org.rifidi.ui.common(2.0.0)&lt;br /&gt;
*org.rifidi.ui.ide(2.0.0)&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Rifidi_1.4.3</id>
		<title>Rifidi 1.4.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Rifidi_1.4.3"/>
				<updated>2010-11-23T23:23:36Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://usuzezyjiza.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://usuzezyjiza.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:userDoc]]&lt;br /&gt;
=New Features=&lt;br /&gt;
This section describes some of the major new features in 1.4.3&lt;br /&gt;
==GPIO Support==&lt;br /&gt;
[[GPIO]] support has been added for the [[LLRP Reader]] as well as a new view in the IDE for toggeling GPI.  &lt;br /&gt;
&lt;br /&gt;
To use GPIO in the LLRP Reader, first create a new llrp reader with GPI and GPO ports&lt;br /&gt;
[[Image:Rifidi1.4.3_LLRP-GPIOwIzzard.png|thumb|none|400px|Add GPI and GPO ports on the LLRP Reader]]&lt;br /&gt;
&lt;br /&gt;
Now you can toggle the GPI lines on the GPIO view in the IDE&lt;br /&gt;
[[Image:rifidi1.4.3_GPIO-view.png|thumb|none|600px|New GPIO in the IDE]]&lt;br /&gt;
&lt;br /&gt;
Specifically, the LLRP Reader now supports the following GPIO Functionality:&lt;br /&gt;
* The LLRP client can enable event reporting and receive events when a GPI line is changed&lt;br /&gt;
* The LLRP client can query the GPI and GPO lines using a GET_READER_CONFIG Message.&lt;br /&gt;
* The LLRP Reader can be configured to start a ROspec when a GPI line changes&lt;br /&gt;
* The LLRP Reader can be configured to stop ROSpecs or AISpecs when a GPI event happens&lt;br /&gt;
* The LLRP client can write data (set or unset) a GPO port using the SET_READER_CONFIG Message.&lt;br /&gt;
===Future Work===&lt;br /&gt;
Some items of future work:&lt;br /&gt;
*Add GPIO support for [[Alien 9800|Alien Reader]]&lt;br /&gt;
*Enable the GPO ports in the GPIO view to reflect the current state of the GPO ports in the reader.  (We will use RMI callbacks for this)&lt;br /&gt;
&lt;br /&gt;
==Generating new tags with user-defined prefix==&lt;br /&gt;
Users can now generate tags with a user defined prefix&lt;br /&gt;
[[Image:rifidi1.4.3_Create-Tag-Prefix.png|thumb|none|400px|Create tags with a user-defined prefix]]&lt;br /&gt;
&lt;br /&gt;
The newly create tags will appear in the tag list on the left&lt;br /&gt;
[[Image:rifidi1.4.3_Tag-Prefix-Tag-View.png|thumb|none|600px|Tags with a user-defined prefix]]&lt;br /&gt;
===Future Work===&lt;br /&gt;
*Add tag on to the tag creation wizzard so that it is more clear as to what parts of the EPC-defined ID the user is defining&lt;br /&gt;
==Migration to RMI Interface between IDE and Readers==&lt;br /&gt;
The IDE and the Readers now use RMI to communicate (before they were using XML-RPC).  We have decided to make this architectural change for a couple of reasons:&lt;br /&gt;
*RMI will allow the readers to make callbacks to the IDE which will allow the IDE to display changes with the reader changes things like a TagID or GPO state.&lt;br /&gt;
*RMI will allow us to move Rifidi to a more distributed architecture where one IDE or Tag Streamer could control multiple readers on multiple machines, thus enabling Rifidi to be used in performance testing.&lt;br /&gt;
&lt;br /&gt;
For more information on how RMI works in Rifidi see [[Engine RMI Interface|RMI in Rifidi]].&lt;br /&gt;
=Bug Fixes=&lt;br /&gt;
There have been numerous bug fixes in Rifidi since the last release.  A better listing to come.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Northwind_Display_Events_using_JSP:_Step_9:_Display_events_in_a_JSP</id>
		<title>Northwind Display Events using JSP: Step 9: Display events in a JSP</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Northwind_Display_Events_using_JSP:_Step_9:_Display_events_in_a_JSP"/>
				<updated>2010-11-23T23:23:27Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yxiwisewava.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yxiwisewava.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This is Step 9 in the [[Northwind Tutorial|Northwind Application Tutorial]]&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
Previous Step: [[Northwind TagLocationService | Step 8: Write a Tag Location Service and JMS Listener]]&lt;br /&gt;
===What You Will Learn===&lt;br /&gt;
* How to use the JSP standard tag library to create a dynamic web page&lt;br /&gt;
===Create a JSP===&lt;br /&gt;
Modify the &amp;amp;lt;tt&amp;amp;gt;taglocation.jsp&amp;amp;lt;/tt&amp;amp;gt; file to the following:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;%@ include file=&amp;amp;quot;/WEB-INF/jsp/include.jsp&amp;amp;quot; %&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;html xmlns=&amp;amp;quot;http://www.w3.org/1999/xhtml&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;meta http-equiv=&amp;amp;quot;content-type&amp;amp;quot; content=&amp;amp;quot;text/html; charset=iso-8859-1&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;amp;gt;Northwind Shipping&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;meta name=&amp;amp;quot;generator&amp;amp;quot; content=&amp;amp;quot;Amaya, see http://www.w3.org/Amaya/&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;table border=&amp;amp;quot;0&amp;amp;quot;&lt;br /&gt;
			style=&amp;amp;quot;width: 80%;border-collapse: collapse;table-layout: fixed&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;td valign=&amp;amp;quot;top&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;table border=&amp;amp;quot;1&amp;amp;quot;&lt;br /&gt;
						style=&amp;amp;quot;width:90%;background-color:#93D2FF;border-collapse: collapse&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;td style=&amp;amp;quot;text-align:center&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
								&amp;amp;lt;h3&amp;amp;gt;Dock Door&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;td&amp;amp;gt;&lt;br /&gt;
								&amp;amp;lt;strong&amp;amp;gt;EPC&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;c:forEach items=&amp;amp;quot;${model.dockdoor}&amp;amp;quot; var=&amp;amp;quot;tag&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
								&amp;amp;lt;td style=&amp;amp;quot;font-family:monospace;&amp;amp;quot;&amp;amp;gt;${tag}&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;/c:forEach&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;td valign=&amp;amp;quot;top&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;table border=&amp;amp;quot;1&amp;amp;quot;&lt;br /&gt;
						style=&amp;amp;quot;width:90%;background-color:#93D2FF;border-collapse: collapse;float:right&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;td colspan=&amp;amp;quot;4&amp;amp;quot; style=&amp;amp;quot;text-align:center&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
								&amp;amp;lt;h3&amp;amp;gt;Weigh Station&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;td&amp;amp;gt;&lt;br /&gt;
								&amp;amp;lt;strong&amp;amp;gt;EPC&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;c:forEach items=&amp;amp;quot;${model.weighstation}&amp;amp;quot; var=&amp;amp;quot;tag&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
								&amp;amp;lt;td style=&amp;amp;quot;font-family:monospace&amp;amp;quot;&amp;amp;gt;${tag}&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;/c:forEach&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;td colspan=&amp;amp;quot;2&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;p /&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;td colspan=&amp;amp;quot;2&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;table border=&amp;amp;quot;1&amp;amp;quot;&lt;br /&gt;
						style=&amp;amp;quot;width:100%;background-color:#FFA69C;border-collapse: collapse&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;td&amp;amp;gt;&lt;br /&gt;
								&amp;amp;lt;h3 style=&amp;amp;quot;text-align:center&amp;amp;quot;&amp;amp;gt;Alerts&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;c:forEach items=&amp;amp;quot;${model.alerts}&amp;amp;quot; var=&amp;amp;quot;alert&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
								&amp;amp;lt;td&amp;amp;gt; Tag:&amp;amp;lt;span style=&amp;amp;quot;font-family:monospace&amp;amp;quot;&amp;amp;gt;${alert.tag_Id}&amp;amp;lt;/span&amp;amp;gt;: ${alert.message}&lt;br /&gt;
								&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
							&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
						&amp;amp;lt;/c:forEach&amp;amp;gt;&lt;br /&gt;
					&amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
				&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
			&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modify the Controller===&lt;br /&gt;
Now that we have a TagLocationService which is receiving notifications from our RFID application, and we have a JSP that will display the information, we need to hook up the Controller with the TagLocationService.&lt;br /&gt;
&lt;br /&gt;
We first need to modify the controller to do two things:&lt;br /&gt;
# Spring needs to inject the TagLocationService into it&lt;br /&gt;
# We need to modify the handleRequest method to use the TagLocationService.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
package com.northwind.rfid.shipping.war;&lt;br /&gt;
&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
&lt;br /&gt;
import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
import javax.servlet.http.HttpServletResponse;&lt;br /&gt;
&lt;br /&gt;
import org.springframework.web.servlet.ModelAndView;&lt;br /&gt;
import org.springframework.web.servlet.mvc.Controller;&lt;br /&gt;
&lt;br /&gt;
import com.northwind.rfid.shipping.war.service.TagLocationService;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public class TagLocationController implements Controller {&lt;br /&gt;
&lt;br /&gt;
	/** The Tag Location Service */&lt;br /&gt;
	private volatile TagLocationService tagLocationService;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Called by Spring&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param tagLocationService&lt;br /&gt;
	 *            the tagLocationService to set&lt;br /&gt;
	 */&lt;br /&gt;
	public void setTagLocationService(TagLocationService tagLocationService) {&lt;br /&gt;
		this.tagLocationService = tagLocationService;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public ModelAndView handleRequest(HttpServletRequest arg0,&lt;br /&gt;
			HttpServletResponse arg1) throws Exception {&lt;br /&gt;
		HashMap&amp;amp;lt;String, Object&amp;amp;gt; model = new HashMap&amp;amp;lt;String, Object&amp;amp;gt;();&lt;br /&gt;
		model.put(&amp;amp;quot;dockdoor&amp;amp;quot;, tagLocationService.getDockDoorItems());&lt;br /&gt;
		model.put(&amp;amp;quot;weighstation&amp;amp;quot;, tagLocationService.getWeighStationItems());&lt;br /&gt;
		model.put(&amp;amp;quot;alerts&amp;amp;quot;, tagLocationService.getAlerts());&lt;br /&gt;
&lt;br /&gt;
		return new ModelAndView(&amp;amp;quot;/WEB-INF/jsp/taglocation.jsp&amp;amp;quot;, &amp;amp;quot;model&amp;amp;quot;, model);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modify the servlet xml===&lt;br /&gt;
The next thing is to modify the servlet xml so that it will&lt;br /&gt;
# Create the TagLocationService&lt;br /&gt;
# Create the JMS Listener and inject the TagLocationServiceManager into it&lt;br /&gt;
# Inject the TagLocationService into the Controller.&lt;br /&gt;
&lt;br /&gt;
Modify the &amp;amp;lt;tt&amp;amp;gt;NorthwindDemo-servlet.xml&amp;amp;lt;/tt&amp;amp;gt; to look as follows:&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;beans xmlns=&amp;amp;quot;http://www.springframework.org/schema/beans&amp;amp;quot;&lt;br /&gt;
	xmlns:xsi=&amp;amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;amp;quot; xmlns:osgi=&amp;amp;quot;http://www.springframework.org/schema/osgi&amp;amp;quot;&lt;br /&gt;
	xmlns:amq=&amp;amp;quot;http://activemq.apache.org/schema/core&amp;amp;quot;&lt;br /&gt;
	xsi:schemaLocation=&amp;amp;quot;http://www.springframework.org/schema/beans &lt;br /&gt;
	META-INF/xsd/spring-beans-2.5.xsd&lt;br /&gt;
    http://www.springframework.org/schema/osgi &lt;br /&gt;
    http://www.springframework.org/schema/osgi/spring-osgi.xsd&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;lt;!-- Create the Controller --&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;bean name=&amp;amp;quot;/taglocation.htm&amp;amp;quot; class=&amp;amp;quot;com.northwind.rfid.shipping.war.TagLocationController&amp;amp;quot; &amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;property name=&amp;amp;quot;tagLocationService&amp;amp;quot; ref = &amp;amp;quot;tagLocService&amp;amp;quot;/&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/bean&amp;amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;amp;lt;!-- Create the TagLocationService --&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;bean id=&amp;amp;quot;tagLocService&amp;amp;quot; class=&amp;amp;quot;com.northwind.rfid.shipping.war.service.impl.TagLocationServiceImpl&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;amp;lt;!-- Create the JMS Message Receiver--&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;bean id=&amp;amp;quot;messageReceiver&amp;amp;quot; class=&amp;amp;quot;com.northwind.rfid.shipping.war.MessageReceiver&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;property name=&amp;amp;quot;TLSManager&amp;amp;quot; ref=&amp;amp;quot;tagLocService&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/bean&amp;amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;amp;lt;!-- Create the topic to connect to --&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;bean id=&amp;amp;quot;NorthwindTopic&amp;amp;quot; class=&amp;amp;quot;org.apache.activemq.command.ActiveMQTopic&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;property name=&amp;amp;quot;physicalName&amp;amp;quot; value=&amp;amp;quot;com.northwind.rfid.shipping.topic&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/bean&amp;amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;amp;lt;!-- JMS Connection Factory --&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;bean id=&amp;amp;quot;connectionFactory&amp;amp;quot; class=&amp;amp;quot;org.apache.activemq.spring.ActiveMQConnectionFactory&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;property name=&amp;amp;quot;brokerURL&amp;amp;quot; value=&amp;amp;quot;vm://externalBroker?create=false&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/bean&amp;amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;amp;lt;!-- Spring Helper to listen to a JMS Destination --&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;bean id=&amp;amp;quot;jmsContainer&amp;amp;quot;&lt;br /&gt;
		class=&amp;amp;quot;org.springframework.jms.listener.DefaultMessageListenerContainer&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;property name=&amp;amp;quot;connectionFactory&amp;amp;quot; ref=&amp;amp;quot;connectionFactory&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;property name=&amp;amp;quot;destination&amp;amp;quot; ref=&amp;amp;quot;NorthwindTopic&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
		&amp;amp;lt;property name=&amp;amp;quot;messageListener&amp;amp;quot; ref=&amp;amp;quot;messageReceiver&amp;amp;quot; /&amp;amp;gt;&lt;br /&gt;
	&amp;amp;lt;/bean&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/beans&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Run The Application===&lt;br /&gt;
Now you can run the whole application.  You can point your browser to the web application, start emulator and place tags on the readers.  As you move tags around, you can hit the refresh button on your browser to see the tags.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Emulator_1.5.1</id>
		<title>Emulator 1.5.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Emulator_1.5.1"/>
				<updated>2010-11-23T23:23:23Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=New Features=&lt;br /&gt;
This section describes some of the new features in release 1.5.1&lt;br /&gt;
==ThingMagic Alpha==&lt;br /&gt;
[[Image:Thingmagic-new-reader.png|thumb|none|400px|ThingMagic alpha is available]]&lt;br /&gt;
&lt;br /&gt;
This release includes an alpha version of the ThingMagic virtual reader.  So far, support for only a few commands are available.  See [[ThingMagic]] for information about which commands are available and how to get tags back from it.&lt;br /&gt;
 &lt;br /&gt;
==Alien Heartbeat==&lt;br /&gt;
[[Image:Alien-heartbeat.png|thumb|none|400px|AlienReader can now send out heartbeats]]&lt;br /&gt;
&lt;br /&gt;
The Alien reader can now broadcast UDP heartbeats.  This feature is useful when using the Rifidi virtual Alien reader with the Alien client tool, which can automatically add readers to its reader list by detecting heartbeat messages.&lt;br /&gt;
&lt;br /&gt;
==Improved Alien GPO support==&lt;br /&gt;
It is now possible to manually change the GPO lines with the following command:&lt;br /&gt;
&lt;br /&gt;
*get/set ExternalOutput&lt;br /&gt;
&lt;br /&gt;
==JRE 1.6 update 4 Compatibility==&lt;br /&gt;
As of this release, Rifidi Emulator should be used with JRE 1.6 update 4 or later.  Using it with a previous version my cause errors, due to the fact that the JAXB packages moved into the java core packages in JRE 1.6 update 4.&lt;br /&gt;
&lt;br /&gt;
==Awid MPR update==&lt;br /&gt;
For the AWID, the power for the RF can now be turned on and off (if the client allows those options).  Strange behavior with &amp;amp;quot;Single Tag Read&amp;amp;quot; mode is now fixed.  New commands have been added.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bug Fixes=&lt;br /&gt;
The following section describes a few of the bugs that have been fixed in this release&lt;br /&gt;
&lt;br /&gt;
==Bug [ 1883033 ] Not all LLRP Messages being logged==&lt;br /&gt;
http://sourceforge.net/tracker/index.php?func=detail&amp;amp;amp;aid=1883033&amp;amp;amp;group_id=170933&amp;amp;amp;atid=856093&lt;br /&gt;
==Bug [ 1883038 ] LLRP Power State Problem==&lt;br /&gt;
http://sourceforge.net/tracker/index.php?func=detail&amp;amp;amp;aid=1883038&amp;amp;amp;group_id=170933&amp;amp;amp;atid=856093&lt;br /&gt;
==Bug [ 1884483 ] AccessSpec Trigger=1 not working==&lt;br /&gt;
http://sourceforge.net/tracker/index.php?func=detail&amp;amp;amp;aid=1884483&amp;amp;amp;group_id=170933&amp;amp;amp;atid=856093&lt;br /&gt;
==Bug [ 1917310 ] Race Condition on connection control variable ==&lt;br /&gt;
http://sourceforge.net/tracker/index.php?func=detail&amp;amp;amp;aid=1917310&amp;amp;amp;group_id=170933&amp;amp;amp;atid=856093&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Category:DesignerDoc</id>
		<title>Category:DesignerDoc</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Category:DesignerDoc"/>
				<updated>2010-11-23T23:23:01Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://axufizyfe.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
'''All Designer Documents'''&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/READERNAME_StreamReaderFormatter.java</id>
		<title>READERNAME StreamReaderFormatter.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/READERNAME_StreamReaderFormatter.java"/>
				<updated>2010-11-23T23:22:50Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://unugeboq.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://unugeboq.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
This class handles how bytes should be read in from TCP Socket  Most of the time, a reader will not need to implement this class and can instead use either the GenericByteStreamReader or the GenericCharStreamReader.  If it does need this method, this class will need to implement the AbstractStreamReader interface&lt;br /&gt;
&lt;br /&gt;
=read=&lt;br /&gt;
&lt;br /&gt;
This method should read in bytes from the TCP socket&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;public abstract byte[] read() throws IOException;&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
&lt;br /&gt;
==Return Value==&lt;br /&gt;
bytes that were read&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
This is the implementation of the read method in the GenericByteStreamReader.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public byte[] read() throws IOException {&lt;br /&gt;
		ArrayList&amp;amp;lt;Byte&amp;amp;gt; bytes = new ArrayList&amp;amp;lt;Byte&amp;amp;gt;();&lt;br /&gt;
		int b = in.read();&lt;br /&gt;
		while (in.available() != 0) {&lt;br /&gt;
			bytes.add((byte) b);&lt;br /&gt;
			b = in.read();&lt;br /&gt;
		}&lt;br /&gt;
		bytes.add((byte)b);&lt;br /&gt;
		/* If there is nothing on the buffer, return null */&lt;br /&gt;
		if (bytes.isEmpty() || bytes.get(0)==-1) {&lt;br /&gt;
			logger.debug(&amp;amp;quot;returning bytes is null&amp;amp;quot;);&lt;br /&gt;
			return null;&lt;br /&gt;
		}&lt;br /&gt;
		/* Else return the bytes */&lt;br /&gt;
		else {&lt;br /&gt;
			byte[] retVal = new byte[bytes.size()];&lt;br /&gt;
&lt;br /&gt;
			logger.debug(&amp;amp;quot;returning bytes&amp;amp;quot;);&lt;br /&gt;
			for (int i = 0; i &amp;amp;lt; bytes.size(); i++) {&lt;br /&gt;
				retVal[i] = bytes.get(i);&lt;br /&gt;
			}&lt;br /&gt;
			return retVal;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/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="https://wiki.transcends.co/index.php/Asset_Tracking:_An_end-to_end_solution_with_the_Rifidi_Platform"/>
				<updated>2010-11-23T23:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://usuzezyjiza.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://usuzezyjiza.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&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;amp;quot;virtual infrastructure&amp;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;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;amp;quot;connect&amp;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;amp;quot;Event Monitor&amp;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>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Category_talk:DesignerDoc</id>
		<title>Category talk:DesignerDoc</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Category_talk:DesignerDoc"/>
				<updated>2010-11-23T23:22:43Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://axufizyfe.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://axufizyfe.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/READERNAME_ReaderModuleSuspendPowerState.java</id>
		<title>READERNAME ReaderModuleSuspendPowerState.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/READERNAME_ReaderModuleSuspendPowerState.java"/>
				<updated>2010-11-23T23:22:18Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ojiqovam.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ojiqovam.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:developerDoc]][[category:emulatorDoc]]&lt;br /&gt;
This class needs to be implemented for each reader to handle the state transitions from off-&amp;amp;gt;on.  It should extend AbstractSuspendedPowerState.&lt;br /&gt;
&lt;br /&gt;
=resume=&lt;br /&gt;
&lt;br /&gt;
This method should turn the reader and all of its components back on after having been suspended&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;resume(PowerControllable pcObject)&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arguments==&lt;br /&gt;
#pcObject - The ReaderModule&lt;br /&gt;
&lt;br /&gt;
==Reference Implementation==&lt;br /&gt;
This is the implementation of the resume() method in the symbol reader.  It first resumes the communications and the controllers.  Then it changes the power state to the OnPowerSate using the changePowerState method.  If the reader that you are implementing has an autonomous mode, you will need to resume the autonomous mode as well.  See the LLRP reader for an example of that.&lt;br /&gt;
&amp;amp;lt;pre&amp;amp;gt;&lt;br /&gt;
	public void resume(PowerControllable pcObject) {&lt;br /&gt;
		SymbolReaderModule rm = (SymbolReaderModule) pcObject;&lt;br /&gt;
&lt;br /&gt;
		rm.getByteComm().resume();&lt;br /&gt;
		rm.getHttpComm().resume();&lt;br /&gt;
&lt;br /&gt;
		rm.getInteractiveBitController().resume();&lt;br /&gt;
		rm.getInteractiveHttpController().resume();&lt;br /&gt;
		&lt;br /&gt;
		SymbolReaderSharedResources ssr = rm.getSharedResources();&lt;br /&gt;
		&lt;br /&gt;
		ssr.getTagMemory().resume();&lt;br /&gt;
&lt;br /&gt;
		rm.changePowerState(SymbolReaderModuleOnPowerState.getInstance());&lt;br /&gt;
		&lt;br /&gt;
		String readername = rm.getSharedResources().getReaderName();&lt;br /&gt;
		LogFactory.getLog(&amp;amp;quot;console.&amp;amp;quot; + readername).info(readername + &amp;amp;quot; resumed&amp;amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=turnOff=&lt;br /&gt;
&lt;br /&gt;
See [[READERNAME_ReaderModuleOnPowerState.java#turnOff]]&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Talk:Reader_Activator.java</id>
		<title>Talk:Reader Activator.java</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Talk:Reader_Activator.java"/>
				<updated>2010-11-23T23:22:15Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: New page: ---- &amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Emulator_1.5</id>
		<title>Emulator 1.5</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Emulator_1.5"/>
				<updated>2010-11-23T23:21:43Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://upezobyxez.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://upezobyxez.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:userDoc]]&lt;br /&gt;
=New Features=&lt;br /&gt;
This section describes some of the major new features in 1.5&lt;br /&gt;
==IDE Overhaul==&lt;br /&gt;
The IDE has gotten a facelift with several new enhancements&lt;br /&gt;
[[Image:Start-Reader-Emulator1.5.png  |none|thumb|New Reader Control Buttons]]&lt;br /&gt;
===Refactored Code===&lt;br /&gt;
With Emulator 1.5, The UI code has been refactored, so that all the products in the Rifidi product suite use common wizzards and plugins.  If you are [[Rifidi:Source Code|building from source]], please see [[Emulator Packages]] for the list of packages that you will need to download from the public svn.&lt;br /&gt;
===RMI Callbacks===&lt;br /&gt;
With callbacks now working, changes in the engine, (such as tag memory writing and GPO toggles) will be reflected in the IDE&lt;br /&gt;
===Better LLRP Console Output===&lt;br /&gt;
The LLRP Reader now displays its input and output in XML, so that it is easier to read&lt;br /&gt;
[[Image:LLRPConsole-Emulator1.5.png  |none|thumb|800px|LLRP Console]]&lt;br /&gt;
==Alien GPIO Support==&lt;br /&gt;
The Alien reader now supports GPIO and has a better Autonomous Mode.  Specifically, it now supports these commands:&lt;br /&gt;
*Get/Set AutoStartTrigger&lt;br /&gt;
*Get/Set AutoStopTrigger&lt;br /&gt;
*Get/Set AutoTrueOutput&lt;br /&gt;
*Get/Set AutoFalseOutput&lt;br /&gt;
*Get/Set AutoStopTimer&lt;br /&gt;
*Get/Set AutoTruePause&lt;br /&gt;
*Get/Set AutoFalsePause&lt;br /&gt;
*Get/Set AutoStartPause&lt;br /&gt;
==Alien Tag Writing==&lt;br /&gt;
Limited support has been added to allow the alien reader to write tags.  To enable this feature, the following commands are now supported:&lt;br /&gt;
*Get/Set ProgAntenna&lt;br /&gt;
*ProgramTag&lt;br /&gt;
*Get/Set Function&lt;br /&gt;
==LLRP Suspend/Resume Functionality==&lt;br /&gt;
The LLRP Reader can now be suspended and resumed.  While this might not mean much to our users at first, it is necessary to have readers that can be suspended and resumed so that the Designer will be able to pause realtime simulations. &lt;br /&gt;
=Bug Fixes=&lt;br /&gt;
There have been a few minor bug fixes with the LLRP reader, as well as fixing an bug that was preventing the Alien reader's autonomous mode from reconnecting to a server once it had been disconnected.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Rifidi:Source_Code</id>
		<title>Rifidi:Source Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Rifidi:Source_Code"/>
				<updated>2010-11-23T23:21:42Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&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;amp;quot;set as target platform&amp;amp;quot;&lt;br /&gt;
# Open up the .product file in org.rifidi.ui.ide and click &amp;amp;quot;launch an eclipse application&amp;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;amp;lt;code&amp;amp;gt;rep-external&amp;amp;lt;/code&amp;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;amp;lt;code&amp;amp;gt;org.rifidi.emulator.target&amp;amp;lt;/code&amp;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;amp;quot;Eclipse for RCP/Plug-in Developers&amp;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;amp;quot;Eclipse for RCP/Plug-in Developers&amp;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;amp;gt; switch workspace -&amp;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;amp;gt; Open Perspective -&amp;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;amp;lt;code&amp;amp;gt;org.rifidi.binary&amp;amp;lt;/code&amp;amp;gt;&lt;br /&gt;
*** &amp;amp;lt;code&amp;amp;gt;org.rifidi.emulator.taget3.5.2&amp;amp;lt;/code&amp;amp;gt;&lt;br /&gt;
*** &amp;amp;lt;code&amp;amp;gt;org.rifidi.ui.ide&amp;amp;lt;/code&amp;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;amp;lt;code&amp;amp;gt;org.rifidi.emulator.target&amp;amp;lt;/code&amp;amp;gt;&lt;br /&gt;
* Click the button that says &amp;amp;quot;set as target platform&amp;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;amp;lt;code&amp;amp;gt;org.rifidi.ui.ide&amp;amp;lt;/code&amp;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;amp;quot;Run as eclipse application&amp;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;amp;gt; Open Run Dialog -&amp;amp;gt; Eclipse Application -&amp;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;amp;quot;workspace&amp;amp;quot; and &amp;amp;quot;target platform&amp;amp;quot;&lt;br /&gt;
* click the Button &amp;amp;quot;Add Required Plug-ins&amp;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;amp;quot;Validate Plug-ins&amp;amp;quot; to make sure everything is set up correctly&lt;br /&gt;
* click the Button &amp;amp;quot;Apply&amp;amp;quot;&lt;br /&gt;
* click the Button &amp;amp;quot;Run&amp;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;amp;quot;Synchronize&amp;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;amp;lt;code&amp;amp;gt;org.rifidi.binary&amp;amp;lt;/code&amp;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;amp;lt;code&amp;amp;gt;org.rifidi.emulator.readers.alien&amp;amp;lt;/code&amp;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;amp;lt;nowiki&amp;amp;gt;#rifidi on irc.freenode.org.&amp;amp;lt;/nowiki&amp;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>Amesycyxa</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Eclipse:osgiDS</id>
		<title>Eclipse:osgiDS</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Eclipse:osgiDS"/>
				<updated>2010-11-23T23:21:28Z</updated>
		
		<summary type="html">&lt;p&gt;Amesycyxa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Intro==&lt;br /&gt;
Here is a little series about osgi (including declarative services, look at part 7 and 8) [http://neilbartlett.name/blog/osgi-articles/]&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Getting declarative services into Eclipse RCP was quite a fight but with the help of some fellows from the #eclipse irc channel I finally managed to get 'em up and running.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
First we need to get some missing plugins.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
The declarative services spec is part of the services for OSGI R4 but it is not part of the equinox that is distributed with eclipse 3.3.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
So we need to go here:[http://download.eclipse.org/eclipse/equinox/]&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
*Under latest releases select 3.3.2&lt;br /&gt;
*Scroll down to &amp;amp;quot;Incubator&amp;amp;quot; bundles&lt;br /&gt;
*download org.eclipse.equinox.ds&amp;amp;lt;whateverversionisthere&amp;amp;gt;.jar (this is the declarative services plugin)&lt;br /&gt;
*download  org.eclipse.equinox.cm&amp;amp;lt;whateverversionisthere&amp;amp;gt;.jar (this is the OSGI admin service)&lt;br /&gt;
*add the downlaoded packages to your plugins directory&lt;br /&gt;
*restart eclipse&lt;br /&gt;
==How to get it into your RCP==&lt;br /&gt;
Now comes the tricky part.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Being used to eclipse you would think adding the plugins to your run config and then firing up your app should do the trick.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Nope, as you might have guessed, it's not that easy.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Right now we need to get our hands dirty as we have to directly have to modify the config.ini.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
For a regular RCP application you don't have to touch this file and eclipse will create one for you on every run.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
But we actually want to use some fairly advanced features of the underlying osgi implementation and that's where we leave the default way.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Open up the run configuration for your RCP app.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
[[Image:Runconfiguration.jpg]]&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
The red box shows where you have to edit.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
But before it starts to get messy we need a config.ini template tow ork on.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Above the red box you can see a hook at default location. Go to the specified directory and pick the config.ini that is in there.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Opening it up should give you something like this:&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
 #Configuration File&lt;br /&gt;
 #Mon May 05 23:09:09 CEST 2008&lt;br /&gt;
 osgi.bundles=reference\:file\:/home/jochen/bin/eclipse/plugins/org.eclipse.equinox.common_3.3.0.v20070426.jar@2\:start,reference\:file\:/home/jochen&lt;br /&gt;
 /bin/eclipse/plugins/org.eclipse.update.configurator_3.2.101.R33x_v20070810.jar@3\:start&lt;br /&gt;
 osgi.bundles.defaultStartLevel=4&lt;br /&gt;
 osgi.install.area=file\:/home/jochen/bin/eclipse&lt;br /&gt;
 osgi.framework=file\:/home/jochen/bin/eclipse/plugins/org.eclipse.osgi_3.3.2.R33x_v20080105.jar&lt;br /&gt;
 osgi.configuration.cascaded=false&lt;br /&gt;
 osgi.splashPath=file\:/home/jochen/workspace/org.rifidi.designer.rcp&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
To be save I changed the default start level of the bundles to 5 and I will ad a statement to start the ds bundle at level 4.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
This allows ds to start before any of the other bundles get initialized.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
I am not 100 percent sure if this is really required but I figured it might be good to make sure when things get started.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
 #Configuration File&lt;br /&gt;
 #Mon May 05 23:09:09 CEST 2008&lt;br /&gt;
 osgi.bundles=reference\:file\:/home/jochen/bin/eclipse/plugins/org.eclipse.equinox.ds_1.0.0.v20070226.jar@4\:start,reference\:file\:/home/jochen&lt;br /&gt;
 /bin/eclipse/plugins/org.eclipse.equinox.common_3.3.0.v20070426.jar@2\:start,reference\:file\:/home/jochen/bin/eclipse/plugins&lt;br /&gt;
 /org.eclipse.update.configurator_3.2.101.R33x_v20070810.jar@3\:start&lt;br /&gt;
 osgi.bundles.defaultStartLevel=5&lt;br /&gt;
 osgi.install.area=file\:/home/jochen/bin/eclipse&lt;br /&gt;
 osgi.framework=file\:/home/jochen/bin/eclipse/plugins/org.eclipse.osgi_3.3.2.R33x_v20080105.jar&lt;br /&gt;
 osgi.configuration.cascaded=false&lt;br /&gt;
 osgi.splashPath=file\:/home/jochen/workspace/org.rifidi.designer.rcp&lt;br /&gt;
&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
After editing this file store it in any directory and adjust the area that within the red box.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Switch from the default config.ini to a custom one and point eclipse to the location of your file.&amp;amp;lt;br/&amp;amp;gt;&lt;br /&gt;
Now hit run and watch the magic unfold.&lt;/div&gt;</summary>
		<author><name>Amesycyxa</name></author>	</entry>

	</feed>