Difference between revisions of "ThingMagic"

From RifidiWiki

Jump to: navigation, search
Line 223: Line 223:
  
 
==Unsupported Features & Bugs==
 
==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.
+
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.
  
 
==Features that might never be supported==
 
==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.
 
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.

Revision as of 17:05, 8 October 2008


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

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];

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:

<nowiki>
reset:
<pre><nowiki>

===Login===
By SSH log in.

===RQL Schema===
{| class="wikitable" border="1"
|+ 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
|-
|}
<br />
{| class="wikitable" border="1"
|+ tag_data
! Read/Write !! Field !! Type
|-
|R || id || Hex String
|-
|R/W || block number || Int
|-
|R/W || data || Hex String
|-
|R || locked || Int
|-
|}
<br />
{| class="wikitable" border="1"
|+ settings
! Read/Write !! Field !! Type
|-
|R || current_time || String
|-               
|R || version || String
|-
|R || supported_protocols || String
|-
|}
<br />
{| class="wikitable" border="1"
|+ io
!Read/Write !! Field !! Type
|-
|R/W || data || Hex String
|-
|}
<br />
{| class="wikitable" border="1"
|+ 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.

==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.

==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