Example #1
0
def get_valid_DFU_dev():
    stm32devs = []
    devs = dfu.finddevs()
    for dev in devs:
        try:
            dfudev = dfu.dfu_device(*dev)
        except:
            if options.verbose:
                print("Could not open dfu device %s id %04x:%04x "
                      "maybe the os driver is claiming it?" %
                      (dev[0].filename, dev[0].idVendor, dev[0].idProduct))
            continue
        try:
            man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
            product = dfudev.handle.getString(dfudev.dev.iProduct, 30)
            serial = dfudev.handle.getString(dfudev.dev.iSerialNumber, 40)
        except Exception as e:
            print("whoops... could not get device description.")
            print("exception:", e)
            continue

        if options.verbose:
            print("Found dfu device %s: id %04x:%04x %s - %s - %s" %
                  (dfudev.dev.filename, dfudev.dev.idVendor,
                   dfudev.dev.idProduct, man, product, serial))

        if man in valid_manufacturers:
            if options.product == "any":
                stm32devs.append((dfudev, man, product, serial))
            elif options.product == "Lisa/Lia":
                if "Lisa/M" in product or "Lia" in product or "Fireswarm" in product:
                    stm32devs.append((dfudev, man, product, serial))
    return stm32devs
Example #2
0
def stm32_scan(args, test):
    devs = dfu.finddevs()
    bmp = 0
    if not devs:
        if test == True:
            return
        print "No DFU devices found!"
        exit(-1)

    for dev in devs:
        dfudev = dfu.dfu_device(*dev)
        man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
        if man == "Black Sphere Technologies": bmp = bmp + 1
    if bmp == 0:
        if test == True:
            return
        print "No compatible device found\n"
        exit(-1)
    if bmp > 1 and not args.serial_target:
        if test == True:
            return
        print "Found multiple devices:\n"
        for dev in devs:
            dfudev = dfu.dfu_device(*dev)
            man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
            product = dfudev.handle.getString(dfudev.dev.iProduct, 96)
            serial_no = dfudev.handle.getString(dfudev.dev.iSerialNumber, 30)
            print "Device ID:\t %04x:%04x" % (dfudev.dev.idVendor,
                                              dfudev.dev.idProduct)
            print "Manufacturer:\t %s" % man
            print "Product:\t %s" % product
            print "Serial:\t\t %s\n" % serial_no
        print "Select device with serial number!"
        exit(-1)

    for dev in devs:
        dfudev = dfu.dfu_device(*dev)
        man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
        product = dfudev.handle.getString(dfudev.dev.iProduct, 96)
        serial_no = dfudev.handle.getString(dfudev.dev.iSerialNumber, 30)
        if args.serial_target:
            if man == "Black Sphere Technologies" and serial_no == args.serial_target:
                break
        else:
            if man == "Black Sphere Technologies": break
    print "Device ID:\t %04x:%04x" % (dfudev.dev.idVendor,
                                      dfudev.dev.idProduct)
    print "Manufacturer:\t %s" % man
    print "Product:\t %s" % product
    print "Serial:\t\t %s" % serial_no
    if args.serial_target and serial_no != args.serial_target:
        print "Serial number doesn't match!\n"
        exit(-2)
    return dfudev
Example #3
0
def stm32_scan(args, test):
	devs = dfu.finddevs()
	bmp = 0
	if not devs:
                if test == True:
                        return
		print "No DFU devices found!"
		exit(-1)

	for dev in devs:
                try:
                        dfudev = dfu.dfu_device(*dev)
                except:
                        return 0
		man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
		if man == "Black Sphere Technologies": bmp = bmp + 1
	if bmp == 0 :
                if test == True:
                        return
		print "No compatible device found\n"
		exit(-1)
	if bmp > 1 and not args.serial_target :
                if test == True:
                        return
		print "Found multiple devices:\n"
		for dev in devs:
			dfudev = dfu.dfu_device(*dev)
			man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
			product = dfudev.handle.getString(dfudev.dev.iProduct, 96)
			serial_no = dfudev.handle.getString(dfudev.dev.iSerialNumber, 30)
			print "Device ID:\t %04x:%04x" % (dfudev.dev.idVendor, dfudev.dev.idProduct)
			print "Manufacturer:\t %s" % man
			print "Product:\t %s" % product
			print "Serial:\t\t %s\n" % serial_no
		print "Select device with serial number!"
		exit (-1)

	for dev in devs:
		dfudev = dfu.dfu_device(*dev)
		man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
		product = dfudev.handle.getString(dfudev.dev.iProduct, 96)
		serial_no = dfudev.handle.getString(dfudev.dev.iSerialNumber, 30)
		if args.serial_target:
			if man == "Black Sphere Technologies" and serial_no ==	args.serial_target: break
		else:
			if man == "Black Sphere Technologies": break
	print "Device ID:\t %04x:%04x" % (dfudev.dev.idVendor, dfudev.dev.idProduct)
	print "Manufacturer:\t %s" % man
	print "Product:\t %s" % product
	print "Serial:\t\t %s" % serial_no
	if args.serial_target and serial_no !=	args.serial_target:
		print "Serial number doesn't match!\n"
		exit(-2)
	return dfudev
