org.mbari.siam.devices.seabird.base
Class Seabird

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.seabird.base.Seabird
All Implemented Interfaces:
java.io.Serializable, java.rmi.Remote, ScheduleOwner, Device, DeviceServiceIF, Instrument
Direct Known Subclasses:
PumpedSeabird, SBE16plus, SBE37, SBE52MP

public abstract class Seabird
extends PolledInstrumentService
implements Instrument

See Also:
Serialized Form

Nested Class Summary
protected  class Seabird.Attributes
           
 class Seabird.DevicePacketParser
           
 
Field Summary
protected  Seabird.Attributes _attributes
           
protected  byte[] _getPrompt
           
protected  byte[] _getStatusEcho
           
protected  byte[] _getStatusInfo
           
protected  byte[] _haltSample
           
protected  byte[] _haltSampleEcho
           
protected  int _maxCalBytes
           
protected  int _maxStatusBytes
           
protected  byte[] _quitSession
           
protected  byte[] _quitSessionEcho
           
protected  byte[] _requestSample
          Command to sample depends on whether sample is logged to instrument FLASH (see initializeInstrument())
protected  byte[] _requestSampleEcho
           
protected  boolean _safeMode
           
protected  byte[] _sendLast
           
protected  byte[] _sendLastEcho
           
protected  java.lang.String _setSampleInterval
           
protected  byte[] _startNow
           
protected  byte[] _startNowEcho
           
protected  long MAX_AUTO_SAMPLE_INTERVAL_SEC
           
protected  long MIN_AUTO_SAMPLE_INTERVAL_SEC
           
 
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
Seabird()
          Constructor.
 
Method Summary
protected  ScheduleSpecifier createDefaultSampleSchedule()
          Return specifier for default sampling schedule.
protected abstract  byte[] getCalibrationCmd()
           
 DevicePacketParser getDevicePacketParser()
          Get instruments' DevicePacketParser, which returns JDDAC records.
protected abstract  byte[] getFormatForSummaryCmd()
           
protected  byte[] getInstrumentStateMetadata()
          Get device's notion of its state: a Seabird status packet.
 PacketParser getParser()
          Return CTD packet parser.
protected  void getPrompt()
           
protected  boolean getPrompt(int retries)
           
 SerialPortParameters getSerialPortParameters()
          Return parameters to use on serial port.
protected  PowerPolicy initCommunicationPowerPolicy()
          Return initial value of instrument power policy.
protected  int initCurrentLimit()
          Return initial value of DPA current limit.
protected  void initializeInstrument()
          Initialize the seabird.
protected  PowerPolicy initInstrumentPowerPolicy()
          Return initial value of instrument power policy.
protected  int initInstrumentStartDelay()
          Return initial value of instrument startup time in millisec.
protected  int initMaxSampleBytes()
          Return initial value for maximum number of bytes in a instrument data sample.
protected  byte[] initPromptString()
          Return initial value for instrument's "prompt" character.
protected  byte[] initSampleTerminator()
          Return initial value for instrument's sample terminator
protected  void postSample()
          override the default behavior If logging autonomously, return the instrument to sleep after sampling.
protected  void quitSession()
          QuitSession, putting instrument to lowest sampling power state
protected  void requestSample()
          Request a data sample from instrument.
 void sendCommand(java.lang.String cmd)
          Method to send a command and wait for the prompt.
 void sendCommandConfirm(java.lang.String cmd)
          The base Seabird service has no commands that require confirmation.
protected  void setAutonomousSampleInterval(long periodSec)
          Set sample interval for autonomous logging NOTE: may stop, but does NOT resume logging or quit session
 void setClock()
          Set Seabird's clock.
 void setDataFormat()
          Set data output format Note: may stop, but does not resume logging or quit session
protected  void startAutonomousLogging()
          Start autonomous sampling, per current Sample Mode note: only conditionally allowed: - _safeMode=true - autonomous=true
