usb 2.1.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +20 -2
  3. package/dist/index.d.ts +2 -1
  4. package/dist/index.js +3 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/usb/bindings.d.ts +4 -0
  7. package/dist/usb/device.js +5 -0
  8. package/dist/usb/device.js.map +1 -1
  9. package/dist/usb/index.js +7 -16
  10. package/dist/usb/index.js.map +1 -1
  11. package/dist/webusb/webusb-device.d.ts +2 -1
  12. package/dist/webusb/webusb-device.js +21 -14
  13. package/dist/webusb/webusb-device.js.map +1 -1
  14. package/libusb/.gitattributes +2 -6
  15. package/libusb/.private/appveyor_build.sh +22 -0
  16. package/libusb/.private/bm.sh +1 -1
  17. package/libusb/.private/ci-build.sh +67 -0
  18. package/libusb/.private/ci-container-build.sh +70 -0
  19. package/libusb/.private/post-rewrite.sh +5 -1
  20. package/libusb/.private/pre-commit.sh +5 -1
  21. package/libusb/.private/wbs.txt +4 -19
  22. package/libusb/.travis.yml +32 -23
  23. package/libusb/AUTHORS +86 -3
  24. package/libusb/ChangeLog +54 -3
  25. package/libusb/INSTALL_WIN.txt +22 -44
  26. package/libusb/Makefile.am +32 -10
  27. package/libusb/{README.md → README} +2 -2
  28. package/libusb/README.git +3 -3
  29. package/libusb/Xcode/common.xcconfig +23 -19
  30. package/libusb/Xcode/config.h +25 -13
  31. package/libusb/Xcode/libusb.xcodeproj/project.pbxproj +511 -109
  32. package/libusb/android/README +90 -54
  33. package/libusb/android/config.h +23 -43
  34. package/libusb/android/examples/unrooted_android.c +300 -0
  35. package/libusb/android/examples/unrooted_android.h +36 -0
  36. package/libusb/android/jni/Android.mk +1 -1
  37. package/libusb/android/jni/Application.mk +16 -0
  38. package/libusb/android/jni/examples.mk +63 -29
  39. package/libusb/android/jni/libusb.mk +14 -8
  40. package/libusb/android/jni/tests.mk +13 -24
  41. package/libusb/appveyor.yml +73 -30
  42. package/libusb/autogen.sh +5 -3
  43. package/libusb/bootstrap.sh +6 -2
  44. package/libusb/configure.ac +314 -227
  45. package/libusb/doc/Makefile.in +22 -0
  46. package/libusb/doc/doxygen.cfg.in +460 -223
  47. package/libusb/examples/Makefile.am +6 -13
  48. package/libusb/examples/dpfp.c +276 -73
  49. package/libusb/examples/ezusb.c +18 -8
  50. package/libusb/examples/ezusb.h +6 -17
  51. package/libusb/examples/fxload.c +4 -5
  52. package/libusb/examples/hotplugtest.c +1 -1
  53. package/libusb/examples/sam3u_benchmark.c +59 -24
  54. package/libusb/examples/testlibusb.c +138 -104
  55. package/libusb/examples/xusb.c +26 -22
  56. package/libusb/libusb/Makefile.am +57 -70
  57. package/libusb/libusb/Makefile.am.extra +26 -0
  58. package/libusb/libusb/core.c +432 -423
  59. package/libusb/libusb/descriptor.c +365 -419
  60. package/libusb/libusb/hotplug.c +200 -104
  61. package/libusb/libusb/io.c +522 -535
  62. package/libusb/libusb/libusb-1.0.def +7 -3
  63. package/libusb/libusb/libusb-1.0.rc +1 -9
  64. package/libusb/libusb/libusb.h +302 -226
  65. package/libusb/libusb/libusbi.h +607 -316
  66. package/libusb/libusb/os/darwin_usb.c +703 -329
  67. package/libusb/libusb/os/darwin_usb.h +39 -15
  68. package/libusb/libusb/os/events_posix.c +300 -0
  69. package/libusb/libusb/os/events_posix.h +59 -0
  70. package/libusb/libusb/os/events_windows.c +214 -0
  71. package/libusb/{msvc/missing.h → libusb/os/events_windows.h} +25 -11
  72. package/libusb/libusb/os/haiku_pollfs.cpp +14 -9
  73. package/libusb/libusb/os/haiku_usb.h +12 -12
  74. package/libusb/libusb/os/haiku_usb_backend.cpp +36 -37
  75. package/libusb/libusb/os/haiku_usb_raw.cpp +80 -116
  76. package/libusb/libusb/os/linux_netlink.c +55 -63
  77. package/libusb/libusb/os/linux_udev.c +61 -69
  78. package/libusb/libusb/os/linux_usbfs.c +926 -1015
  79. package/libusb/libusb/os/linux_usbfs.h +74 -57
  80. package/libusb/libusb/os/netbsd_usb.c +103 -168
  81. package/libusb/libusb/os/null_usb.c +111 -0
  82. package/libusb/libusb/os/openbsd_usb.c +71 -120
  83. package/libusb/libusb/os/sunos_usb.c +289 -375
  84. package/libusb/libusb/os/sunos_usb.h +0 -1
  85. package/libusb/libusb/os/threads_posix.c +81 -32
  86. package/libusb/libusb/os/threads_posix.h +19 -23
  87. package/libusb/libusb/os/threads_windows.c +9 -95
  88. package/libusb/libusb/os/threads_windows.h +33 -31
  89. package/libusb/libusb/os/windows_common.c +915 -0
  90. package/libusb/libusb/os/windows_common.h +330 -42
  91. package/libusb/libusb/os/windows_usbdk.c +161 -267
  92. package/libusb/libusb/os/windows_usbdk.h +5 -2
  93. package/libusb/libusb/os/windows_winusb.c +1355 -1192
  94. package/libusb/libusb/os/windows_winusb.h +167 -167
  95. package/libusb/libusb/strerror.c +20 -30
  96. package/libusb/libusb/sync.c +20 -21
  97. package/libusb/libusb/version.h +1 -1
  98. package/libusb/libusb/version_nano.h +1 -1
  99. package/libusb/msvc/.gitattributes +3 -0
  100. package/libusb/msvc/config.h +27 -20
  101. package/libusb/msvc/{hotplugtest_2012.vcxproj → dpfp_2013.vcxproj} +14 -10
  102. package/libusb/msvc/dpfp_2013.vcxproj.filters +26 -0
  103. package/libusb/msvc/{listdevs_2010.vcxproj → dpfp_2015.vcxproj} +14 -9
  104. package/libusb/msvc/dpfp_2015.vcxproj.filters +26 -0
  105. package/libusb/msvc/dpfp_2017.vcxproj +106 -0
  106. package/libusb/msvc/dpfp_2017.vcxproj.filters +26 -0
  107. package/libusb/msvc/dpfp_2019.vcxproj +106 -0
  108. package/libusb/msvc/dpfp_2019.vcxproj.filters +26 -0
  109. package/libusb/msvc/dpfp_threaded_2013.vcxproj +87 -0
  110. package/libusb/msvc/dpfp_threaded_2013.vcxproj.filters +26 -0
  111. package/libusb/msvc/dpfp_threaded_2015.vcxproj +87 -0
  112. package/libusb/msvc/dpfp_threaded_2015.vcxproj.filters +26 -0
  113. package/libusb/msvc/dpfp_threaded_2017.vcxproj +106 -0
  114. package/libusb/msvc/dpfp_threaded_2017.vcxproj.filters +26 -0
  115. package/libusb/msvc/{fxload_2012.vcxproj → dpfp_threaded_2019.vcxproj} +32 -17
  116. package/libusb/msvc/dpfp_threaded_2019.vcxproj.filters +26 -0
  117. package/libusb/msvc/fxload_2013.vcxproj +6 -3
  118. package/libusb/msvc/fxload_2013.vcxproj.filters +35 -0
  119. package/libusb/msvc/fxload_2015.vcxproj +6 -3
  120. package/libusb/msvc/fxload_2015.vcxproj.filters +35 -0
  121. package/libusb/msvc/fxload_2017.vcxproj +6 -7
  122. package/libusb/msvc/fxload_2017.vcxproj.filters +35 -0
  123. package/libusb/msvc/{fxload_2010.vcxproj → fxload_2019.vcxproj} +29 -6
  124. package/libusb/msvc/fxload_2019.vcxproj.filters +35 -0
  125. package/libusb/{examples → msvc}/getopt/getopt.c +0 -0
  126. package/libusb/{examples → msvc}/getopt/getopt.h +0 -0
  127. package/libusb/{examples → msvc}/getopt/getopt1.c +0 -0
  128. package/libusb/msvc/getopt_2013.vcxproj +4 -5
  129. package/libusb/msvc/getopt_2013.vcxproj.filters +26 -0
  130. package/libusb/msvc/getopt_2015.vcxproj +4 -4
  131. package/libusb/msvc/getopt_2015.vcxproj.filters +26 -0
  132. package/libusb/msvc/getopt_2017.vcxproj +4 -10
  133. package/libusb/msvc/getopt_2017.vcxproj.filters +26 -0
  134. package/libusb/msvc/{getopt_2012.vcxproj → getopt_2019.vcxproj} +25 -6
  135. package/libusb/msvc/getopt_2019.vcxproj.filters +26 -0
  136. package/libusb/msvc/hotplugtest_2013.vcxproj +6 -3
  137. package/libusb/msvc/hotplugtest_2013.vcxproj.filters +23 -0
  138. package/libusb/msvc/hotplugtest_2015.vcxproj +6 -3
  139. package/libusb/msvc/hotplugtest_2015.vcxproj.filters +23 -0
  140. package/libusb/msvc/hotplugtest_2017.vcxproj +6 -7
  141. package/libusb/msvc/hotplugtest_2017.vcxproj.filters +23 -0
  142. package/libusb/msvc/hotplugtest_2019.vcxproj +105 -0
  143. package/libusb/msvc/hotplugtest_2019.vcxproj.filters +23 -0
  144. package/libusb/msvc/libusb_2013.sln +50 -20
  145. package/libusb/msvc/libusb_2015.sln +51 -21
  146. package/libusb/msvc/libusb_2017.sln +90 -36
  147. package/libusb/msvc/libusb_2019.sln +240 -0
  148. package/libusb/msvc/libusb_dll_2013.vcxproj +6 -9
  149. package/libusb/msvc/libusb_dll_2013.vcxproj.filters +94 -0
  150. package/libusb/msvc/libusb_dll_2015.vcxproj +6 -8
  151. package/libusb/msvc/libusb_dll_2015.vcxproj.filters +94 -0
  152. package/libusb/msvc/libusb_dll_2017.vcxproj +6 -16
  153. package/libusb/msvc/libusb_dll_2017.vcxproj.filters +94 -0
  154. package/libusb/msvc/{libusb_dll_2010.vcxproj → libusb_dll_2019.vcxproj} +27 -9
  155. package/libusb/msvc/libusb_dll_2019.vcxproj.filters +94 -0
  156. package/libusb/msvc/libusb_static_2013.vcxproj +5 -9
  157. package/libusb/msvc/libusb_static_2013.vcxproj.filters +80 -0
  158. package/libusb/msvc/libusb_static_2015.vcxproj +5 -8
  159. package/libusb/msvc/libusb_static_2015.vcxproj.filters +80 -0
  160. package/libusb/msvc/libusb_static_2017.vcxproj +5 -8
  161. package/libusb/msvc/libusb_static_2017.vcxproj.filters +80 -0
  162. package/libusb/msvc/{libusb_static_2010.vcxproj → libusb_static_2019.vcxproj} +26 -9
  163. package/libusb/msvc/libusb_static_2019.vcxproj.filters +80 -0
  164. package/libusb/msvc/listdevs_2013.vcxproj +6 -3
  165. package/libusb/msvc/listdevs_2013.vcxproj.filters +23 -0
  166. package/libusb/msvc/listdevs_2015.vcxproj +6 -3
  167. package/libusb/msvc/listdevs_2015.vcxproj.filters +23 -0
  168. package/libusb/msvc/listdevs_2017.vcxproj +6 -7
  169. package/libusb/msvc/listdevs_2017.vcxproj.filters +23 -0
  170. package/libusb/msvc/listdevs_2019.vcxproj +105 -0
  171. package/libusb/msvc/listdevs_2019.vcxproj.filters +23 -0
  172. package/libusb/msvc/{listdevs_2012.vcxproj → sam3u_benchmark_2013.vcxproj} +13 -9
  173. package/libusb/msvc/sam3u_benchmark_2013.vcxproj.filters +26 -0
  174. package/libusb/msvc/{hotplugtest_2010.vcxproj → sam3u_benchmark_2015.vcxproj} +13 -8
  175. package/libusb/msvc/sam3u_benchmark_2015.vcxproj.filters +26 -0
  176. package/libusb/msvc/sam3u_benchmark_2017.vcxproj +106 -0
  177. package/libusb/msvc/sam3u_benchmark_2017.vcxproj.filters +26 -0
  178. package/libusb/msvc/sam3u_benchmark_2019.vcxproj +106 -0
  179. package/libusb/msvc/sam3u_benchmark_2019.vcxproj.filters +26 -0
  180. package/libusb/msvc/stress_2013.vcxproj +4 -2
  181. package/libusb/msvc/stress_2013.vcxproj.filters +32 -0
  182. package/libusb/msvc/stress_2015.vcxproj +4 -2
  183. package/libusb/msvc/stress_2015.vcxproj.filters +32 -0
  184. package/libusb/msvc/stress_2017.vcxproj +4 -6
  185. package/libusb/msvc/stress_2017.vcxproj.filters +32 -0
  186. package/libusb/msvc/{stress_2010.vcxproj → stress_2019.vcxproj} +26 -4
  187. package/libusb/msvc/stress_2019.vcxproj.filters +32 -0
  188. package/libusb/msvc/testlibusb_2013.vcxproj +6 -3
  189. package/libusb/msvc/testlibusb_2013.vcxproj.filters +23 -0
  190. package/libusb/msvc/testlibusb_2015.vcxproj +6 -3
  191. package/libusb/msvc/testlibusb_2015.vcxproj.filters +23 -0
  192. package/libusb/msvc/testlibusb_2017.vcxproj +6 -7
  193. package/libusb/msvc/testlibusb_2017.vcxproj.filters +23 -0
  194. package/libusb/msvc/{testlibusb_2010.vcxproj → testlibusb_2019.vcxproj} +28 -5
  195. package/libusb/msvc/testlibusb_2019.vcxproj.filters +23 -0
  196. package/libusb/msvc/xusb_2013.vcxproj +6 -3
  197. package/libusb/msvc/xusb_2013.vcxproj.filters +23 -0
  198. package/libusb/msvc/xusb_2015.vcxproj +6 -3
  199. package/libusb/msvc/xusb_2015.vcxproj.filters +23 -0
  200. package/libusb/msvc/xusb_2017.vcxproj +6 -7
  201. package/libusb/msvc/xusb_2017.vcxproj.filters +23 -0
  202. package/libusb/msvc/{xusb_2010.vcxproj → xusb_2019.vcxproj} +28 -5
  203. package/libusb/msvc/xusb_2019.vcxproj.filters +23 -0
  204. package/libusb/tests/Makefile.am +13 -1
  205. package/libusb/tests/libusb_testlib.h +12 -43
  206. package/libusb/tests/stress.c +59 -50
  207. package/libusb/tests/testlib.c +78 -171
  208. package/libusb/tests/umockdev.c +1175 -0
  209. package/libusb.gypi +10 -11
  210. package/package.json +2 -2
  211. package/prebuilds/android-arm/node.napi.armv7.node +0 -0
  212. package/prebuilds/android-arm64/node.napi.armv8.node +0 -0
  213. package/prebuilds/darwin-x64+arm64/node.napi.node +0 -0
  214. package/prebuilds/linux-arm/node.napi.armv6.node +0 -0
  215. package/prebuilds/linux-arm/node.napi.armv7.node +0 -0
  216. package/prebuilds/linux-arm64/node.napi.armv8.node +0 -0
  217. package/prebuilds/linux-ia32/node.napi.node +0 -0
  218. package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
  219. package/prebuilds/linux-x64/node.napi.musl.node +0 -0
  220. package/prebuilds/win32-ia32/node.napi.node +0 -0
  221. package/prebuilds/win32-x64/node.napi.node +0 -0
  222. package/src/device.cc +12 -7
  223. package/src/node_usb.cc +10 -0
  224. package/test/usb.coffee +6 -0
  225. package/tsc/index.ts +2 -0
  226. package/tsc/usb/bindings.ts +5 -0
  227. package/tsc/usb/device.ts +6 -0
  228. package/tsc/usb/index.ts +5 -8
  229. package/tsc/webusb/webusb-device.ts +12 -8
  230. package/libusb/.private/bd.cmd +0 -89
  231. package/libusb/.private/bwince.cmd +0 -57
  232. package/libusb/.private/wbs_wince.txt +0 -42
  233. package/libusb/Brewfile +0 -4
  234. package/libusb/appveyor_cygwin.bat +0 -11
  235. package/libusb/appveyor_minGW.bat +0 -19
  236. package/libusb/doc/Makefile.am +0 -9
  237. package/libusb/examples/dpfp_threaded.c +0 -557
  238. package/libusb/libusb/hotplug.h +0 -99
  239. package/libusb/libusb/os/poll_posix.c +0 -84
  240. package/libusb/libusb/os/poll_posix.h +0 -14
  241. package/libusb/libusb/os/poll_windows.c +0 -447
  242. package/libusb/libusb/os/poll_windows.h +0 -98
  243. package/libusb/libusb/os/wince_usb.c +0 -888
  244. package/libusb/libusb/os/wince_usb.h +0 -126
  245. package/libusb/libusb/os/windows_nt_common.c +0 -1010
  246. package/libusb/libusb/os/windows_nt_common.h +0 -110
  247. package/libusb/libusb/os/windows_nt_shared_types.h +0 -147
  248. package/libusb/msvc/appveyor.bat +0 -27
  249. package/libusb/msvc/ddk_build.cmd +0 -219
  250. package/libusb/msvc/errno.h +0 -102
  251. package/libusb/msvc/fxload_sources +0 -23
  252. package/libusb/msvc/getopt_2005.vcproj +0 -288
  253. package/libusb/msvc/getopt_2010.vcxproj +0 -72
  254. package/libusb/msvc/getopt_sources +0 -24
  255. package/libusb/msvc/hotplugtest_sources +0 -20
  256. package/libusb/msvc/inttypes.h +0 -295
  257. package/libusb/msvc/libusb.dsw +0 -71
  258. package/libusb/msvc/libusb_2005.sln +0 -95
  259. package/libusb/msvc/libusb_2010.sln +0 -105
  260. package/libusb/msvc/libusb_2012.sln +0 -105
  261. package/libusb/msvc/libusb_dll.dsp +0 -194
  262. package/libusb/msvc/libusb_dll_2005.vcproj +0 -464
  263. package/libusb/msvc/libusb_dll_2012.vcxproj +0 -107
  264. package/libusb/msvc/libusb_dll_wince.vcproj +0 -1251
  265. package/libusb/msvc/libusb_sources +0 -43
  266. package/libusb/msvc/libusb_static.dsp +0 -174
  267. package/libusb/msvc/libusb_static_2005.vcproj +0 -390
  268. package/libusb/msvc/libusb_static_2012.vcxproj +0 -98
  269. package/libusb/msvc/libusb_static_wince.vcproj +0 -1179
  270. package/libusb/msvc/libusb_wince.sln +0 -246
  271. package/libusb/msvc/listdevs.dsp +0 -103
  272. package/libusb/msvc/listdevs_2005.vcproj +0 -360
  273. package/libusb/msvc/listdevs_sources +0 -20
  274. package/libusb/msvc/listdevs_wince.vcproj +0 -1120
  275. package/libusb/msvc/missing.c +0 -80
  276. package/libusb/msvc/stdint.h +0 -256
  277. package/libusb/msvc/stress_2005.vcproj +0 -390
  278. package/libusb/msvc/stress_2012.vcxproj +0 -87
  279. package/libusb/msvc/stress_sources +0 -21
  280. package/libusb/msvc/stress_wince.vcproj +0 -1128
  281. package/libusb/msvc/testlibusb_2012.vcxproj +0 -83
  282. package/libusb/msvc/testlibusb_sources +0 -20
  283. package/libusb/msvc/xusb.dsp +0 -102
  284. package/libusb/msvc/xusb_2005.vcproj +0 -344
  285. package/libusb/msvc/xusb_2012.vcxproj +0 -83
  286. package/libusb/msvc/xusb_sources +0 -20
  287. package/libusb/msvc/xusb_wince.vcproj +0 -1120
  288. package/libusb/travis-autogen.sh +0 -39
