com.impinj.octane

## Class ImpinjReader

- java.lang.Object
- - com.impinj.octane.ImpinjReader

- All Implemented Interfaces:
    KeepaliveTimeoutListener, org.llrp.ltk.net.LLRPEndpoint

      public class ImpinjReader
      extends java.lang.Object
      implements org.llrp.ltk.net.LLRPEndpoint, KeepaliveTimeoutListener

  This is the main class for the Octane SDK Java. This class contains all the methods used to interact with a single reader.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `ImpinjReader.KeepAliveHandler`
    `protected static class` | `ImpinjReader.MessageHandler`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ImpinjReader()` Creates and initializes an ImpinjReader object.
    `ImpinjReader(java.lang.String address, java.lang.String name)` Creates and initializes an ImpinjReader object.
    `ImpinjReader(java.lang.String address, java.lang.String name, int timeoutMs)` Creates and initializes an ImpinjReader object.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addOpSequence(TagOpSequence sequence)` Adds a sequence of tag operations to the reader to perform during inventory
    `void` | `applyDefaultSettings()` Applies the default settings to the reader.
    `void` | `applySettings(org.llrp.ltk.generated.messages.SET_READER_CONFIG setReaderConfigMessage, org.llrp.ltk.generated.messages.ADD_ROSPEC addROSpecMessage)` Applies the provided settings to the reader.
    `void` | `applySettings(Settings settings)` Applies the provided settings to the reader.
    `void` | `applySettingsWithoutFactoryReset(org.llrp.ltk.generated.messages.SET_READER_CONFIG setReaderConfigMessage, org.llrp.ltk.generated.messages.ADD_ROSPEC addROSpecMessage)` Applies the provided settings to the reader, without doing a factory reset first.
    `void` | `applySettingsWithoutFactoryReset(Settings settings)` Applies the provided settings to the reader, without doing a factory reset first.
    `org.llrp.ltk.generated.messages.ADD_ROSPEC` | `buildAddROSpecMessage(Settings config)` Build up an LTK add ROSpec message.
    `org.llrp.ltk.generated.messages.SET_READER_CONFIG` | `buildSetReaderConfigMessage(Settings config)` Build up an LTK set reader config message.
    `void` | `connect()` Connect (unsecured) to an Impinj RFID reader using the default LLRP port (5084).
    `void` | `connect(java.lang.String address)` Connect (unsecured) to an Impinj RFID reader using the default LLRP port (5084).
    `void` | `connect(java.lang.String address, boolean useTLS)` Connect to an Impinj RFID reader using the default LLRP port (5084).
    `void` | `connect(java.lang.String address, int port)` Connect (unsecured) to an Impinj RFID reader.
    `void` | `connect(java.lang.String address, int port, boolean useTLS)` Connect to an Impinj RFID reader.
    `void` | `deleteAllOpSequences()` Deletes all tag operation sequences from the reader
    `void` | `deleteOpSequence(int sequenceId)` Deletes a tag operation sequence
    `void` | `disconnect()` Disconnects the LLRP connection to the reader
    `void` | `enableOpSequence(int sequenceId)` Enables the Tag Operation Sequence
    `void` | `errorOccured(java.lang.String arg0)`
    `org.llrp.ltk.generated.messages.GET_ACCESSSPECS_RESPONSE` | `getAccessSpec()` Get the Access Spec for checking reader configuration
    `java.lang.String` | `getAddress()` Gest the IP address or hostname of the reader.
    `AntennaChangeListener` | `getAntennaChangeListener()`
    `BufferOverflowListener` | `getBufferOverflowListener()`
    `BufferWarningListener` | `getBufferWarningListener()`
    `ConnectionAttemptListener` | `getConnectionAttemptListener()`
    `ConnectionCloseListener` | `getConnectionCloseListener()`
    `ConnectionLostListener` | `getConnectionLostListener()`
    `int` | `getConnectTimeout()`
    `DiagnosticsReportListener` | `getDiagnosticsReportedListener()`
    `GpiChangeListener` | `getGpiChangeListener()`
    `KeepaliveListener` | `getKeepaliveListener()`
    `LocationReportListener` | `getLocationReportedListener()`
    `int` | `getMessageTimeout()`
    `java.lang.String` | `getName()` Gets the name assigned to a reader
    `ReaderStartListener` | `getReaderStartListener()`
    `ReaderStopListener` | `getReaderStopListener()`
    `TagOpCompleteListener` | `getTagOpCompleteListener()`
    `TagReportListener` | `getTagReportListener()`
    `boolean` | `isConnected()`
    `boolean` | `isSpatialReader()` Detects if the connected reader is a reader with direction or location role capabilities (xArray or xSpan).
    `boolean` | `isXArray()` Detects if the connected reader is an xArray.
    `boolean` | `isXSpan()` Detects if the connected reader is an xSpan.
    `void` | `messageReceived(org.llrp.ltk.types.LLRPMessage message)` For internal use only to receive messages from the LLRP library
    `void` | `onKeepaliveTimeout()`
    `Settings` | `queryDefaultSettings()` Queries the default settings of the reader.
    `FeatureSet` | `queryFeatureSet()` Queries the reader for a summary of the features that it supports.
    `Settings` | `querySettings()` This function queries the reader for its current settings.
    `Status` | `queryStatus()` queries status information from the reader
    `void` | `queryTags()` Tells the reader to send all the tag reports it has buffered.
    `boolean` | `readerIsXArray()` Deprecated.
    `void` | `removeAntennaChangeListener()` Removes the antenna change listener.
    `void` | `removeAntennaStartListener()` Removes the antenna start listener.
    `void` | `removeDiagnosticsReportListener()` Removes the diagnostic report listener.
    `void` | `removeDirectionReportListener()` Removes the direction report listener.
    `void` | `removeEndOfCycleListener()` Removes the end of cycle listener.
    `void` | `removeGpiChangeListener()` Removes the GPI change listener.
    `void` | `removeLocationReportListener()` Removes the location report listener.
    `void` | `removeTagOpCompleteListener()` Removes the tag operation listener.
    `void` | `removeTagReportListener()` Removes the tag report listener.
    `void` | `resumeEventsAndReports()` This function tells the reader to resume sending reports and events.
    `void` | `saveSettings()` Saves the settings object to a file in json format.
    `void` | `setAddress(java.lang.String address)` Sets the IP address or hostname of the reader.
    `void` | `setAntennaChangeListener(AntennaChangeListener antennaChangeListener)` The antenna change listener allows the application to receive antenna change reports from the reader
    `void` | `setAntennaStartListener(AntennaStartListener antennaStartListener)` The antenna start listener allows the application to receive antenna start reports from the reader.
    `void` | `setBufferOverflowListener(BufferOverflowListener bufferOverflowListener)` The buffer overflow listener allows the application to receive a notification when the buffer in the reader has overflowed and tag reports and events may be getting lost
    `void` | `setBufferWarningListener(BufferWarningListener bufferWarningListener)` The buffer warning listener allows the application to receive a notification when the buffer has filled to TBD level.
    `void` | `setConnectionAttemptListener(ConnectionAttemptListener connectionAttemptListener)` The connection attempt listener allows the application to receive a notification when other applications are trying to connect to the reader.
    `void` | `setConnectionCloseListener(ConnectionCloseListener connectionCloseListener)` The connection close listener allows the application to receive a notification when the reader has closed the connection to the SDK
    `void` | `setConnectionLostListener(ConnectionLostListener connectionLostListener)` The connection list listener allows the application to receive a notification when the keepalives have stopped and the connection is presumed lost.
    `void` | `setConnectTimeout(int connectTimeoutMsec)` Set the connect timeout for all connection attempts with the reader.
    `void` | `setDiagnosticsReportListener(DiagnosticsReportListener diagnosticsReportListener)` Sets the diagnostic report listener.
    `void` | `setDirectionReportListener(DirectionReportListener directionReportListener)` Set the direction report listener.
    `void` | `setEndOfCycleListener(EndOfCycleListener endOfCycleListener)` The end of cycle listener allows the application to receive end-of-cycle reports from the reader.
    `void` | `setGpiChangeListener(GpiChangeListener gpiChangeListener)` The GPI change listener allows the application to receive GPI change reports from the reader
    `void` | `setGpo(int port, boolean portState)` sets a GPO to specified state
    `void` | `setKeepaliveListener(KeepaliveListener keepaliveListener)` The keepalive listener allows the application to receive keepalive reports from the reader.
    `void` | `setLocationReportListener(LocationReportListener locationReportListener)` Set the location report listener.
    `void` | `setMessageTimeout(int messageTimeoutMsec)`
    `void` | `setName(java.lang.String name)` Assigns a name to this reader.
    `void` | `setReaderStartListener(ReaderStartListener readerStartListener)` The reader start listener allows the application to receive a notification when the reader starts inventory
    `void` | `setReaderStopListener(ReaderStopListener readerStopListener)` The reader stop listener allows the application to receive a notification when the reader stops inventory
    `void` | `setTagOpCompleteListener(TagOpCompleteListener tagOpCompleteListener)` Sets the tag operation listener for the reader.
    `void` | `setTagReportListener(TagReportListener tagReportListener)` Sets the tag report listener.
    `void` | `start()` Starts the reader.
    `void` | `stop()` Stops the reader from its inventory.
    `java.lang.String` | `toString()`
    `void` | `turnBeaconOff()` Turns off the xArray beacon LED
    `void` | `turnBeaconOn(long durationMsec)` Turns on the xArray Beacon LED.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### ImpinjReader

          public ImpinjReader(java.lang.String address,
                              java.lang.String name,
                              int timeoutMs)

      Creates and initializes an ImpinjReader object.
      Parameters:
        `address` - the IP address or hostname of the reader
        `name` - a name given to the reader
        `timeoutMs` - the connection and message timeout for the reader

    - #### ImpinjReader

          public ImpinjReader(java.lang.String address,
                              java.lang.String name)

      Creates and initializes an ImpinjReader object.
      Parameters:
        `address` - the IP address or hostname of the reader
        `name` - a name given to the reader
      See Also:
        `setName(java.lang.String)`, `setAddress(java.lang.String)`

    - #### ImpinjReader

          public ImpinjReader()

      Creates and initializes an ImpinjReader object.

  - ### Method Detail

    - #### readerIsXArray

          @Deprecated
          public boolean readerIsXArray()

      Deprecated.
      Deprecated. Replaced by isXarray(). Detects if the connected reader is an xArray.
      Returns:
        True if this ImpinjReader is an xArray, False if this reader is not an xArray, or if no connection has yet been established with the reader.
      See Also:
        `isXArray()`

    - #### isXArray

          public boolean isXArray()

      Detects if the connected reader is an xArray.
      Returns:
        True if this ImpinjReader is an xArray, False if this reader is not an xArray, or if no connection has yet been established with the reader.

    - #### isXSpan

          public boolean isXSpan()

      Detects if the connected reader is an xSpan.
      Returns:
        True if this ImpinjReader is an xSpan, False if this reader is not an xSpan, or if no connection has yet been established with the reader.

    - #### isSpatialReader

          public boolean isSpatialReader()

      Detects if the connected reader is a reader with direction or location role capabilities (xArray or xSpan).
      Returns:
        True if this ImpinjReader is a reader with direction or location role capabilities, False if this reader is not a reader with direction or location role capabilities, or if no connection has yet been established with the reader.

    - #### getMessageTimeout

          public int getMessageTimeout()

      Returns:
        The current setting for the message timeout in msec

    - #### setMessageTimeout

          public void setMessageTimeout(int messageTimeoutMsec)

      Parameters:
        `messageTimeoutMsec` - -- set the message timeout for all interactions with the reader. If a message is sent to the reader and a response is not received by messageTime milliseconds later, the SDK will throw an exception

    - #### getConnectTimeout

          public int getConnectTimeout()

      Returns:
        The current setting for the connect timeout in msec

    - #### setConnectTimeout

          public void setConnectTimeout(int connectTimeoutMsec)

      Set the connect timeout for all connection attempts with the reader. If a connection is attempted and is not established within the specified timeout, the SDK will throw an exception.
      Parameters:
        `connectTimeoutMsec` - The amount of time to wait (in ms) for a connection to be successfully established.

    - #### getTagReportListener

          public TagReportListener getTagReportListener()

      Returns:
        the currently configured tag report listener

    - #### setTagReportListener

          public void setTagReportListener(TagReportListener tagReportListener)

      Sets the tag report listener. This listener enables the application to get notified when tag report arrive from the reader.
      Parameters:
        `tagReportListener` - the listener object to receive events
      See Also:
        `TagReport`

    - #### removeTagReportListener

          public void removeTagReportListener()

      Removes the tag report listener. After removal, the application will no longer get tag reports from the reader.

    - #### getTagOpCompleteListener

          public TagOpCompleteListener getTagOpCompleteListener()

      Returns:
        the currently configured tag operation listener

    - #### setTagOpCompleteListener

          public void setTagOpCompleteListener(TagOpCompleteListener tagOpCompleteListener)

      Sets the tag operation listener for the reader. The tag operation listener allows the application to receive notification when configured tag operations complete (like read write lock kill) *
      Parameters:
        `tagOpCompleteListener` - the listener object to receive events
      See Also:
        `TagOpResult`, `TagOp`

    - #### removeTagOpCompleteListener

          public void removeTagOpCompleteListener()

      Removes the tag operation listener. After removal, the application will no longer get tag operation reports from the reader.

    - #### getLocationReportedListener

          public LocationReportListener getLocationReportedListener()

      Returns:
        the currently configure location report listener

    - #### setLocationReportListener

          public void setLocationReportListener(LocationReportListener locationReportListener)

      Set the location report listener. The location report listener allows the application to receive location reports from the reader
      Parameters:
        `locationReportListener` - the listener object to receive events
      See Also:
        `LocationReport`

    - #### removeLocationReportListener

          public void removeLocationReportListener()

      Removes the location report listener. After removal, the application will no longer get location reports from the reader.

    - #### setDirectionReportListener

          public void setDirectionReportListener(DirectionReportListener directionReportListener)

      Set the direction report listener. The direction report listener allows the application to receive location reports from the reader.
      Parameters:
        `directionReportListener` - the DirectionReportListener implementation that will receive these events
      See Also:
        `DirectionReport`

    - #### removeDirectionReportListener

          public void removeDirectionReportListener()

      Removes the direction report listener. After removal, the application will no longer get direction reports from the reader.

    - #### getDiagnosticsReportedListener

          public DiagnosticsReportListener getDiagnosticsReportedListener()

      Returns:
        the currently configured diagnostic report listener

    - #### setDiagnosticsReportListener

          public void setDiagnosticsReportListener(DiagnosticsReportListener diagnosticsReportListener)

      Sets the diagnostic report listener. The diagnostic report listener allows the application to receive diagnostic reports from the reader
      Parameters:
        `diagnosticsReportListener` - the listener object to receive events
      See Also:
        `DiagnosticReport`

    - #### removeDiagnosticsReportListener

          public void removeDiagnosticsReportListener()

      Removes the diagnostic report listener. After removal, the application will no longer get diagnostic reports from the reader.

    - #### getGpiChangeListener

          public GpiChangeListener getGpiChangeListener()

      Returns:
        gets the currently configured Gpi listener

    - #### setGpiChangeListener

          public void setGpiChangeListener(GpiChangeListener gpiChangeListener)

      The GPI change listener allows the application to receive GPI change reports from the reader
      Parameters:
        `gpiChangeListener` - the listener object to receive events
      See Also:
        `GpiEvent`

    - #### removeGpiChangeListener

          public void removeGpiChangeListener()

      Removes the GPI change listener. After removal, the application will no longer get GPI change reports from the reader.

    - #### getAntennaChangeListener

          public AntennaChangeListener getAntennaChangeListener()

      Returns:
        gets the currently configured antenna change listener

    - #### setAntennaChangeListener

          public void setAntennaChangeListener(AntennaChangeListener antennaChangeListener)

      The antenna change listener allows the application to receive antenna change reports from the reader
      Parameters:
        `antennaChangeListener` - the listener object to receive events
      See Also:
        `AntennaEvent`

    - #### removeAntennaChangeListener

          public void removeAntennaChangeListener()

      Removes the antenna change listener. After removal, the application will no longer get antenna change reports from the reader.

    - #### setAntennaStartListener

          public void setAntennaStartListener(AntennaStartListener antennaStartListener)

      The antenna start listener allows the application to receive antenna start reports from the reader.
      Parameters:
        `antennaStartListener` - the listener object to receive events
      See Also:
        `AntennaEvent`

    - #### removeAntennaStartListener

          public void removeAntennaStartListener()

      Removes the antenna start listener. After removal, the application will no longer get antenna start reports from the reader.

    - #### setEndOfCycleListener

          public void setEndOfCycleListener(EndOfCycleListener endOfCycleListener)

      The end of cycle listener allows the application to receive end-of-cycle reports from the reader.
      Parameters:
        `endOfCycleListener` - the listener object to receive events
      See Also:
        `AntennaEvent`

    - #### removeEndOfCycleListener

          public void removeEndOfCycleListener()

      Removes the end of cycle listener. After removal, the application will no longer get end-of-cycle reports from the reader.

    - #### getKeepaliveListener

          public KeepaliveListener getKeepaliveListener()

      Returns:
        gets the currently configured keepalive listener

    - #### setKeepaliveListener

          public void setKeepaliveListener(KeepaliveListener keepaliveListener)

      The keepalive listener allows the application to receive keepalive reports from the reader. A keepalive can be periodically sent by the reader to validate the network connection.
      Parameters:
        `keepaliveListener` - the listener object to receive events
      See Also:
        `KeepaliveEvent`

    - #### getConnectionLostListener

          public ConnectionLostListener getConnectionLostListener()

      Returns:
        the currently configured connection lost listener

    - #### setConnectionLostListener

          public void setConnectionLostListener(ConnectionLostListener connectionLostListener)

      The connection list listener allows the application to receive a notification when the keepalives have stopped and the connection is presumed lost.
      Parameters:
        `connectionLostListener` - the listener to receive events

    - #### getReaderStartListener

          public ReaderStartListener getReaderStartListener()

      Returns:
        the currently configured reader start listener

    - #### setReaderStartListener

          public void setReaderStartListener(ReaderStartListener readerStartListener)

      The reader start listener allows the application to receive a notification when the reader starts inventory
      Parameters:
        `readerStartListener` - the listener object to receive events
      See Also:
        `ReaderStartEvent`

    - #### getReaderStopListener

          public ReaderStopListener getReaderStopListener()

      Returns:
        the currently configured reader stop listener

    - #### setReaderStopListener

          public void setReaderStopListener(ReaderStopListener readerStopListener)

      The reader stop listener allows the application to receive a notification when the reader stops inventory
      Parameters:
        `readerStopListener` - the listener object to receive events
      See Also:
        `ReaderStopEvent`

    - #### getBufferWarningListener

          public BufferWarningListener getBufferWarningListener()

      Returns:
        the currently configured buffer warning listener

    - #### setBufferWarningListener

          public void setBufferWarningListener(BufferWarningListener bufferWarningListener)

      The buffer warning listener allows the application to receive a notification when the buffer has filled to TBD level.
      Parameters:
        `bufferWarningListener` - the listener object to receive events
      See Also:
        `BufferWarningEvent`

    - #### getBufferOverflowListener

          public BufferOverflowListener getBufferOverflowListener()

      Returns:
        the currently configured buffer overflow listener

    - #### setBufferOverflowListener

          public void setBufferOverflowListener(BufferOverflowListener bufferOverflowListener)

      The buffer overflow listener allows the application to receive a notification when the buffer in the reader has overflowed and tag reports and events may be getting lost
      Parameters:
        `bufferOverflowListener` - the listener object to receive events
      See Also:
        `BufferOverflowEvent`

    - #### getConnectionAttemptListener

          public ConnectionAttemptListener getConnectionAttemptListener()

      Returns:
        the currently configured connection attempt listener

    - #### setConnectionAttemptListener

          public void setConnectionAttemptListener(ConnectionAttemptListener connectionAttemptListener)

      The connection attempt listener allows the application to receive a notification when other applications are trying to connect to the reader.
      Parameters:
        `connectionAttemptListener` - the listener object to receive events
      See Also:
        `ConnectionAttemptEvent`

    - #### getConnectionCloseListener

          public ConnectionCloseListener getConnectionCloseListener()

      Returns:
        the currently configured connection close listener

    - #### setConnectionCloseListener

          public void setConnectionCloseListener(ConnectionCloseListener connectionCloseListener)

      The connection close listener allows the application to receive a notification when the reader has closed the connection to the SDK
      Parameters:
        `connectionCloseListener` - the listener object to receive events
      See Also:
        `ConnectionCloseEvent`

    - #### onKeepaliveTimeout

          public void onKeepaliveTimeout()

      Specified by:
        `onKeepaliveTimeout` in interface `KeepaliveTimeoutListener`

    - #### getName

          public java.lang.String getName()

      Gets the name assigned to a reader
      Returns:
        the name assigned to the reader.

    - #### setName

          public void setName(java.lang.String name)

      Assigns a name to this reader. For example, "Dock Door #1 Reader". This name can be used to identify a particular reader in an application that controls multiple readers.
      Parameters:
        `name` - the name to assign to this reader

    - #### getAddress

          public java.lang.String getAddress()

      Gest the IP address or hostname of the reader.
      Returns:
        the ip address or hostname as a string

    - #### setAddress

          public void setAddress(java.lang.String address)

      Sets the IP address or hostname of the reader.
      Parameters:
        `address` - address or hostname string of the reader device

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### connect

          public void connect()
                       throws OctaneSdkException

      Connect (unsecured) to an Impinj RFID reader using the default LLRP port (5084). The Address property must be set prior to calling this method.
      Throws:
        `OctaneSdkException` - when the connection attempt fails or if the Address property has not been set.

    - #### connect

          public void connect(java.lang.String address)
                       throws OctaneSdkException

      Connect (unsecured) to an Impinj RFID reader using the default LLRP port (5084).
      Parameters:
        `address` - -- address or hostname of the reader
      Throws:
        `OctaneSdkException` - if the connection attempt fails

    - #### connect

          public void connect(java.lang.String address,
                              boolean useTLS)
                       throws OctaneSdkException

      Connect to an Impinj RFID reader using the default LLRP port (5084).
      Parameters:
        `address` - -- address or hostname of the reader
        `useTLS` - -- enable TLS encryption if "true"
      Throws:
        `OctaneSdkException` - if the connection attempt fails

    - #### connect

          public void connect(java.lang.String address,
                              int port)
                       throws OctaneSdkException

      Connect (unsecured) to an Impinj RFID reader.
      Parameters:
        `address` - -- the address or hostname of the reader
        `port` - -- the TCP port number of the LLRP service
      Throws:
        `OctaneSdkException` - when the connection atttempt fails

    - #### connect

          public void connect(java.lang.String address,
                              int port,
                              boolean useTLS)
                       throws OctaneSdkException

      Connect to an Impinj RFID reader.
      Parameters:
        `address` - -- the address or hostname of the reader
        `port` - -- the TCP port number of the LLRP service
        `useTLS` - -- enable TLS encryption if "true"
      Throws:
        `OctaneSdkException` - when the connection atttempt fails

    - #### isConnected

          public boolean isConnected()

      Returns:
        true if a connection to this reader exists

    - #### queryFeatureSet

          public FeatureSet queryFeatureSet()
                                     throws OctaneSdkException

      Queries the reader for a summary of the features that it supports.
      Returns:
        An object summarizing the features supported by the reader.
      Throws:
        `OctaneSdkException` - if the capabilities could not be discovered

    - #### disconnect

          public void disconnect()

      Disconnects the LLRP connection to the reader

    - #### stop

          public void stop()
                    throws OctaneSdkException

      Stops the reader from its inventory. Tags will no longer be read.
      Throws:
        `OctaneSdkException` - if the reader cannot be stopped

    - #### start

          public void start()
                     throws OctaneSdkException

      Starts the reader. Tag reports will be received asynchronously via an event.
      Throws:
        `OctaneSdkException` - if the Start method is called before connecting to a reader.
      See Also:
        `TagReport`

    - #### applyDefaultSettings

          public void applyDefaultSettings()
                                    throws OctaneSdkException

      Applies the default settings to the reader.
      Throws:
        `OctaneSdkException` - if this method is called prior to establishing a connection with a reader.

    - #### applySettings

          public void applySettings(org.llrp.ltk.generated.messages.SET_READER_CONFIG setReaderConfigMessage,
                                    org.llrp.ltk.generated.messages.ADD_ROSPEC addROSpecMessage)
                             throws OctaneSdkException

      Applies the provided settings to the reader.
      Parameters:
        `setReaderConfigMessage` - The set reader config LLRP LTK message to be sent.
        `addROSpecMessage` - The add RO Spec LLRP LTK message to be sent.
      Throws:
        `OctaneSdkException` - if this method is called prior to establishing a connection with a reader, or if the settings are invalid.

    - #### applySettingsWithoutFactoryReset

          public void applySettingsWithoutFactoryReset(org.llrp.ltk.generated.messages.SET_READER_CONFIG setReaderConfigMessage,
                                                       org.llrp.ltk.generated.messages.ADD_ROSPEC addROSpecMessage)
                                                throws OctaneSdkException

      Applies the provided settings to the reader, without doing a factory reset first.
      Parameters:
        `setReaderConfigMessage` - The set reader config LLRP LTK message to be sent.
        `addROSpecMessage` - The add RO Spec LLRP LTK message to be sent.
      Throws:
        `OctaneSdkException` - if this method is called prior to establishing a connection with a reader, or if the settings are invalid.

    - #### applySettings

          public void applySettings(Settings settings)
                             throws OctaneSdkException

      Applies the provided settings to the reader.
      Parameters:
        `settings` - Settings to apply to the reader.
      Throws:
        `OctaneSdkException` - if this method is called prior to establishing a connection with a reader, or if the settings are invalid.

    - #### applySettingsWithoutFactoryReset

          public void applySettingsWithoutFactoryReset(Settings settings)
                                                throws OctaneSdkException

      Applies the provided settings to the reader, without doing a factory reset first.
      Parameters:
        `settings` - Settings to apply to the reader.
      Throws:
        `OctaneSdkException` - if this method is called prior to establishing a connection with a reader, or if the settings are invalid.

    - #### saveSettings

          public void saveSettings()
                            throws OctaneSdkException

      Saves the settings object to a file in json format.
      Throws:
        `OctaneSdkException` - if the save fails

    - #### buildAddROSpecMessage

          public org.llrp.ltk.generated.messages.ADD_ROSPEC buildAddROSpecMessage(Settings config)
                                                                           throws OctaneSdkException

      Build up an LTK add ROSpec message.
      Parameters:
        `config` - A settings object after which the message will be modeled.
      Returns:
        An LTK add ROSpec message.
      Throws:
        `OctaneSdkException` - if an error was encountered while building the ROSpec message.

    - #### queryDefaultSettings

          public Settings queryDefaultSettings()

      Queries the default settings of the reader. NOTE the reader default settings may be different than the SDK default settings. In order to use the SDK default settings ensure you apply these settings
      Returns:
        the SDKs default reader settings
      See Also:
        `applySettings(Settings)`

    - #### buildSetReaderConfigMessage

          public org.llrp.ltk.generated.messages.SET_READER_CONFIG buildSetReaderConfigMessage(Settings config)
                                                                                        throws OctaneSdkException

      Build up an LTK set reader config message.
      Parameters:
        `config` - A settings object after which the message will be modeled.
      Returns:
        An LTK set reader config message.
      Throws:
        `OctaneSdkException` - if an error occurred while building the reader config message.

    - #### querySettings

          public Settings querySettings()
                                 throws OctaneSdkException

      This function queries the reader for its current settings. NOTE: When interacting with a spatial reader in Direction mode, not all settings will be returned in the Settings object. Some examples of this are filter configuration, session, and reader mode.
      Returns:
        An object containing the current reader settings
      Throws:
        `OctaneSdkException` - if a communication error occurs while talking with the reader, the reader has not been configured, or if the configuration was not applied by the SDK

    - #### setGpo

          public void setGpo(int port,
                             boolean portState)
                      throws OctaneSdkException

      sets a GPO to specified state
      Parameters:
        `port` - GPO port corresponding to the gpo to set
        `portState` - the desired port state
      Throws:
        `OctaneSdkException` - if the command fails

    - #### queryStatus

          public Status queryStatus()
                             throws OctaneSdkException

      queries status information from the reader
      Returns:
        the status object for the reader
      Throws:
        `OctaneSdkException` - if the command fails

    - #### turnBeaconOn

          public void turnBeaconOn(long durationMsec)
                            throws OctaneSdkException

      Turns on the xArray Beacon LED.
      Parameters:
        `durationMsec` - length in time to enable the beacon
      Throws:
        `OctaneSdkException` - if the command fails.

    - #### turnBeaconOff

          public void turnBeaconOff()
                             throws OctaneSdkException

      Turns off the xArray beacon LED
      Throws:
        `OctaneSdkException` - if the beacon cannot be disabled

    - #### errorOccured

          public void errorOccured(java.lang.String arg0)

      Specified by:
        `errorOccured` in interface `org.llrp.ltk.net.LLRPEndpoint`
      Parameters:
        `arg0` - TODO

    - #### messageReceived

          public void messageReceived(org.llrp.ltk.types.LLRPMessage message)

      For internal use only to receive messages from the LLRP library
      Specified by:
        `messageReceived` in interface `org.llrp.ltk.net.LLRPEndpoint`
      Parameters:
        `message` - the LLRP message received by the reader

    - #### queryTags

          public void queryTags()
                         throws OctaneSdkException

      Tells the reader to send all the tag reports it has buffered. The ReportMode should be set so that reader accumulates tag reads (WaitForQuery or BatchAfterStop).
      Throws:
        `OctaneSdkException` - when this method is called prior to establishing a connection with a reader.

    - #### addOpSequence

          public void addOpSequence(TagOpSequence sequence)
                             throws OctaneSdkException

      Adds a sequence of tag operations to the reader to perform during inventory
      Parameters:
        `sequence` - the sequence of operations to perform
      Throws:
        `OctaneSdkException` - if the sequence is invalid or could not be applied

    - #### getAccessSpec

          public org.llrp.ltk.generated.messages.GET_ACCESSSPECS_RESPONSE getAccessSpec()
                                                                                 throws OctaneSdkException

      Get the Access Spec for checking reader configuration
      Returns:
        the Access Spec for checking reader configuration.
      Throws:
        `OctaneSdkException` - if the attempt to get the acess spec from the reader times out.

    - #### enableOpSequence

          public void enableOpSequence(int sequenceId)
                                throws OctaneSdkException

      Enables the Tag Operation Sequence
      Parameters:
        `sequenceId` - the ID of the sequence to be enabled
      Throws:
        `OctaneSdkException` - if a communication error occurs while talking with the reader.
      See Also:
        `TagOpSequence`

    - #### deleteOpSequence

          public void deleteOpSequence(int sequenceId)
                                throws OctaneSdkException

      Deletes a tag operation sequence
      Parameters:
        `sequenceId` - the ID of the sequence to be disabled
      Throws:
        `OctaneSdkException` - if a communication error occurs while talking with the reader.
      See Also:
        `TagOpSequence`

    - #### deleteAllOpSequences

          public void deleteAllOpSequences()
                                    throws OctaneSdkException

      Deletes all tag operation sequences from the reader
      Throws:
        `OctaneSdkException` - if the operation fails
      See Also:
        `TagOpSequence`

    - #### resumeEventsAndReports

          public void resumeEventsAndReports()
                                      throws OctaneSdkException

      This function tells the reader to resume sending reports and events. Messages in the queue on the reader may then be sent.
      Throws:
        `OctaneSdkException` - if a communication error occurs while talking with the reader.