protected  void stopAutonomousLogging()
          Stop autonomous instrument sampling
 int test()
          Self-test routine; not yet implemented.
 
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, getFileBytes, getInstrumentPowerPolicy, getInstrumentServiceBlock, getInstrumentStartDelay, getLastSample, getMaxSampleBytes, getMaxSampleTries, getMetadata, getMetadata, getMetadataPayload, getPackets, getPackets, getParent, getPortDiagnostics, getPortDiagnosticsSummary, getPromptString, getProperties, getProperty, getSampleBuf, getSampleSchedule, getSampleTerminator, getSampleTimeout, getSchedule, getScheduleKey, getSchedules, getServicePropertiesBytes, initialize, initializeDriverDefaults, initializePooledResources, interruptDeviceAccess, logPacket, managePowerSleep, managePowerWake, nPowerRequests, powerOff, powerOffCallback, powerOn, powerOnCallback, prepareToRun, prepareToSample, printData, processSample, readSample, removeAllSchedules, removeSchedule, resetPortDiagnostics, resume, resumeSchedule, running, setClock, setCommunicationPowerPolicy, setCurrentLimit, setDefaultSampleScheduleName, setInstrumentPowerPolicy, setInstrumentServiceBlock, setInstrumentStartDelay, setMaxSampleBytes, setMaxSampleTries, setPromptString, setProperty, setRecordType, setSampleTerminator, setSampleTimeout, shutdown, shutdownInstrument, 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, 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

_getPrompt

protected byte[] _getPrompt

_requestSample

protected byte[] _requestSample
Command to sample depends on whether sample is logged to instrument FLASH (see initializeInstrument())


_requestSampleEcho

protected byte[] _requestSampleEcho

_sendLast

protected byte[] _sendLast

_sendLastEcho

protected byte[] _sendLastEcho

_quitSession

protected byte[] _quitSession

_quitSessionEcho

protected byte[] _quitSessionEcho

_getStatusInfo

protected byte[] _getStatusInfo

_getStatusEcho

protected byte[] _getStatusEcho

_haltSample

protected byte[] _haltSample

_haltSampleEcho

protected byte[] _haltSampleEcho

_startNow

protected byte[] _startNow

_startNowEcho

protected byte[] _startNowEcho

_setSampleInterval

protected java.lang.String _setSampleInterval

_maxStatusBytes

protected int _maxStatusBytes

_maxCalBytes

protected int _maxCalBytes

MIN_AUTO_SAMPLE_INTERVAL_SEC

protected long MIN_AUTO_SAMPLE_INTERVAL_SEC

MAX_AUTO_SAMPLE_INTERVAL_SEC

protected long MAX_AUTO_SAMPLE_INTERVAL_SEC

_attributes

protected Seabird.Attributes _attributes

_safeMode

protected boolean _safeMode
Constructor Detail

Seabird

public Seabird()
        throws java.rmi.RemoteException
Constructor.

Throws:
java.rmi.RemoteException
Method Detail

initPromptString

protected byte[] initPromptString()
Return initial value for instrument's "prompt" character.

Specified by:
initPromptString in class BaseInstrumentService

initSampleTerminator

protected byte[] initSampleTerminator()
Return initial value for instrument's sample terminator

Specified by:
initSampleTerminator in class BaseInstrumentService

initCurrentLimit

protected int initCurrentLimit()
Return initial value of DPA current limit.

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 instrument power policy.

Specified by:
initCommunicationPowerPolicy in class BaseInstrumentService

initInstrumentStartDelay

protected int initInstrumentStartDelay()
Return initial value of instrument startup time in millisec.

Specified by:
initInstrumentStartDelay in class BaseInstrumentService

initMaxSampleBytes

protected int initMaxSampleBytes()
Return initial value for maximum number of bytes in a instrument data sample.

Specified by:
initMaxSampleBytes in class BaseInstrumentService

requestSample

protected void requestSample()
Description copied from class: PolledInstrumentService
Request a data sample from instrument.

Specified by:
requestSample in class PolledInstrumentService

getPrompt