@@ -1,6 +1,14 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2
+ <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
3
  <ItemGroup Label="ProjectConfigurations">
4
+ <ProjectConfiguration Include="Debug|ARM">
5
+ <Configuration>Debug</Configuration>
6
+ <Platform>ARM</Platform>
7
+ </ProjectConfiguration>
8
+ <ProjectConfiguration Include="Debug|ARM64">
9
+ <Configuration>Debug</Configuration>
10
+ <Platform>ARM64</Platform>
11
+ </ProjectConfiguration>
4
12
  <ProjectConfiguration Include="Debug|Win32">
5
13
  <Configuration>Debug</Configuration>
6
14
  <Platform>Win32</Platform>
@@ -9,6 +17,14 @@
9
17
  <Configuration>Debug</Configuration>
10
18
  <Platform>x64</Platform>
11
19
  </ProjectConfiguration>
20
+ <ProjectConfiguration Include="Release|ARM">
21
+ <Configuration>Release</Configuration>
22
+ <Platform>ARM</Platform>
23
+ </ProjectConfiguration>
24
+ <ProjectConfiguration Include="Release|ARM64">
25
+ <Configuration>Release</Configuration>
26
+ <Platform>ARM64</Platform>
27
+ </ProjectConfiguration>
12
28
  <ProjectConfiguration Include="Release|Win32">
