FU Logo
  • Startseite
  • Kontakt
  • Impressum
  • Home
  • Listenauswahl
  • Anleitungen

[linux-minidisc] [PATCH 02/14] Make transfer "buffer" field a c_void_p type.

<-- thread -->
<-- date -->
  • From: Vincent Pelletier <plr.vincent@gmail.com>
  • To: <linux-minidisc@lists.fu-berlin.de>
  • Date: Thu, 11 Feb 2010 21:47:30 -0000
  • 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-length:x-uid; b=bzE2cU2eQrlTt58METrUzD++QHRtEGhhW8AAY+4egcOpMtkY0+6U7WCOE3LI4zpv6U RvKz4JzaDnfxRzRF7MK7ktTqE3q6IRcB6zCJ5153PJJTvcDPYFy2qrxrs9dFWAvaP/c1 SFnB3TNe1UtbJNPlJXyByq7nOMcWFx2yI8XmQ=
  • Subject: [linux-minidisc] [PATCH 02/14] 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
<-- thread -->
<-- date -->
  • References:
    • [linux-minidisc] [PATCH 01/14] Make some function accepting opaque data pointer accept a py_object.
      • From: Vincent Pelletier <plr.vincent@gmail.com>
  • linux-minidisc - February 2010 - Archives indexes sorted by:
    [ thread ] [ subject ] [ author ] [ date ]
  • Complete archive of the linux-minidisc mailing list
  • More info on this list...

Hilfe

  • FAQ
  • Dienstbeschreibung
  • ZEDAT Beratung
  • postmaster@lists.fu-berlin.de

Service-Navigation

  • Startseite
  • Listenauswahl

Einrichtung Mailingliste

  • ZEDAT-Portal
  • Mailinglisten Portal