Symbol XR440

From RifidiWiki

Jump to: navigation, search


Introduction

The XR440 is manufactured by Motorola. It is a general purpose reader that can read Class 1 Gen 2 tags.

Model Number

XR440

Network Protocol

Bit Encoded Messages over TCP & HTTP over TCP

Communication

10/100 BaseT Ethernet – RJ45

Antennas

4 read points (4 transmit points, 4 receive points)

General Purpose I/O

N/A

Basis of Virtual Reader

The implementation of the virtual reader is based on the testing of an actual hardware reader. Testing was done using wireshark to capture the client-reader communication. This input output was then emulated.

Documentation

Client Tools

The main client tools used for testing this program:

BEA 2.2
BEA is a commercial edgeware application. It communicates with the alien reader via "on demand" mode using the bit encoded messages over TCP. The new version of BEA (version 3.0), also has an option to use autonomous mode, which uses HTTP over TCP.
Logic Alloy 1.0.10
Logic Alloy ALE Server is an open source edgeware application. It uses HTTP to communicate with the reader.
TagCentric
TagCentric is an open source edgeware application that communicates with the alien reader HTTP.
Motorola Showcase
Motorola Showcase is a client tool provided by Motorola to use with their readers. It runs on .NET and communicates with the reader mainly using HTTP, but it is possible to get tags using the bit encoded messages.
Web Browser
Because the reader uses an HTTP interface, it is possible to use a simple web browser as a client to issue most commands.

Reader Design

This section will give a brief overview of how the hardware reader operates for the purposes of emulation.

Communication

The Symbol XR440 uses two methods for communication. The default port for HTTP is port 80, and the default port for bit-encoded messages is 3000.

HTTP over TCP

The main method for communicating with the reader is via HTTP over TCP. Almost all functionality can be accessed in this way.

The general syntax of an HTTP command is:

http://IP[:PORT]/cgi-bin/PROXY/oper=COMMAND[&PARAM=VAL]*

where

  • [ ] indicate option items
  • IP is a host name (can be of the form www.reader.com, or of 192.168.1.100)
  • PORT is the port. If omitted, port 80 is assumed
  • PROXY is either:
  1. loginProxy for commands dealing with logging into the Web-based admin console
  2. coreProxy for commands dealing with the backend, such as setting the date and time
  3. dataProxy for commands that interact with the host, such as getting tags
  • COMMAND is the command to execute, such as "setDateTime" or "queryTags"
  • PARAM=VALis a name-value pair of arguments. Each argument is separated by an ampersand. There can be 0 or more name-value pairs.

For example, to get tags, this command would be sent:

http://192.168.0.1/cgi-bin/dataProxy?oper=queryTags&raw=1

The resulting tag read looks like this:

<Matrics>
<EventGroup>
<TagList>
<Tag raw='300833B2DDD9014035050000' time='46bb8b06' RPL='1'/>
</TagList>
</EventGroup>
</Matrics>

Byte Stream Messages

In addition to the HTTP interface, the XR440 also supports a byte stream protocol. This interface is primarily for getting tags in an "on-demand" (i.e. polling) way. For example, the client will send the reader a command to "get tags", and the reader will respond with a tag list. Because the bit-encoded messages are smaller, they are more efficient to send over a network, and thus this protocol is a better choice than sending "queryTags" HTTP commands for polling the reader.

Structure of Byte Protocol Message

The general structure of a bit encoded message is the following:

  • Byte 0 - Start of Frame (value is 0x01)
  • Byte 1 - Node Address (Obsolete, value is 0x04)
  • Byte 2 - Packet length, excluding the Start of Frame, but including CRC bytes
  • Byte 3 - Command
  • Bytes 4-N - Data
  • Byte N+1 - LSB of CRC
  • Byte N+2 - MSB of CRC

The reader will always respond with a similarly structured response message that echoes the command of the incoming message. In the case of the Read Full Field Command (22h), there are two response packets -- a Tag Data Packet, and a Final Packet.

Memory Model

The memory model for the Symbol reader is fairly simple. Tags are in one of three states: Visible, Invisible, or Unknown. Once a tag is read, it transitions from the Unknown state to the Visible state. If the tag goes outside the view of the antenna, it transitions to the invisible state. Then, if the re-enters the antenna's field of view, it transitions back to the Visible state. If the tag is in the Invisible state, and a purge command is called, it goes back to being unknown. The reader also generates events at each of these transitions.

When a client queries the reader using http, it can specify whether or not it wants the invisible tags by using the "invis" parameter.

Getting Tags

On Demand

Autonomous Mode

Login

Supported Features

So far, the only supported features are the following byte stream commands

  • Get Parameter Block Command(24h)
  • Ge Reader Status Command(14h)
  • Read Full Command(22h)
  • Set Parameter Block Command(23h)

In addition, it is only possible to read from antenna 1.

Unsupported Features & Bugs

Personal tools