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
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
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
print("Found %i DFU devices." % len(devs)) valid_manufacturers = [] valid_manufacturers.append("Transition Robotics Inc.") valid_manufacturers.append("STMicroelectronics") valid_manufacturers.append("Black Sphere Technologies") valid_manufacturers.append("TUDelft MavLab. 2012->13") valid_manufacturers.append("1 BIT SQUARED") valid_manufacturers.append("S.Krukowski") # list of tuples with possible stm32 (autopilot) devices stm32devs = [] 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
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
exit(1) elif options.verbose: print("Found %i DFU devices." % len(devs)) valid_manufacturers = [] valid_manufacturers.append("Transition Robotics Inc.") valid_manufacturers.append("STMicroelectronics") valid_manufacturers.append("Black Sphere Technologies") valid_manufacturers.append("TUDelft MavLab. 2012->13") # list of tuples with possible stm32 (autopilot) devices stm32devs = [] 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
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