Skip to content

Commit aaf5f3d

Browse files
committed
add libusb-specific hid_libusb_wrap_sys_device
Rationale: on Android one must use UsbManager, to access any USB device. As a result, libraries like libusb can only use file descriptors that are provided by UsbManager. libusb has an API to use such file descriptors: hid_libusb_wrap_sys_device. Having hid_libusb_wrap_sys_device currently is the only way to make hidapi work on Android without root access and without custom Android builds. Relevant info: https://github.com/libusb/libusb/pull/830/files
1 parent 301139e commit aaf5f3d

File tree

5 files changed

+336
-197
lines changed

5 files changed

+336
-197
lines changed

.github/workflows/builds.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ jobs:
4747
- name: Check artifacts
4848
uses: andstor/file-existence-action@v1
4949
with:
50-
files: "install/shared/lib/libhidapi.dylib, install/shared/include/hidapi/hidapi.h, install/framework/lib/hidapi.framework/hidapi, install/framework/lib/hidapi.framework/Headers/hidapi.h"
50+
files: "install/shared/lib/libhidapi.dylib, \
51+
install/shared/include/hidapi/hidapi.h, \
52+
install/framework/lib/hidapi.framework/hidapi, \
53+
install/framework/lib/hidapi.framework/Headers/hidapi.h"
5154
allow_failure: true
5255

5356
ubuntu-cmake:
@@ -76,7 +79,14 @@ jobs:
7679
- name: Check artifacts
7780
uses: andstor/file-existence-action@v1
7881
with:
79-
files: "install/shared/lib/libhidapi-libusb.so, install/shared/lib/libhidapi-hidraw.so, install/shared/include/hidapi/hidapi.h, install/static/lib/libhidapi-libusb.a, install/static/lib/libhidapi-hidraw.a, install/static/include/hidapi/hidapi.h"
82+
files: "install/shared/lib/libhidapi-libusb.so, \
83+
install/shared/lib/libhidapi-hidraw.so, \
84+
install/shared/include/hidapi/hidapi.h, \
85+
install/shared/include/hidapi/hidapi_libusb.h, \
86+
install/static/lib/libhidapi-libusb.a, \
87+
install/static/lib/libhidapi-hidraw.a, \
88+
install/static/include/hidapi/hidapi.h, \
89+
install/static/include/hidapi/hidapi_libusb.h"
8090
allow_failure: true
8191

8292
windows-cmake-msvc:

libusb/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 3.6.3 FATAL_ERROR)
33
add_library(hidapi_libusb
44
${HIDAPI_PUBLIC_HEADERS}
55
hid.c
6+
hidapi_libusb.h
67
)
78
target_link_libraries(hidapi_libusb PUBLIC hidapi_include)
89

@@ -23,7 +24,7 @@ set_target_properties(hidapi_libusb
2324
OUTPUT_NAME "hidapi-libusb"
2425
VERSION ${PROJECT_VERSION}
2526
SOVERSION ${PROJECT_VERSION_MAJOR}
26-
PUBLIC_HEADER "${HIDAPI_PUBLIC_HEADERS}"
27+
PUBLIC_HEADER "${HIDAPI_PUBLIC_HEADERS};hidapi_libusb.h"
2728
)
2829

2930
# compatibility with find_package()

libusb/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ libhidapi_la_LIBADD = $(LIBS_LIBUSB)
2929
endif
3030

3131
hdrdir = $(includedir)/hidapi
32-
hdr_HEADERS = $(top_srcdir)/hidapi/hidapi.h
32+
hdr_HEADERS = $(top_srcdir)/hidapi/hidapi.h hidapi_libusb.h
3333

3434
EXTRA_DIST = Makefile-manual

0 commit comments

Comments
 (0)