org.mbari.siam.foce.devices.elmo.louver
Class ElmoLouver

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.foce.devices.elmo.base.ElmoService
                              extended by org.mbari.siam.foce.devices.elmo.louver.ElmoLouver
All Implemented Interfaces:
java.io.Serializable, java.rmi.Remote, ScheduleOwner, Device, ElmoIF, ElmoLouverIF, DeviceServiceIF, Instrument, InstrumentDataListener

public class ElmoLouver
extends ElmoService
implements ElmoLouverIF

See Also:
Serialized Form

Nested Class Summary
 class ElmoLouver.ElmoLouverAttributes
           
 
Nested classes/interfaces inherited from class org.mbari.siam.foce.devices.elmo.base.ElmoService
ElmoService.Attributes
 
Field Summary
protected static org.apache.log4j.Logger _log4j
          Log4j logger
 
Fields inherited from class org.mbari.siam.foce.devices.elmo.base.ElmoService
_attributes, _elmo, _precision, CLOSED_LOOP, DEFAULT_COUNTS_PER_REVOLUTION, DEFAULT_PRECISION, df, DFL_CURRENT_LIMIT_MILLIAMPS, DFL_MAX_SAMPLE_BYTES, MAX_PRECISION, MIN_PRECISION, OPEN_LOOP, serialVersionUID
 
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
ElmoLouver()
           
 
Method Summary
 long center(int speedCounts)
          Find the center of the current Hall effect feedback position.
protected  ScheduleSpecifier createDefaultSampleSchedule()
          required by PolledInstrumentService
 long findBoundary(boolean positive, int speedCounts)
          Find and stop at the nearest Hall sensor feedback transition location.
 boolean getInvertHallPosition()
          If invertHallPosition is true, the order of the feedback readings is reversed, ranging from 15-0 instead of 0-15.
 double getLouverPositionDegrees()
          Get louver position (in engineering units)
 double getLouverPositionPercent()
          Get louver position (as a percent of full travel)
 java.lang.String getLouverSampleMessage()
          return a message indicating the state of several motor registers
 java.lang.String getLouverStatusMessage()
          return a message indicating the state of several motor registers
 PacketParser getParser()
          Return a PacketParser.
 void home(int position, boolean setPx, long counterValue, int vLo, int vHi)
          Home to one of the louver's 16 Hall effect position feedback switches.
 void home(int position, int velocityCounts)
          Home to one of the louver's 16 Hall effect position feedback switches.
 void initializeController()
          Initialize motor controller
protected  void initializeInstrument()
          Override default initializeInstrument.
 java.lang.Object parseDataPacket(SensorDataPacket pkt)
          Parse a SensorDataPacket into a double[] array (used by infrastructure)
protected  int readSample(byte[] sample)
          Override base class readSample (defined in BaseInstrumentService)
 void setInvertHallPosition(boolean value)
          If invertHallPosition is true, the order of the feedback readings is reversed, ranging from 15-0 instead of 0-15.
 void setLouverDegrees(double positionDegrees)
          Set an interpolated louver position between _louverUnitsMin and _louverUnitsMax.
 void setLouverPercent(double positionPercent)
          Set an interpolated louver position between _louverUnitsMin and _louverUnitsMax.
 
Methods inherited from class org.mbari.siam.foce.devices.elmo.base.ElmoService
beginMotion, counts2orpm, counts2rpm, dataCallback, delay, getCountsPerRevolution, getEncoderVelocity, getEncoderVelocity, getFaultRegister, getGearRatio, getInstrumentStateMetadata, getJoggingVelocity, getPositionCounter, getPositionError, getSerialPortParameters, getStatusRegister, initCommunicationPowerPolicy, initCurrentLimit, initializeController, initInstrumentPowerPolicy, initInstrumentStartDelay, initMaxSampleBytes, initPromptString, initSampleTerminator, isEnabled, jog, orpm2counts, ptpAbsolute, ptpRelative, readRegister, requestSample, rpm2counts, serviceRegisteredCallback, setCountsPerRevolution, setEnable, setGearRatio, setJoggingVelocity, setPositionCounter, setPTPSpeed, setSerialMode, showConfiguration, shutdownInstrument, test, validateSpeed
 
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, 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, 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.devices.ElmoIF
beginMotion, counts2orpm, counts2rpm, delay, getCountsPerRevolution, getEncoderVelocity, getEncoderVelocity, getFaultRegister, getGearRatio, getJoggingVelocity, getPositionCounter, getPositionError, getStatusRegister, initializeController, isEnabled, jog, orpm2counts, ptpAbsolute, ptpRelative, readRegister, rpm2counts, setCountsPerRevolution, setEnable, setGearRatio, setJoggingVelocity, setPositionCounter, setPTPSpeed, setSerialMode, showConfiguration
 
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, 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