13
29
  <Configuration>Release</Configuration>
14
30
  <Platform>Win32</Platform>
@@ -23,11 +39,15 @@
23
39
  <ProjectGuid>{3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}</ProjectGuid>
24
40
  <RootNamespace>examples</RootNamespace>
25
41
  <Keyword>Win32Proj</Keyword>
42
+ <WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
43
+ <WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
44
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
26
45
  </PropertyGroup>
27
46
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
28
47
  <PropertyGroup Label="Configuration">
29
48
  <ConfigurationType>Application</ConfigurationType>
30
49
  <CharacterSet>Unicode</CharacterSet>
50
+ <PlatformToolset>v142</PlatformToolset>
31
51
  <WholeProgramOptimization Condition="'$(Configuration)'=='Release'">true</WholeProgramOptimization>
32
52
  </PropertyGroup>
33
53
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@@ -45,14 +65,13 @@
45
65
  <ItemDefinitionGroup>
46
66
  <ClCompile>
47
67
  <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
48
- <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
68
+ <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
49
69
  <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
50
70
  <WarningLevel>Level3</WarningLevel>
51
71
  </ClCompile>
52
72
  <ClCompile Condition="'$(Configuration)'=='Debug'">
53
73
  <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
54
74
  <Optimization>Disabled</Optimization>
