/* * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. */ package ch.psi.mxsc; import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceBase; import ch.psi.pshell.imaging.DimensionDouble; import ch.psi.pshell.imaging.PointDouble; import java.io.IOException; import java.util.ArrayList; /** * */ public class BasePlate extends DeviceBase { final static PointDouble[] pucksPosition = new PointDouble[]{ new PointDouble(0, 75), new PointDouble(0, 150), new PointDouble(64.95, 187.5), new PointDouble(129.9, 150), new PointDouble(64.95, 112.5), new PointDouble(64.95, 37.5), new PointDouble(129.9, 75), new PointDouble(194.85, 37.5), new PointDouble(194.85, -37.5), new PointDouble(129.9, 0), new PointDouble(64.95, -37.5), new PointDouble(129.9, -75), new PointDouble(129.9, -150), new PointDouble(64.95, -187.5), new PointDouble(64.95, -112.5), new PointDouble(0, -75), new PointDouble(0, -150), new PointDouble(-64.95, -187.5), new PointDouble(-129.9, -150), new PointDouble(-64.95, -112.5), new PointDouble(-64.95, -37.5), new PointDouble(-129.9, -75), new PointDouble(-194.85, -37.5), new PointDouble(-194.85, 37.5), new PointDouble(-129.9, 0), new PointDouble(-64.95, 37.5), new PointDouble(-129.9, 75), new PointDouble(-129.9, 150), new PointDouble(-64.95, 187.5), new PointDouble(-64.95, 112.5) }; final static int numberOfPucks = pucksPosition.length; //final static DimensionDouble size = new DimensionDouble(580.0, 580.0); final static DimensionDouble size = new DimensionDouble(470.0, 470.0); BasePlate() { super("BasePlate", new BasePlateConfig()); ArrayList pucks = new ArrayList<>(); for (int i = 0; i < numberOfPucks; i++) { new Puck(this, i); } getPucks()[0].setSelected(true); } @Override protected void doInitialize() throws IOException, InterruptedException { super.doInitialize(); } @Override public BasePlateConfig getConfig() { return (BasePlateConfig) super.getConfig(); } public Puck[] getPucks() { ArrayList ret = new ArrayList<>(); for (Device d : getChildren()) { ret.add((Puck) d); } return ret.toArray(new Puck[0]); } Puck getSelectedPuck(){ for (Puck p:getPucks()){ if (p.isSelected()){ return p; } } return null; } Puck.Detection[] getDetection(){ Puck.Detection[] ret = new Puck.Detection[Controller.NUMBER_OF_PUCKS]; for (int i=0; i