Support libusb_set_option in additon to libusb_set_debug. (#39)

* Support libusb_set_option in additon to libusb_set_debug.
The latter is deprecated in libusb 1.0.22 and later.

* Move the "debug level constants" todo to the right place. Add a comment
about libusb 1.0.22 exported API version.
This commit is contained in:
Sebastian Zagrodzki
2018-05-23 16:07:03 +02:00
committed by GitHub
parent 21b0ed46ae
commit c6e780971f
3 changed files with 30 additions and 1 deletions

View File

@@ -31,6 +31,7 @@ int gousb_compact_iso_data(struct libusb_transfer *xfer, unsigned char *status);
struct libusb_transfer *gousb_alloc_transfer_and_buffer(int bufLen, int numIsoPackets);
void gousb_free_transfer_and_buffer(struct libusb_transfer *xfer);
int submit(struct libusb_transfer *xfer);
void gousb_set_debug(libusb_context *ctx, int lvl);
*/
import "C"
@@ -219,7 +220,7 @@ func (libusbImpl) exit(c *libusbContext) error {
}
func (libusbImpl) setDebug(c *libusbContext, lvl int) {
C.libusb_set_debug((*C.libusb_context)(c), C.int(lvl))
C.gousb_set_debug((*C.libusb_context)(c), C.int(lvl))
}
func (libusbImpl) getDeviceDesc(d *libusbDevice) (*DeviceDesc, error) {

26
usb.c Normal file
View File

@@ -0,0 +1,26 @@
// Copyright 2013 Google Inc. All rights reserved.
// Copyright 2018 the gousb Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <libusb.h>
void gousb_set_debug(libusb_context *ctx, int lvl) {
// TODO(sebek): remove libusb_debug entirely in 2.1 or 3.0,
// require libusb >= 1.0.22. libusb 1.0.22 sets API version 0x01000106.
#if LIBUSB_API_VERSION >= 0x01000106
libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, lvl);
#else
libusb_set_debug(ctx, lvl);
#endif
}

2
usb.go
View File

@@ -134,6 +134,8 @@ type Context struct {
// Debug changes the debug level. Level 0 means no debug, higher levels
// will print out more debugging information.
// TODO(sebek): in the next major release, replace int levels with
// Go-typed constants.
func (c *Context) Debug(level int) {
c.libusb.setDebug(c.ctx, level)
}