Changes for Alien RFID Gateway
==============================
v2.26.03
  * Updated serialio libraries to support Windows 10.
  
v2.26.02
  * TagProgrammer: Added support for Higgs EC tags.

v2.26.01
  * TagGrid:
     * Increase maximum grid size to allow >500 tags in the fixed display.
     * Fixed a bug when displaying tags with the dynamic grid size, which was
       limiting the number of tags that were actually displayed to
       MAX_GRID_SIZE * MAX_GRID_SIZE (previously 256).
     * Fixed a related bug which caused the TagCount value to grow and grow.
     * Improved responsiveness of GUI, particularly when many tags were being
       purged, because of their PersistTime timing out.

v2.26.00
  * Full support for the ALR-F800 reader.
  * Added new Tag Survey Window. Stays open as an auxilliary window, like the
    TCP Listener Window. Load your own tag manifest file, complete with display
    names and image references for each tag, and see items move to the Found
    Assets column as they are read by the reader.
  * ReaderList can now be sorted by ReaderType.
  * PropertyPanel can now provide an updated CLI widget, which can control any
    reader that has been discovered, not just the currently-selected reader.
    This is used in the new Tag Survey Window.
  
v2.25.04
  * Initial support for ALR-F800 (TagGrid & CLI only).
  * Main Window:
     * Now remembers window size & position after going to a utility screen and
       coming back, as well as after quitting the app and relaunching it.
     * Fixed a display issue with Java7 when trying to resize the window too small.
     * Added "sort by ReaderType" option to the reader list.

v2.25.03
  * PropertyPanel:
     * Fixed the AcquireParams widget - it was not sending properly-formatted commands.
     * Changing certain reader parameters with the command-line widget (antennas,
       attenuation, masks, etc.) now updates the corresponding widgets too.
  * Upgrader is now aware of a new result code (-1) that some packages report.
  * ReaderList now "forgets" the selected reader, when all readers are removed.
  * TagGrid, etc.:
     * New option to show and group tags according to their UPC code.
     * ProtocolHighlight (highlighting Class 0, C1G1, and C1G2 tag classes)
       feature was replaced by AlienHighlight (tags made by Alien are highlighted).
     * AutoMode is no longer turned off temporarily each time a reader setting
       is changed.
  * Programmer:
     * Multi-Tag programmer now tries to mask on each tag's unique TID, rather
       than the EPC. This makes it easier to keep track of each tag before &
       after its EPC is changed.
     * Added controls for ProgDataUnit.
  * Tag-Image Wizard no longer requires a connection with a reader. If no reader
    is selected or available, you now have the option to just listen for a Tag-
    Stream instead. This is useful for using the ALH-90xx to read tags.
  * Preferences: Improved EPC Display and Persist vs. RSSI side gauge controls.
  * Main Window:
     * Reduced default size of main window, and made the size variable.
     * Fixed bug which let some buttons remain enabled when they should be
       disabled/hidden. 
  
v2.25.02
  * Added demo mode to the Mass Programmer screen.
  * Multi-tag Programmer now successfully does a Kill operation on many tags.
  * TagGrid images are now smart-scaled to fill the available space in the grid.

v2.25.01
  * The main window with the reader list will now shorten itself to the lesser
    of 750 pixels, or the screen height - 50, to account for the fat Win7 task-
    bar and window decorations.
  * Fixed an issue when returning to the main window with an empty reader list. 

v2.25.00
  * Gateway.jar is now "double-clickable", and it will run with whatever default
    Java Runtime Environment is installed - no need for its own JRE anymore.
  * Resigned the look & feel, for a more alien look, and better consistency
    across all supported platforms, especially when running the Gateway.jar
    directly.
  * Main Window:
    * Restructured the main panel - reader list on the right, buttons along the
      left.
    * Main window is now a smaller, fixed size, and remembers its position
      better. Most utility screens open full-screen, as before, but some others
      either stay at the main screen size, or slightly larger.
    * More of the Gateway's utilities now have buttons on the main screen,
      instead of forcing you to go to a menu item. Utilities that aren't
      supported by the currently-selected reader are now hidden, rather than
      made invisible. These buttons also have neato animated icons on them too!
  * Improved serial support:
    * Gateway now includes serial drivers for PC, Mac, and Linux, and
      automatically unpacks the correct serial DLL at runtime.
    * The Discovery Preferences screen no longer has a "scan up to this COM port"
      option and checkboxes for selecting specific COM ports to scan. It now
      just lists the known COM ports that it discovered, and you can use those
      or you can instead type in your own list of serial ports that you want
      Gateway to scan. Some systems (Linux) don't support serial port discovery,
      so you have to know the name of your serial ports (look in /dev) and
      enumerate those yourself.
  * External I/O utility, for working with a reader's GPIO pins:
    * Now supports up to 8 outputs and 4 inputs (depending on reader model).
    * Spiffy new slide-switch and LED-looking graphics.
    * You can energize/deenergize individual output pins, or type in your own
      bitmapped value (for setting any/all pins at once).
    * Automatically cycle between the outputs, using min/max/step/delay
      parameters.
  * Added support for the ALR-9680 (icons, recognizing the model for upgrading).
  * Limited support for ALH-90xx handhelds:
    * Heartbeats are detected, and handheld readers are added to the reader list.
    * TagGrid application provides limited support for the handheld. It will run
      without any of the reader controls on the left-hand side, and doesn't try
      to communicate with the reader at all. Instead, it just listens for
      incoming streamed tag data. You have to run the RFID demo on the handheld
      and set up Tag Streaming and Heartbeats (on the Settings page) to get it
      to work.
  * TagGrid:
    * Now has an option (in the "Effects" preferences page) to show the tag's
      RSSI value instead of the persist time, in the vertical gauge to the right
      of each tag's image.
    * EPC and details for each tag are now displayed even when the grid size
      gets very small. The font scales to fit it in, up to a point (no pun
      intended).
    * The right-click popup menu in TagGrid now scrolls if there are more than
      15 entries (i.e. your custom tag-image collections).
  * TagGridar: Renamed to "Tag Doppler".
  * New Preferences option to allow each utility to restore the reader's
    settings upon exiting back to the main screen. You can also choose to be
    prompted each time. A snapshot of the reader's settings is recorded when a
    utility such as TagGrid starts up, and those values will be used to restore
    the reader. This takes a little extra time, and may not be desirable, so the
    default is to not restore settings (the old behavior).
  * Removed the Serial Manager utility, since it only had relevance with the
    discontinued OEM module.
  * PropertyPanel:
    * Increased max value for AcqG2Cycles from 25 to 100, to support the Read-
      ometer utility.
    * Mask data that you enter is now reformatted with proper spaces before it
      is sent to the reader.
    