55
- <MinimalRebuild>true</MinimalRebuild>
56
75
  <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
57
76
  </ClCompile>
58
77
  <ClCompile Condition="'$(Configuration)'=='Release'">
@@ -62,6 +81,7 @@
62
81
  <Link>
63
82
  <ProgramDatabaseFile>$(TargetDir)$(ProjectName).pdb</ProgramDatabaseFile>
64
83
  <SubSystem>Console</SubSystem>
84
+ <AdditionalDependencies>kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
65
85
  </Link>
66
86
  <Link Condition="'$(Configuration)'=='Debug'">
67
87
  <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -71,7 +91,10 @@
71
91
  <ClCompile Include="..\examples\xusb.c" />
72
92
  </ItemGroup>
73
93
  <ItemGroup>
74
- <ProjectReference Include=".\libusb_static_2010.vcxproj">
94
+ <ClInclude Include="..\libusb\libusb.h" />
95
+ </ItemGroup>
96
+ <ItemGroup>
97
+ <ProjectReference Include=".\libusb_static_2019.vcxproj">
75
98
  <Project>{349ee8f9-7d25-4909-aaf5-ff3fade72187}</Project>
76
99
  <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
77
100
  </ProjectReference>
@@ -79,4 +102,4 @@
79
102
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
80
103
  <ImportGroup Label="ExtensionTargets">
