org.mbari.siam.devices.isus2
Class ISUS2

java.lang.Object
  extended by java.rmi.server.RemoteObject
      extended by java.rmi.server.RemoteServer
          extended by java.rmi.server.UnicastRemoteObject
              extended by org.mbari.siam.core.DeviceService
                  extended by org.mbari.siam.core.BaseInstrumentService
                      extended by org.mbari.siam.core.PolledInstrumentService
                          extended by org.mbari.siam.devices.isus2.ISUS2
All Implemented Interfaces:
java.io.Serializable, java.rmi.Remote, ScheduleOwner, Device, DeviceServiceIF, Instrument
Direct Known Subclasses:
ScheduledISUS

public class ISUS2
extends PolledInstrumentService
implements Instrument

Satlantic ISUS-2 instrument service, as operated in TRIGGERED mode. Compatible with ISUS firmware version 2.7.1. This instrument serial interface is menu-driven, resulting in some tricky state transitions. States include:

  - Ready: instrument awake, ready to accept single-letter commands
  - InMenu: instrument awake, in main menu mode
  - Asleep: instrument is sleeping
  - Sampling: instrument is awake, aquiring samples
  - Charging: instrument is waking up

Author:
Tom O'Reilly
See Also:
Serialized Form

Field Summary
protected  org.mbari.siam.devices.isus2.ISUS2.Attributes _attributes
           
protected  byte[] _buffer
           
protected  byte[] _frameBuffer
           
 
Fields inherited from class org.mbari.siam.core.BaseInstrumentService
_defaultSamplerTask, _defaultSampleScheduleName, _errorCache, _instrumentAttributes, _lastPacket, _lastSensorDataPacket, _maxSampleBytes, _messagePacket, _nPowerRequests, _nWakeRequests, _packetLog, _recordType, _running, _samplerWakeupTime, _scheduleKey, _schedules, _sensorDataPacket, _turbinator, MAX_BASE_RECORDTYPE, RECORDTYPE_DEFAULT, RECORDTYPE_METADATA, RECORDTYPE_UNDEFINED
 
Fields inherited from class org.mbari.siam.core.DeviceService
_fromDevice, _instrumentPort, _nodeProperties, _parentNode, _regEntry, _sandBox, _serviceCachePath, _serviceName, _servicePropertiesPath, _serviceXMLPath, _toDevice, CACHED_PROPERTIES_FILENAME, PROPERTIES_FILENAME, XML_FILENAME
 
Fields inherited from class java.rmi.server.RemoteObject
ref
 
Fields inherited from interface org.mbari.siam.distributed.Device
ERROR, INITIAL, INSTRUMENT_STATE, MDATA_ALL, OK, SAFE, SAMPLING, SERVICE_ATTRIBUTES, SERVICE_CACHE, SERVICE_PROPERTIES, SERVICE_XML, SHUTDOWN, SLEEPING, SUSPEND, UNKNOWN
 
Constructor Summary
ISUS2()
          Required constructor.
 
Method Summary
protected  void configureInstrument()
          Put instrument in correct mode.
protected  ScheduleSpecifier createDefaultSampleSchedule()
          Return specifier for default sampling schedule.
protected  void doCommand(java.lang.String cmd, java.lang.String response)
           
protected  void doCommand(java.lang.String cmd, java.lang.String response, int maxTries, int timeoutMsec)
          Method to send commands to the Workhorse; makes every attempt to communicate with the unit by a process of resetting, flushing input buffer and resending.
protected  void exitMainMenu()
          Exit main menu
protected  byte[] getInstrumentStateMetadata()
          Return metadata from device.
 SerialPortParameters getSerialPortParameters()
          Return parameters to use on serial port.
protected  void gotoMainMenu()
          Put instrument in "main menu mode"
protected  void gotoReady()
          Go to "ready" state
protected  PowerPolicy initCommunicationPowerPolicy()
          Return initial value of communication power policy.
protected  int initCurrentLimit()
          Specify current limit in increments of 120 mA upto 11880 mA.
protected  void initializeInstrument()
          Initialize the device.
protected  PowerPolicy initInstrumentPowerPolicy()
          Return initial value of instrument power policy.
protected  int initInstrumentStartDelay()
          Specify startup delay (millisec)
protected  int initMaxSampleBytes()
          Specify maximum bytes in raw sample.
protected  byte[] initPromptString()
          Specify prompt string.
protected  byte[] initSampleTerminator()
          Return sample terminator
protected  boolean inMenu()
          Return true if in menu mode.
protected  int readSample(byte[] sample)
          Read raw sample bytes from serial port into buffer, return number of bytes read.
protected  void requestSample()
          Request a data sample.
 void setClock()
          Set device's clock to current time; can throw NotSupportedException.
protected  void setDeviceClock()
          Set device clock to current time; assumes current instrument state accepts 'T' command.
protected  java.lang.String shutdownInstrument()
          Return message regarding power-cycling.
protected  void stopSampling()
          Get instrument out of sampling mode.
 int test()
          For some reason, this method is required by the framework