v2.23.03
  * Externalized all visible strings, so Gateway can be regionalized.
  * Added Tag Ranger utility.

v2.23.02
  * TagGrid: Fixed the Clear Grid button, which stopped working in the last
    release.

v2.23.01
  * Tag Programmer:
    * Added new TagOps screens in the Tag Programmer.
      This is a new reader firmware feature, and the TagOps will be hidden if
      your reader doesn't support it. You can configure up to 8 operations to
      be performed on each and every tag (lock, write, read, etc.) DURING the
      inventory.
    * Added new OmniWrite screen to the Tag Programmer.
      The OmniWrite screen showcases the advantages of the new Higgs4 "Blastwrite"
      feature, and Block-write vs. Word-write. The OmniWrite screen will be
      hidden if your reader doesn't support TagOps.
    * Is now aware of Higgs4 tags -> smaller USER memory and 2-word blocks for
      readlocking and permalocking USER blocks.
    * Added "Increment, skipping letters" option for the Single- and Many-Tags
      screens. When the Gateway auto-increments the next block of data to write,
      it will skip over any numbers that involve A-F digits in the hex
      representation. This is called Binary Coded Decimal (BDC).
  * TagGrid:
    * "Improved the accuracy" of the Total Tags count. It could get off (missing
      tag reads in the count) when switching streaming on & off.
    * Table view in the TagGrid now has a right-click menu, for saving the tag
      data to a file, clearing the list, masking the selected tag, etc.
    * Images are now scaled proportionally, to fit the available area, rather
      than being stretched to fill the square space available.
  * TCP Listeners (including streaming in Tag Grid) now work when launching the
    Gateway by double-clicking, in a JRE 1.5+ environment. The newer JRE was
    returning a list of local addresses that included IPV6 addresses, which was
    confusing the Gateway's listener.
  * Property Panel: Command Line widget: Pressing the Delete key no longer acts
    like you pressed the Enter key. :-)
    
v2.22.00
  * Rebuilt to include networking improvements in the Java SDK.
  * CLI utility now reselects the last command you issue, so you can just type
  a new command over it without having to backspace over the old one.
  * TagGrid:
    * The total tag count is now correct when using multiple antennas.
    * Tag persistence is now more accurate when using multiple antennas. 

v2.21.00
  * The Gateway app now runs in the Mac OS X environment. Simply double-click
    the gateway.jar file!
  * The Gateway app now reacts more gracefully if no Java serial libraries can
    be found. Instead of displaying an error and quitting, it not continues to
    run with all serial discovery of readers disabled.
  * Main Screen:
    * Added helpful button above ReaderList to go directly to Discovery Wizard.
    * Serial/Network discovery buttons now show status of those discovery
      services, and whether or not the Java serial libraries are installed.
    * Added right-click menu to the ReaderList, with menu entries for going
      straight to the command-line interface window (same as double-clicking),
      or for removing readers from the list. Manually-added readers that are
      removed are not restored again - they must be rediscovered and added again.
  * Network/Serial Listener Preferences: Added checkboxes to complete
    disable discovery of serial- or network-based readers.
  * Readometer: Fixed "jittery" antenna icons, which caused page layout to
    shift when the antenna icons changed.
  * Programmer: No longer sets the reader's AcquireMode to "Global Scroll", but
    always uses "Inventory" instead. Improved the screen layout a bit, too.
  
