package org.openpnp.spi;
import java.util.List;
import org.openpnp.model.Part;
/**
* A Nozzle is a tool capable of picking up parts and releasing them. It is attached to a Head and
* may move entirely with the head or partially independent of it. A Nozzle has a current NozzleTip
* that defines what types of Packages it can handle and it may have the capability of changing it's
* NozzleTip.
*/
public interface Nozzle
extends HeadMountable, WizardConfigurable, PropertySheetHolder {
/**
* Get the NozzleTip currently attached to the Nozzle.
*
* @return
*/
NozzleTip getNozzleTip();
/**
* Commands the Nozzle to perform it's pick operation. Generally this just consists of turning
* on the vacuum. When this is called during job processing the processor will have already
* positioned the nozzle over the part to be picked and lowered it to the correct height. Some
* implementations may choose to do further work in pick(), such as firing air cylinders,
* monitoring pressure sensors, etc.
*
* @throws Exception
*/
public void pick(Part part) throws Exception;
/**
* Commands the Nozzle to perform it's place operation. Generally this just consists of
* releasing vacuum and may include a puff of air to set the Part. When this is called during
* job processing the processor will have already positioned the nozzle over the part to be
* placed and lowered it to the correct height.
*
* @throws Exception
*/
public void place() throws Exception;
/**
* Get a list of the NozzleTips currently attached to the Nozzle.
*
* @return
*/
public List<NozzleTip> getNozzleTips();
/**
* Changer interface:
*
* Command the Nozzle to load the given NozzleTip as it's current NozzleTip. If this returns
* without Exception then subsequently calling getNozzleTip() should return the same NozzleTip
* as was passed to this call.
*
* If the specified NozzleTip is already loaded this method should do nothing.
*
* @param nozzleTip
* @throws Exception
*/
public void loadNozzleTip(NozzleTip nozzleTip) throws Exception;
/**
* Changer interface:
*
* Unload the current NozzleTip from the Nozzle, leaving it empty.
*
* After this call getNozzleTip() should return null.
*
* @throws Exception
*/
public void unloadNozzleTip() throws Exception;
/**
* Get the part that is currently picked on the Nozzle, or null if none is picked.
* Should typically be non-null after a pick operation and before a place operation and null
* after a pick operation. Of note, it should be non-null after a failed pick operation
* so that the system can determine which part it may need to discard. It may also be null
* if a user initiated, manual, pick is performed with no Part to reference.
*/
public Part getPart();
public void addNozzleTip(NozzleTip nozzleTip) throws Exception;
public void removeNozzleTip(NozzleTip nozzleTip);
}