<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.rifidi.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.rifidi.net/index.php?action=history&amp;feed=atom&amp;title=TagMemory</id>
		<title>TagMemory - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.rifidi.net/index.php?action=history&amp;feed=atom&amp;title=TagMemory"/>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php?title=TagMemory&amp;action=history"/>
		<updated>2026-04-05T13:29:31Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>http://wiki.rifidi.net/index.php?title=TagMemory&amp;diff=1197&amp;oldid=prev</id>
		<title>Kyle: /* Historical Notes */</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php?title=TagMemory&amp;diff=1197&amp;oldid=prev"/>
				<updated>2008-05-09T18:36:59Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Historical Notes&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:36, 9 May 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The TagMemory was an interface located in the emulator, however, the only thing that implemented it was the GenericTagMemory that was actually alien specific.&amp;#160; In addition, the TagMemory has been seen as a collection with an addTag() and a removeTag() method, which the radio would call when tags were added or removed.&amp;#160; However, in order keep the radio simpler and more generic, there is only one updateTagMemory() method.&amp;#160; This way the radio does not have to know about any kind of business logic about when tags should be added or removed from the tag memory.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The TagMemory was an interface located in the emulator, however, the only thing that implemented it was the GenericTagMemory that was actually alien specific.&amp;#160; In addition, the TagMemory has been seen as a collection with an addTag() and a removeTag() method, which the radio would call when tags were added or removed.&amp;#160; However, in order keep the radio simpler and more generic, there is only one updateTagMemory() method.&amp;#160; This way the radio does not have to know about any kind of business logic about when tags should be added or removed from the tag memory.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It turns out that every reader has a different enough memory model that it is difficult to write a generic TagMemory. So &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;with the introduction of the new radio, &lt;/del&gt;each Reader should implement &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;NewTagMemory.&amp;#160; In &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;mean time, The &lt;/del&gt;TagMemory interface &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is an empty interface, and the NewTagMemory interface implements the old TagMemory interface.&amp;#160; This is so that changes will not have to be made to the SharedResources which require that a class which implements TagMemory be passed in at construct time&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It turns out that every reader has a different enough memory model that it is difficult to write a generic TagMemory. So each Reader should implement the TagMemory interface.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Implementation=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Implementation=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php?title=TagMemory&amp;diff=255&amp;oldid=prev</id>
		<title>Kyle at 17:59, 29 November 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php?title=TagMemory&amp;diff=255&amp;oldid=prev"/>
				<updated>2007-11-29T17:59:14Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 17:59, 29 November 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[category:developerDoc]][[category:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;engineDoc&lt;/del&gt;]][[category:engineImplementation]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[category:developerDoc]][[category:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;EmulatorDoc&lt;/ins&gt;]][[category:engineImplementation]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Purpose=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Purpose=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php?title=TagMemory&amp;diff=134&amp;oldid=prev</id>
		<title>Kyle at 21:45, 8 November 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php?title=TagMemory&amp;diff=134&amp;oldid=prev"/>
				<updated>2007-11-08T21:45:12Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 21:45, 8 November 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[category:developerDoc]][[category:engineDoc]][[category:engineImplementation]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Purpose=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Purpose=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	<entry>
		<id>http://wiki.rifidi.net/index.php?title=TagMemory&amp;diff=133&amp;oldid=prev</id>
		<title>Kyle: New page: =Purpose=  The tag memory serves as a data structure that handles tags in a reader specific way.  Each time that the Radio's scan method is called, it will call the TagMemory's u...</title>
		<link rel="alternate" type="text/html" href="http://wiki.rifidi.net/index.php?title=TagMemory&amp;diff=133&amp;oldid=prev"/>
				<updated>2007-11-08T21:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;New page: =Purpose=  The tag memory serves as a data structure that handles tags in a reader specific way.  Each time that the &lt;a href=&quot;/index.php?title=Radio&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Radio (page does not exist)&quot;&gt;Radio&amp;#039;s&lt;/a&gt; scan method is called, it will call the TagMemory&amp;#039;s u...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Purpose=&lt;br /&gt;
&lt;br /&gt;
The tag memory serves as a data structure that handles tags in a reader specific way.  Each time that the [[Radio|Radio's]] scan method is called, it will call the TagMemory's updateMemory() method, passing in the list of tags that it has seen.  It is the TagMemory's job to determine how these tags should be added, and if any tags should be removed.&lt;br /&gt;
&lt;br /&gt;
=Historical Notes=&lt;br /&gt;
The TagMemory was an interface located in the emulator, however, the only thing that implemented it was the GenericTagMemory that was actually alien specific.  In addition, the TagMemory has been seen as a collection with an addTag() and a removeTag() method, which the radio would call when tags were added or removed.  However, in order keep the radio simpler and more generic, there is only one updateTagMemory() method.  This way the radio does not have to know about any kind of business logic about when tags should be added or removed from the tag memory.&lt;br /&gt;
&lt;br /&gt;
It turns out that every reader has a different enough memory model that it is difficult to write a generic TagMemory. So with the introduction of the new radio, each Reader should implement NewTagMemory.  In the mean time, The TagMemory interface is an empty interface, and the NewTagMemory interface implements the old TagMemory interface.  This is so that changes will not have to be made to the SharedResources which require that a class which implements TagMemory be passed in at construct time.&lt;br /&gt;
&lt;br /&gt;
=Implementation=&lt;br /&gt;
&lt;br /&gt;
The most important methods in the NewTagMemory interface are the updateTagMemory() method and the getTagReport() method&lt;br /&gt;
&lt;br /&gt;
The updateTagMemory method will be called by the radio, which will pass in a collection of [[RifidiTag|RifidiTags]].  These tags represent the tags that are currently on the reader.  It is the TagMemory's job to figure out when and how tags should be removed from the internal lists that it keeps.&lt;br /&gt;
&lt;br /&gt;
The getTagReport() method is the main way that other parts of the program (such as the handler methods) access the tags.  Again, like the updateTagMemory() method, it should be implemented in a way that makes sense for the reader whose memory model you are trying to emulate.  &lt;br /&gt;
&lt;br /&gt;
Generally before you are able to put things into and get things out of a tagmemory, you should have to enable it.  The enable_TagBuffer() and disable_TagBuffer() should be called in the reader's power state's, so that when a reader is suspended, nothing can accidentally be put into the tag buffer.&lt;br /&gt;
&lt;br /&gt;
The last thing to remember is that a tagMemory should also increment the read count of tags that it sees.  This used to be a part of the scan() method in the Radio, but is not anymore.&lt;/div&gt;</summary>
		<author><name>Kyle</name></author>	</entry>

	</feed>