v2.20.02
  * TagGrid: Added new "tabular" view of the data, with sortable, rearrangable
    columns.
  * Removed support for BAP, Class0, and Class1Gen1 protocols.
  * Removed background "star field" effect.
  * Main Screen:
    * Replaced colored alien head icons with snazzy new product photos.
    * Stopping and restarting the network discovery service at the bottom of the
      reader list now applies a new listener port number, if that setting was
      changed in the preferences window.
    * Manually added readers will appear in a special color (cyan) only until a
      heartbeat is received from that reader, in which case the entry will look
      like a normal reader. If the reader is unplugged, the entry will revert
      back to a manual entry after a few moments (the reader's HeartbeatTime).
	* Converted old "OEM Management Screen" to a general purpose "Serial Manager",
	  which can scan the serial ports at the various baudrates looking for readers
	  that may have a non-standard baud setting, and allows you to change their
	  baudrates. It now runs in a modal dialog, rather than in the main window.

v2.20.01
  * Main Screen:
    * Removed "beam-in" effect.
    * Improved speed when starting a utility or returning to the main screen.
    * Removed Conveyor, Smart-Shelf, Profiler, and 9800 Network Recovery utils.
  * Readometer:
    * Correctly uses the reader's first AntennaSequence entry when configuring
      application, instead of the ProgAntenna.
  * TagGrid/TagGridar:
    * Improved loading/switching of Tag Collections.
    * Added <default> option for a Tag Collection - uses the plain Alien logo.
  * Preferences:
    * The Acquire preferences tab now allows you to choose an ethernet interface
      and port number to use for those utilities that open network listeners
      (TagGrid, TagGridar, TCP Listener, Command Line Interface).
      Previously, the Gateway would automatically choose one ethernet interface
      to use, preferring wired ones to wireless ones, and didn't always pick
      the correct one.
  * Command Line Interface:
    * The stack of buttons to the left of the CLI screen (Help, Information, get
      Taglist, etc.) can now be customized to say and do whatever you want. Just
      right-click one of the buttons to edit its name and a sequence of reader
      commands to issue. Custom button definitions are saved to disk.
      

v2.20.00
(Staged for official release)


v2.19.08
  * PropertyPanel: The Alien> Command Line tool now has separate send/receive
    text areas.
  * Command Line Interface:
    * Communication is more asynchronous with the reader, so that data can be
      printed to the screen as soon as it arrives from the reader, rather than
      reading until the null-terminator before displaying data.
    * Fixed a problem with the mouse cursor changing between the normal cursor
      and the busy cursor a few times, after issuing a command.
  * DiscoveryWizard:
    * It now automatically adds discovered readers to the ReaderList, but asks
      if you want to "remember" the reader. This writes the reader info to the
      manualreaders.txt file, so if you just want to add a reader temporarily,
      say "No" when asked that question, otherwise that manually-added reader
      will appear automatically in the ReaderList from then on.


v2.19.07
  * Command Line Interface:
    * Now acts in a more asynchronous manner with reader communications.
      Previously, it would wait until the entire null-terminated response from a
      reader before putting anything up on the screen, but now it displays on
      the screen any text received from the reader, as it is received. Long
      dumps like "i" and "h" are now more fluid, and other long tasks like
      UpgradeNow now give you feedback (like "DO NOT UNPLUG YOUR READER") in a
      more timely manner.
    * Fixed the annoying cursor flashing between the normal arrow and the busy
      hour-glass that happened when you issued a command. It should change to
      the busy cursor after you press the Enter key, and change back to the
      normal cursor after the response is received.


v2.19.06
	* Tag Programmer:
	  * Added the ability to set and clear read-locks on blocks of Higgs3 user
	    memory. Blocks (8 bytes) of Higgs3 User memory that have been read-locked
	    appear in grey text. If you have the access password you'll still see the
	    data (in grey), but if you don't you'll see grey question marks. To set or
	    clear a read-lock on a block of User memory, right click on that block in
	    the display and select the appropriate action.
	  * Added the ability to set permalocks on blocks of Higgs3 user memory.
	    Blocks (8 bytes) of Higgs3 User memory that have been permalocked appear
	    in underlined, italics. To set a permalock on a block of User memory,
	    right-click on that block in the display and select the appropriate action.
	  * Added control for switching from the standard word-by-word write mode to
	    the new block-by-block mode. It is about twice as fast.
	  * Added support for the new Higgs3 image-writing options. The Tag Programmer
	    enables the ProgramAlienImage controls only for Higgs tags and capable
	    readers. The choices for image maps depends on what tag is seen at the time.
	  * Switching between the Single/Many Tags modes is now done by switching to
	    a different tab in the main display (with tabs at the top of the screen)
	    instead of a separate control on the left side.
	  * When right-clicking on an EPC or other tag data on the screen, the option
	    to move the tag data down into the data fields used when programming has
	    been renamed from "Use this data" to "Copy this data", and the data is
	    now copied to the system clipboard.
	  * When programming with multiple repetitions, the reps/sec value now updates
	    as it goes.
	  * User data is now incremented as needed when writing tag images that
	    include User data.
	  * Added the Alien> Command Line control to the PropertyPanel.
	* DiscoveryWizard: Readers that are manually added to the reader list are now
	  also saved to a manualreaders.txt file in the Gateway folder. Those readers
	  are automatically shown in the main window each time the Gateway launches,
	  so you don't have to manually add them each time. Edit the manualreaders.txt
	  file to modify or remove readers from this list.
	* TagGridar: Changed the red/blue sense of the speed gauge along the right
	  side of each cell. Also, the distance no longer pegs at the lower end at 0.
	  It will now show negative distances, although the cell image won't get any
	  bigger.
	* RFAttenuation Control: Configured the control to max out the RFAttenuation
	  at 120 for ALR-9650 readers.


v2.19.05
  * ReaderList:
    * Added control above the ReaderList to let you sort the list by order of
      discovery (the default), ReaderName, IP Address, or MAC Address.
    * Mousing over a reader in the ReaderList now show you the ReaderVersion in
      the tooltip text, along with the ReaderType.
  * TagGrid:
    * Right-click menu now has "Mask Selected Tag" and "Clear Mask" actions. If
      a tag in the grid is selected and you choose to mask it, the G2Mask
      control in the PropertyPanel fills in with the mask details for that tag
      and the mask command is sent to the reader.
    * Added the Clear Grid button back in, by popular demand. Put it next to the
      "# Tags" label, to save screen space. It is still in the contextual menu.
  * Tag-Image Wizard: Now handles tags with no EPC - displaying [No EPC] in the
    tag picker.
  * TagGridar: It works again. We now use the cool new decodeCustomTagList
    functions in the java API. Added the new G2Mask, SpeedFilter, and RSSIFilter
    controls to the PropertyPanel.
  * PropertyPanel:
    * Reduced complexity of AcquireMode & acquire params controls. Instead of
      tabbed panes (for each protocol) with columns of parameters and values,
      you now just see one drop-down list with all of the available parameters
      and their current values, with one text box to edit the selected parameter.
    * Added an "Exclusive" checkbox to the G2Mask control to allow for exclusive
      masking (i.e. tags that _don't_ match the mask).
    * Added "Enabled" checkboxes to the RSSI and Speed Filter controls. Disabling
      a filter reduces the overhead required by the reader to fetch the
      additional data to filter on.
    * Fixed a bug regarding the G2Mask control - mask lengths must be 255 bits
      or less, so when masking an entire EPC, it is truncated to 255 bits. Also,
      if you enter an invalid mask, the control will indicate this with a red
      "Mask is Invalid" label.
    * RSSI/SpeedFilter controls: Improved handling of tick marks. When dragging
      a slider, the current value for that slider is displayed next to the mouse.
    

v2.19.04
  * TagGrid:
    * Added a new G2Mask control. No setting it directly from tags on-screen yet...
    * Added cool new SpeedFilter and RSSIFilter controls. Interested in feedback,
      as they are home-grown controls, and may be buggy. The SpeedFilter is
      restricted to between -10 m/s and +10 m/s. The RSSIFilter is restricted to
      between 0 and 65535. You can drag the yellow bars on either end of the red
      range to slide the low and high values around. The scale will automatically
      re-adjust accordingly. If you double-click a scale, the range will invert,
      so that ranger than filtering values between the low and high markers, you
      will be filtering values outside the low and high markers.
    * Moved "Clear Grid", "Save Grid", and "Toggle Streaming" controls out of
      the PropertyPanel and into the mouse contextual menu. Right click in the
      grid to see these actions listed there, alongside the existing list of
      Tag Collections. You can also pause/resume the TagGrid application from
      the contextual menu.
    * Improved feedback when "Scanning for Tags", "Reading Tags", "Streaming
      Tags", "Configuring", etc.
  * Tag Programmer:
  	* Improved keyboard navigation - tab key takes you from field to field, and
      when you tab into a text field it automatically selects the text for yet.
    * Added G2Mask control, removed trial "Mask Prefix" field". You can manually
      enter a mask, or select all or part of a tag's EPC in the display and use
      the right-click contextual menu to set the mask. The various mask values
      will appear in the new G2Mask control and the command will be sent to the
      reader.
  * PropertyPanel:
    * The AntennaSequence control no longer has a text field to allow you to
      enter an arbitrary sequence. You are now limited to simple choosing which
      antennas to use.
  * TagGridar: Broken for now. Stay tuned...
  

v2.19.03
  * Tag Programmer:
    * Whole new layout of the tag data display and the buttons/controls at the
      bottom.
    * You can now right-click on a tag's EPC in the display and choose "Use this
      EPC" to have that data copied down to the EPC entry field at the bottom
      of the screen. The same goes for User data, and Access & Kill passwords.
    * You can now select all, or a portion of, the tag's EPC in the display,
      right-click on it, and choose "Mask on Selection" to set the reader's
      AcqMask to that value. Doing this with no selection clears the AcqMask.
    * Added a start/stop control to the bottom-left of the page (the Alien logo).
    * Pressing <enter> in the EPC, User, Access Pwd, or Kill Pwd data fields
      triggers that data to be written to the tag.


v2.19.02
  * Tag Programmer:
    * Increased size of EPC/User memory displays and text fields, to better
      accommodate tags with large memory banks.
    * Changed the layout of the programming buttons significantly.
    * Added UTID display for Higgs 3 tags.
    * Now attempt to decode manufacturer ID in Gen2 tags.


v2.19.01
  * TagGridar: Added new TagGridar application - looks like TagGrid, but
    velocity and position of the tag are indicated instead. Just barely demoable
    right now.


v2.19.00
(Staged for official release)


v2.18.04
  * PropertyPanel: Fixed RFAttenuation slider so that it properly tops out at
    150 instead of 160, for newer readers.
  * Tag Programmer: Fixed a bug which caused the EPC or User fields to increment
    incorrectly.
  * TagGrid: Fixed a bug which caused an extra row of blank grid cells to be
    displayed sometimes at the very bottom of the screen, chopped off.
  * Upgrader:
    * Now supports ALR-9650 readers, including accepting firmware files
      named "ALR-x800...".
    * Removed the "Allow Network Upgrades" checkbox - most folks want that
      option, and there's really no reason not to.
  

v2.18.03
  * TagGrid: No longer modifies the NotifyAddress setting on the reader. In
    order to validate that a reader can communicate back to the TagGrid using
    the TagStream mechanism, it was asking the reader to send a test notification
    to the TagGrid's stream listener. It now remembers the original NotifyAddress
    and restores that setting after the test is done.
  

v2.18.02
  * ReaderList: added icon for ALR-9650 reader.
  * Tag Programmer:
    * Added control to change an Alien Higgs tag's memory map, to enable User
      memory or longer EPCs. Current tags will only accept the ProgramAlienImage
      command if they are in the EPC96 mapping, though.
    * Disabled ProgramAlienImage button for ALR-9650 readers until that reader
      supports it.
    * Moved some of the action buttons around, and rearranged some of the newer
      controls at the bottom of the PropertyPanel.
  * Preferences: Added a control in the "Discovery" tab of the preferences window
    to allow you to choose a different serial baud rate for your readers. The
    default is 115200 baud, which is the default communication rate for all
    Alien readers. If you have configured your readers to use a different serial
    baud rate, you can still use the Gateway demonstration app with those
    readers by changing this preference to match your readers.
  * Upgrader: Disallows serial upgrades at baud rates other than 115200.


v2.18.01
  * Readometer:
    * Now indicates when more than one tag is in the field, rather than just
      using the first tag entry in the taglist.
    * Removed Klingon font (was shown when there are no reads or timer data).
  * TagGrid:
    * Fixed a bug which limited the number of tags that could be displayed to
      256, even though the cell size keeps getting smaller and smaller.
    * The EPC font is scaled down in an attempt to fit each tag's EPC within
      its cell. This can cause some EPCs to become unreadable, so a tag info
      status line was added below the grid area, which shows the complete EPC
      for whatever tag is under the mouse.
  * Readometer & Programmer: Long EPCs are now word-wrapped so that the entire
    EPC can be seen on the screen.
  * Misc: The Command Line Interface, TagGrid, and TCP Listener utilities all
    need to get the IP address of the host computer, in order to set up
    Notification and TagStream listeners. Previous versions of the Gateway would
    fetch the first address of the host, which would often be for a wireless
    ethernet interface. The Gateway now attempts to detect which ethernet
    interfaces are wireless, and gives priority to wired interfaces instead.

  
v2.18.00
  (Staged for official release)


v2.17.04
  * TagGrid: TagStreamMode is properly turned on/off when the "Use TagStream"
    checkbox is clicked, the TagGrid is paused, or the TagGrud is started/stopped.
  * TagGrid: Now exits to the main screen after a reader communication error.
  * Upgrader: Now alerts you after an upgrade if the reader's username/password
    were reset as a result of the upgrade.


v2.17.03
  * Misc: Long ReaderNames no longer break the layout of the ReaderList, window
    title, and UpgradeWizard intro page. If the selected reader's ReaderName is
    too long, it will be truncated in the display with an ellipsis character.
  * Added new option to the "Effects" preferences panel to allow you to choose
    how you want EPC data to be displayed. The default option is "Words" (EPC
    bytes are paired), but other options are "Bytes" (each byte separated by
    a space), and "ASCII" (each byte is rendered with it ASCII equivalent).
  * TagGrid: Before turning on TagStreamMode, the TCP connection from the reader
    back to the Gateway is tested. This check used to use the reader's Ping
    command, but it was found that this could take more than a minute, if the
    reader's LAN cable is disconnected at the wrong time. Now this test is done
    using the NotifyNow command, which is more predictable.
  * Upgrader: Support for the new ALR-9900 reader (treated the same as ALR-9800).


v2.17.02
  * TagProgrammer: Added complete set of Gen2 programming functionality, and
    the ability to work with large numbers of tags.
  * Fixed some threading/concurrency issues that generated errors when tweaking
    some of the PropertyPanel controls in a maniacal fashion.
  * TagGrid:
    * Fixed some concurrency issues that you generate errors when large numbers
      of tags are present, particularly when using TagStream to collect data.
    * Now implements "keep alive" feature to keep the command channel to the
      reader open.
    * Now clears any AcqMask that may have been previously set.


v2.17.01
  * TagGrid: Fixed a potential bug that could occur if your tag collection file
    specifies a row/column cell for a particular tag that is outside the matrix
    size of the current grid.
  * TagGrid: Uses a reader's TagStream mechanism, if available. Makes the data
    more timely and the user interface muchsnappier.
  * TCPListener: Fixed a bug which could cause the it to throw exceptions and
    fail if an empty notification message is received.


v2.17.00
  (Staged for official release)


v2.16.06
  * TagGrid: Saving the grid data while TagGrid was paused resulted in TagGrid
    starting back up after saving was done. It now stays paused if it started
    out paused.
  * Upgrader: Fixed a problem where returning to the Upgrade Wizard a second
    time either caused the "Start Upgrade" button to be disabled, or clicking
    it went to the wrong 2nd page.


v2.16.05
  * Main Window: Fixed an issue where readers that have ReaderName or IP
    address changed and then immediately get rebooted reappear in the Reader
    List displaying the old info.
  * SmartShelf: Deselecting all antennas now properly stops the reader from
    reading tags. Previously, it would still continue reading on the last-
    selected antenna.
  * Upgrader:
    * Now handles ALR-9890-RR upgrades.
    * Fixed a problem which could sometimes disable the "Start Upgrade" button.


v2.16.04
  * New TCP Listener Utility: The "Notify Listener" feature of the Command
    Line Interface utility now exists in its own separate window. The window
    is opened with the "Applications -> TCP Listener..." menu item. Select a port
    to listen on and control the listener with the Start/Stop button. Each
    connection from a reader is tracked in separate views, with tabs down the
    left side for selecting views. Views are labelled by the IP address of the
    connecting reader, followed by "Notifications" (for standard TCP notification
    messages), or "Tag Stream" or "I/O Stream" (for the new streaming features
    of the ALR-x800). Buttons are provided to clear and remove tabs, and to
    save the contents of a tab to the local filesystem.
  * Main Window:
    * Fixed some issues in the ReaderList that can occur when a known reader
      changes IP address, ReaderName, etc. Changes such as these in the reader
      sometimes caused multiple entries in the ReaderList, and resulting
      problems when one of those reader entries was accessed.
    * Also may have fixed a problem that could cause timeouts and other
      connection-related problems when operating a reader with in one of the
      sub-applications (Readometer, TagGrid, etc.) while other readers are added
      or dropped in the background from the reader list in the main window.
  * Readometer/TagGrid/etc.: Implemented a "keepalive" feature that periodically
    sends an empty command to a networked reader while the Gateway apps are
    paused. Otherwise, the reader may timeout the idle connection on its end,
    which can cause the Gateway to have difficulty when the app is resumed.
  * ALR-x800 Network Recovery Utility: This utility now works even when the
    reader supports the standard serial reader interface. Previously, it only
    worked with readers that did not have the serial interface implemented. It'
    also handles errors better, and returns to the main screen on success.
  * Upgrader:
    * The TCP connection back from the reader to the Upgrade Wizard is now
      tested before a network-based upgrade begins. This catches issues where a
      firewall may be blocking access to the port used by the Upgrade Wizard.
    * The list of readers in the Upgrade Wizard's first screen now includes the
      reader's model number for network-connected readers.
    * The reader that was selected in the Main Window is now pre-selected upon
      entering the Upgrade Wizard, including a prompt for username/password.


v2.16.03
  * CLI: Fixed a problem in the CLI's notification listener that caused Gateway
    to crash when the listener was stopped and restarted.


v2.16.02
  * Upgrader:
    * ALR-x800 upgrades now use factory-default username/password when
      verifying the upgrade afterward.
    * Attempts to upgrade ALR-x800 readers over a serial port are now rejected,
      since those readers do not support serial upgrades.
    * Fixed bug which could cause an erroneous Null Pointer Exception following
      an upgrade of an ALR-9640.
    * Supports http authentication in ALR-x800 upgrades.
  * General: Imposed smaller maximum values for many acquisition parameters. In
    most foreseeable circumstances, there's no reason to use large values, and
    this often results in timeout errors as the reader takes a very long time
    to do an inventory.


v2.16.01
  * Readometer: Now only allows a single antenna to be selected at a time.


v2.16.00
  * CLI: Fixed a bug which sometimes caused the "Keep Alive" feature to mangle
    lengthy reader responses (long taglists, mainly).
  * Readometer: Fixed a bug which would sometimes cause the initial minumum read-
    rate to be reported as 200.
  * TagGrid: Improved display of tag data in each cell - fonts are generally
    larger, and scale as the cell dimensions change.


v2.15.13
  * CLI: Modified to handle new ALR-x800 serial interface.


v2.15.12
  * Upgrade Wizard: Now recognizes and supports ALR-8800 readers.


v2.15.11
	* PropertyPanel: The Acquire Parameters component now initially displays the
    tab of the currently-selected tag protocol on startup.
	* PropertyPanel: Now supports the ALR-8800. Beefed up detection of supported
    tag protocols.
  * Misc: Created an ALR-9800 network recovery utility to reset DHCP over the
    serial port.


v2.15.10
  * CLI: Status message in the log area (connected, disconnected, etc.) are
    now displayed in red. Received notifications are still displayed in yellow.
    All colors are now preserved when the font size is changed.
  * Readometer: Implemented an auto-scaling rate meter. The meter starts out
    with a maximum of 200, but as higher read rates are recorded, the meter
    automatically scales up to higher and higher maximums.
  * ReaderList: ALR-8800 readers are now shown as red alien heads with
    "x800" tattooed on the forehead.
  * ReaderUpgrader: Improved robustness of network upgrades somewhat. The
    reader is now issued a FactorySettings command when the upgrade is done,
    and the ReaderName is returned to it's original setting.


v2.15.09
  * Tag Image Wizard: Reduced size of font used to display the TagID during
    association - 96-bit tags were being truncated.
  * PropertyPanel: Added a "CLI" widget for entering arbitrary reader commands
    within apps such as TagGrid, without having to exit out to the CLI and
    back.
  * Temperature Tag: The current Gateway once again correctly runs the Temp-
    erature Tag application, for supporting readers.


v2.15.08
  * CLI: Added "keep alive" feature. When enabled, the CLI sends an empty
    command to the reader every 10 seconds in order to prevent the reader
    from dropping an idle connection.
  * Property Panel: RFAttenuation component reflects max value appropriate,
    to the reader model - ALR-9780=160, ALR-9800=150.
  * Tag Programmer:
    * Fixed an issue created in the 2.15.07 version where the Program button
      was disabled if there were no tags in the field - how do you program an
      erased tag? Now the Program button is only disabled if there is more
      than one tag present.
    * Removed the AcquireMode component from the PropertyPanel. Now Global
      Scroll mode is forced.
  * Tag Grid: Increased the size of the "Total Tags" display.
  * Discovery Wizard: Now asks for username/password. If correct values are
    supplied, the resulting entry in the reader list will have the actual
    ReaderType and ReaderName displayed.
  * Upgrader: Now handles manually-discovered readers better.
  * Readometer:
    * More relevant results not for the ALR-9800. Had to increase the maximum
      value for the rate meters to 800!
    * Fixed a bug which was causing the TagID bar to improperly show red and
      yellow a lot of the time for Gen2.
    * Removed the AcquireMode component from the PropertyPanel. Now Global
      Scroll mode is forced;

v2.15.07
  * Profiler: Now supports ALR-9800 readers, as well as Gen2 commands in the
    upgraded ALR-9780.
  * Tag Programmer: Now indicates when there is more than one tag in the field,
    and disables the action buttons unless there is exactly one tag. When
    programming Gen2 tags, the Lock, Kill, and Erase buttons are disabled,
    pending implementation of these tag functions.
  * Main Window: The "Recan Serial" button below the Reader List in the main
    screen now indicates when a serial port is in use by another application
    (for instance, Hyperterm). It flashes "COMx Busy" a few times when
    this happens.
  * Serial Discovery Wizard: Now indicates when ports are in use by another
    application. Before, it simply said "No Reader".
  * CLI: Communication timeouts with the reader are handled better, and
    reconnecting with the Connect button now works in this situation.

v2.15.06
  * Upgrader: Inserted a check for ALR-9800 reader version before proceeding
    with an upgrade on those readers. Units with versions prior to 05.09.30
    are not compatible with the Gateway's Upgrade Wizard, so the reader's web
    interface must be used instead.
  * General: Many applications had an internal retry mechanism if a reader
    times out while the apps are running. This effectively triples the amount
    of time (beyond the "Communication Timeout" Gateway preference) that you
    have to wait before a popup window appears. This mechanism is now disabled.

v2.15.05
  * Main Window: Fixed a bug which sometimes caused reader entries in the
    reader list to appear very tall.

v2.15.03
  * Tag Programmer: Now explicitly sets Acquire parameters appropriate for
    Global Scroll mode. Includes the AcquireMode widget. TagType is now set
    appropriate to the selected ProgProtocol.
  * Tag Programmer: Changed default EPC Program ID to be a 96-bit code.
  * Login Window: Added auto-login button, with Alt-L keyboard shortcut - in
    addition to existing Ctrl-L shortcut.

v2.15.02
  * Upgrade Wizard: Added upgrade support for ALR-9800 readers.
  * Upgrade Wizard: Disabled manual entry of IP addresses in the reader
    pulldown list. It was breaking the selection of discovered network readers.

v2.15.01
  * Tag Programmer: Added ProgProtocol picker and AcquireParams widgets.
    Also displays "Verify Tag" data only when the C1G1 protocol is selected.
  * Main Window: Incorporated Java API fix to handle XML header in reader
    heartbeats, taglists, and notifcation messages.
  * PropertyPanel: Tightened up the RFAttenuation widget so that the TagGrid
    panel still fits on small WinXP screens.
  * Preferences: Increased the default communication timeout from 5 to 15 sec.

v2.15.00
  * CLI: Improved responsiveness of application when sending/receiving commands.
  * CLI: Handle and report unparseable notification messages that were received.
  * Main Window: Fixed bug which caused the reader list to occassionally have
    no reader selected. Readers are now listed in the order they were
    discovered (but still with serial readers on top).
  * Main Window: Expanded selection of alien head icons to better differentiate
    between various reader models.

v2.14.16
  * UpgradeWizard: Fixed bug where upgrading ALR-9780 readers left them in a
    internal debugging mode.
  * Reader Profiler: Temporarily disabled generating of profiles from ALR-9800.
    Existing profiles may still be applied to the ALR-9800.
  * TagGrid: Improved feedback in the status label just above the Alien logo
    in the lower-left corner. It now indicates when TagGrid is paused, when
    tags are seen by the reader, when tags are not seen by the reader, as well
    as configuration commands when they are issued.
  * Main Window: Reader List now displays each reader's MAC Address, alongside
    the reader's IP Address. Some older readers may not provide this information.

v2.14.15
  * TagGrid: Implemented a new grid size, "Dynamic", which automatically
    adjusts the grid size depending on how many tags are being displayed. This
    option negates any ROW-HINT or COLUMN-HINT directives in the tag
    collection files.
  * Memory Monitor: fixed a bug which caused the floating window to be empty.
  * Main Window: "Beam-in" sound effect no longer plays if the "Beam-in"
    visual effect is disabled in the Effects Preferences window.
  * Tag Programmer: Fixed the layout so that the raw tag memory line fits on
    smaller displays.

v2.14.14
  * TagGrid: Now issues AutoModeReset instead of just AutoMode=off, in order
    to clear any start/stop triggers that may have been set.

v2.14.13
  * Supports extended acquire parameter command set for ALR-9800.

v2.14.12
  * General improvements in application response times and CPU load.
  * PropertyPanel: Compressed antenna widgets so they take less screen space.

v2.14.11
  * Programmer: Minor changes to support ALR-9800.
  * Upgrade Wizard: Upgrading a the firmware of a "World Reader" no longer
    resets the reader's country code and hop table.
  * Command Line Interface: Now incorporates a listener service to catch reader
    Notification messages. Messages from the reader are received and displayed
    prominently in the CLI window.

v2.14.10
  * SmartShelf: Added a PropertyPanel to this app, and allowed for the user
    to be able to specify which antennas are used for Add, Remove, and Automatic
    modes. This allows for better compatibility with Multi-Static readers (with
    Tx/Rx antenna pairs).

v2.14.09
  * PropertyPanel: TagType widget is now "Tag Protocols", and can either be
    inclusive (checkboxes) or exclusive (radio buttons).
  * Readometer:
    * Now uses exclusive tag protocol widget.
    * Replaced "Total Reads" and "Reads per Second" text labels with a groovy
      speedometer control, showing current, average, min, and max read rates.
  * Error Windows: Improved display of error details.
  * Command Line Interface:
    * Improved handling of failed connections, added "Connect" button next to
      the address field for reconnecting or connecting to a new reader address.
    * Command entry field has keyboard focus whenever possible.
  * Main Window:
    * Serial port scanning can now be cancelled by clicking the "Scanning COMx"
      button during a scan.
    * The listener service for detecting readers on the network can now be
      turned on and off with the "Start/Stop Listener" button next to the serial
      scan control button.

v2.14.08
  * TagGrid: Changed default grid size to 3x3, and default on-screen persist time
    to 5 seconds.

v2.14.07
  * PropertyPanel:
    * Recognized Gen2-capable ALR-9780 and enables Class1/Gen2 protocol checkbox.

v2.14.06
  * Preferences:
    * Added new "Effects" panel to change or disable the "Starfield" and "Beam-In"
      effects, as well as turn the following TagPanel effects: Tag Details (persist
      time/antenna/count), Graphical PersistTime bar, Automatic highlighting of
      tags based on protocol.
    * Improved refresh performance when using "Twinkle" and "Warp" Starfields.
    * Made Starfield stars smaller and colored.
  * TagCollection files:
    * Implemented "PROTOCOL" element within a "TAG" element to allow you to specify
      particular images for arbitrary tagIDs, based on a tag's protocol.

v2.14.05
  * PropertyPanel:
    Fixed AntennaPanel to accomodate spaces and/or commas in the AntennaSequence.
  * TagGrid:
    * Fixed a bug which kept AutoMode from being turned on, unless the default
      acquire parameters were being used.
    * Each tag's PersistTime is now also represented by a vertical guage next to
      each tag's icon.
  * UpgradeWizard:
    * The pulldown containing the list of readers now includes readers that were
      discovered manually, and is also editable (enter the reader's IP:port).

v2.14.04
  * Main Window
    Improved behavior when serial classes are not present.

v2.14.03
  * TagCollection files:
    * Implemented ROW-HINT and COLUMN-HINT TagCollection elements withing a "TAG"
      element, in order to allow you to give the TagGrid hints as to where to
      place each tag.

v2.14.02
  * PropertyPanel:
    Replaced TagType pulldown with checkboxes, including C1G2.
  * TagGrid, Conveyor, SmartShelf:
    Class0 tags are colored with a brown background.
    C1G2 tags are colored with a green background.

v2.14.01
  * Readometer:
    * Decreased initialization time.
    * Fixed bug where TotalReads wasn't reset properly.
  * TagGrid:
    * Decreased initialization time.
    * Provided status field to indicate idle/reading/configuration.
    * Fixed bug where moving the mouse endlessly stopped all application activity.
    * Fixed bug where changing the Tag Collection didn't update the display unless
      the app was paused.

v2.14.00
  * PropertyPanel:
    * TagType widget recognizes ALR-9800, and enables all tag types.

v2.13.01
  * TagGrid:
  	* Added "Issue Wake" button to PropertyPanel which wakes tags in the field,
      even when the TagGrid is paused.
    * Disabling the StarField and other effects now also disables the live
      tag count and time-to-live displays in each grid location.

v2.13.00
  Implemented new "Reader Profiler" application, for generating, editing,
  saving, and re-applying reader configurations.

v2.12.03
  * TagGrid:
    * Removed extra "AutoMode=ON" "AutoMode=OFF" commands when TagGrid starts up.
  * Readometer:
  	* Pausing Readometer now resets the tag count (like it used to).
    * Improved layout of tagID bar so it doesn't shift up and down, depending on
      whether a tag is read or not.
  * CLI:
  	* Improvements when working with ALR-9774 regarding auto login and difficulties
		  connecting when AutoMode is on.
  * Tag Image Wizard now works with ALR-9774.

v2.12.02
  * TagGrid:
    * Fixed communication issue where reader responses lost sync with their issued
      commands, occasionally resulting in tagIDs like "Automode=On" being displayed
      in the TagGrid.
    * Increased size of "Total Tags" label.
    * Last "Save Grid" location is remembered, and used as default for next save.
    * "Clear Grid" and "Save Grid" may be activated by typing ALT-C or ALT-S.
  * Implemented many keyboard shortcuts for PropertyPanel controls, and other
    application-specific buttons.
  * TagType control now only enables "Class 1 - 96" for 8780 readers.
  * Colors preferences now validates red/yellow cutoff values so that they are
    within range and in the proper order.
  * Upgrade Wizard now logs all upgrade activity to a text file:
    <user home>/.RFIDEnterpriseGateway/upgradeLog.txt

v2.12.01
  * Tag Programmer works with ALR-9770 Dual Mode readers. Removed top-center
    Alien logo in Readometer.
  * Fixed a bug from v2.12.00 which prevented network firmware upgrades from
    working.
  * Improved font size selection buttons - finer control, and min/max limits on
    font size.

v2.12.00
  * CLI now better handles changing the reader on-the-fly (by editing the address
    field in the top-left corner).
  * Fixed annoyance bug where discovery of a reader of unknown ReaderType caused
    a popup alert to repeatedly appear.
  * Login popup window now accepts the same CTRL-L "alien/password" shortcut as
    is provided in the CLI application.
  * Added support for new ALR-977x dual-mode readers.
  * AntennaSelector now only enables the antennas that are actually connected to
    an OEM Module. It also corrects invalid AntennaSequences.
  * CLI not uses a monospaced font for the log area, to improve readability of
    structured data, such as TagLists, Notification messages, etc.

v2.11.04
  * Added ability to specify which serial ports to scan for readers ("Discovery"
    Preferences pane).
  * Upgrade Wizard now ensures you don't load an old Enterprise Firmware version
    over a new Bootloader.

v2.11.03
  * Added debug field to modify TagGrid's polling time.

v2.11.00
  * Upgrade Wizard:
    * Improved cleanup after firmware upgrade.
    * Implemented firmware FileChooser filter, to limit which files may be
      selected for upgrading readers.
  * TagGrid
    * TagGrid's "Property Panel" now includes RFAttenuation and Acquire
      parameter controls, and may be hidden/shown by pressing F1.
    * Saving taglist in TagGrid no longer clears the grid on the screen.
  * Readometer has a property panel similar to TagGrid.
  * Tag Programmer has a property panel similar to TagGrid. and redesigned
    layout.
  * Command Line Interface
    * CLI no longer sends the command when the command field simply loses focus.
    * The command history has been reordered - most recent on the bottom.
    * The "q" command, when issued to a LAN reader now exits the CLI back to the
      main screen.
    * Added font size adjustment buttons, and a "Save Log" button for saving log
      contents to a text file.
    * PropertyPanel on the left can be shown/hidden by pressing F1.
    * Provided "Login" button for automatically sending "alien/password" info,
      which can also be invoked by pressing ctrl-L.
  * All Gateway windows are now constrained so they are no smaller than
    1024x768 pixels.
  * Fixed WinXP bug which caused the "data" directory to not be found, if the
    Gateway was launched from the Start menu.

v2.10.01 Various improvements and fixes, including:
  * Each app sets the TagListFormat to "text" before trying to read tags.
  * Rolled in various Command Line Interface improvements for OEM Modules.
  * Upgrade Wizard starts immediately after leaving first wizard screen, the
    second screen of the wizard is simplified, and it does a much better job
    of handling exceptional conditions.

v2.9.18b Upgrade Wizard updates ALR-9640 readers properly.

v2.9.18 Main Gateway window now remembers its size and location. Upgrade Wizard
  properly handles "extra" files within firmware .zip files.

v2.9.17 Various improvements including:
  * Improved Tag Image Wizard prompts for username/password when using a LAN
    reader, and gives better feedback when making tag-image associations.
  * TagGrid and Readometer can both be restarted after a reader timeout by
    clicking the Alien logo.
  * Fixed a bug where TagGrid would display a tag's time-to-live with single-
    digit seconds (i.e. "10:9" instead of "10:09").

v2.9.16 Added "OEM Module Management" application, for setting baud rates of
  connected OEM modules. Changed the AntennaSequence selector in the TagGrid
  application to be 4 checkboxes and a text field for entering an arbitrary
  sequence. Fixed a bug where changing the AntennaSequence in TagGrid sometime
  gave a timeout error. Fixed a bug where readers in AutoMode sometimes reported
  a mangled ReaderName/ReaderType when discovered over the serial port.

v2.9.15 Rolled in improvements made to reader API which fixes a bug where a
  serially-connected reader in AutoMode could not be discovered, and in some
  cases locked up the serial port. SerialDiscovery speed has also been improved.

  Improvements to the Upgrade Wizard:
    * Now validates the firmware files against the selected reader.
    * Firmware file and reader selection combined onto the first screen.
    * Resets ReaderName after upgrade.
    * Successfully upgrades readers with cleared firmware.
    * Option to restore serial baud rate after OEM module upgrade.

  Moved "Upgrade Wizard" and "Command Line Interface" items from the "Help" menu
  to the "Applications" menu.

v2.9.14 Fixed Upgrade Wizard to deal with some ALR-9780 readers that didn't
  appear to be entering the bootloader. Added CommunicationTimeout parameter to
  "Acquire" preferences window. Some inventory commands with large acquire
  parameters and many tags in the field can take 10-20 seconds to complete. To
  avoid timeout errors, increase this value.

v2.9.13 Removed extraneous "save" command sent after the "factorysettings"
  command at the end of the Upgrade process. Gateway apps now explicitly turn
  NotifyMode off, to improve performance.

v2.9.12 Implemented diagnostic CLI commands for DLE reader. Modified Tag
  Programmer to make use of new programming commands in the reader API.

v2.9.11 Re-enabled APPEAR-SOUND and DISAPPEAR-SOUND in TagGrid - default is no
  sound.

v2.9.10 Made the Upgrade Wizard more robust, handling error conditions better,
  and not giving wrong advice about how to manually reboot the reader when a
  reboot is not necessary.

v2.9.9 Rolled in support for DLE-based reader. All functionality works,
  including Readometer, TagGrid, Tag Programmer, and Upgrade Wizard. Also added
  an "Increment ID" checkbox to the Tag Programmer, and a "Use these settings"
  checkbox to the Acquire Preferences screen which lets you prevent the Gateway
  from overriding any manually-configured Acquire parameters.

v2.9.8 Fixed problem in Readometer where turning Off Readometer while the reader
  was acquiring tags sometimes caused a "Timeout" or "Not a Valid Reader" error.
  Also fixed DLE discovery, so the DLE classes are back in.

v2.9.7 Implemented maxSerialPort to prevent run-away serial port scanning.
  Serial port scanning will halt at COM6.

v2.9.6 getTag() method was returning null with older 2-port readers, causing
  Readometer and TagGrid to not display any tags. This problem and fix was
  entirely within the Java library, this update was just to roll them into the
  Gateway.

v2.9.5 Revised algorithm for determining how many antennas a reader has, based
  on ReaderType.

v2.9.4 Made the Readometer and TagGrid apps smarter in how they set up Acquire
  parameters. An attempt is made to set the Acquire parameters for all readers.
  If they accept them, then the scrollN and acquireMultiplier values are
  modified so read counts will be valid.

v2.9.0 Generally added support for new batch of readers - ALR-xx8x (4-port),
  ALR-x6xx (SmarTenna), etc.

v02.80.02 Double-clicking a reader in the readerlist opens the CLI. Added "Color
  Preferences" pane to choose cutoff values for poor/fair/good colors in
  Readometer and Tag Programmer. Right-clicking an antenna in Readometer lets
  you rename it.

v02.60.03 Made changes to Tag Image Wizard
  1. If any image is over 500 pixels on a size when loaded in
    a. display a warning dialog
    b. scale down image to 500 x 500 - this is the slow option...better
       to permantently scale down images to file.
  2. Added new auto scale option in the Tag Image Wizard to scale
     JPEGS down to 500 x 500 ... perferred scaling method (over b.)
  3. Added new Add Image Directory option to Tag Image Wizard to add
     multiple images with one click
  4. Changes the Assinge TagID to Image method...now Tag ID will disappear
     when removed from reader view. Previously this stayed on screen until
     next tag was presented to reader.

v02.60.02 If reader is NOT a 915 type, remove the Antenna switching buttons from
  the Readometer and Tag Grid screens. Changed the CLI window to now correctly
  allow cut and paste of text.

v02.60.01 The Go/No-Go tester was occasionally reading the last tag tested, even
  though it has been removed from the reader. This was a result of residual data
  in the reader's tag list. Added code to compare new tag with last one read and
  if same to discard the reads.