81
104
  </ImportGroup>
82
- </Project>
105
+ </Project>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup>
4
+ <Filter Include="Source Files">
5
+ <UniqueIdentifier>{4bdcefa9-8c79-431b-965b-15b234737380}</UniqueIdentifier>
6
+ <Extensions>c</Extensions>
7
+ </Filter>
8
+ <Filter Include="Header Files">
9
+ <UniqueIdentifier>{f81e24cd-e12b-4324-ada3-accbab00ef08}</UniqueIdentifier>
10
+ <Extensions>h</Extensions>
11
+ </Filter>
12
+ </ItemGroup>
13
+ <ItemGroup>
14
+ <ClInclude Include="..\libusb\libusb.h">
15
+ <Filter>Header Files</Filter>
16
+ </ClInclude>
17
+ </ItemGroup>
18
+ <ItemGroup>
19
+ <ClCompile Include="..\examples\xusb.c">
20
+ <Filter>Source Files</Filter>
21
+ </ClCompile>
22
+ </ItemGroup>
23
+ </Project>
@@ -1,6 +1,18 @@
1
1
  AM_CPPFLAGS = -I$(top_srcdir)/libusb
2
2
  LDADD = ../libusb/libusb-1.0.la
3
+ LIBS =
4
+
5
+ stress_SOURCES = stress.c libusb_testlib.h testlib.c
3
6
 