_log4j

protected static org.apache.log4j.Logger _log4j
Log4j logger

Constructor Detail

ElmoLouver

public ElmoLouver()
           throws java.rmi.RemoteException
Throws:
java.rmi.RemoteException
Method Detail

createDefaultSampleSchedule

protected ScheduleSpecifier createDefaultSampleSchedule()
                                                 throws ScheduleParseException
required by PolledInstrumentService

Overrides:
createDefaultSampleSchedule in class ElmoService
Throws:
ScheduleParseException

initializeInstrument

protected void initializeInstrument()
                             throws InitializeException,
                                    java.lang.Exception
Override default initializeInstrument.

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

initializeController

public void initializeController()
                          throws TimeoutException,
                                 java.io.IOException,
                                 java.lang.Exception,
                                 java.rmi.RemoteException
Initialize motor controller

Specified by:
initializeController in interface ElmoIF
Overrides:
initializeController in class ElmoService
Throws:
TimeoutException
java.io.IOException
java.lang.Exception
java.rmi.RemoteException

setInvertHallPosition

public void setInvertHallPosition(boolean value)
If invertHallPosition is true, the order of the feedback readings is reversed, ranging from 15-0 instead of 0-15. This is used when the feedback board may be mounted in either direction along the lead screw axis while maintaining the same logical feedback sense (0 is closed, 15 is open)

Specified by:
setInvertHallPosition in interface ElmoLouverIF

getInvertHallPosition

public boolean getInvertHallPosition()
If invertHallPosition is true, the order of the feedback readings is reversed, ranging from 15-0 instead of 0-15. This is used when the feedback board may be mounted in either direction along the lead screw axis while maintaining the same logical feedback sense (0 is closed, 15 is open)

Specified by:
getInvertHallPosition in interface ElmoLouverIF

findBoundary

public long findBoundary(boolean positive,
                         int speedCounts)
                  throws TimeoutException,
                         java.io.IOException,
                         java.lang.NullPointerException,
                         java.lang.IllegalArgumentException,
                         java.lang.Exception
Find and stop at the nearest Hall sensor feedback transition location. Throws IllegalArgumentException if current position is above upper or below lower hall feedback limit (0x0, 0xF),

Specified by:
findBoundary in interface ElmoLouverIF
Parameters:
positive - If positive is true, find the transition by moving in the positive direction, otherwise move in the negative direction.
speedCounts - operate at speedCounts counts/sec
Returns:
position counter value at transition
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.IllegalArgumentException
java.lang.Exception

center

public long center(int speedCounts)
            throws TimeoutException,
                   java.io.IOException,
                   java.lang.NullPointerException,
                   java.lang.IllegalArgumentException,
                   java.lang.Exception
Find the center of the current Hall effect feedback position. The strategy is to travel to the nearest transition boundaries, then move halfway between them. The strategy is slightly modified for the two endpoints, where transitions are somewhat different. The upper transition is also a false 0, so that has to be dealt with if it's possible to get there. Notes: - Resets position counter (but returns original value) - Disables the motor

Specified by:
center in interface ElmoLouverIF
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.IllegalArgumentException
java.lang.Exception

home

public void home(int position,
                 int velocityCounts)
          throws TimeoutException,
                 java.io.IOException,
                 java.lang.NullPointerException,
                 java.lang.IllegalArgumentException,
                 java.lang.Exception