protected  void waitForCharge()
          Wait for instrument to complete charging
 
Methods inherited from class org.mbari.siam.core.PolledInstrumentService
acquire, doScheduledTask, setAttributes
 
Methods inherited from class org.mbari.siam.core.BaseInstrumentService
acquireSample, addDefaultPacketFilters, addSchedule, addSchedule, annotate, assertSamplingState, cacheProperties, callDataListeners, canSummarize, checkInputProperties, cleanupServiceState, clearDefaultPacketFilters, clearPropertiesCache, createPacketLog, createTask, createTurbinators, disableSummary, enableSummary, endDeviceAccess, getAllSchedules, getChildren, getCommunicationPowerPolicy, getCurrentLimit, getDefaultPacketFilters, getDefaultSampleSchedule, getDefaultSampleScheduleName, getDevicePacketParser, getFileBytes, getInstrumentPowerPolicy, getInstrumentServiceBlock, getInstrumentStartDelay, getLastSample, getMaxSampleBytes, getMaxSampleTries, getMetadata, getMetadata, getMetadataPayload, getPackets, getPackets, getParent, getParser, getPortDiagnostics, getPortDiagnosticsSummary, getPromptString, getProperties, getProperty, getSampleBuf, getSampleSchedule, getSampleTerminator, getSampleTimeout, getSchedule, getScheduleKey, getSchedules, getServicePropertiesBytes, initialize, initializeDriverDefaults, initializePooledResources, interruptDeviceAccess, logPacket, managePowerSleep, managePowerWake, nPowerRequests, postSample, powerOff, powerOffCallback, powerOn, powerOnCallback, prepareToRun, prepareToSample, printData, processSample, removeAllSchedules, removeSchedule, resetPortDiagnostics, resume, resumeSchedule, running, setClock, setCommunicationPowerPolicy, setCurrentLimit, setDefaultSampleScheduleName, setInstrumentPowerPolicy, setInstrumentServiceBlock, setInstrumentStartDelay, setMaxSampleBytes, setMaxSampleTries, setPromptString, setProperty, setRecordType, setSampleTerminator, setSampleTimeout, shutdown, sleepingUntil, snooze, startDeviceAccess, summaryEnabled, suspend, suspendSchedule, sync, syncSchedule, validateSample
 
Methods inherited from class org.mbari.siam.core.DeviceService
addDataListener, advertiseService, createRegistryEntry, getAttributes, getCommPortName, getFrameworkVersion, getId, getInstrumentPort, getLocation, getName, getRemoteSerialPort, getRemoteSerialPort, getSamplingCount, getSamplingErrorCount, getSamplingRetryCount, getStatus, host, incRetryCount, initializePropertyDefaults, registryEntry, registryName, removeDataListener, setInstrumentPort, setNodeProperties, setParent, setSerialPort, setStatusError, setStatusInitial, setStatusOk, setStatusSafe, setStatusSampling, setStatusShutdown, setStatusSuspend
 
Methods inherited from class java.rmi.server.UnicastRemoteObject
clone, exportObject, exportObject, exportObject, unexportObject
 
Methods inherited from class java.rmi.server.RemoteServer
getClientHost, getLog, setLog
 
Methods inherited from class java.rmi.server.RemoteObject
equals, getRef, hashCode, toString, toStub
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.mbari.siam.distributed.Instrument
acquireSample, addDefaultPacketFilters, annotate, cacheProperties, clearDefaultPacketFilters, clearPropertiesCache, disableSummary, enableSummary, getDefaultPacketFilters, getLastSample, getPackets, getPackets, getParser, getPortDiagnostics, getPortDiagnosticsSummary, getProperties, getProperty, getSampleSchedule, getSchedules, resetPortDiagnostics, setClock, setProperty, summaryEnabled
 
Methods inherited from interface org.mbari.siam.distributed.Device
getChildren, getCommPortName, getFrameworkVersion, getId, getLocation, getMetadata, getName, getParent, getSamplingCount, getSamplingErrorCount, getSamplingRetryCount, getStatus, host, powerOff, powerOn, prepareToRun, resume, shutdown, suspend
 
Methods inherited from interface org.mbari.siam.distributed.DeviceServiceIF
getName
 
Methods inherited from interface org.mbari.siam.core.ScheduleOwner
addSchedule, getAllSchedules, getScheduleKey, removeAllSchedules, removeSchedule, resumeSchedule, sleepingUntil, suspendSchedule, syncSchedule
 

Field Detail

_attributes

protected org.mbari.siam.devices.isus2.ISUS2.Attributes _attributes

_frameBuffer

protected byte[] _frameBuffer

_buffer

protected byte[] _buffer
Constructor Detail

ISUS2

public ISUS2()
      throws java.rmi.RemoteException
Required constructor.

Throws:
java.rmi.RemoteException
Method Detail

initSampleTerminator

protected byte[] initSampleTerminator()
Return sample terminator

Specified by:
initSampleTerminator in class BaseInstrumentService

initPromptString

protected byte[] initPromptString()
Specify prompt string.

Specified by:
initPromptString in class BaseInstrumentService