4
7
  noinst_PROGRAMS = stress
5
8
 
6
- stress_SOURCES = stress.c libusb_testlib.h testlib.c
9
+ if BUILD_UMOCKDEV_TEST
10
+ # NOTE: We add libumockdev-preload.so so that we can run tests in-process
11
+ # We also use -Wl,-lxxx as the compiler doesn't need it and libtool
12
+ # would reorder the flags otherwise.
13
+ umockdev_CPPFLAGS = ${UMOCKDEV_CFLAGS} -I$(top_srcdir)/libusb
14
+ umockdev_LDFLAGS = -Wl,--push-state,--no-as-needed -Wl,-lumockdev-preload -Wl,--pop-state ${UMOCKDEV_LIBS}
15
+ umockdev_SOURCES = umockdev.c
16
+
17
+ noinst_PROGRAMS += umockdev
18
+ endif
@@ -20,17 +20,7 @@
20
20
  #ifndef LIBUSB_TESTLIB_H
21
21
  #define LIBUSB_TESTLIB_H
22
22
 
23
- #include <stdio.h>
24
-
25
- #if !defined(bool)
26
- #define bool int
27
- #endif
28
- #if !defined(true)
29
- #define true (1 == 1)
30
- #endif
31
- #if !defined(false)
32
- #define false (!true)
33
- #endif
23
+ #include <config.h>
34
24
 
35
25
  /** Values returned from a test function to indicate test result */
