#!/usr/bin/env python

import time
import serial
import argparse

from arduinoudev import open_device, get_device_name, set_device_name, reset_device

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("device", nargs=1,
                        help="serial device")
    parser.add_argument("--set-name","-s",type=str,
                        help="set the device name")
    parser.add_argument("--wait","-w",type=float,default=0,
                        help="wait this many seconds for the device to settle")
    parser.add_argument("--no-reset",action="store_false", dest="reset",
                        default=True, help="do no reset ardunio before operation")
    parser.add_argument("--verbose", "-v", action="store_true")
    args = parser.parse_args()

    #udev passes this as a relative dev name like USBN
    device = args.device[0].split('/')[-1]

    time.sleep(args.wait)

    ser = open_device(port='/dev/%s'%device)

    if args.reset:
        reset_device(ser)

    time.sleep(5.0)
    ser.flushInput()

    if args.set_name:
        set_device_name(ser, args.set_name, verbose=args.verbose)
        name = args.set_name
    else:
        name = get_device_name(ser)

    if args.verbose:
        print "%sNAME: %s (%s)" % ("SET " if args.set_name else "", name, " ".join(['0x%X'%ord(c) for c in name]))
    else:
        print name

    ser.close()

