diff options
Diffstat (limited to 'ao-tools/altosui/AltosDeviceLinux.java')
| -rw-r--r-- | ao-tools/altosui/AltosDeviceLinux.java | 172 | 
1 files changed, 0 insertions, 172 deletions
diff --git a/ao-tools/altosui/AltosDeviceLinux.java b/ao-tools/altosui/AltosDeviceLinux.java deleted file mode 100644 index ffc70aff..00000000 --- a/ao-tools/altosui/AltosDeviceLinux.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright © 2010 Keith Packard <keithp@keithp.com> - * - * This program 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; version 2 of the License. - * - * This program 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 this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package altosui; -import java.lang.*; -import java.io.*; -import java.util.*; -import altosui.AltosDevice; - -public class AltosDeviceLinux extends AltosDevice { - -	String load_string(File file) { -		try { -			FileInputStream	in = new FileInputStream(file); -			String result = ""; -			int c; -			try { -				while ((c = in.read()) != -1) { -					if (c == '\n') -						break; -					result = result + (char) c; -				} -				return result; -			} catch (IOException ee) { -				return ""; -			} -		} catch (FileNotFoundException ee) { -			return ""; -		} -	} -	String load_string(File dir, String name) { -		return load_string(new File(dir, name)); -	} - -	int load_hex(File file) { -		try { -			return Integer.parseInt(load_string(file).trim(), 16); -		} catch (NumberFormatException ee) { -			return -1; -		} -	} - -	int load_hex(File dir, String name) { -		return load_hex(new File(dir, name)); -	} - -	int load_dec(File file) { -		try { -			return Integer.parseInt(load_string(file).trim()); -		} catch (NumberFormatException ee) { -			return -1; -		} -	} - -	int load_dec(File dir, String name) { -		return load_dec(new File(dir, name)); -	} - -	String usb_tty(File sys_dir) { -		String base = sys_dir.getName(); -		int num_configs = load_hex(sys_dir, "bNumConfigurations"); -		int num_inters = load_hex(sys_dir, "bNumInterfaces"); -		for (int config = 1; config <= num_configs; config++) { -			for (int inter = 0; inter < num_inters; inter++) { -				String endpoint_base = String.format("%s:%d.%d", -								     base, config, inter); -				File endpoint_full = new File(sys_dir, endpoint_base); - -				File[] namelist; - -				/* Check for tty:ttyACMx style names */ -				class tty_colon_filter implements FilenameFilter { -					public boolean accept(File dir, String name) { -						return name.startsWith("tty:"); -					} -				} -				namelist = endpoint_full.listFiles(new tty_colon_filter()); -				if (namelist != null && namelist.length > 0) -					return new File ("/dev", namelist[0].getName().substring(4)).getPath(); - -				/* Check for tty/ttyACMx style names */ -				class tty_filter implements FilenameFilter { -					public boolean accept(File dir, String name) { -						return name.startsWith("tty"); -					} -				} -				File tty_dir = new File(endpoint_full, "tty"); -				namelist = tty_dir.listFiles(new tty_filter()); -				if (namelist != null && namelist.length > 0) -					return new File ("/dev", namelist[0].getName()).getPath(); -			} -		} -		return null; -	} - -	public AltosDeviceLinux (File sys) { -		sys = sys; -		manufacturer = load_string(sys, "manufacturer"); -		product = load_string(sys, "product"); -		serial = load_dec(sys, "serial"); -		idProduct = load_hex(sys, "idProduct"); -		idVendor = load_hex(sys, "idVendor"); -		tty = usb_tty(sys); -	} - -	public String toString() { -		return String.format("%-20s %6d %-15s", product, serial, tty == null ? "" : tty); -	} -	static public AltosDeviceLinux[] list() { -		LinkedList<AltosDeviceLinux> devices = new LinkedList<AltosDeviceLinux>(); - -		class dev_filter implements FilenameFilter{ -			public boolean accept(File dir, String name) { -				for (int i = 0; i < name.length(); i++) { -					char c = name.charAt(i); -					if (Character.isDigit(c)) -						continue; -					if (c == '-') -						continue; -					if (c == '.' && i != 1) -						continue; -					return false; -				} -				return true; -			} -		} - -		File usb_devices = new File("/sys/bus/usb/devices"); -		File[] devs = usb_devices.listFiles(new dev_filter()); -		if (devs != null) { -			for (int e = 0; e < devs.length; e++) { -				AltosDeviceLinux	dev = new AltosDeviceLinux(devs[e]); -				if (dev.idVendor == 0xfffe && dev.tty != null) { -					devices.add(dev); -				} -			} -		} -		AltosDeviceLinux[] foo = new AltosDeviceLinux[devices.size()]; -		for (int e = 0; e < devices.size(); e++) -			foo[e] = devices.get(e); -		return foo; -	} - -	static public AltosDeviceLinux[] list(String model) { -		AltosDeviceLinux[] devices = list(); -		if (model != null) { -			LinkedList<AltosDeviceLinux> subset = new LinkedList<AltosDeviceLinux>(); -			for (int i = 0; i < devices.length; i++) { -				if (devices[i].product.startsWith(model)) -					subset.add(devices[i]); -			} -			devices = new AltosDeviceLinux[subset.size()]; -			for (int e = 0; e < subset.size(); e++) -				devices[e] = subset.get(e); -		} -		return devices; -	} -}  | 
