本文整理汇总了Python中usb.util.find_descriptor函数的典型用法代码示例。如果您正苦于以下问题:Python find_descriptor函数的具体用法?Python find_descriptor怎么用?Python find_descriptor使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了find_descriptor函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __plugDevice
def __plugDevice(flag, dom, usbmap):
for dev in core.find(find_all=True):
for cfg in dev:
intf = util.find_descriptor(cfg, find_all=True)
intf0 = util.find_descriptor(cfg, bInterfaceClass=0)
intf3 = util.find_descriptor(cfg, bInterfaceClass=3)
intf9 = util.find_descriptor(cfg, bInterfaceClass=9)
if intf != None and intf0 == None and intf3 == None and intf9 == None:
idVendor = str(hex(dev.idVendor))
if len(idVendor) < 6:
idVendor = '0x' + '0' * (6 - len(idVendor)) + idVendor[2:]
idProduct = str(hex(dev.idProduct))
if len(idProduct) < 6:
idProduct = '0x' + '0' * (6 - len(idProduct)) + idProduct[2:]
xml = __generateUSBXML(idVendor, idProduct)
if dom != None and dom.isActive() == True:
if flag:
dom.attachDevice(xml)
syspath=__getSysPath(idVendor, idProduct)
if syspath != None:
usbmap[syspath]=idProduct+idVendor
else:
dom.detachDevice(xml)
syspath=__getSysPath(idVendor, idProduct)
if syspath != None:
usbmap.pop(syspath)
else:
pass
示例2: clearHalt
def clearHalt(self, endpoint):
r"""Clears any halt status on the specified endpoint.
Arguments:
endpoint: endpoint number.
"""
cfg = self.dev.get_active_configuration()
intf = util.find_descriptor(cfg, bInterfaceNumber = self.__claimed_interface)
e = util.find_descriptor(intf, bEndpointAddress = endpoint)
control.clear_feature(self.dev, control.ENDPOINT_HALT, e)
示例3: get_interface
def get_interface(self, device, intf):
# TODO: check the viability of issuing a GET_INTERFACE
# request when we don't have a alternate setting cached
if intf is None:
cfg = self.get_active_configuration(device)
return cfg[(0, 0)]
elif isinstance(intf, Interface):
return intf
else:
cfg = self.get_active_configuration(device)
if intf in self._alt_set:
return util.find_descriptor(cfg, bInterfaceNumber=intf, bAlternateSetting=self._alt_set[intf])
else:
return util.find_descriptor(cfg, bInterfaceNumber=intf)
示例4: managed_set_interface
def managed_set_interface(self, device, intf, alt):
if isinstance(intf, Interface):
i = intf
else:
cfg = self.get_active_configuration(device)
if intf is None:
intf = cfg[(0,0)].bInterfaceNumber
if alt is not None:
i = util.find_descriptor(cfg, bInterfaceNumber=intf, bAlternateSetting=alt)
else:
i = util.find_descriptor(cfg, bInterfaceNumber=intf)
self.managed_claim_interface(device, i)
if alt is None:
alt = i.bAlternateSetting
self.backend.set_interface_altsetting(self.handle, i.bInterfaceNumber, alt)
self._alt_set[i.bInterfaceNumber] = alt
示例5: managed_set_configuration
def managed_set_configuration(self, device, config):
if config is None:
cfg = device[0]
elif isinstance(config, Configuration):
cfg = config
elif config == 0: # unconfigured state
class FakeConfiguration(object):
def __init__(self):
self.index = None
self.bConfigurationValue = 0
cfg = FakeConfiguration()
else:
cfg = util.find_descriptor(device, bConfigurationValue=config)
self.managed_open()
self.backend.set_configuration(self.handle, cfg.bConfigurationValue)
# cache the index instead of the object to avoid cyclic references
# of the device and Configuration (Device tracks the _ResourceManager,
# which tracks the Configuration, which tracks the Device)
self._active_cfg_index = cfg.index
# after changing configuration, our alternate setting and endpoint type caches
# are not valid anymore
self._ep_type_map.clear()
self._alt_set.clear()
示例6: test_config_switch_2
def test_config_switch_2(self):
"""
Uses the API if you're interested in the cfg block
"""
cfg = uu.find_descriptor(self.dev, bConfigurationValue=2)
self.assertIsNotNone(cfg, "Config 2 should exist")
self.dev.set_configuration(cfg)
示例7: managed_set_configuration
def managed_set_configuration(self, device, config):
if config is None:
cfg = device[0]
elif isinstance(config, Configuration):
cfg = config
elif config == 0: # unconfigured state
class MockConfiguration(object):
def __init__(self):
self.index = None
self.bConfigurationValue = 0
cfg = MockConfiguration()
else:
cfg = util.find_descriptor(device, bConfigurationValue=config)
if cfg is None:
raise ValueError("Invalid configuration " + str(config))
self.managed_open()
self.backend.set_configuration(self.handle, cfg.bConfigurationValue)
# cache the index instead of the object to avoid cyclic references
# of the device and Configuration (Device tracks the _ResourceManager,
# which tracks the Configuration, which tracks the Device)
self._active_cfg_index = cfg.index
self._ep_info.clear()
示例8: setUp
def setUp(self):
self.dev = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID, custom_match=find_by_serial(DUT_SERIAL))
self.assertIsNotNone(self.dev, "Couldn't find locm3 gadget0 device")
self.cfg = uu.find_descriptor(self.dev, bConfigurationValue=2)
self.assertIsNotNone(self.cfg, "Config 2 should exist")
self.dev.set_configuration(self.cfg)
示例9: get_active_configuration
def get_active_configuration(self, device):
if self._active_cfg_index is None:
cfg = util.find_descriptor(device, bConfigurationValue=self.backend.get_configuration(self.handle))
if cfg is None:
raise USBError("Configuration not set")
self._active_cfg_index = cfg.index
return cfg
return device[self._active_cfg_index]
示例10: setUp
def setUp(self):
self.dev = usb.core.find(idVendor=0xcafe, idProduct=0xcafe, custom_match=find_by_serial(DUT_SERIAL))
self.assertIsNotNone(self.dev, "Couldn't find locm3 gadget0 device")
self.cfg = uu.find_descriptor(self.dev, bConfigurationValue=2)
self.assertIsNotNone(self.cfg, "Config 2 should exist")
self.dev.set_configuration(self.cfg);
self.req = uu.CTRL_IN | uu.CTRL_TYPE_VENDOR | uu.CTRL_RECIPIENT_INTERFACE
示例11: __call__
def __call__(self, device):
if device.bDeviceClass == self.__class:
return True
for cfg in device:
intf = find_descriptor(cfg, bInterfaceClass=self.__class)
if intf is not None:
return True
return False
示例12: get_endpoint_type
def get_endpoint_type(self, device, address, intf):
intf = self.get_interface(device, intf)
key = (address, intf.bInterfaceNumber, intf.bAlternateSetting)
try:
return self._ep_type_map[key]
except KeyError:
e = util.find_descriptor(intf, bEndpointAddress=address)
etype = util.endpoint_type(e.bmAttributes)
self._ep_type_map[key] = etype
return etype
示例13: setUp
def setUp(self):
self.dev = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID, custom_match=find_by_serial(DUT_SERIAL))
self.assertIsNotNone(self.dev, "Couldn't find locm3 gadget0 device")
self.cfg = uu.find_descriptor(self.dev, bConfigurationValue=2)
self.assertIsNotNone(self.cfg, "Config 2 should exist")
self.dev.set_configuration(self.cfg)
self.intf = self.cfg[(0, 0)]
# heh, kinda gross...
self.ep_out = [ep for ep in self.intf if uu.endpoint_direction(ep.bEndpointAddress) == uu.ENDPOINT_OUT][0]
self.ep_in = [ep for ep in self.intf if uu.endpoint_direction(ep.bEndpointAddress) == uu.ENDPOINT_IN][0]
示例14: get_interface_and_endpoint
def get_interface_and_endpoint(self, device, endpoint_address):
try:
return self._ep_info[endpoint_address]
except KeyError:
for intf in self.get_active_configuration(device):
ep = util.find_descriptor(intf, bEndpointAddress=endpoint_address)
if ep is not None:
self._ep_info[endpoint_address] = (intf, ep)
return intf, ep
raise ValueError('Invalid endpoint address ' + hex(endpoint_address))
示例15: isPassthroughUsbDevice
def isPassthroughUsbDevice(interfaceClass, idP, idV):
for dev in core.find(find_all=True):
for cfg in dev:
intf = util.find_descriptor(cfg, bInterfaceClass=interfaceClass)
if intf is not None:
idVendor = str(hex(dev.idVendor))
if len(idVendor) < 6:
idVendor = '0x' + '0' * (6 - len(idVendor)) + idVendor[2:]
idProduct = str(hex(dev.idProduct))
if len(idProduct) < 6:
idProduct = '0x' + '0' * (6 - len(idProduct)) + idProduct[2:]
if idVendor !=None and idProduct != None and idVendor == idV and idProduct == idP:
return True
return False