Home to one of the louver's 16 Hall effect position feedback switches. The basic strategy is: - find the center of the current (nearest) feedback position - travel to the desired position (now a multiple of the sensor spacing) - reset the position counter This minimizes unnecessary opening/closing of the louver.

Specified by:
home in interface ElmoLouverIF
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.IllegalArgumentException
java.lang.Exception

home

public void home(int position,
                 boolean setPx,
                 long counterValue,
                 int vLo,
                 int vHi)
          throws TimeoutException,
                 java.io.IOException,
                 java.lang.NullPointerException,
                 java.lang.IllegalArgumentException,
                 java.lang.Exception
Description copied from interface: ElmoLouverIF
Home to one of the louver's 16 Hall effect position feedback switches. use the specified speed setting and optionally set the position counter at the home position

Specified by:
home in interface ElmoLouverIF
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.IllegalArgumentException
java.lang.Exception

setLouverPercent

public void setLouverPercent(double positionPercent)
                      throws java.lang.IllegalArgumentException,
                             java.lang.Exception
Set an interpolated louver position between _louverUnitsMin and _louverUnitsMax. Position is expressed as a percentage of full range, 1.0 being open and 0.0 being closed.

Specified by:
setLouverPercent in interface ElmoLouverIF
Throws:
java.lang.IllegalArgumentException
java.lang.Exception

setLouverDegrees

public void setLouverDegrees(double positionDegrees)
                      throws java.lang.IllegalArgumentException,
                             java.lang.Exception
Set an interpolated louver position between _louverUnitsMin and _louverUnitsMax. Position is expressed in engineering units.

Specified by:
setLouverDegrees in interface ElmoLouverIF
Throws:
java.lang.IllegalArgumentException
java.lang.Exception

getLouverPositionDegrees

public double getLouverPositionDegrees()
                                throws TimeoutException,
                                       java.io.IOException,
                                       java.lang.NullPointerException,
                                       java.lang.Exception
Get louver position (in engineering units)

Specified by:
getLouverPositionDegrees in interface ElmoLouverIF
Returns:
louver position (degrees)
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.Exception

getLouverPositionPercent

public double getLouverPositionPercent()
                                throws TimeoutException,
                                       java.io.IOException,
                                       java.lang.NullPointerException,
                                       java.lang.Exception
Get louver position (as a percent of full travel)

Specified by:
getLouverPositionPercent in interface ElmoLouverIF
Returns:
louver position (percent, 0.0-1.0)
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.Exception

getLouverStatusMessage

public java.lang.String getLouverStatusMessage()
                                        throws TimeoutException,
                                               java.io.IOException,
                                               java.lang.NullPointerException,
                                               java.lang.IllegalArgumentException,
                                               java.lang.Exception
return a message indicating the state of several motor registers

Specified by:
getLouverStatusMessage in interface ElmoLouverIF
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.IllegalArgumentException
java.lang.Exception

getLouverSampleMessage

public java.lang.String getLouverSampleMessage()
                                        throws TimeoutException,
                                               java.io.IOException,
                                               java.lang.NullPointerException,
                                               java.lang.IllegalArgumentException,
                                               java.lang.Exception
return a message indicating the state of several motor registers

Specified by:
getLouverSampleMessage in interface ElmoLouverIF
Throws:
TimeoutException
java.io.IOException
java.lang.NullPointerException
java.lang.IllegalArgumentException
java.lang.Exception

readSample

protected int readSample(byte[] sample)
                  throws TimeoutException,
                         java.io.IOException,
                         java.lang.Exception
Override base class readSample (defined in BaseInstrumentService)

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

getParser

public PacketParser getParser()
                       throws NotSupportedException
Return a PacketParser.

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

parseDataPacket

public java.lang.Object parseDataPacket(SensorDataPacket pkt)
                                 throws InvalidDataException
Parse a SensorDataPacket into a double[] array (used by infrastructure)

Throws:
InvalidDataException


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.