
public class Carousel extends MobileItem implements org.lsst.ccs.framework.HardwareController, FilterHolder, AlertRaiser
| Modifier and Type | Field and Description |
|---|---|
protected PieceOfHardware |
ai814 |
protected Map<String,CarouselSocket> |
socketsMap
A map to store the sockets by their names.
|
protected BridgeToHardware |
tcpProxy |
currentAction, FCSLOG, hasToWaitForEndOfAction, lock, name, readSensorsHandle, s, scheduleralertSeparater| Constructor and Description |
|---|
Carousel() |
| Modifier and Type | Method and Description |
|---|---|
void |
abortAction(FcsEnumerations.MobileItemAction action,
long delay)
aborts action actually running.
|
void |
build()
*** lifecycle methods *************************************************
|
void |
changeFilterID(int filterID,
int socketID) |
void |
checkConditionsForRotation()
Check if carousel rotation is permitted.
|
void |
checkSensorTypeIncremental() |
int |
computeNewPosition(int pos) |
int |
computeShortestRelativePosition(int d) |
StatusDataPublishedByCarousel |
createStatusDataPublishedByCarousel()
Create an object StatusDataPublishedByCarousel to be published on the
STATUS bus.
|
CarouselClamp |
getClampXminus()
This method returns the clampX- which is at standby filterPosition.
|
EPOSController |
getClampXminusController() |
CarouselClamp |
getClampXplus()
This method returns the clampX+ which is at standby filterPosition.
|
EPOSController |
getClampXplusController() |
int |
getEncoderSign()
used by tests.
|
String |
getFilterAtStandbyName()
Returns name of filter which is in the socket at STANDBY position or
NO_FILTER if there is no filter at STANDBY.
|
CarouselSocket |
getFilterSocket(int filterID) |
int |
getPosition()
return carousel position.
|
CarouselSocket |
getSocketAtStandby()
Return the socket HALTED at STANDBY filterPosition if there is one.
|
int |
getSocketAtStandbyID() |
CarouselSocket |
getSocketByName(String socketName)
Return a CarouselSocket which name is given as parameter.
|
Map<String,CarouselSocket> |
getSocketsMap() |
int |
getStepNB()
used by tests.
|
String |
grabFilterAtStandby(Filter filter)
This method has to be executed when a filter has just been moved on the
carousel at standby filterPosition by the autochanger.
|
void |
homing()
homing of rotation controller
to be done before each rotation
|
void |
initializeClampsState()
In carousel, sensors are updated from PDOs.
|
boolean |
isActionCompleted(FcsEnumerations.MobileItemAction action) |
boolean |
isAtHandoff()
This method returns true if the autochanger trucks are at HANDOFF position, false otherwise.
|
boolean |
isAtStandby()
Used to publish on the STATUS bus for the GUI.
|
boolean |
isAtStandby(Filter filter)
Return true if the filter given as argument is at STANDBY position.
|
boolean |
isAutochangerHoldingFilter()
This methods returns true if the autochanger is holding a filter at
STANDBY position.
|
boolean |
isClampsStateInitialized() |
boolean |
isFilterOnCarousel(int filterID)
return true if filterID in on carousel.
|
boolean |
isHoldingFilter()
Return true if carousel is holding a filter at STANDBY position.
|
boolean |
isHoldingFilterAtStandby() |
boolean |
isHomingDone() |
boolean |
isNotHoldingFilter()
Return true if FilterHolder is NOT holding filter, false otherwise.
|
boolean |
isReadyToGrabAFilterAtStandby()
This method let us know if the carousel is ready to receive a filter at
standby filterPosition : - the carousel must not rotate - an empty
socketAtStandby is at standby filterPosition.
|
boolean |
isRotating()
Returns true if carousel is rotating
|
boolean |
myDevicesReady()
Return True if all CAN open devices useful for this MobileItemMobile are ready for an action.
|
void |
postStart()
Executed when all components HasLifeCycle of subsystem have been checked.
|
void |
publishData()
Publish Data on status bus for trending data base and GUIs.
|
void |
quickStopAction(FcsEnumerations.MobileItemAction action,
long delay) |
void |
releaseClamps()
Release clamps at standby position to get ready to clamp again.
|
void |
releaseClampsContact() |
void |
rotateEmptySocketAtStandby()
Move an empty socket to STANDBY position.
|
void |
rotateSocketToStandby(String socketName)
Rotate carousel to move a socket which name is given as argument to
STANDBY position.
|
void |
rotateToRelativePosition(int relativePosition)
A command to rotate carousel.
|
void |
startAction(FcsEnumerations.MobileItemAction action)
Starts action ROTATE_CAROUSEL_TO_ABSOLUTE_POSITION or
ROTATE_CAROUSEL_TO_RELATIVE_POSITION.
|
void |
ungrabFilterAtStandby(String filterName)
This unlock clamps at STANDBY.
|
void |
unlockClamps()
Unlocks the clamps at STANDBY.
|
void |
updateClampsStateWithSensorsFromPDO()
Read the clamps state from PDO : all the clamp sensors are read at one
time.
|
void |
updateCurrent()
Updates the field current in reading the CPU of the controller.
|
void |
updatePosition()
Updates the filterPosition of the carousel in reading the CPU of the
controller.
|
void |
updateSocketAtStandbyState() |
void |
updateSocketNotAtStandby() |
void |
updateState() |
void |
updateStateWithSensors()
Read the clamps state from PDO : all the clamp sensors are read at one
time.
|
void |
updateStateWithSensorsAtStandby() |
void |
updateStateWithSensorsToCheckIfActionIsCompleted()
reads sensors or any device and updates state from sensors
it can be also reading a position or a current on a motor controller.
|
abort, abort, cancelReadingSensors, checkReadyForAction, checkStopped, executeAction, getAlertService, getHaltRequired, getName, getSubsystem, isMoving, quickstop, readSensorsUntilActionIsCompleted, shutdown, signal, stop, stopActionNow, waitForEndOfActionclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcheckHardware, checkStarted, checkStoppedclearAlarm, getAlertService, getName, getSubsystem, raiseAlarm, raiseAlarm, raiseAlarm, raiseAlarm, raiseWarning, raiseWarning@LookupField(strategy=BYNAME) protected PieceOfHardware ai814
@LookupField(strategy=CHILDREN) protected final Map<String,CarouselSocket> socketsMap
@LookupField(strategy=BYNAME) protected BridgeToHardware tcpProxy
public void build()
build in interface org.lsst.ccs.framework.HasLifecycle@Command(description="Return true if clamp state is initialized for all clamps.") public boolean isClampsStateInitialized()
@Command(type=QUERY, level=0, description="Return true if carouselController homing is done.") public boolean isHomingDone()
public int getStepNB()
public int getEncoderSign()
public Map<String,CarouselSocket> getSocketsMap()
public CarouselSocket getSocketByName(String socketName)
socketName - @Command(type=QUERY, level=0, description="Return carousel position.", alias="printPosition") public int getPosition()
public EPOSController getClampXminusController()
public EPOSController getClampXplusController()
public CarouselClamp getClampXminus()
public CarouselClamp getClampXplus()
@Command(type=QUERY, level=0, description="Return true if a socket is HALTED at STANDBY position, false otherwise.") public boolean isAtStandby()
isAtStandby in interface FilterHolderpublic CarouselSocket getSocketAtStandby()
public int getSocketAtStandbyID()
@Command(type=QUERY, level=0, description="Returns name of filter at STANDBY position or NO_FILTER if there is no filter at STANDBY.") public String getFilterAtStandbyName()
public boolean isFilterOnCarousel(int filterID)
filterID - @Command(description="To change filterID on socket which ID is given as argument.") public void changeFilterID(int filterID, int socketID)
@Command(type=QUERY, level=0, description="Return true if Autochanger is holding filter at STANDBY.") public boolean isAutochangerHoldingFilter()
FcsHardwareExceptionpublic void postStart()
postStart in interface org.lsst.ccs.framework.HasLifecycle@Command(type=ACTION, level=1, description="CarouselHoming") public void homing()
public void checkSensorTypeIncremental()
public void publishData()
publishData in class MobileItempublic StatusDataPublishedByCarousel createStatusDataPublishedByCarousel()
@Command(type=QUERY, level=1, description="Returns true if Carousel is stopped and no filter is at STANDBY position") public boolean isReadyToGrabAFilterAtStandby()
FcsHardwareException@Command(type=QUERY, level=1, description="Returns true if a filter is clamped at STANDBY position") public boolean isHoldingFilterAtStandby()
@Command(type=QUERY, level=1, description="Returns true if carousel is rotating.") public boolean isRotating()
@Command(type=ACTION, level=1, description="Update carousel position in reading controller.") public void updatePosition()
SDORequestException@Command(type=QUERY, level=1, description="Update field current in reading controller.") public void updateCurrent()
SDORequestExceptionpublic void updateClampsStateWithSensorsFromPDO()
FcsHardwareException@Command(type=QUERY, level=1, description="Update clamps state in sending 5 sync.") public void initializeClampsState() throws org.lsst.ccs.drivers.commons.DriverException
org.lsst.ccs.drivers.commons.DriverExceptionpublic CarouselSocket getFilterSocket(int filterID)
filterID - public String grabFilterAtStandby(Filter filter)
filter - FcsHardwareExceptionpublic void ungrabFilterAtStandby(String filterName)
filterName - FcsHardwareException@Command(type=ACTION, level=1, description="Release clamps at standby position to get ready to clamp again") public void releaseClamps()
@Command(type=ACTION, level=3, description="Unlock the clamps at STANDBY.") public void unlockClamps()
public boolean isAtStandby(Filter filter)
filter - public void releaseClampsContact()
public boolean myDevicesReady()
MobileItemmyDevicesReady in class MobileItem@Command(type=QUERY, level=1, description="Check if carousel rotation is permitted.") public void checkConditionsForRotation()
FcsHardwareExceptionRejectedCommandException - (RuntimeException)@Command(type=ACTION, level=1, description="Rotate carousel to a relative position.", timeout=60000) public void rotateToRelativePosition(int relativePosition)
relativePosition - FcsHardwareException@Command(type=ACTION, level=1, description="Move a socket which name is given as argument to STANDBY position.", alias="moveSocketToStandby", timeout=50000) public void rotateSocketToStandby(String socketName)
socketName - FcsHardwareExceptionpublic void rotateEmptySocketAtStandby()
FcsHardwareExceptionpublic boolean isActionCompleted(FcsEnumerations.MobileItemAction action)
isActionCompleted in class MobileItempublic void updateStateWithSensorsToCheckIfActionIsCompleted()
MobileItemupdateStateWithSensorsToCheckIfActionIsCompleted in class MobileItempublic void startAction(FcsEnumerations.MobileItemAction action)
startAction in class MobileItemaction - public void abortAction(FcsEnumerations.MobileItemAction action, long delay)
MobileItemabortAction in class MobileItempublic void quickStopAction(FcsEnumerations.MobileItemAction action, long delay)
quickStopAction in class MobileItem@Command(type=ACTION, level=1, description="compute new position to take in account tours which can have been runned") public int computeNewPosition(int pos)
pos - @Command(type=ACTION, level=1, description="Compute relative position to find the shortest way to run carousel.") public int computeShortestRelativePosition(int d)
public boolean isHoldingFilter()
isHoldingFilter in interface FilterHolderFcsHardwareExceptionpublic boolean isNotHoldingFilter()
FilterHolderisNotHoldingFilter in interface FilterHolderpublic boolean isAtHandoff()
FilterHolderisAtHandoff in interface FilterHolder@Command(type=QUERY, level=1, description="Read sensors and update state", timeout=2000) public void updateStateWithSensors()
updateStateWithSensors in interface FilterHolderFcsHardwareException@Command(type=QUERY, level=1, description="Update socket at standby state from hyttc580 data.", timeout=2000) public void updateStateWithSensorsAtStandby()
public void updateSocketAtStandbyState()
@Command(type=QUERY, level=1, description="Update state from hyttc580 data.", timeout=2000) public void updateState() throws org.lsst.ccs.drivers.commons.DriverException
org.lsst.ccs.drivers.commons.DriverExceptionpublic void updateSocketNotAtStandby()
Copyright © 2018 LSST. All rights reserved.