/*
* Copyright (C) 2011 Jason von Nieda <jason@vonnieda.org>
*
* This file is part of OpenPnP.
*
* OpenPnP is free software: you can redistribute it and/or modify it under the terms of the GNU
* General Public License as published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* OpenPnP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with OpenPnP. If not, see
* <http://www.gnu.org/licenses/>.
*
* For more information about OpenPnP visit http://openpnp.org
*/
package org.openpnp.spi;
import java.util.List;
import org.openpnp.model.Identifiable;
import org.openpnp.model.Location;
import org.openpnp.model.Named;
/**
* A Head is a movable group of components attached to a Machine. Components which can be attached
* consist of Nozzles, Actuators and Cameras. A Head itself is not directly movable, but can be
* moved by moving any one of it's components. When any attached component is moved in (at least) X
* or Y, it is expected that all components attached to the Head also move in the same axes.
*/
public interface Head extends Identifiable, Named, WizardConfigurable, PropertySheetHolder {
/**
* Get a list of Nozzles that are attached to this head.
*
* @return
*/
public List<Nozzle> getNozzles();
/**
* Get the Nozzle attached to this Head that has the specified id.
*
* @param id
* @return
*/
public Nozzle getNozzle(String id);
/**
* Get a list of Actuators that are attached to this Head.
*
* @return
*/
public List<Actuator> getActuators();
/**
* Get the Actuator attached to this Head that has the specified id.
*
* @param id
* @return
*/
public Actuator getActuator(String id);
public Actuator getActuatorByName(String name);
/**
* Get a list of Cameras that are attached to this Head.
*
* @return
*/
public List<Camera> getCameras();
/**
* Get the Camera attached to this Head that has the specified id.
*
* @param id
* @return
*/
public Camera getCamera(String id);
/**
* Directs the Head to move to it's home position and to move any attached devices to their home
* positions.
*/
void home() throws Exception;
public void addCamera(Camera camera) throws Exception;
public void removeCamera(Camera camera);
public void addNozzle(Nozzle nozzle) throws Exception;
public void removeNozzle(Nozzle nozzle);
public void addActuator(Actuator actuator) throws Exception;
public void removeActuator(Actuator actuator);
public void moveToSafeZ(double speed) throws Exception;
public void moveToSafeZ() throws Exception;
public List<PasteDispenser> getPasteDispensers();
public PasteDispenser getPasteDispenser(String id);
public Camera getDefaultCamera() throws Exception;
public Nozzle getDefaultNozzle() throws Exception;
public PasteDispenser getDefaultPasteDispenser() throws Exception;
public void setMachine(Machine machine);
public Machine getMachine();
public Location getParkLocation();
}