Alien 9800

From RifidiWiki

Jump to: navigation, search


Introduction

The Alien 9800 is produced by Alien Technology. It is a general purpose reader that can read Class 1 Gen 2 tags. For an introduction on how to use the Alien reader see the Alien Beginner's Guide

Model Number
ALR 9800
Network Protocol
TCP/IP
Communication
LAN TCP/IP(RJ-45), RS-232
Antennas
4 ports
General Purpose I/O
4 Inputs, 8 Outputs

Historical Note

The Alien reader was the first reader that Pramari implemented, so therefore some of code in the emulator (such as the timestamp information in the tags and the tag memory) is alien specific. For more information about the structure of the emulator see Engine Overview.

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

There is not a lot of documentation freely available, as it is not on Alien's website. Documentation for this reader is bundled with the reader, so it can only be obtained by actually purchasing a reader. However, some universities may have documentation available for use by its students.

Client Tools

The main client tools used for testing this program:

Alien Tool
The Alien Tool is a client program that ships with the reader. It has an interesting look and feel. Its tag grid mode is useful to determine if a reader is properly reading tags.
BEA 2.2
BEA is a commercial edgeware application. It communicates with the alien reader via "on demand" mode. The new version of BEA (version 3.0), also has an option to use autonomous mode to gettag reads
Logic Alloy 1.0.10
Logic Alloy ALE Server is an open source edgeware application. It uses the alien reader's autonomous mode to obtain tag reads
TagCentric
TagCentric is an open source edgeware application that communicates with the alien reader via "on demand" commands.
Example Client
Alien Example Client shows how to connect to the alien reader using a simple java client.

Reader Design

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

Communication

The Alien reader sends plain text messages over a TCP connection. The connection can be easily tested by telnetting into the reader and issuing commands. The following is an example of a telnet session and getting the tag list. The reader is running at 192.168.2.100:20000.

$ telnet 192.168.2.100 20000
Trying 192.168.2.100...
Connected to 192.168.2.100.
Escape character is '^]'.
***********************************************
*
* Alien Technology : RFID Reader
*
***********************************************

Username>alien
alien

Password>password
********


Alien >get taglist
get taglist
(No tags)

Alien >

When connecting programatically, it is useful to supress the prompt. This is done by prepending a 0x01 to the beginning of the text to be sent. Also keep in mind that all commands are terminated by a carriage return and a line feed (0x0d 0x0a)

Memory Model

The memory model of the alien reader is based on the concept of persist time, which is the amount of time a tag stays in memory after having been seen by an antenna. It is possible to change the persist time using the set persistTime command. For example, the following command will set the persist time to 500 ms.

Alien >set persistTime=500
set persistTime
PersistTime = 500

If the persistTime is set to a -1, the tag will persist in memory until a get tagList operation is performed (either on-demand or autonomously).

Getting Tags

There are two main modes to get tags from an alien reader. The simplest is "on demand" mode, in which the user simply issues a command and the reader sends back a tag list. The Autonomous mode enables the reader to act as a client and send tag lists to a server at some location.

On Demand

To get tag reads in On Demand read, a user can send a 'get taglist' command, or more simply 't'. The reader will respond with its tag list.

Autonomous Mode

Autonomous mode is more complicated. A user will set up several parameters, such as the notifyAddress (the address of the server where tag lists are to be sent), notifyTime (a time interval a which messages will be sent), notifyTrigger (a condition upon which to fire a message), and others. When a trigger is fired, or the notify time has expired, a message that contains the tag list will be sent to the server.

The interaction between AutoMode and NotifyMode is important to understand. If AutoMode is on, but NotifyMode is off, no messages will be sent. If NotifyMode is on but AutoMode is off, messages will be sent containing blank TagLists.

Autonomous mode messages consist of an optional header (controlled by the NotifyHeader variable) followed by a list of tags which were read. The message format (controlled by the NotifyFormat variable) can be xml, terse, string, or custom.

The NotifyTime is a variable that controls how often time-based messages are sent, and is specified in seconds. If set to zero, automatic, time-based notification is disabled. The tags contained in each message are the tags in the TagList (i.e. the reader's tag memory) at the time the message was fired; the reader essentially gets the TagList (in the same way that a user could in interactive mode by typing “get TagList”) at regular intervals and puts the results in a message.

Login

The Alien Reader requires the user to log in. The default name and password is "alien/password".

Supported Features

The following is a list of important features of the Alien reader that are properly emulated by Rifidi

Login

It is possible to log into the alien reader with a username and password. The alien reader will not work until you are logged in.

Getting and Setting variables

The rifidi Alien reader allows users to get and set all variables, using the get and set commands.

Getting TagList

As mentioned previously, it is possible to get the tag list using the get taglist or the t command.

Persist Time

The persist time controls how long a tag resides in memory before it is deleted. It works except for a bug if the peresttime=-1 as explained below

Autonomous Mode

Most of the autonomous mode works except that notifyTrigger only works properly when set to truefalse, and does not properly emulate the other possible values for it.

Supported Commands

A list of commands supported by rifidi:

General Commands

  • Quit (q)
  • get/set ReaderName
  • get ReaderType
  • get ReaderVersion
  • get / set ReaderNumber
  • get / set Username
  • get / set Password

TagList Commands

  • get Taglist (t)
  • get / set PersistTime
  • get / set TagListFormat (possible values = text, terse, xml)
  • clearTagList
  • get / set TagType

Radio Commands

  • get / set AntennaSequence

Autonomous Commands

  • get / set AutoMode (possible values = on, off)
  • get / set AutoFalseOutput
  • get / set AutoFalsePause
  • get / set AutoStartPause
  • get / set AutoStartTrigger
  • get / set AutoStopTimer
  • get / set AutoStopTrigger
  • get / set AutoStopTimer
  • get / set AutoTrueOutput
  • get / set AutoTruePause
  • get / set NotifyMode
  • get / set NotifyAddress
  • get / set NotifyFormat (possible values = text, terse, xml)
  • get / set NotifyTime
  • get / set NotifyTrigger
  • get / set NotifyHeader (possible values = on, off)

Program Tag Commands

  • get / set ProgAntenna
  • ProgramTag
  • get / set Function

GPIO Commands

  • get / set ExternalOutput

Bugs and Unsupported Features

Personal tools