36
26
  typedef enum {
@@ -41,53 +31,33 @@ typedef enum {
41
31
  /** Indicates that an unexpected error occurred. */
42
32
  TEST_STATUS_ERROR,
43
33
  /** Indicates that the test can't be run. For example this may be
44
- * due to no suitable device being connected to perform the tests.*/
34
+ * due to no suitable device being connected to perform the tests. */
45
35
  TEST_STATUS_SKIP
46
36
  } libusb_testlib_result;
47
37
 
48
- /**
49
- * Context for test library functions
50
- */
51
- typedef struct {
52
- char ** test_names;
53
- int test_count;
54
- bool list_tests;
55
- bool verbose;
56
- int old_stdout;
57
- int old_stderr;
58
- FILE* output_file;
59
- int null_fd;
60
- } libusb_testlib_ctx;
61
-
62
38
  /**
63
39
  * Logs some test information or state
64
40
  */
65
- void libusb_testlib_logf(libusb_testlib_ctx * ctx,
66
- const char* fmt, ...);
67
-
68
- /**
69
- * Function pointer for a libusb test function.
70
- *
71
- * Should return TEST_STATUS_SUCCESS on success or another TEST_STATUS value.
72
- */
73
- typedef libusb_testlib_result
74
- (*libusb_testlib_test_function)(libusb_testlib_ctx * ctx);
41
+ void libusb_testlib_logf(const char *fmt, ...) PRINTF_FORMAT(1, 2);
75
42
 
76
43
  /**
77
44
  * Structure holding a test description.
78
45
  */
79
46
  typedef struct {
80
47
  /** Human readable name of the test. */
81
- const char * name;
82
- /** The test library will call this function to run the test. */
83
- libusb_testlib_test_function function;
48
+ const char *name;
49
+ /** The test library will call this function to run the test.
50
+ *
51
+ * Should return TEST_STATUS_SUCCESS on success or another TEST_STATUS value.
52
+ */
53
+ libusb_testlib_result (*function)(void);
84
54
  } libusb_testlib_test;
85
55
 
86
56
  /**
87
57
  * Value to use at the end of a test array to indicate the last
88
58
  * element.
89
59
  */
90
- #define LIBUSB_NULL_TEST {NULL, NULL}
60
+ #define LIBUSB_NULL_TEST { NULL, NULL }
91
61
 
92
62
  /**
93
63
  * Runs the tests provided.
@@ -100,8 +70,7 @@ typedef struct {
100
70
  * \param tests A NULL_TEST terminated array of tests
101
71
  * \return 0 on success, non-zero on failure
102
72
  */
103
- int libusb_testlib_run_tests(int argc,
104
- char ** argv,
105
- const libusb_testlib_test * tests);
73
+ int libusb_testlib_run_tests(int argc, char *argv[],
74
+ const libusb_testlib_test *tests);
106
75
 
107
76
  #endif //LIBUSB_TESTLIB_H
@@ -17,122 +17,131 @@
17
17
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
18
  */
19
19
 
20
- #include <stdio.h>
20
+ #include <config.h>
21
+
21
22
  #include <string.h>
22
- #include <memory.h>
23
23
 
24
24
  #include "libusb.h"
25
25
  #include "libusb_testlib.h"
26
26
 
27
27
  /** Test that creates and destroys a single concurrent context
28
28
  * 10000 times. */
29
- static libusb_testlib_result test_init_and_exit(libusb_testlib_ctx * tctx)
29
+ static libusb_testlib_result test_init_and_exit(void)
30
30
  {
31
- libusb_context * ctx = NULL;
32
- int i;
33
- for (i = 0; i < 10000; ++i) {
34
- int r = libusb_init(&ctx);
31
+ for (int i = 0; i < 10000; ++i) {
32
+ libusb_context *ctx = NULL;
33
+ int r;
34
+
35
+ r = libusb_init(&ctx);
35
36
  if (r != LIBUSB_SUCCESS) {
36
- libusb_testlib_logf(tctx,
37
+ libusb_testlib_logf(
37
38
  "Failed to init libusb on iteration %d: %d",
38
39
  i, r);
39
40
  return TEST_STATUS_FAILURE;
40
41
  }
41
42
  libusb_exit(ctx);
42
- ctx = NULL;
43
43
  }
44
44
 
45
45
  return TEST_STATUS_SUCCESS;
46
46
  }
47
47
 
48
48
  /** Tests that devices can be listed 1000 times. */
49
- static libusb_testlib_result test_get_device_list(libusb_testlib_ctx * tctx)
49
+ static libusb_testlib_result test_get_device_list(void)
50
50
  {
51
- libusb_context * ctx = NULL;
52
- int r, i;
51
+ libusb_context *ctx;
52
+ int r;
53
+
53
54
  r = libusb_init(&ctx);
54
55
  if (r != LIBUSB_SUCCESS) {
55
- libusb_testlib_logf(tctx, "Failed to init libusb: %d", r);
56
+ libusb_testlib_logf("Failed to init libusb: %d", r);
56
57
  return TEST_STATUS_FAILURE;
57
58
  }
58
- for (i = 0; i < 1000; ++i) {
59
- libusb_device ** device_list;
59
+
60
+ for (int i = 0; i < 1000; ++i) {
61
+ libusb_device **device_list = NULL;
60
62
  ssize_t list_size = libusb_get_device_list(ctx, &device_list);
61
- if (list_size < 0 || device_list == NULL) {
62
- libusb_testlib_logf(tctx,
63
- "Failed to get device list on iteration %d: %d (%p)",
64
- i, -list_size, device_list);
63
+ if (list_size < 0 || !device_list) {
64
+ libusb_testlib_logf(
65
+ "Failed to get device list on iteration %d: %ld (%p)",
66
+ i, (long)-list_size, device_list);
67
+ libusb_exit(ctx);
65
68
  return TEST_STATUS_FAILURE;
66
69
  }
67
70
  libusb_free_device_list(device_list, 1);
68
71
  }
72
+
69
73
  libusb_exit(ctx);
70
74
  return TEST_STATUS_SUCCESS;
71
75
  }
72
76
 
73
77
  /** Tests that 100 concurrent device lists can be open at a time. */
74
- static libusb_testlib_result test_many_device_lists(libusb_testlib_ctx * tctx)
78
+ static libusb_testlib_result test_many_device_lists(void)
75
79
  {
76
80
  #define LIST_COUNT 100
77
- libusb_context * ctx = NULL;
78
- libusb_device ** device_lists[LIST_COUNT];
79
- int r, i;
80
- memset(device_lists, 0, sizeof(device_lists));
81
+ libusb_testlib_result result = TEST_STATUS_SUCCESS;
82
+ libusb_context *ctx = NULL;
83
+ libusb_device **device_lists[LIST_COUNT];
84
+ int r;
81
85
 
82
86
  r = libusb_init(&ctx);
83
87
  if (r != LIBUSB_SUCCESS) {
84
- libusb_testlib_logf(tctx, "Failed to init libusb: %d", r);
88
+ libusb_testlib_logf("Failed to init libusb: %d", r);
85
89
  return TEST_STATUS_FAILURE;
86
90
  }
87
91
 
92
+ memset(device_lists, 0, sizeof(device_lists));
93
+
88
94
  /* Create the 100 device lists. */
89
- for (i = 0; i < LIST_COUNT; ++i) {
90
- ssize_t list_size = libusb_get_device_list(ctx, &(device_lists[i]));
91
- if (list_size < 0 || device_lists[i] == NULL) {
92
- libusb_testlib_logf(tctx,
93
- "Failed to get device list on iteration %d: %d (%p)",
94
- i, -list_size, device_lists[i]);
95
- return TEST_STATUS_FAILURE;
95
+ for (int i = 0; i < LIST_COUNT; ++i) {
96
+ ssize_t list_size = libusb_get_device_list(ctx, &device_lists[i]);
97
+ if (list_size < 0 || !device_lists[i]) {
98
+ libusb_testlib_logf(
99
+ "Failed to get device list on iteration %d: %ld (%p)",
100
+ i, (long)-list_size, device_lists[i]);
101
+ result = TEST_STATUS_FAILURE;
102
+ break;
96
103
  }
97
104
  }
98
105
 
99
106
  /* Destroy the 100 device lists. */
100
- for (i = 0; i < LIST_COUNT; ++i) {
101
- if (device_lists[i]) {
107
+ for (int i = 0; i < LIST_COUNT; ++i) {
108
+ if (device_lists[i])
102
109
  libusb_free_device_list(device_lists[i], 1);
103
- device_lists[i] = NULL;
104
- }
105
110
  }
106
111
 
107
112
  libusb_exit(ctx);
108
- return TEST_STATUS_SUCCESS;
113
+ return result;
109
114
  #undef LIST_COUNT
110
115
  }
111
116
 
112
117
  /** Tests that the default context (used for various things including
113
118
  * logging) works correctly when the first context created in a
114
119
  * process is destroyed. */
115
- static libusb_testlib_result test_default_context_change(libusb_testlib_ctx * tctx)
120
+ static libusb_testlib_result test_default_context_change(void)
116
121
  {
117
- libusb_context * ctx = NULL;
118
- int r, i;
122
+ for (int i = 0; i < 100; ++i) {
123
+ libusb_context *ctx = NULL;
124
+ int r;
119
125
 
120
- for (i = 0; i < 100; ++i) {
121
126
  /* First create a new context */
122
127
  r = libusb_init(&ctx);
123
128
  if (r != LIBUSB_SUCCESS) {
124
- libusb_testlib_logf(tctx, "Failed to init libusb: %d", r);
129
+ libusb_testlib_logf("Failed to init libusb: %d", r);
125
130
  return TEST_STATUS_FAILURE;
126
131
  }
127
132
 
128
- /* Enable debug output, to be sure to use the context */
129
- libusb_set_option(NULL, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_DEBUG);
133
+ /* Enable debug output on new context, to be sure to use the context */
130
134
  libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_DEBUG);
131
135
 
136
+ /* Enable debug output on the default context. This should work even before
137
+ * the context has been created. */
138
+ libusb_set_option(NULL, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_DEBUG);
139
+
132
140
  /* Now create a reference to the default context */
133
141
  r = libusb_init(NULL);
134
142
  if (r != LIBUSB_SUCCESS) {
135
- libusb_testlib_logf(tctx, "Failed to init libusb: %d", r);
143
+ libusb_testlib_logf("Failed to init libusb: %d", r);
144
+ libusb_exit(ctx);
136
145
  return TEST_STATUS_FAILURE;
137
146
  }
138
147
 
@@ -147,14 +156,14 @@ static libusb_testlib_result test_default_context_change(libusb_testlib_ctx * tc
147
156
 
148
157
  /* Fill in the list of tests. */
149
158
  static const libusb_testlib_test tests[] = {
150
- {"init_and_exit", &test_init_and_exit},
151
- {"get_device_list", &test_get_device_list},
152
- {"many_device_lists", &test_many_device_lists},
153
- {"default_context_change", &test_default_context_change},
159
+ { "init_and_exit", &test_init_and_exit },
160
+ { "get_device_list", &test_get_device_list },
161
+ { "many_device_lists", &test_many_device_lists },
162
+ { "default_context_change", &test_default_context_change },
154
163
  LIBUSB_NULL_TEST
155
164
  };
156
165
 
157
- int main (int argc, char ** argv)
166
+ int main(int argc, char *argv[])
158
167
  {
159
168
  return libusb_testlib_run_tests(argc, argv, tests);
160
169
  }