Example #4
0
        options.list_only = True

    if not options.list_only:
        if len(args) != 1:
            parser.error("incorrect number of arguments")
        else:
            if path.isfile(args[0]):
                binfile = args[0]
            else:
                parser.error("Binary file " + args[0] + " not found")

    if options.verbose:
        print_copyright()

    for i in range(1, 60):
        devs = dfu.finddevs()
        if not devs:
            print('.', end="")
            stdout.flush()
            time.sleep(0.5)
        else:
            break
    print("")
    if not devs:
        print("No DFU devices found!")
        exit(1)
    elif options.verbose or options.list_only:
        print("Found %i DFU devices." % len(devs))

    valid_manufacturers = []
    valid_manufacturers.append("Transition Robotics Inc.")
Example #5
0
def stm32_scan(args, test):
	devs = dfu.finddevs()
	bmp_devs = []
	bmp = 0
	if not devs:
		if test == True:
			return

		print("No DFU devices found!")
		exit(-1)

	for dev in devs:
		try:
			dfudev = dfu.dfu_device(*dev)
		except:
			# Exceptions are raised when current user doesn't have permissions
			# for the specified USB device, but the device scan needs to
			# continue
			continue

		man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
		if man == b"Black Sphere Technologies":
			bmp = bmp + 1
			bmp_devs.append(dev)

	if bmp == 0:
		if test == True:
			return

		print("No compatible device found\n")
		exit(-1)

	if bmp > 1 and not args.serial_target:
		if test == True:
			return

		print("Found multiple devices:\n")
		for dev in bmp_devs:
			dfudev = dfu.dfu_device(*dev)
			man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
			product = dfudev.handle.getString(dfudev.dev.iProduct, 96)
			serial_no = dfudev.handle.getString(dfudev.dev.iSerialNumber, 30)
			print("Device ID:\t %04x:%04x" % (dfudev.dev.idVendor, dfudev.dev.idProduct))
			print("Manufacturer:\t %s" % man)
			print("Product:\t %s" % product)
			print("Serial:\t\t %s\n" % serial_no)

		print("Select device with serial number!")
		exit (-1)

	for dev in bmp_devs:
		dfudev = dfu.dfu_device(*dev)
		man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
		product = dfudev.handle.getString(dfudev.dev.iProduct, 96)
		serial_no = dfudev.handle.getString(dfudev.dev.iSerialNumber, 30)
		if args.serial_target:
			if man == "Black Sphere Technologies" and serial_no ==	args.serial_target:
				break
		else:
			if man == "Black Sphere Technologies":
				break

	print("Device ID:\t %04x:%04x" % (dfudev.dev.idVendor, dfudev.dev.idProduct))
	print("Manufacturer:\t %s" % man)
	print("Product:\t %s" % product)
	print("Serial:\t\t %s" % serial_no)

	if args.serial_target and serial_no != args.serial_target:
		print("Serial number doesn't match!\n")
		exit(-2)

	return dfudev
Example #6
0
    )
    (options, args) = parser.parse_args()

    if len(args) != 1:
        parser.error("incorrect number of arguments")
    else:
        if path.isfile(args[0]):
            binfile = args[0]
        else:
            parser.error("Binary file " + args[0] + " not found")

    if options.verbose:
        print_copyright()

    for i in range(1, 60):
        devs = dfu.finddevs()
        if not devs:
            print('.', end="")
            stdout.flush()
            time.sleep(0.5)
        else:
            break
    print("")
    if not devs:
        print("No DFU devices found!")
        exit(1)
    elif options.verbose:
        print("Found %i DFU devices." % len(devs))

    valid_manufacturers = []
    valid_manufacturers.append("Transition Robotics Inc.")
Example #7
0
def stm32_scan(args, test):
	devs = dfu.finddevs()
	bmp_devs = []
	bmp = 0
	if not devs:
		if test == True:
			return

		print "No DFU devices found!"
		exit(-1)

	for dev in devs:
		try:
			dfudev = dfu.dfu_device(*dev)
		except:
			# Exceptions are raised when current user doesn't have permissions
			# for the specified USB device, but the device scan needs to
			# continue
			continue

		man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
		if man == "Black Sphere Technologies":
			bmp = bmp + 1
			bmp_devs.append(dev)

	if bmp == 0:
		if test == True:
			return

		print "No compatible device found\n"
		exit(-1)

	if bmp > 1 and not args.serial_target:
		if test == True:
			return

		print "Found multiple devices:\n"
		for dev in bmp_devs:
			dfudev = dfu.dfu_device(*dev)
			man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
			product = dfudev.handle.getString(dfudev.dev.iProduct, 96)
			serial_no = dfudev.handle.getString(dfudev.dev.iSerialNumber, 30)
			print "Device ID:\t %04x:%04x" % (dfudev.dev.idVendor, dfudev.dev.idProduct)
			print "Manufacturer:\t %s" % man
			print "Product:\t %s" % product
			print "Serial:\t\t %s\n" % serial_no

		print "Select device with serial number!"
		exit (-1)

	for dev in bmp_devs:
		dfudev = dfu.dfu_device(*dev)
		man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
		product = dfudev.handle.getString(dfudev.dev.iProduct, 96)
		serial_no = dfudev.handle.getString(dfudev.dev.iSerialNumber, 30)
		if args.serial_target:
			if man == "Black Sphere Technologies" and serial_no ==	args.serial_target:
				break
		else:
			if man == "Black Sphere Technologies":
				break

	print "Device ID:\t %04x:%04x" % (dfudev.dev.idVendor, dfudev.dev.idProduct)
	print "Manufacturer:\t %s" % man
	print "Product:\t %s" % product
	print "Serial:\t\t %s" % serial_no

	if args.serial_target and serial_no != args.serial_target:
		print "Serial number doesn't match!\n"
		exit(-2)

	return dfudev