Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def getSupportedLanguageList(self):
"""
Return a list of USB language identifiers (as integers) supported by
current device for its string descriptors.
Note: language identifiers seem (I didn't check them all...) very
similar to windows language identifiers, so you may want to use
locales.windows_locale to get an rfc3066 representation. The 5 standard
HID language codes are missing though.
"""
descriptor_string = create_binary_buffer(STRING_LENGTH)
result = libusb1.libusb_get_string_descriptor(
self.__handle, 0, 0, descriptor_string, sizeof(descriptor_string),
)
# pylint: disable=undefined-variable
if result == ERROR_PIPE:
# pylint: enable=undefined-variable
# From libusb_control_transfer doc:
# control request not supported by the device
return []
mayRaiseUSBError(result)
length = cast(descriptor_string, POINTER(c_ubyte))[0]
langid_list = cast(descriptor_string, POINTER(c_uint16))
result = []
append = result.append
for offset in xrange(1, length / 2):
append(libusb1.libusb_le16_to_cpu(langid_list[offset]))
return result
def getStringDescriptor(self, descriptor, lang_id):
"""
Fetch description string for given descriptor and in given language.
Use getSupportedLanguageList to know which languages are available.
Return value is an unicode string.
Return None if there is no such descriptor on device.
"""
descriptor_string = create_binary_buffer(STRING_LENGTH)
try:
mayRaiseUSBError(libusb1.libusb_get_string_descriptor(
self.__handle, descriptor, lang_id, descriptor_string,
sizeof(descriptor_string),
))
# pylint: disable=undefined-variable
except USBErrorNotFound:
# pylint: enable=undefined-variable
return None
return descriptor_string.value.decode('UTF-16-LE')
def getSupportedLanguageList(self):
"""
Return a list of USB language identifiers (as integers) supported by
current device for its string descriptors.
"""
descriptor_string = create_binary_buffer(STRING_LENGTH)
result = libusb1.libusb_get_string_descriptor(self.__handle,
0, 0, descriptor_string, sizeof(descriptor_string))
if result < 0:
if result == libusb1.LIBUSB_ERROR_PIPE:
# From libusb_control_transfer doc:
# control request not supported by the device
return []
raise libusb1.USBError(result)
length = cast(descriptor_string, POINTER(c_ubyte))[0]
langid_list = cast(descriptor_string, POINTER(c_uint16))
result = []
append = result.append
for offset in xrange(1, length / 2):
append(libusb1.libusb_le16_to_cpu(langid_list[offset]))
return result
def getSupportedLanguageList(self):
"""
Return a list of USB language identifiers (as integers) supported by
current device for its string descriptors.
"""
descriptor_string = create_binary_buffer(STRING_LENGTH)
result = libusb1.libusb_get_string_descriptor(self.__handle,
0, 0, descriptor_string, sizeof(descriptor_string))
if result < 0:
if result == libusb1.LIBUSB_ERROR_PIPE:
# From libusb_control_transfer doc:
# control request not supported by the device
return []
raise libusb1.USBError(result)
length = cast(descriptor_string, POINTER(c_ubyte))[0]
langid_list = cast(descriptor_string, POINTER(c_uint16))
result = []
append = result.append
for offset in xrange(1, length / 2):
append(libusb1.libusb_le16_to_cpu(langid_list[offset]))
return result
def getStringDescriptor(self, descriptor, lang_id):
"""
Fetch description string for given descriptor and in given language.
Use getSupportedLanguageList to know which languages are available.
Return value is an unicode string.
Return None if there is no such descriptor on device.
"""
descriptor_string = create_unicode_buffer(
STRING_LENGTH / sizeof(c_wchar))
result = libusb1.libusb_get_string_descriptor(self.__handle,
descriptor, lang_id, descriptor_string, sizeof(descriptor_string))
if result == libusb1.LIBUSB_ERROR_NOT_FOUND:
return None
if result < 0:
raise libusb1.USBError(result)
return descriptor_string.value
def getStringDescriptor(self, descriptor, lang_id):
"""
Fetch description string for given descriptor and in given language.
Use getSupportedLanguageList to know which languages are available.
Return value is an unicode string.
Return None if there is no such descriptor on device.
"""
descriptor_string = create_unicode_buffer(
STRING_LENGTH / sizeof(c_wchar))
result = libusb1.libusb_get_string_descriptor(self.__handle,
descriptor, lang_id, descriptor_string, sizeof(descriptor_string))
if result == libusb1.LIBUSB_ERROR_NOT_FOUND:
return None
if result < 0:
raise libusb1.USBError(result)
return descriptor_string.value