Remove unused code

This commit is contained in:
Kovid Goyal 2016-01-19 00:10:03 +05:30
parent 14cd062fec
commit f19d54c05c
2 changed files with 18 additions and 65 deletions

View File

@ -58,14 +58,14 @@ def main():
# run() # run()
# return # return
from calibre.devices.winusb import get_usb_devices from calibre.devices.winusb import scan_usb_devices
from calibre.devices.mtp.driver import MTP_DEVICE from calibre.devices.mtp.driver import MTP_DEVICE
dev = MTP_DEVICE(None) dev = MTP_DEVICE(None)
dev.startup() dev.startup()
print (dev.wpd, dev.wpd_error) print (dev.wpd, dev.wpd_error)
try: try:
devices = get_usb_devices() devices = scan_usb_devices()
pnp_id = dev.detect_managed_devices(devices) pnp_id = dev.detect_managed_devices(devices)
if not pnp_id: if not pnp_id:
raise ValueError('Failed to detect device') raise ValueError('Failed to detect device')

View File

@ -513,25 +513,6 @@ def get_storage_number(devpath):
CloseHandle(handle) CloseHandle(handle)
return sdn.as_tuple() return sdn.as_tuple()
def get_all_removable_drives(allow_fixed=False):
mask = GetLogicalDrives()
ans = {}
buf = create_unicode_buffer(100)
for drive_letter in string.ascii_uppercase:
drive_present = bool(mask & 0b1)
mask >>= 1
drive_root = drive_letter + ':' + os.sep
if not drive_present:
continue
drive_type = GetDriveType(drive_root)
if drive_type == DRIVE_REMOVABLE or (allow_fixed and drive_type == DRIVE_FIXED): # Removable, present drive
try:
GetVolumeNameForVolumeMountPoint(drive_root, buf, len(buf))
except WindowsError:
continue
ans[buf.value] = drive_letter
return ans
def get_device_id(devinst, buf=None): def get_device_id(devinst, buf=None):
if buf is None: if buf is None:
buf = create_unicode_buffer(512) buf = create_unicode_buffer(512)
@ -697,40 +678,13 @@ def scan_usb_devices():
# }}} # }}}
def get_removable_drives(debug=False): # {{{
drive_map = get_all_removable_drives(allow_fixed=False)
if debug:
prints('Drive map: %s' % drive_map)
if not drive_map:
raise NoRemovableDrives('No removable drives found!')
ans, buf = {}, None
for devinfo, devpath in DeviceSet().interfaces():
candidates = []
# Get the devpaths for all parents of this device. This is not
# actually necessary on Vista+, so we simply ignore any windows API
# failures.
for parent in iterancestors(devinfo.DevInst):
try:
devid, buf = get_device_id(parent, buf=buf)
except WindowsError:
break
candidates.append(devid)
candidates.append(devpath)
drive_letter = drive_letter_from_volume_devpath(devpath, drive_map)
if drive_letter:
ans[drive_letter] = candidates
if debug:
prints('Found volume with device path:', devpath, ' Drive letter:', drive_letter, 'Is removable:', drive_letter in ans)
return ans
# }}}
def get_drive_letters_for_device(usbdev, storage_number_map=None, debug=False): # {{{ def get_drive_letters_for_device(usbdev, storage_number_map=None, debug=False): # {{{
''' '''
Get the drive letters for a connected device (usbdev must be a USBDevice Get the drive letters for a connected device. The drive letters are sorted
instance). The drive letters are sorted by storage number, which (I think) by storage number, which (I think) corresponds to the order they are
corresponds to the order they are exported by the firmware. exported by the firmware.
:param usbdevice: As returned by :function:`scan_usb_devices`
''' '''
ans = {'pnp_id_map': {}, 'drive_letters':[], 'readonly_drives':set()} ans = {'pnp_id_map': {}, 'drive_letters':[], 'readonly_drives':set()}
sort_map = {} sort_map = {}
@ -799,10 +753,6 @@ def get_storage_number_map(drive_types=(DRIVE_REMOVABLE, DRIVE_FIXED), debug=Fal
# }}} # }}}
def get_usb_devices(): # {{{
return list(x.devid for x in iterusbdevices())
# }}}
def is_usb_device_connected(vendor_id, product_id): # {{{ def is_usb_device_connected(vendor_id, product_id): # {{{
for usbdev in iterusbdevices(): for usbdev in iterusbdevices():
if usbdev.vendor_id == vendor_id and usbdev.product_id == product_id: if usbdev.vendor_id == vendor_id and usbdev.product_id == product_id:
@ -811,6 +761,7 @@ def is_usb_device_connected(vendor_id, product_id): # {{{
# }}} # }}}
def eject_drive(drive_letter): # {{{ def eject_drive(drive_letter): # {{{
' Eject the disk that corresponds to the specified drive letter '
drive_letter = type('')(drive_letter)[0] drive_letter = type('')(drive_letter)[0]
volume_access_path = '\\\\.\\' + drive_letter + ':' volume_access_path = '\\\\.\\' + drive_letter + ':'
try: try:
@ -845,6 +796,11 @@ def eject_drive(drive_letter): # {{{
# }}} # }}}
def get_usb_info(usbdev, debug=False): # {{{ def get_usb_info(usbdev, debug=False): # {{{
'''
The USB info (manufacturer/product names and serial number) Requires communication with the hub the device is connected to.
:param usbdev: A usb device as returned by :function:`scan_usb_devices`
'''
ans = {} ans = {}
try: try:
parent = next(iterancestors(usbdev.devinst)) parent = next(iterancestors(usbdev.devinst))
@ -955,14 +911,9 @@ def is_readonly(drive_letter): # {{{
def develop(do_eject=False): # {{{ def develop(do_eject=False): # {{{
from calibre.customize.ui import device_plugins from calibre.customize.ui import device_plugins
usb_devices = scan_usb_devices() usb_devices = scan_usb_devices()
drive_letters = set()
pprint(usb_devices) pprint(usb_devices)
print() print()
print('\nAll removable drives:')
pprint(get_all_removable_drives(allow_fixed=False))
print('\nRemovable drives:')
rd = get_removable_drives(debug=True)
pprint(rd)
print()
devplugins = list(sorted(device_plugins(), cmp=lambda devplugins = list(sorted(device_plugins(), cmp=lambda
x,y:cmp(x.__class__.__name__, y.__class__.__name__))) x,y:cmp(x.__class__.__name__, y.__class__.__name__)))
for dev in devplugins: for dev in devplugins:
@ -976,13 +927,15 @@ def develop(do_eject=False): # {{{
print('Potentially connected device: %s at %s' % (dev.get_gui_name(), usbdev)) print('Potentially connected device: %s at %s' % (dev.get_gui_name(), usbdev))
print() print()
print('Drives for this device:') print('Drives for this device:')
pprint(get_drive_letters_for_device(usbdev, debug=True)) data = get_drive_letters_for_device(usbdev, debug=True)
pprint(data)
drive_letters |= set(data['drive_letters'])
print() print()
print('Is device connected:', is_usb_device_connected(*usbdev[:2])) print('Is device connected:', is_usb_device_connected(*usbdev[:2]))
print() print()
print('Device USB data:', get_usb_info(usbdev, debug=True)) print('Device USB data:', get_usb_info(usbdev, debug=True))
if do_eject: if do_eject:
for drive in rd: for drive in drive_letters:
eject_drive(drive) eject_drive(drive)
def drives_for(vendor_id, product_id=None): def drives_for(vendor_id, product_id=None):