1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-21 00:25:50 +00:00

New port comms/hidapi.

HIDAPI is a platform independent library that allows applications to
work with USB HID-Class devices.  While it can be used to communicate
with standard HID devices like keyboards, mice, and joysticks, it is
most useful when used with custom (Vendor-Defined) HID devices.
This commit is contained in:
Tijl Coosemans 2014-01-03 20:42:35 +00:00
parent 5a84d768c2
commit 5272612b0f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=338581
7 changed files with 124 additions and 0 deletions

View File

@ -62,6 +62,7 @@
SUBDIR += hamlib
SUBDIR += hcidump
SUBDIR += hf
SUBDIR += hidapi
SUBDIR += hylafax
SUBDIR += ibp
SUBDIR += java-commapi

24
comms/hidapi/Makefile Normal file
View File

@ -0,0 +1,24 @@
# $FreeBSD$
PORTNAME= hidapi
DISTVERSION= 0.8.0-rc1
CATEGORIES= comms
MAINTAINER= tijl@FreeBSD.org
COMMENT= Library to access USB HID-class devices
LICENSE= BSD3CLAUSE GPLv3
LICENSE_COMB= dual
USE_GITHUB= yes
GH_ACCOUNT= signal11
GH_TAGNAME= ${PORTNAME}-${DISTVERSION}
GH_COMMIT= 40cf516
USE_AUTOTOOLS= aclocal autoconf autoheader automake libtoolize
AUTOMAKE_ARGS= --add-missing
USES= iconv
USE_LDCONFIG= yes
.include <bsd.port.mk>

2
comms/hidapi/distinfo Normal file
View File

@ -0,0 +1,2 @@
SHA256 (hidapi-0.8.0-rc1.tar.gz) = 8cfea344b17d1dbd4d22fab70169307f5f0fbcf5f11f472322685d8d9f38d7ae
SIZE (hidapi-0.8.0-rc1.tar.gz) = 101821

View File

@ -0,0 +1,12 @@
--- configure.ac.orig
+++ configure.ac
@@ -93,7 +93,8 @@
LDFLAGS="$LDFLAGS -L/usr/local/lib"
LIBS="${LIBS}"
AC_CHECK_LIB([usb], [libusb_init], [LIBS_LIBUSB_PRIVATE="${LIBS_LIBUSB_PRIVATE} -lusb"], [hidapi_lib_error libusb])
- AC_CHECK_LIB([iconv], [iconv_open], [LIBS_LIBUSB_PRIVATE="${LIBS_LIBUSB_PRIVATE} -liconv"], [hidapi_lib_error libiconv])
+ AC_CHECK_DECLS([libusb_get_string_descriptor], [], [], [[#include <libusb.h>]])
+ AC_SEARCH_LIBS([iconv_open], [iconv], [], [hidapi_lib_error libiconv])
echo libs_priv: $LIBS_LIBUSB_PRIVATE
;;
*-mingw*)

View File

@ -0,0 +1,72 @@
--- libusb/hid.c.orig
+++ libusb/hid.c
@@ -25,6 +25,8 @@
#define _GNU_SOURCE /* needed for wcsdup() before glibc 2.10 */
+#include <config.h>
+
/* C */
#include <stdio.h>
#include <string.h>
@@ -250,7 +252,7 @@
}
#endif /* INVASIVE_GET_USAGE */
-#ifdef __FreeBSD__
+#if ! HAVE_DECL_LIBUSB_GET_STRING_DESCRIPTOR
/* The FreeBSD version of libusb doesn't have this funciton. In mainline
libusb, it's inlined in libusb.h. This function will bear a striking
resemblence to that one, because there's about one way to code it.
@@ -324,6 +326,7 @@
static wchar_t *get_usb_string(libusb_device_handle *dev, uint8_t idx)
{
char buf[512];
+ char buf2[512];
int len;
wchar_t *str = NULL;
wchar_t wbuf[256];
@@ -359,7 +362,7 @@
it is only passed into iconv() which does not need it. */
/* Initialize iconv. */
- ic = iconv_open("WCHAR_T", "UTF-16LE");
+ ic = iconv_open("char", "UTF-16LE");
if (ic == (iconv_t)-1) {
LOG("iconv_open() failed\n");
return NULL;
@@ -369,18 +372,21 @@
Skip the first character (2-bytes). */
inptr = buf+2;
inbytes = len-2;
- outptr = (char*) wbuf;
- outbytes = sizeof(wbuf);
+ outptr = buf2;
+ outbytes = sizeof(buf2);
res = iconv(ic, &inptr, &inbytes, &outptr, &outbytes);
if (res == (size_t)-1) {
LOG("iconv() failed\n");
goto err;
}
+ res = mbstowcs(wbuf, buf2, sizeof(wbuf)/sizeof(wbuf[0]));
+ if (res == (size_t)-1) {
+ LOG("mbstowcs() failed\n");
+ goto err;
+ }
/* Write the terminating NULL. */
wbuf[sizeof(wbuf)/sizeof(wbuf[0])-1] = 0x00000000;
- if (outbytes >= sizeof(wbuf[0]))
- *((wchar_t*)outptr) = 0x00000000;
/* Allocate and copy the string. */
str = wcsdup(wbuf);
@@ -757,7 +763,7 @@
libusb_cancel_transfer(dev->transfer);
while (!dev->cancelled)
- libusb_handle_events_completed(usb_context, &dev->cancelled);
+ libusb_handle_events(usb_context);
/* Now that the read thread is stopping, Wake any threads which are
waiting on data (in hid_read_timeout()). Do this under a mutex to

6
comms/hidapi/pkg-descr Normal file
View File

@ -0,0 +1,6 @@
HIDAPI is a platform independent library that allows applications to
work with USB HID-Class devices. While it can be used to communicate
with standard HID devices like keyboards, mice, and joysticks, it is
most useful when used with custom (Vendor-Defined) HID devices.
WWW: http://www.signal11.us/oss/hidapi/

7
comms/hidapi/pkg-plist Normal file
View File

@ -0,0 +1,7 @@
include/hidapi/hidapi.h
lib/libhidapi.a
lib/libhidapi.la
lib/libhidapi.so
lib/libhidapi.so.0
libdata/pkgconfig/hidapi.pc
@dirrm include/hidapi