From b10ef4875fb5a48cf6c702a36b7a0bf6d84c5f78 Mon Sep 17 00:00:00 2001 From: Marti Bolivar Date: Sun, 29 Aug 2010 02:07:32 -0400 Subject: fix reset.py to work on OS X,; .gitignore leaves out ~ files; cleanup support/make/build-rules.mk --- support/scripts/reset.py | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) (limited to 'support/scripts') diff --git a/support/scripts/reset.py b/support/scripts/reset.py index cc944ee..7cafefc 100755 --- a/support/scripts/reset.py +++ b/support/scripts/reset.py @@ -1,13 +1,52 @@ #!/usr/bin/python -# NOTE: On Mac OSX this script must be run as sudo? +# NOTE: On Mac OSX this script must be run as sudo? import serial import os +import sys from struct import pack +def get_maple_device_path_osx(): + """Try to find the device file for the Maple on OS X. If there + are multiple possibilities, ask the user what to do. If the user + chooses not to say, returns None.""" + possible_maple_paths = [x for x in os.listdir('/dev') if \ + 'tty.usbmodem' in x] + if len(possible_maple_paths) == 1: + return possible_maple_paths[0] + else: + print 'Attempting to reset Maple, but found multiple ' + \ + 'candidates for the Maple device:' + for (i,p) in enumerate(possible_maple_paths): + print '\t%d. %s' % (i+1,os.path.join('/dev',p)) + + prompt = 'Enter a number to select one, or q to quit: ' + while True: + resp = raw_input(prompt).strip().lower() + if resp == 'q': return None + + try: + i = int(resp, 10) + except ValueError: + pass + else: + if 0 <= i-1 < len(possible_maple_paths): + return os.path.join('/dev',possible_maple_paths[i-1]) + prompt = 'Please enter a number from the list, or q to quit: ' + +os_sysname = os.uname()[0] +if os_sysname == 'Linux': + maple_path = '/dev/maple' +elif os_sysname == 'Darwin': + maple_path = get_maple_device_path_osx() + if maple_path is None: sys.exit() +else: + # TODO [mbolivar] special cases for windows, BSD, whatever? + maple_path = '/dev/maple' + try: - ser = serial.Serial('/dev/maple', baudrate=115200, xonxoff=1) + ser = serial.Serial(maple_path, baudrate=115200, xonxoff=1) ser.open() # try to toggle DTR/RTS (old scheme) -- cgit v1.2.3