From 94387a023ff311032a897831e43e9baf76131cf2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 16 Jan 2007 19:57:23 +0000 Subject: [PATCH] Added set_configuration method in libusb --- src/libprs500/libusb.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/libprs500/libusb.py b/src/libprs500/libusb.py index 6e5a2d3c21..5538e8a764 100644 --- a/src/libprs500/libusb.py +++ b/src/libprs500/libusb.py @@ -138,14 +138,6 @@ class Bus(Structure): return ans return property(doc=doc, fget=fget) -class NTStatus(Structure): - _fields_ = [\ - ('code', c_uint, 16), - ('facility', c_uint, 13), - ('c', c_uint, 1), - ('sev', c_uint, 2) - ] - class DeviceHandle(Structure): _fields_ = [\ ('fd', c_int), \ @@ -160,6 +152,11 @@ class DeviceHandle(Structure): def close(self): """ Close this DeviceHandle """ _libusb.usb_close(byref(self)) + + def set_configuration(self, num): + ret = _libusb.usb_set_configuration(byref(self), num) + if ret < 0: + raise Error('Failed to set device configuration to: ' + num) def claim_interface(self, num): """ @@ -167,8 +164,7 @@ class DeviceHandle(Structure): Must be called before doing anything witht the device. """ ret = _libusb.usb_claim_interface(byref(self), num) - if _iswindows: - return + if -ret == ENOMEM: raise Error("Insufficient memory to claim interface") elif -ret == EBUSY: @@ -203,7 +199,7 @@ class DeviceHandle(Structure): rsize = _libusb.usb_control_msg(byref(self), rtype, request, \ value, index, byref(arr), \ size, timeout) - if rsize < size: + if rsize < size: raise Error('Could not read ' + str(size) + ' bytes on the '\ 'control bus. Read: ' + str(rsize) + ' bytes.') return arr @@ -296,8 +292,8 @@ _libusb.usb_reset.restype = c_int _libusb.usb_control_msg.restype = c_int _libusb.usb_bulk_read.restype = c_int _libusb.usb_bulk_write.restype = c_int -if _iswindows: - _libusb.usb_claim_interface.restype = NTStatus +_libusb.usb_set_configuration.argtypes = [POINTER(DeviceHandle), c_int] +_libusb.usb_set_configuration.restype = c_int _libusb.usb_init() def busses():