[linux-minidisc] [PATCH 04/17] Make transfer "buffer" field a c_void_p type.
- From: Vincent Pelletier <plr.vincent@gmail.com>
- To: <linux-minidisc@lists.fu-berlin.de>
- Date: Tue, 26 Jan 2010 21:12:26 +0100
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:in-reply-to:references:from:date:subject:to:mime-version :content-type:x-bogosity:x-uid; b=HeuKk4rSBo5nDEDNYK7TPBsrxEuOgu0qp0w/1WvT8l6s4r56xotSU1QJIPpYSvVRzS cpBs1UDbSEjYDUvB7LoxY1yGbAhAF0mX46Q9NC1Oet8YFHLjtlnboH4Wg6u+73bRb/Jq o+wt2JPIEWWHFKfz3F1hgrzchOfNbbK34O6RU=
- Subject: [linux-minidisc] [PATCH 04/17] Make transfer "buffer" field a c_void_p type.
This fields contains binary data, and ctypes' c_char_type stops reading
when encountering NULL byte.
---
netmd/libusb1.py | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/netmd/libusb1.py b/netmd/libusb1.py
index 6796860..4aae1ad 100644
--- a/netmd/libusb1.py
+++ b/netmd/libusb1.py
@@ -466,7 +466,7 @@ libusb_transfer._fields_ = [('dev_handle', libusb_device_handle_p),
('actual_length', c_int),
('callback', libusb_transfer_cb_fn_p),
('user_data', py_object),
- ('buffer', c_char_p),
+ ('buffer', c_void_p),
('num_iso_packets', c_int),
('iso_packet_desc', libusb_iso_packet_descriptor_p)
]
@@ -609,9 +609,9 @@ def libusb_control_transfer_get_data(transfer):
def libusb_control_transfer_get_setup(transfer):
return cast(transfer, libusb_control_setup_p)
-def libusb_fill_control_setup(buffer, bmRequestType, bRequest, wValue, wIndex,
+def libusb_fill_control_setup(setup_p, bmRequestType, bRequest, wValue, wIndex,
wLength):
- setup = cast(buffer, libusb_control_setup_p).contents
+ setup = cast(setup_p, libusb_control_setup_p).contents
setup.bmRequestType = bmRequestType
setup.bRequest = bRequest
setup.wValue = libusb_cpu_to_le16(wValue)
@@ -644,6 +644,7 @@ def libusb_fill_control_transfer(transfer_p, dev_handle, buffer, callback,
setup = cast(buffer, libusb_control_setup_p).contents
transfer.length = LIBUSB_CONTROL_SETUP_SIZE + \
libusb_le16_to_cpu(setup.wLength)
+ transfer.buffer = cast(buffer, c_void_p)
transfer.user_data = user_data
transfer.callback = callback
@@ -654,7 +655,7 @@ def libusb_fill_bulk_transfer(transfer_p, dev_handle, endpoint, buffer, length,
transfer.endpoint = endpoint
transfer.type = LIBUSB_TRANSFER_TYPE_BULK
transfer.timeout = timeout
- transfer.buffer = buffer
+ transfer.buffer = cast(buffer, c_void_p)
transfer.length = length
transfer.user_data = user_data
transfer.callback = callback
@@ -666,7 +667,7 @@ def libusb_fill_interrupt_transfer(transfer_p, dev_handle, endpoint, buffer,
transfer.endpoint = endpoint
transfer.type = LIBUSB_TRANSFER_TYPE_INTERRUPT
transfer.timeout = timeout
- transfer.buffer = buffer
+ transfer.buffer = cast(buffer, c_void_p)
transfer.length = length
transfer.user_data = user_data
transfer.callback = callback