// Path: PC/Java/RobotSimulator/src/org/ftccommunity/simulator/modules/devices/Device.java
// @XmlAccessorType(XmlAccessType.NONE)
// public abstract class Device {
// 
//     protected DeviceType mType=null;
// 
//     @XmlElementRef(name="SimData")
// 	protected SimData[] mSimData;
// 
// 	public Device() {
// 	}
// 
// 	public Device(DeviceType type) {
// 		mType=type;
// 	}
// 
// 	abstract public void processBuffer(byte[] currentStateBuffer, int portNum);
// 	abstract public void updateDebugGuiVbox();
// 	abstract public void setupDebugGuiVbox(VBox vbox);
// 
// 	public DeviceType getType() {
// 		return mType;
// 	}
// 
// 	public void setmSimData(SimData[] s) {
// 		mSimData = s;
// 	}
// 
// 	public SimData[] getmSimData() {
// 		return mSimData;
// 	}
// 
// 	public SimData[] getSimDataArray() {
// 		return mSimData;
// 	}
// 
// 	public int getNumberOfPorts() {
// 		return mSimData.length;
// 	}
// 
// 	public List<String> getPortNames() {
// 		List<String> names = new ArrayList<>();
// 		int len = mSimData.length;
// 		for (int i=0;i<len;i++) {
// 			names.add(mSimData[i].getName());
// 		}
// 		return names;
// 	}
// 
// 	public void setDeviceNames(String[] names) {
// 		for (int i = 0; i < mSimData.length; i++) {
// 			mSimData[i].setName(names[i]);
// 		}
// 	}
// 
// 	public SimData findSimDataByName(String name) {
// 		int len = mSimData.length;
// 		for (int i=0;i<len;i++) {
// 			if (mSimData[i].getName().equals(name)) {
// 				return mSimData[i];
// 			}
// 		}
// 		return null;
// 	}
// }
// 
// Path: PC/Java/RobotSimulator/src/org/ftccommunity/simulator/modules/devices/DeviceType.java
// @XmlAccessorType(XmlAccessType.NONE)
// public enum DeviceType {
// 	NONE("None"),
// 	TETRIX_MOTOR("Tetrix Motor Controller"),
// 	TETRIX_SERVO("Tetrix Servo Controller"),
// 	LEGO_LIGHT("Lego Light Sensor"),
// 	LEGO_TOUCH("Lego Touch Sensor"),
// 	USB_MOTOR("USB Motor Controller"),
// 	USB_SERVO("USB Servo Controller");
// 
// 	private final String mName;
// 	DeviceType(String name) {
// 		mName = name;
// 	}
// 
// 	public String getName() {
// 		return mName;
// 	}
// }
// 
// Path: PC/Java/RobotSimulator/src/org/ftccommunity/simulator/modules/devices/NullDevice.java
// @XmlRootElement(name="NullDevice")
// //@XmlAccessorType(XmlAccessType.NONE)
// public class NullDevice extends Device {
// 
// 	public NullDevice() {
// 		super(DeviceType.NONE);
// 		mSimData = new SimData[1];
// 		mSimData[0] = new NullSimData();	// Add 1st motor
// 	}
// 
// 	public void processBuffer(byte[] currentStateBuffer, int portNum) {
// 	}
// 
// 	public void updateDebugGuiVbox() {
// 	}
// 
// 	public void setupDebugGuiVbox(VBox vbox) {
// 	}
// }


import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javax.xml.bind.annotation.XmlRootElement;
import org.ftccommunity.simulator.modules.devices.Device;
import org.ftccommunity.simulator.modules.devices.DeviceType;
import org.ftccommunity.simulator.modules.devices.NullDevice;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
package org.ftccommunity.simulator.modules;





/**
 * Model class for a Motor Controller
 *
 * @author Hagerty High
 */
@XmlRootElement(name="Servo")
public class ServoBrickSimulator extends BrickSimulator {
    private static final Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

