Package Structure for a reader project

From RifidiWiki

Jump to: navigation, search


Please refer to this document to figure out how to create a new reader project in eclipse

This page enumerates the very basic packages that a reader will need to have and the important files in each one. Complex readers will have more packages than these, but this is a bare minimum. These packages correspond with what you will need to program in stage 2 of reader creation.

org.rifidi.emulator.reader.READERNAME

This package just contains the osgi activator. It should be created for you automatically when you create the project. You have to modify it only to make sure it sets up the reader. Activator.java

org.rifidi.emulator.reader.READERNAME.command.exception

This package contains a file that handles exceptions that occur in the parsing and execution of reader commands.

org.rifidi.emulator.reader.READERNAME.commandhandler

This package contains one or more files that handle incoming reader messages. Normally commands can be divided into general categories. For example, with the LLRP reader, there are a set of commands that deal with ROSPec messages (such as ADD_ROSPEC, ENABLE_ROSPEC, etc.) and a separate set of commands that deal with AccessSpec messages (such as ADD_ACCESSSPEC, ENABLE_ACCESSSPEC). So for the LLRP reader, there is one file called 'LLRPReaderOperationControl.java' that contains the handler methods for ROSpec commands and a file called 'LLRPAccessControl.java' that contains the handler methods for AccessSpec commands.

org.rifidi.emulator.reader.READERNAME.formatter

Any kind of formatters used should go into this package. You will definitely need a formatter that handles the parsing of incoming and outgoing commands called

But you may also need formatters such as

that handles how incoming and outgoing messages should look in the log file. Another useful formatter that may be necessary is

that controls how bytes are read off of and written to the TCPSocket.

org.rifidi.emulator.reader.READERNAME.protocol

The protocol package contains one file whose purpose is twofold. The protocol needs to:

  1. strip any extra protocol-- such as HTTP that the reader uses to communicate-- off of incoming messages and apply these protocols back to outgoing messages.
  2. Sometimes two or more commands can be read off of the TCP socket at the same time if the messages are sent quickly. Therefore the protocol needs to make sure that each command is placed on the incoming buffer individually.

org.rifidi.emulator.reader.READERNAME.module

The module is the heart of the reader. It contains all the essential classes to get the reader up and running.

org.rifidi.emulator.reader.READERNAME.tagbuffer

Because every real reader has a slightly different way that they remember tags, each virtual reader will need a class to handle tag reads.

Personal tools