Embedded Light RP

Introduction

This section describes the Embedded light RP developed by the POPS team, Inria-Lille. This software can be easily implemented in mobile terminals such like PDA to interact with RFID Reader devices.

The implementation is divided into two subsets : RP API definition and core implementation for CAEN and BRI readers.

The targeted RP architecture is the following :

  • One Reader Device : singleton representing the RFID reader device.
  • One Source : representing the PDA as a mobile source for reading tags.
  • One Read Point : representing the unique ANTENNA of each PDA.
  • One Data Selector : the default one, with EPCID field selection only.
  • No Tag Selector : The filtering is done by software at upper levels.
  • No Notification Channel : The inventory is done synchronously with a specified time-out per read cycle.
  • No triggers : the only Read Trigger is implicitly fired when calling the method Source.rawReadIDs.
The implementation is performed as follows (example for BRI, idem. for CAEN):

BRI_implementation.png

Users & Developers Guide

The executable jar file can be found under the repository ReaderProtocol/dist. All the source can be found under the repository ReaderProtocol/src.

Here is an example of Inventory of tags in reader's field:

// Reader singleton 
ReaderDevice myReader = 
             ReaderFactory.getReader(ReaderFactory.BRI_READER,"BRIReaderDevice");

// Reader's default source and data selector Source mySource; DataSelector myDataSelector;

// Establish Connections ReaderFactory.connectReader(myReader);

// Reader's Data Selector : default singleton for selecting IDs // This is is the default data selector that supports at least the tag ID field // get Default Data Selector and update it myDataSelector = myReader.getCurrentDataSelector();

// Reader's source : Singleton mySource = myReader.getCurrentSource();

// Perform 10 read cycles for( int i = 0; i < 10 ; i++) { System.out.println("Read Cycle " + i + " at " + myReader.getTimeTicks() + " ticks");

// Inventory ReadReport myReadReport = mySource.rawReadIDs(myDataSelector);

if (myReadReport == null) { System.err.println("Error : mySource.rawReadIDs null report "); } else { // Display read Tags (ids in hexadecimal) String[] tagIds = myReadReport.getTagIds(mySource.getName()); if (tagIds == null) { System.err.println("Error : myReadReport.getTagIds null "); } else if (tagIds.length == 0) { System.out.println("t NO TAGS"); } else { for(int j = 0 ; j < tagIds.length; j++) System.out.println("tObserved : 0x" + tagIds[j]); } } }

// graceful disconnect : equivalent to ReaderFactory.disconnectReader(myReader); myReader.goodbye();

Download

You can download the executable jar file from here. The source can be found here.

Please follow the Users & Developers Guide for your tests.

More details about the complete version of Light ALE (with light RP embedded) can be found here.