packages feed

bindings-libusb 1.4.2 → 1.4.4

raw patch · 12 files changed

+104/−153 lines, 12 filesdep ~bindings-DSLPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: bindings-DSL

API changes (from Hackage documentation)

+ Bindings.Libusb.Asynchronous: p'libusb_control_setup'bRequest :: Ptr (C'libusb_control_setup) -> Ptr (Word8)
+ Bindings.Libusb.Asynchronous: p'libusb_control_setup'bmRequestType :: Ptr (C'libusb_control_setup) -> Ptr (Word8)
+ Bindings.Libusb.Asynchronous: p'libusb_control_setup'wIndex :: Ptr (C'libusb_control_setup) -> Ptr (Word16)
+ Bindings.Libusb.Asynchronous: p'libusb_control_setup'wLength :: Ptr (C'libusb_control_setup) -> Ptr (Word16)
+ Bindings.Libusb.Asynchronous: p'libusb_control_setup'wValue :: Ptr (C'libusb_control_setup) -> Ptr (Word16)
+ Bindings.Libusb.Asynchronous: p'libusb_iso_packet_descriptor'actual_length :: Ptr (C'libusb_iso_packet_descriptor) -> Ptr (CUInt)
+ Bindings.Libusb.Asynchronous: p'libusb_iso_packet_descriptor'length :: Ptr (C'libusb_iso_packet_descriptor) -> Ptr (CUInt)
+ Bindings.Libusb.Asynchronous: p'libusb_iso_packet_descriptor'status :: Ptr (C'libusb_iso_packet_descriptor) -> Ptr (C'libusb_transfer_status)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'actual_length :: Ptr (C'libusb_transfer) -> Ptr (CInt)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'buffer :: Ptr (C'libusb_transfer) -> Ptr (Ptr CUChar)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'callback :: Ptr (C'libusb_transfer) -> Ptr (C'libusb_transfer_cb_fn)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'dev_handle :: Ptr (C'libusb_transfer) -> Ptr (Ptr C'libusb_device_handle)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'endpoint :: Ptr (C'libusb_transfer) -> Ptr (CUChar)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'flags :: Ptr (C'libusb_transfer) -> Ptr (Word8)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'length :: Ptr (C'libusb_transfer) -> Ptr (CInt)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'num_iso_packets :: Ptr (C'libusb_transfer) -> Ptr (CInt)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'status :: Ptr (C'libusb_transfer) -> Ptr (C'libusb_transfer_status)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'timeout :: Ptr (C'libusb_transfer) -> Ptr (CUInt)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'type :: Ptr (C'libusb_transfer) -> Ptr (CUChar)
+ Bindings.Libusb.Asynchronous: p'libusb_transfer'user_data :: Ptr (C'libusb_transfer) -> Ptr (Ptr ())
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'MaxPower :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'bConfigurationValue :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'bDescriptorType :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'bLength :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'bNumInterfaces :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'bmAttributes :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'extra :: Ptr (C'libusb_config_descriptor) -> Ptr (Ptr CUChar)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'extra_length :: Ptr (C'libusb_config_descriptor) -> Ptr (CInt)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'iConfiguration :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'interface :: Ptr (C'libusb_config_descriptor) -> Ptr (Ptr C'libusb_interface)
+ Bindings.Libusb.Descriptors: p'libusb_config_descriptor'wTotalLength :: Ptr (C'libusb_config_descriptor) -> Ptr (Word16)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bDescriptorType :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bDeviceClass :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bDeviceProtocol :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bDeviceSubClass :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bLength :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bMaxPacketSize0 :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bNumConfigurations :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bcdDevice :: Ptr (C'libusb_device_descriptor) -> Ptr (Word16)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'bcdUSB :: Ptr (C'libusb_device_descriptor) -> Ptr (Word16)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'iManufacturer :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'iProduct :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'iSerialNumber :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'idProduct :: Ptr (C'libusb_device_descriptor) -> Ptr (Word16)
+ Bindings.Libusb.Descriptors: p'libusb_device_descriptor'idVendor :: Ptr (C'libusb_device_descriptor) -> Ptr (Word16)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'bDescriptorType :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'bEndpointAddress :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'bInterval :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'bLength :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'bRefresh :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'bSynchAddress :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'bmAttributes :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'extra :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Ptr CUChar)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'extra_length :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (CInt)
+ Bindings.Libusb.Descriptors: p'libusb_endpoint_descriptor'wMaxPacketSize :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word16)
+ Bindings.Libusb.Descriptors: p'libusb_interface'altsetting :: Ptr (C'libusb_interface) -> Ptr (Ptr C'libusb_interface_descriptor)
+ Bindings.Libusb.Descriptors: p'libusb_interface'num_altsetting :: Ptr (C'libusb_interface) -> Ptr (CInt)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'bAlternateSetting :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'bDescriptorType :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'bInterfaceClass :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'bInterfaceNumber :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'bInterfaceProtocol :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'bInterfaceSubClass :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'bLength :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'bNumEndpoints :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'endpoint :: Ptr (C'libusb_interface_descriptor) -> Ptr (Ptr C'libusb_endpoint_descriptor)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'extra :: Ptr (C'libusb_interface_descriptor) -> Ptr (Ptr CUChar)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'extra_length :: Ptr (C'libusb_interface_descriptor) -> Ptr (CInt)
+ Bindings.Libusb.Descriptors: p'libusb_interface_descriptor'iInterface :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
+ Bindings.Libusb.PollingAndTiming: c'libusb_pollfds_handle_timeouts :: Ptr C'libusb_context -> IO CInt
+ Bindings.Libusb.PollingAndTiming: p'libusb_pollfd'events :: Ptr (C'libusb_pollfd) -> Ptr (CShort)
+ Bindings.Libusb.PollingAndTiming: p'libusb_pollfd'fd :: Ptr (C'libusb_pollfd) -> Ptr (CInt)
+ Bindings.Libusb.PollingAndTiming: p'libusb_pollfds_handle_timeouts :: FunPtr (Ptr C'libusb_context -> IO CInt)

Files

LICENSE view
@@ -1,4 +1,6 @@-Copyright (c) <2009>, <Maurício C. Antunes>+Copyright (c) 2009-2011 Maurício C. Antunes <mauricio.antunes@gmail.com>+Copyright (c) 2011      Bas van Dijk <v.dijk.bas@gmail.com>+ All rights reserved.  Redistribution and use in source and binary forms, with or without
+ README.markdown view
@@ -0,0 +1,31 @@+Low level bindings to+[libusb-1.*](http://libusb.sourceforge.net/api-1.0/)++This package uses+[bindings-DSL](http://hackage.haskell.org/package/bindings-DSL) and+conforms to its naming convention.++For a higher-level and more Haskell friendly binding (which uses this+package) see the [usb](http://hackage.haskell.org/package/usb)+package.++# Installing++Make sure the `libusb` C library is installed:++* *Ubuntu Linux*: `sudo apt-get install libusb-1.0-0-dev`+* *Gentoo Linux*: `sudo emerge libusb`+* *MS Windows*:+    [Download `libusb` for MS Windows](http://www.libusb.org/wiki/windows_backend#LatestBinarySnapshots)+     and extract it somewhere e.g. `C:\Program Files\libusb\libusb1`.++    Important build-time files: `libusb-1.0\include\libusb.h` and+    `MinGW32\dll\libusb-1.0.dll.a`++    Important run-time files: `MinGW32\dll\libusb-1.0.dll`++    Make sure to use the following cabal options:++        --extra-include-dirs="C:\Program Files\libusb\libusb1\include\libusb-1.0"++        --extra-lib-dirs="C:\Program Files\libusb\libusb1\MinGW32\dll"
bindings-libusb.cabal view
@@ -1,23 +1,38 @@-cabal-version: >= 1.2.3-name: bindings-libusb-homepage: http://bitbucket.org/mauricio/bindings-libusb-synopsis:-  Low level bindings to libusb.-version: 1.4.2-license: BSD3-license-file: LICENSE-maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>-author: Maurício C. Antunes-build-type: Simple-category: FFI-bug-reports: http://bitbucket.org/mauricio/bindings-libusb/issues+name:          bindings-libusb+version:       1.4.4+cabal-version: >= 1.6+license:       BSD3+license-file:  LICENSE+author:        Maurício C. Antunes <mauricio.antunes@gmail.com>+maintainer:    Bas van Dijk <v.dijk.bas@gmail.com>+build-type:    Simple+category:      FFI+homepage:      https://github.com/basvandijk/bindings-libusb/+bug-reports:   https://github.com/basvandijk/bindings-libusb/issues+synopsis:      Low level bindings to libusb.+description:   Low level bindings to @libusb-1.*@:+               .+               <http://libusb.sourceforge.net/api-1.0/>+               .+               This package uses @bindings-DSL@+               and conforms to its naming convention.+               .+               For a higher-level and more Haskell friendly binding+               (which uses this package) see the @usb@ package:+               .+               <http://hackage.haskell.org/package/usb>++extra-source-files: README.markdown++source-repository head+  Type:     git+  Location: git://github.com/basvandijk/bindings-libusb.git+ library   hs-source-dirs: src-  extensions:-    ForeignFunctionInterface   build-depends:     base >= 3 && < 5,-    bindings-DSL >= 1.0 && < 1.1+    bindings-DSL >= 1.0.14 && < 1.1   exposed-modules:     Bindings.Libusb     Bindings.Libusb.Asynchronous@@ -29,5 +44,10 @@     Bindings.Libusb.Synchronous   c-sources:     src/inlines.c-    src/core.c-  pkgconfig-depends: libusb-1.0 >= 1.0++  if os(windows)+    includes: libusb.h+    extra-libraries: libusb-1.0+    cc-options: -DBINDINGS_STDCALLCONV+  else+    pkgconfig-depends: libusb-1.0 >= 1.0.5
src/Bindings/Libusb.hs view
@@ -1,1 +1,17 @@-module Bindings.Libusb (module Bindings.Libusb.Asynchronous,module Bindings.Libusb.Descriptors,module Bindings.Libusb.HandlingAndEnumeration,module Bindings.Libusb.InitializationDeinitialization,module Bindings.Libusb.Miscellaneous,module Bindings.Libusb.PollingAndTiming,module Bindings.Libusb.Synchronous) where {import Bindings.Libusb.Asynchronous;import Bindings.Libusb.Descriptors;import Bindings.Libusb.HandlingAndEnumeration;import Bindings.Libusb.InitializationDeinitialization;import Bindings.Libusb.Miscellaneous;import Bindings.Libusb.PollingAndTiming;import Bindings.Libusb.Synchronous}+module Bindings.Libusb+    ( module Bindings.Libusb.Asynchronous+    , module Bindings.Libusb.Descriptors+    , module Bindings.Libusb.HandlingAndEnumeration+    , module Bindings.Libusb.InitializationDeinitialization+    , module Bindings.Libusb.Miscellaneous+    , module Bindings.Libusb.PollingAndTiming+    , module Bindings.Libusb.Synchronous+    ) where++import Bindings.Libusb.Asynchronous+import Bindings.Libusb.Descriptors+import Bindings.Libusb.HandlingAndEnumeration+import Bindings.Libusb.InitializationDeinitialization+import Bindings.Libusb.Miscellaneous+import Bindings.Libusb.PollingAndTiming+import Bindings.Libusb.Synchronous
src/Bindings/Libusb/Asynchronous.hsc view
@@ -1,3 +1,5 @@+{-# LANGUAGE ForeignFunctionInterface #-}+ #include <bindings.dsl.h> #include <libusb.h> 
src/Bindings/Libusb/Descriptors.hsc view
@@ -1,3 +1,5 @@+{-# LANGUAGE ForeignFunctionInterface #-}+ #include <bindings.dsl.h> #include <libusb.h> 
src/Bindings/Libusb/HandlingAndEnumeration.hsc view
@@ -1,3 +1,5 @@+{-# LANGUAGE ForeignFunctionInterface #-}+ #include <bindings.dsl.h> #include <libusb.h> 
src/Bindings/Libusb/InitializationDeinitialization.hsc view
@@ -1,3 +1,5 @@+{-# LANGUAGE ForeignFunctionInterface #-}+ #include <bindings.dsl.h> #include <libusb.h> 
src/Bindings/Libusb/Miscellaneous.hsc view
@@ -1,3 +1,5 @@+{-# LANGUAGE ForeignFunctionInterface #-}+ #include <bindings.dsl.h> #include <libusb.h> 
src/Bindings/Libusb/PollingAndTiming.hsc view
@@ -1,3 +1,5 @@+{-# LANGUAGE ForeignFunctionInterface #-}+ #include <bindings.dsl.h> #include <libusb.h> @@ -31,6 +33,7 @@ #ccall libusb_handle_events , Ptr <libusb_context> -> IO CInt #ccall libusb_handle_events_locked , Ptr <libusb_context> ->  \   Ptr <timeval> -> IO CInt+#ccall libusb_pollfds_handle_timeouts , Ptr <libusb_context> -> IO CInt #ccall libusb_get_next_timeout , Ptr <libusb_context> ->  \   Ptr <timeval> -> IO CInt #ccall libusb_set_pollfd_notifiers , Ptr <libusb_context> ->  \
src/Bindings/Libusb/Synchronous.hsc view
@@ -1,3 +1,5 @@+{-# LANGUAGE ForeignFunctionInterface #-}+ #include <bindings.dsl.h> #include <libusb.h> 
− src/core.c
@@ -1,133 +0,0 @@-/*- * All code from this file comes from libusb-1.0.5. It is here- * to provide 'libusb_get_max_iso_packet_size' for those using- * libusb-1.0.1, and will be removed when at least libusb-1.0.3- * becomes standard in most popular Linux distributions.- *- * This is LGPL code, and should not be mixed with the rest of- * the source. For details on file authors and history check- * libusb-1.0.* source package, available on its website.- */--#include <errno.h>-#include <poll.h>-#include <stdarg.h>-#include <stdio.h>-#include <stdlib.h>-#include <string.h>-#include <sys/types.h>-#include <unistd.h>--#include "libusb.h"--struct libusb_device {- pthread_mutex_t a; int b;- struct libusb_context *ctx;-};--enum usbi_log_level {- LOG_LEVEL_DEBUG,- LOG_LEVEL_INFO,- LOG_LEVEL_WARNING,- LOG_LEVEL_ERROR,-};---static const struct libusb_endpoint_descriptor *find_endpoint(- struct libusb_config_descriptor *, unsigned char);--void usbi_log(struct libusb_context *ctx, enum usbi_log_level level,- const char *function, const char *format, ...)-{- va_list args;- FILE *stream = stdout;- const char *prefix;-- switch (level) {- case LOG_LEVEL_INFO:-  prefix = "info";-  break;- case LOG_LEVEL_WARNING:-  stream = stderr;-  prefix = "warning";-  break;- case LOG_LEVEL_ERROR:-  stream = stderr;-  prefix = "error";-  break;- case LOG_LEVEL_DEBUG:-  stream = stderr;-  prefix = "debug";-  break;- default:-  stream = stderr;-  prefix = "unknown";-  break;- }-- fprintf(stream, "libusb:%s [%s] ", prefix, function);-- va_start (args, format);- vfprintf(stream, format, args);- va_end (args);-- fprintf(stream, "\n");-}--int libusb_get_max_iso_packet_size(libusb_device *dev,- unsigned char endpoint)-{- struct libusb_config_descriptor *config;- const struct libusb_endpoint_descriptor *ep;- enum libusb_transfer_type ep_type;- uint16_t val;- int r;-- r = libusb_get_active_config_descriptor(dev, &config);- if (r < 0) {-  usbi_log((dev)->ctx, 3, __FUNCTION__, "could not retrieve active config descriptor");-  return LIBUSB_ERROR_OTHER;- }-- ep = find_endpoint(config, endpoint);- if (!ep)-  return LIBUSB_ERROR_NOT_FOUND;-- val = ep->wMaxPacketSize;- ep_type = ep->bmAttributes & 0x3;- libusb_free_config_descriptor(config);-- r = val & 0x07ff;- if (ep_type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS-   || ep_type == LIBUSB_TRANSFER_TYPE_INTERRUPT)-  r *= (1 + ((val >> 11) & 3));- return r;-}--static const struct libusb_endpoint_descriptor *find_endpoint(- struct libusb_config_descriptor *config, unsigned char endpoint)-{- int iface_idx;- for (iface_idx = 0; iface_idx < config->bNumInterfaces; iface_idx++) {-  const struct libusb_interface *iface = &config->interface[iface_idx];-  int altsetting_idx;--  for (altsetting_idx = 0; altsetting_idx < iface->num_altsetting;-    altsetting_idx++) {-   const struct libusb_interface_descriptor *altsetting-    = &iface->altsetting[altsetting_idx];-   int ep_idx;--   for (ep_idx = 0; ep_idx < altsetting->bNumEndpoints; ep_idx++) {-    const struct libusb_endpoint_descriptor *ep =-     &altsetting->endpoint[ep_idx];-    if (ep->bEndpointAddress == endpoint)-     return ep;-   }-  }- }- return NULL;-}---