protected boolean getPrompt(int retries)

getPrompt

protected void getPrompt()
                  throws TimeoutException,
                         java.io.IOException,
                         java.lang.NullPointerException,
                         java.lang.Exception
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.Exception

sendCommand

public void sendCommand(java.lang.String cmd)
                 throws TimeoutException,
                        java.lang.NullPointerException,
                        java.io.IOException,
                        java.lang.Exception
Method to send a command and wait for the prompt. May throw exception if it doesn't find a prompt.

Throws:
TimeoutException
java.lang.NullPointerException
java.io.IOException
java.lang.Exception

sendCommandConfirm

public void sendCommandConfirm(java.lang.String cmd)
                        throws TimeoutException,
                               java.lang.NullPointerException,
                               java.io.IOException,
                               java.lang.Exception
The base Seabird service has no commands that require confirmation. This method is a placeholder for those subclasses that require it. The default implementation is to just call sendCommand.

Throws:
TimeoutException
java.lang.NullPointerException
java.io.IOException
java.lang.Exception

stopAutonomousLogging

protected void stopAutonomousLogging()
                              throws java.io.IOException,
                                     java.lang.Exception,
                                     TimeoutException
Stop autonomous instrument sampling

Throws:
java.io.IOException
java.lang.Exception
TimeoutException

startAutonomousLogging

protected void startAutonomousLogging()
                               throws java.io.IOException,
                                      java.lang.Exception,
                                      TimeoutException
Start autonomous sampling, per current Sample Mode note: only conditionally allowed: - _safeMode=true - autonomous=true

Throws:
java.io.IOException
java.lang.Exception
TimeoutException

setAutonomousSampleInterval

protected void setAutonomousSampleInterval(long periodSec)
                                    throws java.io.IOException,
                                           java.lang.Exception,
                                           TimeoutException
Set sample interval for autonomous logging NOTE: may stop, but does NOT resume logging or quit session

Throws:
java.io.IOException
java.lang.Exception
TimeoutException

quitSession

protected void quitSession()
                    throws java.io.IOException,
                           java.lang.Exception,
                           TimeoutException
QuitSession, putting instrument to lowest sampling power state

Throws:
java.io.IOException
java.lang.Exception
TimeoutException

setClock

public void setClock()
Set Seabird's clock. Note: may stop, but does not resume logging or quit session

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

setDataFormat

public void setDataFormat()
                   throws java.io.IOException,
                          java.lang.Exception
Set data output format Note: may stop, but does not resume logging or quit session

Throws:
java.io.IOException
java.lang.Exception

test

public int test()
Self-test routine; not yet implemented.

Specified by:
test in interface Device

postSample

protected void postSample()
override the default behavior If logging autonomously, return the instrument to sleep after sampling.

Overrides:
postSample in class BaseInstrumentService

initializeInstrument

protected void initializeInstrument()
                             throws java.lang.Exception
Initialize the seabird.

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

getSerialPortParameters

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

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

createDefaultSampleSchedule

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

Specified by:
createDefaultSampleSchedule in class PolledInstrumentService
Throws:
ScheduleParseException

getInstrumentStateMetadata

protected byte[] getInstrumentStateMetadata()
Get device's notion of its state: a Seabird status packet.

Overrides:
getInstrumentStateMetadata in class BaseInstrumentService

getParser

public PacketParser getParser()
Return CTD packet parser.

Specified by:
getParser in interface Instrument
Overrides:
getParser in class BaseInstrumentService

getFormatForSummaryCmd

protected abstract byte[] getFormatForSummaryCmd()

getCalibrationCmd

protected abstract byte[] getCalibrationCmd()

getDevicePacketParser

public DevicePacketParser getDevicePacketParser()
                                         throws NotSupportedException
Description copied from class: BaseInstrumentService
Get instruments' DevicePacketParser, which returns JDDAC records. Not supported by default

Overrides:
getDevicePacketParser in class BaseInstrumentService
Throws:
NotSupportedException


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.