    public ServoBrickSimulator() {
    	mType = "Core Servo Controller";
    	mFXMLFileName = "view/EditDialog.fxml";
    	mNumberOfPorts = 6;
// Path: PC/Java/RobotSimulator/src/org/ftccommunity/simulator/modules/devices/Device.java
// @XmlAccessorType(XmlAccessType.NONE)
// public abstract class Device {
// 
//     protected DeviceType mType=null;
// 
//     @XmlElementRef(name="SimData")
// 	protected SimData[] mSimData;
// 
// 	public Device() {
// 	}
// 
// 	public Device(DeviceType type) {
// 		mType=type;
// 	}
// 
// 	abstract public void processBuffer(byte[] currentStateBuffer, int portNum);
// 	abstract public void updateDebugGuiVbox();
// 	abstract public void setupDebugGuiVbox(VBox vbox);
// 
// 	public DeviceType getType() {
// 		return mType;
// 	}
// 
// 	public void setmSimData(SimData[] s) {
// 		mSimData = s;
// 	}
// 
// 	public SimData[] getmSimData() {
// 		return mSimData;
// 	}
// 
// 	public SimData[] getSimDataArray() {
// 		return mSimData;
// 	}
// 
// 	public int getNumberOfPorts() {
// 		return mSimData.length;
// 	}
// 
// 	public List<String> getPortNames() {
// 		List<String> names = new ArrayList<>();
// 		int len = mSimData.length;
// 		for (int i=0;i<len;i++) {
// 			names.add(mSimData[i].getName());
// 		}
// 		return names;
// 	}
// 
// 	public void setDeviceNames(String[] names) {
// 		for (int i = 0; i < mSimData.length; i++) {
// 			mSimData[i].setName(names[i]);
// 		}
// 	}
// 
// 	public SimData findSimDataByName(String name) {
// 		int len = mSimData.length;
// 		for (int i=0;i<len;i++) {
// 			if (mSimData[i].getName().equals(name)) {
// 				return mSimData[i];
// 			}
// 		}
// 		return null;
// 	}
// }
// 
// Path: PC/Java/RobotSimulator/src/org/ftccommunity/simulator/modules/devices/DeviceType.java
// @XmlAccessorType(XmlAccessType.NONE)
// public enum DeviceType {
// 	NONE("None"),
// 	TETRIX_MOTOR("Tetrix Motor Controller"),
// 	TETRIX_SERVO("Tetrix Servo Controller"),
// 	LEGO_LIGHT("Lego Light Sensor"),
// 	LEGO_TOUCH("Lego Touch Sensor"),
// 	USB_MOTOR("USB Motor Controller"),
// 	USB_SERVO("USB Servo Controller");
// 
// 	private final String mName;
// 	DeviceType(String name) {
// 		mName = name;
// 	}
// 
// 	public String getName() {
// 		return mName;
// 	}
// }
// 
// Path: PC/Java/RobotSimulator/src/org/ftccommunity/simulator/modules/devices/NullDevice.java
// @XmlRootElement(name="NullDevice")
// //@XmlAccessorType(XmlAccessType.NONE)
// public class NullDevice extends Device {
// 
// 	public NullDevice() {
// 		super(DeviceType.NONE);
// 		mSimData = new SimData[1];
// 		mSimData[0] = new NullSimData();	// Add 1st motor
// 	}
// 
// 	public void processBuffer(byte[] currentStateBuffer, int portNum) {
// 	}
// 
// 	public void updateDebugGuiVbox() {
// 	}
// 
// 	public void setupDebugGuiVbox(VBox vbox) {
// 	}
// }


// Path: PC/Java/RobotSimulator/src/org/ftccommunity/simulator/modules/ServoBrickSimulator.java
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javax.xml.bind.annotation.XmlRootElement;
import org.ftccommunity.simulator.modules.devices.Device;
import org.ftccommunity.simulator.modules.devices.DeviceType;
import org.ftccommunity.simulator.modules.devices.NullDevice;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

package org.ftccommunity.simulator.modules;





/**
 * Model class for a Motor Controller
 *
 * @author Hagerty High
 */
@XmlRootElement(name="Servo")
public class ServoBrickSimulator extends BrickSimulator {
    private static final Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

    public ServoBrickSimulator() {
    	mType = "Core Servo Controller";
    	mFXMLFileName = "view/EditDialog.fxml";
    	mNumberOfPorts = 6;
    	mDevices = new Device[mNumberOfPorts];