ThingMagic

From RifidiWiki

Jump to: navigation, search


Introduction

Model Number
4
Network Protocol

SQL like protocol that may be wrapped in ssh, web interface, RCP, and Linux shell login.

Communication

10/100 BaseT Ethernet – RJ45

Antennas

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

General Purpose I/O

(To Do)

Basis of Virtual Reader

The reader accepts SQL style protocol and returns the appropriate information.

Documentation

Client Tools

Telnet, SSH clients, and Tag Centric

Reader Design

This section will give a brief overview of how the hardware reader operates for the purposes of emulation. Here is the architecture for the emulator: ThingMagic/Emulator_Architecture [Deprecated]

Communication

Protocols

The main method for communicating with the reader is via TCP, TCP+SSH on port 8080, web interface, and RCP.

Memory Model

The memory model is like a state based database.

Getting Tags

Getting tags is fairly simple just execute:

telnet [reader ip address] 8080

Then type:

select id from tag_id set time_out=[milliseconds];

Note: the semicolon at the end of each command is necessary.

One can also return multiple items:

select id, protocol_id from tag_id set time_out=[milliseconds];

Also add filters or conditionals:

select id from tag_id where [condition or filter] set time_out=[milliseconds];

Note: The where clause only works on tag_id or tag_data tables. Only protocol_id can have a string in the where clause.


In addition more than one statement can be put on more than one line.

select id from tag_id set time_out=[milliseconds]; select protocol from tag_id set time_out=[milliseconds];

Tag Centric reads tags in the following manner:

select id,read_count from tag_id WHERE (protocol_id='EPC0' and protocol_id='EPC1' and protocol_id='GEN2') set time_out=200;

From this, one can tell if two conditions conjoined with 'AND' use the same column name, it counts as a logical 'OR'.

Timer

Autonomous Mode and Cursors

First create a cursor:

declare cursor_name cursor for select id, protocol_id from tag_table;

To use the cursor just once...

fetch cursor_name;

One may add more cursors to the fetch list by separating them by commas.

To turn on auto mode:

set auto cursorlist = ON;

To add in additional delay between one tag read operation and another:

set auto cursorlist = on, repeat = 500;

NOTE: 500 is the minimum time between the start of one tag read operation to the start of another. This includes any time_out value in the select command used for the cursor.

To set the delay between the end of the cursor list to the beginning of it repeating again, use:

SET repeat = 1000;

To turn auto mode off:

SET auto = OFF;

NOTE: Do not try to use any other command while auto mode is on; it may cause an undesirable undefined operation.

To delete a cursor:

close cursor_name;

NOTE: only one cursor can be close/deleted at a time, and no cursor lists are allowed in the syntax of this command.

Reset

To reset the reader as if there where no cursors defined and no tags read:

reset;

Login

By SSH log in.

RQL Schema

tag_id
Read/Write Field Type
R protocol_id Int
R antenna_id Int
R read_count Int
R/W id Hex String
W killed Int
W password Hex String
R locked Int
R frequency Int
R dspmicros Int
R timestamp String


tag_data
Read/Write Field Type
R id Hex String
R/W block number Int
R/W data Hex String
R locked Int


settings
Read/Write Field Type
R current_time String
R version String
R supported_protocols String


io
Read/Write Field Type
R/W data Hex String


saved_settings
Read/Write Field Type
R/W hostname String
R/W iface String
R/W dhcpcd String
R/W ip_address String
R/W netmask String
R/W gateway String
R/W ntp_servers String
R/W 1tx_power String
R/W uhf_power_centidbm String
R/W epc1_id_length String
R/W primary_dns String
R/W secondary_dns String
R/W domain_name String
R/W reader_description String
R/W reader_role String
R/W ant1_readpoint_descr String
R/W ant2_readpoint_descr String
R/W ant3_readpoint_descr String
R/W ant4_readpoint_descr String

Supported Features

All tables except tag_data are supported. Where clause only works on tag_id and tag_data on the real reader. Automode is working.

Only no-complex (simple) where clauses are supported now only for the select command, like:

select id,read_count from tag_id WHERE protocol_id='GEN2';

Adding and removing cursors works. Also automode works (see above examples).

Unsupported Features & Bugs

Tag_data table and compound conditions are not supported. ThingMagic, Mercury 5 reader RQL features are also not supported. Login by ssh is not supported. Also the time_out feature for reading tags is not supported yet. Complex where clauses are not currently supported but may be in a future release.

Features that might never be supported

Linux shell access to reader. This is fairly complex and require to emulate the entire hardware infrastructure of the reader and an ARM possessor. Also the web and RCP interface might be developed at a later time.

Personal tools