initCurrentLimit

protected int initCurrentLimit()
Specify current limit in increments of 120 mA upto 11880 mA.

Specified by:
initCurrentLimit in class BaseInstrumentService

initInstrumentPowerPolicy

protected PowerPolicy initInstrumentPowerPolicy()
Return initial value of instrument power policy.

Specified by:
initInstrumentPowerPolicy in class BaseInstrumentService

initCommunicationPowerPolicy

protected PowerPolicy initCommunicationPowerPolicy()
Return initial value of communication power policy.

Specified by:
initCommunicationPowerPolicy in class BaseInstrumentService

initInstrumentStartDelay

protected int initInstrumentStartDelay()
Specify startup delay (millisec)

Specified by:
initInstrumentStartDelay in class BaseInstrumentService

test

public int test()
For some reason, this method is required by the framework

Specified by:
test in interface Device

initMaxSampleBytes

protected int initMaxSampleBytes()
Specify maximum bytes in raw sample.

Specified by:
initMaxSampleBytes in class BaseInstrumentService

getSerialPortParameters

public SerialPortParameters getSerialPortParameters()
                                             throws gnu.io.UnsupportedCommOperationException
Return parameters to use on serial port.

Overrides:
getSerialPortParameters in class DeviceService
Throws:
gnu.io.UnsupportedCommOperationException

initializeInstrument

protected void initializeInstrument()
                             throws InitializeException,
                                    java.lang.Exception
Initialize the device.

Overrides:
initializeInstrument in class BaseInstrumentService
Throws:
InitializeException
java.lang.Exception

configureInstrument

protected void configureInstrument()
                            throws java.lang.Exception
Put instrument in correct mode.

Throws:
java.lang.Exception

gotoMainMenu

protected void gotoMainMenu()
                     throws java.lang.Exception
Put instrument in "main menu mode"

Throws:
java.lang.Exception

exitMainMenu

protected void exitMainMenu()
                     throws java.lang.Exception
Exit main menu

Throws:
java.lang.Exception

inMenu

protected boolean inMenu()
Return true if in menu mode.


getInstrumentStateMetadata

protected byte[] getInstrumentStateMetadata()
Return metadata from device.

Overrides:
getInstrumentStateMetadata in class BaseInstrumentService

requestSample

protected void requestSample()
                      throws java.io.IOException
Request a data sample.

Specified by:
requestSample in class PolledInstrumentService
Throws:
java.io.IOException

readSample

protected int readSample(byte[] sample)
                  throws TimeoutException,
                         java.io.IOException,
                         java.lang.Exception
Read raw sample bytes from serial port into buffer, return number of bytes read. ISUS service reads specified number of frames from serial port.

Overrides:
readSample in class BaseInstrumentService
Parameters:
sample - output buffer
Throws:
TimeoutException
java.io.IOException
java.lang.Exception

waitForCharge

protected void waitForCharge()
                      throws java.lang.Exception
Wait for instrument to complete charging

Throws:
java.lang.Exception

doCommand

protected void doCommand(java.lang.String cmd,
                         java.lang.String response)
                  throws java.lang.Exception
Throws:
java.lang.Exception

doCommand

protected void doCommand(java.lang.String cmd,
                         java.lang.String response,
                         int maxTries,
                         int timeoutMsec)
                  throws java.lang.Exception
Method to send commands to the Workhorse; makes every attempt to communicate with the unit by a process of resetting, flushing input buffer and resending. Note: Trailing '\r' is automatically added to command string.

Parameters:
cmd - Command string to send
Throws:
java.lang.Exception - thrown if the method fails to send the command.

stopSampling

protected void stopSampling()
                     throws java.lang.Exception
Get instrument out of sampling mode.

Throws:
java.lang.Exception

createDefaultSampleSchedule

protected ScheduleSpecifier createDefaultSampleSchedule()
                                                 throws ScheduleParseException
Return specifier for default sampling schedule.

Specified by:
createDefaultSampleSchedule in class PolledInstrumentService
Throws:
ScheduleParseException

setClock

public void setClock()
              throws NotSupportedException
Set device's clock to current time; can throw NotSupportedException.

Specified by:
setClock in interface Instrument
Overrides:
setClock in class BaseInstrumentService
Throws:
NotSupportedException

setDeviceClock

protected void setDeviceClock()
                       throws java.lang.Exception
Set device clock to current time; assumes current instrument state accepts 'T' command.

Throws:
java.lang.Exception

shutdownInstrument

protected java.lang.String shutdownInstrument()
                                       throws java.lang.Exception
Return message regarding power-cycling.

Overrides:
shutdownInstrument in class BaseInstrumentService
Throws:
java.lang.Exception

gotoReady

protected void gotoReady()
                  throws java.lang.Exception
Go to "ready" state

Throws:
java.lang.Exception


Copyright © 2003 MBARI.

The Monterey Bay Aquarium Research Institute (MBARI) provides this documentation and code "as is", with no warranty, express or implied, of its quality or consistency. It is provided without support and without obligation on the part of MBARI to assist in its use, correction, modification, or enhancement.