aboutsummaryrefslogtreecommitdiffstats
path: root/support
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2012-08-22 12:48:37 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2012-08-22 12:48:37 -0400
commit40ca3ece6b6f8b430bb32751ae1c1421142b9bc1 (patch)
tree0951684d5006916c4240caec89823b1bd589df25 /support
parent05acd08a66542888dfb0034abdeed5cd31d5664c (diff)
downloadlibrambutan-40ca3ece6b6f8b430bb32751ae1c1421142b9bc1.tar.gz
librambutan-40ca3ece6b6f8b430bb32751ae1c1421142b9bc1.zip
reset.py: Not every Unix is Linux.
Move the sysfs tests for Maple out of unix_get_maple_path() and into a new linux_get_maple_path(). This prevents unnecessary probing for a nonexistent /sys on e.g. OS X. Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
Diffstat (limited to 'support')
-rwxr-xr-xsupport/scripts/reset.py28
1 files changed, 20 insertions, 8 deletions
diff --git a/support/scripts/reset.py b/support/scripts/reset.py
index bfc91e1..67a72c1 100755
--- a/support/scripts/reset.py
+++ b/support/scripts/reset.py
@@ -9,16 +9,28 @@ import sys
import time
from struct import pack
-def unix_get_maple_path(file_prefix):
- """Try to find the device file for the Maple on *nix; assuming
- that it looks like /dev/<file_prefix>* and has the correct ID in
- the /sys tree. If there are multiple possibilities, ask the user
- what to do. If the user chooses not to say, returns None."""
+def unix_get_maple_path(file_prefix, dev_is_maple=lambda dev: True):
+ """Try to find the device file for the Maple on *nix.
+
+ This function works assuming that the device file globs like
+ '/dev/<file_prefix>*'. The caller may pass an additional
+ dev_is_maple predicate if the platform supports additional tests
+ to determine if a device is a Maple.
+
+ If there are multiple possibilities, ask the user what to do. If
+ the user chooses not to say, returns None."""
possible_paths = [os.path.join('/dev', x) for x in os.listdir('/dev') \
- if (x.startswith(file_prefix) and tty_is_maple(x))]
+ if x.startswith(file_prefix) and dev_is_maple(x)]
return choose_path(possible_paths)
-def tty_is_maple(device):
+def linux_get_maple_path(file_prefix='ttyACM'):
+ """Specialized unix_get_maple_path() for Linux.
+
+ Attempts to check that a candidate device has the correct ID in
+ the /sys tree when deciding if it's a Maple."""
+ return unix_get_maple_path(file_prefix, linux_tty_is_maple)
+
+def linux_tty_is_maple(device):
try:
sysfile = open("/sys/class/tty/%s/device/uevent" % device, "r")
text = "".join(sysfile.readlines())
@@ -72,7 +84,7 @@ def choose_among_options(options):
plat_sys = platform.system()
plat_bits = platform.architecture()[0]
if plat_sys == 'Linux':
- maple_path = unix_get_maple_path('ttyACM')
+ maple_path = linux_get_maple_path()
# fall back on /dev/maple if that doesn't work
if maple_path is None:
maple_path = '/dev/maple'