diff options
Diffstat (limited to 'support/scripts')
| -rwxr-xr-x | support/scripts/reset.py | 43 | 
1 files changed, 41 insertions, 2 deletions
| 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) | 
